From d329a69c999f07ab5082b0a2b6aca6d6f452e6f3 Mon Sep 17 00:00:00 2001 From: Dina-Marie Hanxleden Date: Tue, 12 Jan 2016 19:34:16 +0100 Subject: Change student list to properties as the maximum is always known --- .../inf/se/projektthemenvergabe/model/Projekt.java | 83 +++++++++++++++++----- 1 file changed, 65 insertions(+), 18 deletions(-) (limited to 'src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java') 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 ca017cd..53972f5 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java @@ -5,8 +5,6 @@ import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; import javafx.util.Callback; /** @@ -26,8 +24,11 @@ public class Projekt private StringProperty projekteinhalte = new SimpleStringProperty(""); - private ObservableList student = FXCollections - .observableArrayList(Student.extractor()); + private ObjectProperty student1 = new SimpleObjectProperty<>(); + + private ObjectProperty student2 = new SimpleObjectProperty<>(); + + private ObjectProperty student3 = new SimpleObjectProperty<>(); private ObjectProperty ansprechpartner = new SimpleObjectProperty<>(); @@ -46,7 +47,8 @@ public class Projekt { return projekt -> new Observable[] { projekt.projektthemaProperty(), projekt.skizzeProperty(), projekt.projektbeschreibungProperty(), - projekt.projekteinhalteProperty(), projekt.getStudents(), + projekt.projekteinhalteProperty(), projekt.student1Property(), + projekt.student2Property(), projekt.student3Property(), projekt.ansprechpartnerProperty(), projekt.statusProperty() }; } @@ -132,7 +134,9 @@ public class Projekt student3.setProjekt(this); } - if (student.size() < 1) + // Because insertions always happen at first free index, here we can + // cheat a bit + if (this.student1.get() == null) { throw new IllegalArgumentException( "Alle Studenten haben bereits Projekte."); @@ -275,14 +279,34 @@ public class Projekt this.projekteinhalteProperty().set(projekteinhalte); } - /** - * Getter for an unmodifiable list of students. - * - * @return FXCollections.unmodifiableObservableList(student) - */ - public ObservableList getStudents() + public final ObjectProperty student1Property() + { + return this.student1; + } + + public final Student getStudent1() + { + return this.student1Property().get(); + } + + public final ObjectProperty student2Property() + { + return this.student2; + } + + public final Student getStudent2() + { + return this.student2Property().get(); + } + + public final ObjectProperty student3Property() { - return FXCollections.unmodifiableObservableList(student); + return this.student3; + } + + public final Student getStudent3() + { + return this.student3Property().get(); } /** @@ -298,15 +322,26 @@ public class Projekt "Es muss ein Student zum Hinzufügen gegeben sein."); } - if (!this.student.contains(student)) + if (!student.equals(student1.get()) && !student.equals(student2.get()) + && !student.equals(student3.get())) { - if (this.student.size() >= 3) + if (student1.get() == null) + { + student1.set(student); + } + else if (student2.get() == null) + { + student2.set(student); + } + else if (student3.get() == null) + { + student3.set(student); + } + else { throw new IllegalArgumentException( "3 Studenten arbeiten bereits an dem Projekt."); } - - this.student.add(student); student.setProjekt(this); } } @@ -324,7 +359,18 @@ public class Projekt "Es muss ein Student zum Entfernen gegeben sein."); } - this.student.remove(student); + if (student.equals(student1.get())) + { + student1.set(null); + } + else if (student.equals(student2.get())) + { + student2.set(null); + } + else if (student.equals(student3.get())) + { + student3.set(null); + } } /** @@ -461,4 +507,5 @@ public class Projekt return ((Projekt) obj).projektthema.get().equals(projektthema.get()); } + } \ No newline at end of file -- cgit v1.2.3-70-g09d2