Skip to content

Commit

Permalink
Merge pull request #1212 from umple/bug1193_extraTests
Browse files Browse the repository at this point in the history
Fixes #1193, inner enumerations referencing in java
  • Loading branch information
TimLethbridge committed Jan 31, 2018
2 parents 904a8c2 + 76aeaf0 commit c09c816
Show file tree
Hide file tree
Showing 5 changed files with 181 additions and 2 deletions.
19 changes: 18 additions & 1 deletion cruise.umple/src/Generator_CodeJava.ump
Original file line number Diff line number Diff line change
Expand Up @@ -1480,7 +1480,24 @@ the if(parent.getHasProxyPattern()) is neccessary to check if the parent's real
UmpleClass classToRemove = getModel().getUmpleClass(getType(assVar.getRelatedAssociation()));
GeneratedClass generatedClassToRemove = classToRemove.getGeneratedClass();
String parameterNameToRemove = StringFormatter.format("{0} {1}", translate("type",assVar), translate("parameterOne",assVar));
return StringFormatter.replaceParameter(generatedClassToRemove.getLookup("constructorSignature"), parameterNameToRemove, "");

String classToRemoveConstructorString = StringFormatter.replaceParameter(generatedClassToRemove.getLookup("constructorSignature"), parameterNameToRemove, "");
String [] arrayOfConstructorParameters = classToRemoveConstructorString.split(",");
for(String constructorParameter : arrayOfConstructorParameters)
{
String tempConstructorParameter = constructorParameter.trim();
if (tempConstructorParameter.length() < 1)
continue;
String parameterType = tempConstructorParameter.substring(0,tempConstructorParameter.indexOf(" "));

if (classToRemove.hasEnum(parameterType))
{
classToRemoveConstructorString = classToRemoveConstructorString.replaceAll("\\b"+parameterType+"\\b", classToRemove.getName()+"."+parameterType);
}

}
return classToRemoveConstructorString;

}
else if ("callerArgumentsForMandatory".equals(keyName))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public void tearDown()

SampleFileWriter.destroy(pathToInput + "/example");
SampleFileWriter.destroy(pathToInput + "/java/example");
SampleFileWriter.destroy(pathToInput + "/java/enumerations");
SampleFileWriter.destroy(pathToInput + "/IX.php");
SampleFileWriter.destroy(pathToInput + "/ISomething.java");
SampleFileWriter.destroy(pathToInput + "/Token.java");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,14 @@ public void TestUmpleEnumerations_8(){
"java/TestUmpleEnumerations_8.java.txt",
"A");
}

@Test
public void TestUmpleEnumerations_innerQualified(){
assertUmpleTemplateFor("java/TestUmpleEnumerations_innerQualified_1.ump",
"java/TestUmpleEnumerations_innerQualified_1.java.txt",
"Driver");
}


@Test
public void CascadeDelete()
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
/*PLEASE DO NOT EDIT THIS CODE*/
/*This code was generated using the UMPLE @UMPLE_VERSION@ modeling language!*/

package enumerations;
import java.util.*;


public class Driver
{

//------------------------
// MEMBER VARIABLES
//------------------------

//Driver Associations
private List<DriverSchedule> driverSchedules;

//------------------------
// CONSTRUCTOR
//------------------------

public Driver()
{
driverSchedules = new ArrayList<DriverSchedule>();
}

//------------------------
// INTERFACE
//------------------------
/* Code from template association_GetMany */
public DriverSchedule getDriverSchedule(int index)
{
DriverSchedule aDriverSchedule = driverSchedules.get(index);
return aDriverSchedule;
}

public List<DriverSchedule> getDriverSchedules()
{
List<DriverSchedule> newDriverSchedules = Collections.unmodifiableList(driverSchedules);
return newDriverSchedules;
}

public int numberOfDriverSchedules()
{
int number = driverSchedules.size();
return number;
}

public boolean hasDriverSchedules()
{
boolean has = driverSchedules.size() > 0;
return has;
}

public int indexOfDriverSchedule(DriverSchedule aDriverSchedule)
{
int index = driverSchedules.indexOf(aDriverSchedule);
return index;
}
/* Code from template association_MinimumNumberOfMethod */
public static int minimumNumberOfDriverSchedules()
{
return 0;
}
/* Code from template association_AddManyToOne */
public DriverSchedule addDriverSchedule(DriverSchedule.Shift aShift, DriverSchedule.Status aStatus)
{
return new DriverSchedule(aShift, aStatus, this);
}

public boolean addDriverSchedule(DriverSchedule aDriverSchedule)
{
boolean wasAdded = false;
if (driverSchedules.contains(aDriverSchedule)) { return false; }
Driver existingDriver = aDriverSchedule.getDriver();
boolean isNewDriver = existingDriver != null && !this.equals(existingDriver);
if (isNewDriver)
{
aDriverSchedule.setDriver(this);
}
else
{
driverSchedules.add(aDriverSchedule);
}
wasAdded = true;
return wasAdded;
}

public boolean removeDriverSchedule(DriverSchedule aDriverSchedule)
{
boolean wasRemoved = false;
//Unable to remove aDriverSchedule, as it must always have a driver
if (!this.equals(aDriverSchedule.getDriver()))
{
driverSchedules.remove(aDriverSchedule);
wasRemoved = true;
}
return wasRemoved;
}
/* Code from template association_AddIndexControlFunctions */
public boolean addDriverScheduleAt(DriverSchedule aDriverSchedule, int index)
{
boolean wasAdded = false;
if(addDriverSchedule(aDriverSchedule))
{
if(index < 0 ) { index = 0; }
if(index > numberOfDriverSchedules()) { index = numberOfDriverSchedules() - 1; }
driverSchedules.remove(aDriverSchedule);
driverSchedules.add(index, aDriverSchedule);
wasAdded = true;
}
return wasAdded;
}

public boolean addOrMoveDriverScheduleAt(DriverSchedule aDriverSchedule, int index)
{
boolean wasAdded = false;
if(driverSchedules.contains(aDriverSchedule))
{
if(index < 0 ) { index = 0; }
if(index > numberOfDriverSchedules()) { index = numberOfDriverSchedules() - 1; }
driverSchedules.remove(aDriverSchedule);
driverSchedules.add(index, aDriverSchedule);
wasAdded = true;
}
else
{
wasAdded = addDriverScheduleAt(aDriverSchedule, index);
}
return wasAdded;
}

public void delete()
{
for(int i=driverSchedules.size(); i > 0; i--)
{
DriverSchedule aDriverSchedule = driverSchedules.get(i - 1);
aDriverSchedule.delete();
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
namespace enumerations;

class Driver {
}

class DriverSchedule {
enum Shift { Morning, Afternoon, Night }
enum Status {ACTIVE, INACTIVE}
Shift shift;
Status status;
* -- 1 Driver driver;
}

0 comments on commit c09c816

Please sign in to comment.