import java.util.ArrayList; import java.util.Iterator; public class Programme { static ArrayList activities = new ArrayList<>(); public Programme() { // Reset the activities list when a new Programme is created activities.clear(); } // Performs a check to see if the programme is valid public boolean isValid() { //Initializes variables we need to test int sumProject = 0; int sumCourse = 0; int sumBasicCourse = 0; int countSubjectModuleProject = 0; int sumSubjectModuleCourse = 0; int countBachelorProject = 0; int countBasicProject = 0; int sumElectiveCourse = 0; //The program looks through every activity in the programme list and checks for specific classes for (Activity activity : activities) { String activityString = activity.toString(); // Check for specific types based on toString() output if (activityString.startsWith("Basic Course:")) { sumBasicCourse += activity.getEcts(); sumCourse += activity.getEcts(); } else if (activityString.startsWith("Subject Module Course:")) { sumSubjectModuleCourse += activity.getEcts(); sumCourse += activity.getEcts(); } else if (activityString.startsWith("Elective Course:")) { sumElectiveCourse += activity.getEcts(); sumCourse += activity.getEcts(); } else if (activityString.startsWith("Course:")) { sumCourse += activity.getEcts(); } else if (activityString.startsWith("Bachelor Project:")) { countBachelorProject += 1; sumProject += activity.getEcts(); } else if (activityString.startsWith("Subject Module Project:")) { countSubjectModuleProject++; sumProject += activity.getEcts(); } else if (activityString.startsWith("Basic Project:")) { countBasicProject++; sumProject += activity.getEcts(); } else if (activityString.startsWith("Project:")) { sumProject += activity.getEcts(); } } //It returns a boolean depending on the parameters are correct /* A valid programme must have activities from two subject modules, three basic projects, a bachelor project, and a further 50 ECTS of courses where at least 40 ECTS are basic courses. In a valid programme no activity can appear twice */ return ( sumCourse == 90 && sumProject == 90 && sumBasicCourse == 40 && countSubjectModuleProject == 2 && sumSubjectModuleCourse == 40 && countBachelorProject == 1); } public void add(Activity... activitiesArray) { for (Activity e : activitiesArray) { this.activities.add(e); } } public String toString() { StringBuilder ret = new StringBuilder(); Iterator it = activities.iterator(); while (it.hasNext()) { ret.append(it.next()); if (it.hasNext()) { ret.append(System.lineSeparator()); } } return ret.toString(); } }