/*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 "../OneToMandatoryManyTest.ump" public class Mentor { //------------------------ // MEMBER VARIABLES //------------------------ //Mentor Attributes private String name; //Mentor Associations private List<Student> students; //------------------------ // CONSTRUCTOR //------------------------ public Mentor(String aName) { name = aName; students = new ArrayList<Student>(); } //------------------------ // 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 Student getStudent(int index) { Student aStudent = students.get(index); return aStudent; } public List<Student> getStudents() { List<Student> newStudents = Collections.unmodifiableList(students); return newStudents; } public int numberOfStudents() { int number = students.size(); return number; } public boolean hasStudents() { boolean has = students.size() > 0; return has; } public int indexOfStudent(Student aStudent) { int index = students.indexOf(aStudent); return index; } /* Code from template association_IsNumberOfValidMethod */ public boolean isNumberOfStudentsValid() { boolean isValid = numberOfStudents() >= minimumNumberOfStudents(); return isValid; } /* Code from template association_MinimumNumberOfMethod */ public static int minimumNumberOfStudents() { return 5; } /* Code from template association_AddMandatoryManyToOne */ public Student addStudent(String aNumber) { Student aNewStudent = new Student(aNumber, this); return aNewStudent; } public boolean addStudent(Student aStudent) { boolean wasAdded = false; if (students.contains(aStudent)) { return false; } Mentor existingMentor = aStudent.getMentor(); boolean isNewMentor = existingMentor != null && !this.equals(existingMentor); if (isNewMentor && existingMentor.numberOfStudents() <= minimumNumberOfStudents()) { return wasAdded; } if (isNewMentor) { aStudent.setMentor(this); } else { students.add(aStudent); } wasAdded = true; return wasAdded; } public boolean removeStudent(Student aStudent) { boolean wasRemoved = false; //Unable to remove aStudent, as it must always have a mentor if (this.equals(aStudent.getMentor())) { return wasRemoved; } //mentor already at minimum (5) if (numberOfStudents() <= minimumNumberOfStudents()) { return wasRemoved; } students.remove(aStudent); wasRemoved = true; return wasRemoved; } /* Code from template association_AddIndexControlFunctions */ public boolean addStudentAt(Student aStudent, int index) { boolean wasAdded = false; if(addStudent(aStudent)) { if(index < 0 ) { index = 0; } if(index > numberOfStudents()) { index = numberOfStudents() - 1; } students.remove(aStudent); students.add(index, aStudent); wasAdded = true; } return wasAdded; } public boolean addOrMoveStudentAt(Student aStudent, int index) { boolean wasAdded = false; if(students.contains(aStudent)) { if(index < 0 ) { index = 0; } if(index > numberOfStudents()) { index = numberOfStudents() - 1; } students.remove(aStudent); students.add(index, aStudent); wasAdded = true; } else { wasAdded = addStudentAt(aStudent, index); } return wasAdded; } public void delete() { for(int i=students.size(); i > 0; i--) { Student aStudent = students.get(i - 1); aStudent.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 "../OneToMandatoryManyTest.ump" public class Student { //------------------------ // MEMBER VARIABLES //------------------------ //Student Attributes private String number; //Student Associations private Mentor mentor; //------------------------ // CONSTRUCTOR //------------------------ public Student(String aNumber, Mentor aMentor) { number = aNumber; boolean didAddMentor = setMentor(aMentor); if (!didAddMentor) { throw new RuntimeException("Unable to create student 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_SetOneToMandatoryMany */ public boolean setMentor(Mentor aMentor) { boolean wasSet = false; //Must provide mentor to student if (aMentor == null) { return wasSet; } if (mentor != null && mentor.numberOfStudents() <= Mentor.minimumNumberOfStudents()) { return wasSet; } Mentor existingMentor = mentor; mentor = aMentor; if (existingMentor != null && !existingMentor.equals(aMentor)) { boolean didRemove = existingMentor.removeStudent(this); if (!didRemove) { mentor = existingMentor; return wasSet; } } mentor.addStudent(this); wasSet = true; return wasSet; } public void delete() { Mentor placeholderMentor = mentor; this.mentor = null; if(placeholderMentor != null) { placeholderMentor.removeStudent(this); } } public String toString() { return super.toString() + "["+ "number" + ":" + getNumber()+ "]" + System.getProperties().getProperty("line.separator") + " " + "mentor = "+(getMentor()!=null?Integer.toHexString(System.identityHashCode(getMentor())):"null"); } }