/*PLEASE DO NOT EDIT THIS CODE*/ /*This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language!*/ package example; import java.util.*; // line 3 "../OneToMNTest.ump" public class Mentor { //------------------------ // MEMBER VARIABLES //------------------------ //Mentor Attributes private String name; //Mentor Associations private List<Pupil> pupils; //------------------------ // CONSTRUCTOR //------------------------ public Mentor(String aName) { name = aName; pupils = new ArrayList<Pupil>(); } //------------------------ // INTERFACE //------------------------ public boolean setName(String aName) { boolean wasSet = false; name = aName; wasSet = true; return wasSet; } public String getName() { return name; } /* Code from template association_GetMany */ public Pupil getPupil(int index) { Pupil aPupil = pupils.get(index); return aPupil; } public List<Pupil> getPupils() { List<Pupil> newPupils = Collections.unmodifiableList(pupils); return newPupils; } public int numberOfPupils() { int number = pupils.size(); return number; } public boolean hasPupils() { boolean has = pupils.size() > 0; return has; } public int indexOfPupil(Pupil aPupil) { int index = pupils.indexOf(aPupil); return index; } /* Code from template association_IsNumberOfValidMethod */ public boolean isNumberOfPupilsValid() { boolean isValid = numberOfPupils() >= minimumNumberOfPupils() && numberOfPupils() <= maximumNumberOfPupils(); return isValid; } /* Code from template association_MinimumNumberOfMethod */ public static int minimumNumberOfPupils() { return 5; } /* Code from template association_MaximumNumberOfMethod */ public static int maximumNumberOfPupils() { return 7; } /* Code from template association_AddMNToOnlyOne */ public Pupil addPupil(String aNumber) { if (numberOfPupils() >= maximumNumberOfPupils()) { return null; } else { return new Pupil(aNumber, this); } } public boolean addPupil(Pupil aPupil) { boolean wasAdded = false; if (pupils.contains(aPupil)) { return false; } if (numberOfPupils() >= maximumNumberOfPupils()) { return wasAdded; } Mentor existingMentor = aPupil.getMentor(); boolean isNewMentor = existingMentor != null && !this.equals(existingMentor); if (isNewMentor && existingMentor.numberOfPupils() <= minimumNumberOfPupils()) { return wasAdded; } if (isNewMentor) { aPupil.setMentor(this); } else { pupils.add(aPupil); } wasAdded = true; return wasAdded; } public boolean removePupil(Pupil aPupil) { boolean wasRemoved = false; //Unable to remove aPupil, as it must always have a mentor if (this.equals(aPupil.getMentor())) { return wasRemoved; } //mentor already at minimum (5) if (numberOfPupils() <= minimumNumberOfPupils()) { return wasRemoved; } pupils.remove(aPupil); wasRemoved = true; return wasRemoved; } /* Code from template association_AddIndexControlFunctions */ public boolean addPupilAt(Pupil aPupil, int index) { boolean wasAdded = false; if(addPupil(aPupil)) { if(index < 0 ) { index = 0; } if(index > numberOfPupils()) { index = numberOfPupils() - 1; } pupils.remove(aPupil); pupils.add(index, aPupil); wasAdded = true; } return wasAdded; } public boolean addOrMovePupilAt(Pupil aPupil, int index) { boolean wasAdded = false; if(pupils.contains(aPupil)) { if(index < 0 ) { index = 0; } if(index > numberOfPupils()) { index = numberOfPupils() - 1; } pupils.remove(aPupil); pupils.add(index, aPupil); wasAdded = true; } else { wasAdded = addPupilAt(aPupil, index); } return wasAdded; } public void delete() { for(int i=pupils.size(); i > 0; i--) { Pupil aPupil = pupils.get(i - 1); aPupil.delete(); } } public String toString() { return super.toString() + "["+ "name" + ":" + getName()+ "]"; } } /*PLEASE DO NOT EDIT THIS CODE*/ /*This code was generated using the UMPLE 1.35.0.7523.c616a4dce modeling language!*/ package example; // line 9 "../OneToMNTest.ump" public class Pupil { //------------------------ // MEMBER VARIABLES //------------------------ //Pupil Attributes private String number; //Pupil Associations private Mentor mentor; //------------------------ // CONSTRUCTOR //------------------------ public Pupil(String aNumber, Mentor aMentor) { number = aNumber; boolean didAddMentor = setMentor(aMentor); if (!didAddMentor) { throw new RuntimeException("Unable to create pupil due to mentor. See https://manual.umple.org?RE002ViolationofAssociationMultiplicity.html"); } } //------------------------ // INTERFACE //------------------------ public boolean setNumber(String aNumber) { boolean wasSet = false; number = aNumber; wasSet = true; return wasSet; } public String getNumber() { return number; } /* Code from template association_GetOne */ public Mentor getMentor() { return mentor; } /* Code from template association_SetOneToAtMostN */ public boolean setMentor(Mentor aMentor) { boolean wasSet = false; //Must provide mentor to pupil if (aMentor == null) { return wasSet; } //mentor already at maximum (7) if (aMentor.numberOfPupils() >= Mentor.maximumNumberOfPupils()) { return wasSet; } Mentor existingMentor = mentor; mentor = aMentor; if (existingMentor != null && !existingMentor.equals(aMentor)) { boolean didRemove = existingMentor.removePupil(this); if (!didRemove) { mentor = existingMentor; return wasSet; } } mentor.addPupil(this); wasSet = true; return wasSet; } public void delete() { Mentor placeholderMentor = mentor; this.mentor = null; if(placeholderMentor != null) { placeholderMentor.removePupil(this); } } public String toString() { return super.toString() + "["+ "number" + ":" + getNumber()+ "]" + System.getProperties().getProperty("line.separator") + " " + "mentor = "+(getMentor()!=null?Integer.toHexString(System.identityHashCode(getMentor())):"null"); } }