package de.fhswf.in.inf.se.projektthemenvergabe.model; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javafx.beans.Observable; import javafx.beans.binding.StringExpression; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.util.Callback; /** * * Class Ansprechpartner to represents data. * * @author Dina-Marie Hanxleden & Stefan Suhren * @version 1.0 */ public class Ansprechpartner { private StringProperty vorname = new SimpleStringProperty(); private StringProperty nachname = new SimpleStringProperty(); private ArrayList projekt = new ArrayList(); private ObjectProperty organisation = new SimpleObjectProperty<>(); /** * Generates an extractor that fires when a property of a list value * changes. * * @return The extractor. */ public static Callback extractor() { return ansprechpartner -> { List extractorList = new ArrayList<>(); extractorList.add(ansprechpartner.vornameProperty()); extractorList.add(ansprechpartner.nachnameProperty()); extractorList.add(ansprechpartner.organisationProperty()); if (ansprechpartner.getOrganisation() != null) { extractorList .add(ansprechpartner.getOrganisation().nameProperty()); } return extractorList.toArray(new Observable[extractorList.size()]); }; } /** * Constructor of Ansprechpartner. * * @param organisation */ public Ansprechpartner(Organisation organisation) { this.organisation.set(organisation); if (organisation != null) { this.organisation.get().addAnsprechpartner(this); } } /** * Getter for an unmodifiable list of projects. * * @return Collection.unmodifiableList(projekt) */ public List getProjekte() { return Collections.unmodifiableList(projekt); } /** * Add a project to Ansprechpartner. * * @param projekt */ public void addProjekt(Projekt projekt) { this.projekt.add(projekt); } /** * Remove a project from Ansprechpartner. * * @param projekt */ public void removeProjekt(Projekt projekt) { this.projekt.remove(projekt); } /** * Getter for property organisation. * * @return Returns the organisation. */ public ObjectProperty organisationProperty() { return organisation; } /** * Getter for organisation. * * @return Returns the organisation. */ public Organisation getOrganisation() { return organisation.get(); } /** * Setter for organisation. * * @param organisation * The organisation to set. */ public void setOrganisation(Organisation organisation) { if (this.organisation.get() != null) { this.organisation.get().removeAnsprechpartner(this); } this.organisation.set(organisation); if (organisation != null) { organisation.addAnsprechpartner(this); } } /** * Getter for property nachname. * * @return Returns the nachname. */ public final StringProperty nachnameProperty() { return this.nachname; } /** * Getter for nachname. * * @return Returns the nachname. */ public String getNachname() { return this.nachname.get(); } /** * Setter for nachname. * * @param nachname * The nachname to set. */ public void setNachname(String nachname) { this.nachname.set(nachname); } /** * Getter for property vorname. * * @return Returns the vorname. */ public final StringProperty vornameProperty() { return this.vorname; } /** * Getter for property vorname. * * @return Returns the vorname. */ public String getVorname() { return vorname.get(); } /** * Setter for vorname. * * @param vorname * The vorname to set. */ public void setVorname(String vorname) { this.vorname.set(vorname); } /** * A read-only {@link StringExpression} that is the combined * vornameProperty and nachnameProperty. * * @return The full name of the {@link Ansprechpartner}. */ public StringExpression nameProperty() { return vorname.concat(new SimpleStringProperty(" ").concat(nachname)); } /* * (non-Javadoc) * * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (!(obj instanceof Ansprechpartner)) { return false; } return ((Ansprechpartner) obj).vorname.get().equals(vorname.get()) && ((Ansprechpartner) obj).nachname.get().equals(nachname.get()); } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String toString() { return vorname.get() + " " + nachname.get(); } }