summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/in/inf/se/projektthemenvergabe/model
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/fhswf/in/inf/se/projektthemenvergabe/model')
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/model/Ansprechpartner.java17
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java6
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/model/Projekt.java115
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java35
4 files changed, 156 insertions, 17 deletions
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> student = new ArrayList<Student>();
- private Ansprechpartner ansprechpartner;
+ private ObjectProperty<Ansprechpartner> ansprechpartner = new SimpleObjectProperty<>();
private ObjectProperty<StatusTypes> 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);
}
@@ -278,6 +284,58 @@ public class Projekt
}
/**
+ * 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<Ansprechpartner> 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> projekt = new SimpleObjectProperty<>();
/**
* Constructor of {@link Student}.
@@ -133,25 +135,48 @@ public class Student
}
/**
+ * Getter for property projekt.
+ *
+ * @return Returns the projekt.
+ */
+ public ObjectProperty<Projekt> 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();
}
/*