import enumeration.Gender; import java.util.ArrayList; import java.util.List; public abstract class UniversityMember { // final for the ID because it will remain the same for the whole duration of studying or being employed // PK & FK private final int id; private Gender gender; private String firstName; private String lastName; private String placeOfResidence; private final String birthPlace; private String officialEmail; private String privateEmail; private List<Course> personalCourses = new ArrayList<>(); public UniversityMember(int id, Gender gender, String firstName, String lastName, String placeOfResidence, String birthPlace, String officialEmail, String privateEmail, List<Course> personalCourses) { this.id = id; this.gender = gender; this.firstName = firstName; this.lastName = lastName; this.placeOfResidence = placeOfResidence; this.birthPlace = birthPlace; this.officialEmail = officialEmail; this.privateEmail = privateEmail; this.personalCourses = personalCourses; } public Course getCourseForId(int id) { for (Course course : personalCourses) { if (course.getId() == id) { return course; } } return null; } public List<Course> getPersonalCourses() { return personalCourses; } public boolean signUpForCourse(Course course) { if (isSignedUpForCourse(course)) { return false; } else { return personalCourses.add(course); } } public boolean leaveCourse(Course course) { if (isSignedUpForCourse(course)) { return personalCourses.remove(course); } else { return false; } } public boolean isSignedUpForCourse(Course course) { return personalCourses.contains(course); } }