63 lines
2.3 KiB
Java
63 lines
2.3 KiB
Java
package nl.andrewlalis.model;
|
|
|
|
import nl.andrewlalis.model.error.Error;
|
|
import nl.andrewlalis.model.error.Severity;
|
|
import nl.andrewlalis.ui.view.InitializerApp;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.logging.Logger;
|
|
|
|
/**
|
|
* Represents one student's github information.
|
|
*/
|
|
public class Student extends Person {
|
|
|
|
private static final Logger logger = Logger.getLogger(Student.class.getName());
|
|
static {
|
|
logger.setParent(Logger.getGlobal());
|
|
}
|
|
|
|
/**
|
|
* A list of partners that the student has said that they would like to be partners with.
|
|
*/
|
|
private List<Integer> preferredPartners;
|
|
|
|
/**
|
|
* Constructs a student similarly to a Person, but with an extra preferredPartners list.
|
|
* @param number The student's S-Number.
|
|
* @param name The student's name.
|
|
* @param emailAddress The student's email address.
|
|
* @param githubUsername The student's github username.
|
|
* @param preferredPartners A list of this student's preferred partners, as a list of integers representing the
|
|
* other students' numbers.
|
|
*/
|
|
public Student(int number, String name, String emailAddress, String githubUsername, List<Integer> preferredPartners) {
|
|
super(number, name, emailAddress, githubUsername);
|
|
this.preferredPartners = preferredPartners;
|
|
}
|
|
|
|
public List<Integer> getPreferredPartners() {
|
|
return this.preferredPartners;
|
|
}
|
|
|
|
/**
|
|
* Using a given map of all students, returns a student's preferred team.
|
|
* @param studentMap A mapping from student number to student for all students who have signed up.
|
|
* @return A team with unknown id, comprised of this student's preferred partners.
|
|
*/
|
|
public StudentTeam getPreferredTeam(Map<Integer, Student> studentMap) {
|
|
StudentTeam t = new StudentTeam();
|
|
for (int partnerNumber : this.getPreferredPartners()) {
|
|
if (!studentMap.containsKey(partnerNumber)) {
|
|
InitializerApp.organization.addError(new Error(Severity.MEDIUM, "Student " + this.getNumber() + " has non-existent preferred partner with id: " + partnerNumber));
|
|
logger.warning("Student has non-existent partner id: " + partnerNumber + '\n' + this);
|
|
} else {
|
|
t.addMember(studentMap.get(partnerNumber));
|
|
}
|
|
}
|
|
t.addMember(this);
|
|
return t;
|
|
}
|
|
}
|