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 +++++++++++++++++----- .../view/ProjektHinzufuegenController.java | 26 ++++--- .../view/ProjektthemenverwaltungsController.java | 47 +++++------- 3 files changed, 99 insertions(+), 57 deletions(-) (limited to 'src/de/fhswf/in/inf') 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 diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java index deb2293..65fa98c 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektHinzufuegenController.java @@ -130,17 +130,17 @@ public class ProjektHinzufuegenController ansprechpartnerComboBox.setValue(projekt.getAnsprechpartner()); - if (projekt.getStudents().size() > 0) + if (projekt.getStudent1() != null) { - student1ComboBox.setValue(projekt.getStudents().get(0)); + student1ComboBox.setValue(projekt.getStudent1()); } - if (projekt.getStudents().size() > 1) + if (projekt.getStudent2() != null) { - student2ComboBox.setValue(projekt.getStudents().get(1)); + student2ComboBox.setValue(projekt.getStudent2()); } - if (projekt.getStudents().size() > 2) + if (projekt.getStudent3() != null) { - student3ComboBox.setValue(projekt.getStudents().get(2)); + student3ComboBox.setValue(projekt.getStudent3()); } dozentenkommentar.setText(projekt.getDozentenkommentar()); @@ -224,10 +224,18 @@ public class ProjektHinzufuegenController { projekt.setProjektthema(projektthemaTextField.getText().trim()); projekt.setAnsprechpartner(ansprechpartnerComboBox.getValue()); - for (Student student : projekt.getStudents() - .toArray(new Student[projekt.getStudents().size()])) + + if (projekt.getStudent1() != null) + { + projekt.removeStudent(projekt.getStudent1()); + } + if (projekt.getStudent2() != null) + { + projekt.removeStudent(projekt.getStudent2()); + } + if (projekt.getStudent3() != null) { - projekt.removeStudent(student); + projekt.removeStudent(projekt.getStudent3()); } if (student1ComboBox.getValue() != null) diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java index ffea351..2cd1c14 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/view/ProjektthemenverwaltungsController.java @@ -7,6 +7,7 @@ import de.fhswf.in.inf.se.projektthemenvergabe.model.Projekt; import de.fhswf.in.inf.se.projektthemenvergabe.model.Student; import javafx.application.Platform; import javafx.beans.property.SimpleIntegerProperty; +import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; import javafx.collections.transformation.FilteredList; import javafx.collections.transformation.SortedList; @@ -35,13 +36,13 @@ public class ProjektthemenverwaltungsController private TableColumn ansprechpatnerTableColumn; @FXML - private TableColumn student1TableColumn; + private TableColumn student1TableColumn; @FXML - private TableColumn student2TableColumn; + private TableColumn student2TableColumn; @FXML - private TableColumn student3TableColumn; + private TableColumn student3TableColumn; @FXML private TableColumn statusTableColumn; @@ -73,30 +74,9 @@ public class ProjektthemenverwaltungsController (data) -> data.getValue().projektthemaProperty()); ansprechpatnerTableColumn.setCellValueFactory( (data) -> data.getValue().getAnsprechpartner().nameProperty()); - student1TableColumn.setCellValueFactory((data) -> { - if (data.getValue().getStudents().size() > 0) - { - return data.getValue().getStudents().get(0) - .matrikelnummerProperty().asObject(); - } - return new SimpleIntegerProperty(0).asObject(); - }); - student2TableColumn.setCellValueFactory((data) -> { - if (data.getValue().getStudents().size() > 1) - { - return data.getValue().getStudents().get(1) - .matrikelnummerProperty().asObject(); - } - return new SimpleIntegerProperty(0).asObject(); - }); - student3TableColumn.setCellValueFactory((data) -> { - if (data.getValue().getStudents().size() > 2) - { - return data.getValue().getStudents().get(2) - .matrikelnummerProperty().asObject(); - } - return new SimpleIntegerProperty(0).asObject(); - }); + student1TableColumn.setCellValueFactory((data) -> data.getValue().student1Property()); + student2TableColumn.setCellValueFactory((data) -> data.getValue().student2Property()); + student3TableColumn.setCellValueFactory((data) -> data.getValue().student3Property()); statusTableColumn .setCellValueFactory((data) -> data.getValue().statusProperty()); statusTableColumn.setCellFactory(ComboBoxTableCell.forTableColumn( @@ -309,10 +289,17 @@ public class ProjektthemenverwaltungsController if (selectedItem != null) { - for (Student student : selectedItem.getStudents() - .toArray(new Student[selectedItem.getStudents().size()])) + if (selectedItem.getStudent1() != null) + { + selectedItem.getStudent1().setProjekt(null); + } + if (selectedItem.getStudent2() != null) + { + selectedItem.getStudent2().setProjekt(null); + } + if (selectedItem.getStudent3() != null) { - student.setProjekt(null); + selectedItem.getStudent3().setProjekt(null); } main.getProjekte().remove(selectedItem); -- cgit v1.2.3-70-g09d2