/*PLEASE DO NOT EDIT THIS CODE*/
/*This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language!*/
import java.util.*;
/**
* R1: There should be a class called X
*/
// line 19 "RequirementFullCheckWithComments.ump"
public class X
{
//------------------------
// MEMBER VARIABLES
//------------------------
//X Attributes
private String a;
private String b;
//X Associations
private List<Y> ies;
//------------------------
// CONSTRUCTOR
//------------------------
public X(String aA, String aB)
{
a = aA;
b = aB;
ies = new ArrayList<Y>();
}
//------------------------
// INTERFACE
//------------------------
public boolean setA(String aA)
{
boolean wasSet = false;
a = aA;
wasSet = true;
return wasSet;
}
public boolean setB(String aB)
{
boolean wasSet = false;
b = aB;
wasSet = true;
return wasSet;
}
/**
* R1a: The reason it should be called X is because it is secret
* R2: Class X should have several attribites
*/
public String getA()
{
return a;
}
/**
* This is another attribute
* R2: Class X should have several attribites
*/
public String getB()
{
return b;
}
/* Code from template association_GetMany */
public Y getY(int index)
{
Y aY = ies.get(index);
return aY;
}
public List<Y> getIes()
{
List<Y> newIes = Collections.unmodifiableList(ies);
return newIes;
}
public int numberOfIes()
{
int number = ies.size();
return number;
}
public boolean hasIes()
{
boolean has = ies.size() > 0;
return has;
}
public int indexOfY(Y aY)
{
int index = ies.indexOf(aY);
return index;
}
/* Code from template association_MinimumNumberOfMethod */
public static int minimumNumberOfIes()
{
return 0;
}
/* Code from template association_AddManyToOne */
public Y addY(String aC)
{
return new Y(aC, this);
}
public boolean addY(Y aY)
{
boolean wasAdded = false;
if (ies.contains(aY)) { return false; }
X existingX = aY.getX();
boolean isNewX = existingX != null && !this.equals(existingX);
if (isNewX)
{
aY.setX(this);
}
else
{
ies.add(aY);
}
wasAdded = true;
return wasAdded;
}
public boolean removeY(Y aY)
{
boolean wasRemoved = false;
//Unable to remove aY, as it must always have a x
if (!this.equals(aY.getX()))
{
ies.remove(aY);
wasRemoved = true;
}
return wasRemoved;
}
/* Code from template association_AddIndexControlFunctions */
public boolean addYAt(Y aY, int index)
{
boolean wasAdded = false;
if(addY(aY))
{
if(index < 0 ) { index = 0; }
if(index > numberOfIes()) { index = numberOfIes() - 1; }
ies.remove(aY);
ies.add(index, aY);
wasAdded = true;
}
return wasAdded;
}
public boolean addOrMoveYAt(Y aY, int index)
{
boolean wasAdded = false;
if(ies.contains(aY))
{
if(index < 0 ) { index = 0; }
if(index > numberOfIes()) { index = numberOfIes() - 1; }
ies.remove(aY);
ies.add(index, aY);
wasAdded = true;
}
else
{
wasAdded = addYAt(aY, index);
}
return wasAdded;
}
public void delete()
{
for(int i=ies.size(); i > 0; i--)
{
Y aY = ies.get(i - 1);
aY.delete();
}
}
public String toString()
{
return super.toString() + "["+
"a" + ":" + getA()+ "," +
"b" + ":" + getB()+ "]";
}
}
/*PLEASE DO NOT EDIT THIS CODE*/
/*This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language!*/
/**
* This is class Y
* R3: There must be a class called Y
*/
// line 32 "RequirementFullCheckWithComments.ump"
public class Y
{
//------------------------
// MEMBER VARIABLES
//------------------------
//Y Attributes
private String c;
//Y Associations
private X x;
//------------------------
// CONSTRUCTOR
//------------------------
public Y(String aC, X aX)
{
c = aC;
boolean didAddX = setX(aX);
if (!didAddX)
{
throw new RuntimeException("Unable to create y due to x. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html");
}
}
//------------------------
// INTERFACE
//------------------------
public boolean setC(String aC)
{
boolean wasSet = false;
c = aC;
wasSet = true;
return wasSet;
}
/**
* This is an important attribute
* R5: A Y should have a c
*/
public String getC()
{
return c;
}
/* Code from template association_GetOne */
public X getX()
{
return x;
}
/* Code from template association_SetOneToMany */
public boolean setX(X aX)
{
boolean wasSet = false;
if (aX == null)
{
return wasSet;
}
X existingX = x;
x = aX;
if (existingX != null && !existingX.equals(aX))
{
existingX.removeY(this);
}
x.addY(this);
wasSet = true;
return wasSet;
}
public void delete()
{
X placeholderX = x;
this.x = null;
if(placeholderX != null)
{
placeholderX.removeY(this);
}
}
public String toString()
{
return super.toString() + "["+
"c" + ":" + getC()+ "]" + System.getProperties().getProperty("line.separator") +
" " + "x = "+(getX()!=null?Integer.toHexString(System.identityHashCode(getX())):"null");
}
}