package de.fhswf.in.inf.se.projektthemenvergabe.model; import javafx.beans.Observable; import javafx.beans.property.IntegerProperty; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.util.Callback; /** * * Class Student to represents data. * * @author Dina-Marie Hanxleden & Stefan Suhren * @version 1.0 */ public class Student { private StringProperty vorname = new SimpleStringProperty(""); private StringProperty nachname = new SimpleStringProperty(""); private IntegerProperty matrikelnummer = new SimpleIntegerProperty(0); private ObjectProperty projekt = new SimpleObjectProperty<>(); /** * Generates an extractor that fires when a property of a list value * changes. * * @return The extractor. */ public static Callback extractor() { return student -> new Observable[] { student.matrikelnummerProperty(), student.vornameProperty(), student.nachnameProperty(), student.projektProperty() }; } /** * Constructor of {@link Student}. * * @param matrikelnummer * Matrikelnummer of the Student. */ public Student(int matrikelnummer) { this.matrikelnummer.set(matrikelnummer); } /** * * Getter for the property vorname. * * @return Returns the property vorname */ public final StringProperty vornameProperty() { return this.vorname; } /** * * Getter for vorname. * * @return Returns the vorname */ public final String getVorname() { return this.vornameProperty().get(); } /** * * Setter for vorname. * * @param vorname */ public final void setVorname(final String vorname) { this.vornameProperty().set(vorname); } /** * * Getter for the property nachname. * * @return Returns the property nachname */ public final StringProperty nachnameProperty() { return this.nachname; } /** * * Getter for nachname. * * @return Returns the nachname */ public final String getNachname() { return this.nachnameProperty().get(); } /** * * Setter for nachname. * * @param nachname */ public final void setNachname(final String nachname) { this.nachnameProperty().set(nachname); } /** * * Getter for the property matrikelnummer. * * @return Returns the property matrikelnummer */ public final IntegerProperty matrikelnummerProperty() { return this.matrikelnummer; } /** * * Getter for matrikelnummer. * * @return Returns the matrikelnummer */ public final int getMatrikelnummer() { return this.matrikelnummerProperty().get(); } /** * * Setter for matrikelnummer. * * @param matrikelnummer */ public final void setMatrikelnummer(final int matrikelnummer) { this.matrikelnummerProperty().set(matrikelnummer); } /** * Getter for property projekt. * * @return Returns the projekt. */ public ObjectProperty projektProperty() { return projekt; } /** * * Set the Projekt for Student. * * @param projekt */ public void setProjekt(Projekt projekt) { if (this.projekt.get() == null || !this.projekt.get().equals(projekt)) { if (this.projekt.get() != null) { this.projekt.get().removeStudent(this); } this.projekt.set(projekt); if (projekt != null) { projekt.addStudent(this); } } } /** * * Getter for Projekt. * * @return Returns The Projekt of the student */ public Projekt getProjekt() { return this.projekt.get(); } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String toString() { return String.valueOf(matrikelnummer.get()); } /* * (non-Javadoc) * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (!(obj instanceof Student)) { return false; } return ((Student) obj).matrikelnummer.get() == matrikelnummer.get(); } }