/*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 "../MStarToMStarTest.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 3;
}
/* Code from template association_AddManyToManyMethod */
public boolean addStudent(Student aStudent)
{
boolean wasAdded = false;
if (students.contains(aStudent)) { return false; }
students.add(aStudent);
if (aStudent.indexOfMentor(this) != -1)
{
wasAdded = true;
}
else
{
wasAdded = aStudent.addMentor(this);
if (!wasAdded)
{
students.remove(aStudent);
}
}
return wasAdded;
}
/* Code from template association_AddMStarToMany */
public boolean removeStudent(Student aStudent)
{
boolean wasRemoved = false;
if (!students.contains(aStudent))
{
return wasRemoved;
}
if (numberOfStudents() <= minimumNumberOfStudents())
{
return wasRemoved;
}
int oldIndex = students.indexOf(aStudent);
students.remove(oldIndex);
if (aStudent.indexOfMentor(this) == -1)
{
wasRemoved = true;
}
else
{
wasRemoved = aStudent.removeMentor(this);
if (!wasRemoved)
{
students.add(oldIndex,aStudent);
}
}
return wasRemoved;
}
/* Code from template association_SetMStarToMany */
public boolean setStudents(Student... newStudents)
{
boolean wasSet = false;
ArrayList<Student> verifiedStudents = new ArrayList<Student>();
for (Student aStudent : newStudents)
{
if (verifiedStudents.contains(aStudent))
{
continue;
}
verifiedStudents.add(aStudent);
}
if (verifiedStudents.size() != newStudents.length || verifiedStudents.size() < minimumNumberOfStudents())
{
return wasSet;
}
ArrayList<Student> oldStudents = new ArrayList<Student>(students);
students.clear();
for (Student aNewStudent : verifiedStudents)
{
students.add(aNewStudent);
if (oldStudents.contains(aNewStudent))
{
oldStudents.remove(aNewStudent);
}
else
{
aNewStudent.addMentor(this);
}
}
for (Student anOldStudent : oldStudents)
{
anOldStudent.removeMentor(this);
}
wasSet = true;
return wasSet;
}
/* 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()
{
ArrayList<Student> copyOfStudents = new ArrayList<Student>(students);
students.clear();
for(Student aStudent : copyOfStudents)
{
if (aStudent.numberOfMentors() <= Student.minimumNumberOfMentors())
{
aStudent.delete();
}
else
{
aStudent.removeMentor(this);
}
}
}
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;
import java.util.*;
// line 9 "../MStarToMStarTest.ump"
public class Student
{
//------------------------
// MEMBER VARIABLES
//------------------------
//Student Attributes
private String number;
//Student Associations
private List<Mentor> mentors;
//------------------------
// CONSTRUCTOR
//------------------------
public Student(String aNumber)
{
number = aNumber;
mentors = new ArrayList<Mentor>();
}
//------------------------
// INTERFACE
//------------------------
public boolean setNumber(String aNumber)
{
boolean wasSet = false;
number = aNumber;
wasSet = true;
return wasSet;
}
public String getNumber()
{
return number;
}
/* Code from template association_GetMany */
public Mentor getMentor(int index)
{
Mentor aMentor = mentors.get(index);
return aMentor;
}
public List<Mentor> getMentors()
{
List<Mentor> newMentors = Collections.unmodifiableList(mentors);
return newMentors;
}
public int numberOfMentors()
{
int number = mentors.size();
return number;
}
public boolean hasMentors()
{
boolean has = mentors.size() > 0;
return has;
}
public int indexOfMentor(Mentor aMentor)
{
int index = mentors.indexOf(aMentor);
return index;
}
/* Code from template association_IsNumberOfValidMethod */
public boolean isNumberOfMentorsValid()
{
boolean isValid = numberOfMentors() >= minimumNumberOfMentors();
return isValid;
}
/* Code from template association_MinimumNumberOfMethod */
public static int minimumNumberOfMentors()
{
return 1;
}
/* Code from template association_AddManyToManyMethod */
public boolean addMentor(Mentor aMentor)
{
boolean wasAdded = false;
if (mentors.contains(aMentor)) { return false; }
mentors.add(aMentor);
if (aMentor.indexOfStudent(this) != -1)
{
wasAdded = true;
}
else
{
wasAdded = aMentor.addStudent(this);
if (!wasAdded)
{
mentors.remove(aMentor);
}
}
return wasAdded;
}
/* Code from template association_AddMStarToMany */
public boolean removeMentor(Mentor aMentor)
{
boolean wasRemoved = false;
if (!mentors.contains(aMentor))
{
return wasRemoved;
}
if (numberOfMentors() <= minimumNumberOfMentors())
{
return wasRemoved;
}
int oldIndex = mentors.indexOf(aMentor);
mentors.remove(oldIndex);
if (aMentor.indexOfStudent(this) == -1)
{
wasRemoved = true;
}
else
{
wasRemoved = aMentor.removeStudent(this);
if (!wasRemoved)
{
mentors.add(oldIndex,aMentor);
}
}
return wasRemoved;
}
/* Code from template association_SetMStarToMany */
public boolean setMentors(Mentor... newMentors)
{
boolean wasSet = false;
ArrayList<Mentor> verifiedMentors = new ArrayList<Mentor>();
for (Mentor aMentor : newMentors)
{
if (verifiedMentors.contains(aMentor))
{
continue;
}
verifiedMentors.add(aMentor);
}
if (verifiedMentors.size() != newMentors.length || verifiedMentors.size() < minimumNumberOfMentors())
{
return wasSet;
}
ArrayList<Mentor> oldMentors = new ArrayList<Mentor>(mentors);
mentors.clear();
for (Mentor aNewMentor : verifiedMentors)
{
mentors.add(aNewMentor);
if (oldMentors.contains(aNewMentor))
{
oldMentors.remove(aNewMentor);
}
else
{
aNewMentor.addStudent(this);
}
}
for (Mentor anOldMentor : oldMentors)
{
anOldMentor.removeStudent(this);
}
wasSet = true;
return wasSet;
}
/* Code from template association_AddIndexControlFunctions */
public boolean addMentorAt(Mentor aMentor, int index)
{
boolean wasAdded = false;
if(addMentor(aMentor))
{
if(index < 0 ) { index = 0; }
if(index > numberOfMentors()) { index = numberOfMentors() - 1; }
mentors.remove(aMentor);
mentors.add(index, aMentor);
wasAdded = true;
}
return wasAdded;
}
public boolean addOrMoveMentorAt(Mentor aMentor, int index)
{
boolean wasAdded = false;
if(mentors.contains(aMentor))
{
if(index < 0 ) { index = 0; }
if(index > numberOfMentors()) { index = numberOfMentors() - 1; }
mentors.remove(aMentor);
mentors.add(index, aMentor);
wasAdded = true;
}
else
{
wasAdded = addMentorAt(aMentor, index);
}
return wasAdded;
}
public void delete()
{
ArrayList<Mentor> copyOfMentors = new ArrayList<Mentor>(mentors);
mentors.clear();
for(Mentor aMentor : copyOfMentors)
{
if (aMentor.numberOfStudents() <= Mentor.minimumNumberOfStudents())
{
aMentor.delete();
}
else
{
aMentor.removeStudent(this);
}
}
}
public String toString()
{
return super.toString() + "["+
"number" + ":" + getNumber()+ "]";
}
}