From 55f4ca86ef5207ff2be82ac998291d289b028f8c Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Mon, 11 Jan 2016 21:38:54 +0100 Subject: Update model multiplicity --- .../model/Ansprechpartner.java | 17 ++- .../projektthemenvergabe/model/Organisation.java | 6 +- .../inf/se/projektthemenvergabe/model/Projekt.java | 115 +++++++++++++++++++-- .../inf/se/projektthemenvergabe/model/Student.java | 35 ++++++- 4 files changed, 156 insertions(+), 17 deletions(-) (limited to 'src/de/fhswf/in/inf') diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java index 6a29db5..21dbd0d 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java @@ -115,7 +115,16 @@ public class Ansprechpartner */ public void addProjekt(Projekt projekt) { - this.projekt.add(projekt); + if (projekt == null) + { + throw new IllegalArgumentException( + "Es muss ein Projekt zum Hinzufügen gegeben sein."); + } + + if (!this.projekt.contains(projekt)) + { + this.projekt.add(projekt); + } } /** @@ -125,6 +134,12 @@ public class Ansprechpartner */ public void removeProjekt(Projekt projekt) { + if (projekt == null) + { + throw new IllegalArgumentException( + "Es muss ein Projekt zum Entfernen gegeben sein."); + } + this.projekt.remove(projekt); } diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java index ab90403..63bbc96 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java @@ -107,7 +107,11 @@ public class Organisation throw new IllegalArgumentException( "Es muss ein Ansprechpartner zum Hinzufügen gegeben sein."); } - this.ansprechpartner.add(ansprechpartner); + + if (!this.ansprechpartner.contains(ansprechpartner)) + { + this.ansprechpartner.add(ansprechpartner); + } } /** diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java index e52e2d8..bcaba6f 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java @@ -30,7 +30,7 @@ public class Projekt private ArrayList student = new ArrayList(); - private Ansprechpartner ansprechpartner; + private ObjectProperty ansprechpartner = new SimpleObjectProperty<>(); private ObjectProperty status = new SimpleObjectProperty<>( StatusTypes.IN_BEARBEITUNG); @@ -112,26 +112,32 @@ public class Projekt "Das Projekt sollte irgendwo gemacht werden."); } - if (student1 != null) + if (student1 != null && student1.getProjekt() == null) { - student.add(student1); + addStudent(student1); student1.setProjekt(this); } - if (student2 != null) + if (student2 != null && student2.getProjekt() == null) { - student.add(student2); + addStudent(student2); student2.setProjekt(this); } - if (student3 != null) + if (student3 != null && student3.getProjekt() == null) { - student.add(student3); + addStudent(student3); student3.setProjekt(this); } - this.ansprechpartner = ansprechpartner; - this.ansprechpartner.addProjekt(this); + if (student.size() < 1) + { + throw new IllegalArgumentException( + "Alle Studenten haben bereits Projekte."); + } + + this.ansprechpartner.set(ansprechpartner); + this.ansprechpartner.get().addProjekt(this); this.projektthema.set(projektthema); } @@ -277,6 +283,58 @@ public class Projekt return Collections.unmodifiableList(student); } + /** + * Füge einen Studenten hinzu. + * + * @param student + */ + public void addStudent(Student student) + { + if (student == null) + { + throw new IllegalArgumentException( + "Es muss ein Student zum Hinzufügen gegeben sein."); + } + + if (!this.student.contains(student)) + { + if (this.student.size() >= 3) + { + throw new IllegalArgumentException( + "3 Studenten arbeiten bereits an dem Projekt."); + } + + this.student.add(student); + student.setProjekt(this); + } + } + + /** + * Remove the Student. + * + * @param student + */ + public void removeStudent(Student student) + { + if (student == null) + { + throw new IllegalArgumentException( + "Es muss ein Student zum Entfernen gegeben sein."); + } + + this.student.remove(student); + } + + /** + * Getter for property ansprechpartner. + * + * @return Returns the ansprechpartner. + */ + public ObjectProperty ansprechpartnerProperty() + { + return ansprechpartner; + } + /** * * Getter for Ansprechpartner of the Projekt. @@ -285,7 +343,28 @@ public class Projekt */ public Ansprechpartner getAnsprechpartner() { - return this.ansprechpartner; + return this.ansprechpartner.get(); + } + + /** + * Setter for ansprechpartner. + * + * @param ansprechpartner + * The ansprechpartner to set. + */ + public void setAnsprechpartner(Ansprechpartner ansprechpartner) + { + if (this.ansprechpartner.get() != null) + { + this.ansprechpartner.get().removeProjekt(this); + } + + this.ansprechpartner.set(ansprechpartner); + + if (ansprechpartner != null) + { + ansprechpartner.addProjekt(this); + } } /** @@ -364,4 +443,20 @@ public class Projekt { return projektthema.get(); } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) + { + if (!(obj instanceof Projekt)) + { + return false; + } + + return ((Projekt) obj).projektthema.get().equals(projektthema.get()); + } } \ No newline at end of file diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java index 740fa00..7265b94 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java @@ -1,7 +1,9 @@ package de.fhswf.in.inf.se.projektthemenvergabe.model; 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; @@ -20,7 +22,7 @@ public class Student private IntegerProperty matrikelnummer = new SimpleIntegerProperty(0); - private Projekt projekt; + private ObjectProperty projekt = new SimpleObjectProperty<>(); /** * Constructor of {@link Student}. @@ -132,26 +134,49 @@ public class Student this.matrikelnummerProperty().set(matrikelnummer); } + /** + * Getter for property projekt. + * + * @return Returns the projekt. + */ + public ObjectProperty projektProperty() + { + return projekt; + } + /** * - * Set the Projekt to Student. + * Set the Projekt for Student. * * @param projekt */ public void setProjekt(Projekt projekt) { - this.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 + * @return Returns The Projekt of the student */ public Projekt getProjekt() { - return this.projekt; + return this.projekt.get(); } /* -- cgit v1.2.3-70-g09d2