diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/at/ionas999/health/model/Patient.java b/src/main/java/at/ionas999/health/model/Patient.java
index c2d79fd..b81b2a0 100644
--- a/src/main/java/at/ionas999/health/model/Patient.java
+++ b/src/main/java/at/ionas999/health/model/Patient.java
@@ -1,4 +1,44 @@
package at.ionas999.health.model;
-public class Patient {
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class Patient implements Comparable {
+ private String name;
+ private LocalDateTime appointment;
+ private boolean isEmergency;
+
+ public Patient(String name, LocalDateTime appointment, boolean isEmergency) {
+ this.name = name;
+ this.appointment = appointment;
+ this.isEmergency = isEmergency;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public LocalDateTime getAppointment() {
+ return appointment;
+ }
+
+ public boolean isEmergency() {
+ return isEmergency;
+ }
+
+ @Override
+ public int compareTo(Patient o) {
+ if (this.isEmergency && !o.isEmergency) {
+ return -1;
+ } else if (!this.isEmergency && o.isEmergency) {
+ return 1;
+ } else {
+ return this.appointment.compareTo(o.appointment);
+ }
+ }
+
+ @Override
+ public String toString() {
+ return (isEmergency ? "EMERGENCY" : appointment.format(DateTimeFormatter.ofPattern("d.M.yy HH:mm"))) + " " + name;
+ }
}
diff --git a/src/main/java/at/ionas999/health/model/WaitingRoom.java b/src/main/java/at/ionas999/health/model/WaitingRoom.java
index 6b95267..460e38e 100644
--- a/src/main/java/at/ionas999/health/model/WaitingRoom.java
+++ b/src/main/java/at/ionas999/health/model/WaitingRoom.java
@@ -1,4 +1,52 @@
package at.ionas999.health.model;
+import at.ionas999.observer.ChangeObserver;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.PriorityQueue;
+
public class WaitingRoom {
+ private final List> observers = new ArrayList<>();
+ private final PriorityQueue patients = new PriorityQueue<>();
+ private Patient patientUndergoingTreatment = null;
+
+ public int getPatientCount() {
+ return patients.size();
+ }
+
+ public Patient getPatientInPreparation(){
+ return patients.peek();
+ }
+
+ public Patient getPatientUndergoingTreatment(){
+ return this.patientUndergoingTreatment;
+ }
+
+ public void addObserver(ChangeObserver observer) {
+ observers.add(observer);
+ observer.update(this);
+ }
+
+ public void removeObserver(ChangeObserver observer) {
+ observers.remove(observer);
+ }
+
+ public void addPatient(String name, LocalDateTime appointment, boolean isEmergency) {
+ Patient patient = new Patient(name, appointment, isEmergency);
+ patients.add(patient);
+ notifyObservers();
+ }
+
+ public void treatNextPatient() {
+ this.patientUndergoingTreatment = patients.poll();
+ notifyObservers();
+ }
+
+ private void notifyObservers() {
+ for (ChangeObserver observer : observers) {
+ observer.update(this);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/main/java/at/ionas999/observer/ChangeObserver.java b/src/main/java/at/ionas999/observer/ChangeObserver.java
index 561fbe6..d795dd2 100644
--- a/src/main/java/at/ionas999/observer/ChangeObserver.java
+++ b/src/main/java/at/ionas999/observer/ChangeObserver.java
@@ -1,4 +1,4 @@
-package at.htlleonding.observer;
+package at.ionas999.observer;
@FunctionalInterface
public interface ChangeObserver {
diff --git a/src/test/at/ionas999/health/model/UpdateObserver.java b/src/test/at/ionas999/health/model/UpdateObserver.java
index 731a7d5..120ffc4 100644
--- a/src/test/at/ionas999/health/model/UpdateObserver.java
+++ b/src/test/at/ionas999/health/model/UpdateObserver.java
@@ -1,6 +1,7 @@
package at.ionas999.health.model;
-import at.htlleonding.observer.ChangeObserver;
+
+import at.ionas999.observer.ChangeObserver;
public class UpdateObserver implements ChangeObserver {
private int updateCount;
diff --git a/src/test/at/ionas999/health/model/WaitingRoomTest.java b/src/test/at/ionas999/health/model/WaitingRoomTest.java
index d4be15e..3ad02d6 100644
--- a/src/test/at/ionas999/health/model/WaitingRoomTest.java
+++ b/src/test/at/ionas999/health/model/WaitingRoomTest.java
@@ -1,6 +1,6 @@
package at.ionas999.health.model;
-import at.htlleonding.observer.ChangeObserver;
+import at.ionas999.observer.ChangeObserver;
import org.junit.jupiter.api.Test;
@@ -13,16 +13,16 @@ import static org.junit.jupiter.api.Assertions.*;
class WaitingRoomTest {
private List createPatients() {
- Patient patientOtto = new at.htlleonding.health.model.Patient("Otto Normalverbraucher", LocalDateTime.of(2022, 3, 14, 12, 00), true);
- Patient patientTom = new at.htlleonding.health.model.Patient("Tom Taxpayer", LocalDateTime.of(2022, 3, 14, 12, 20), true);
- Patient patientRichard = new at.htlleonding.health.model.Patient("Richard Roe", LocalDateTime.of(2022, 3, 14, 13, 00), true);
- Patient patientLieschen = new at.htlleonding.health.model.Patient("Lieschen Müller", LocalDateTime.of(2023, 3, 14, 12, 00), true);
- Patient patientJan = new at.htlleonding.health.model.Patient("Jan Kowalski", LocalDateTime.of(2022, 3, 14, 12, 15), false);
- Patient patientJohn = new at.htlleonding.health.model.Patient("John Doe", LocalDateTime.of(2022, 3, 14, 12, 30), false);
- Patient patientMax = new at.htlleonding.health.model.Patient("Max Mustermann", LocalDateTime.of(2022, 3, 14, 13, 00), false);
- Patient patientSally = new at.htlleonding.health.model.Patient("Sally Sixpack", LocalDateTime.of(2022, 3, 15, 12, 00), false);
+ Patient patientOtto = new at.ionas999.health.model.Patient("Otto Normalverbraucher", LocalDateTime.of(2022, 3, 14, 12, 00), true);
+ Patient patientTom = new at.ionas999.health.model.Patient("Tom Taxpayer", LocalDateTime.of(2022, 3, 14, 12, 20), true);
+ Patient patientRichard = new at.ionas999.health.model.Patient("Richard Roe", LocalDateTime.of(2022, 3, 14, 13, 00), true);
+ Patient patientLieschen = new at.ionas999.health.model.Patient("Lieschen Müller", LocalDateTime.of(2023, 3, 14, 12, 00), true);
+ Patient patientJan = new at.ionas999.health.model.Patient("Jan Kowalski", LocalDateTime.of(2022, 3, 14, 12, 15), false);
+ Patient patientJohn = new at.ionas999.health.model.Patient("John Doe", LocalDateTime.of(2022, 3, 14, 12, 30), false);
+ Patient patientMax = new at.ionas999.health.model.Patient("Max Mustermann", LocalDateTime.of(2022, 3, 14, 13, 00), false);
+ Patient patientSally = new at.ionas999.health.model.Patient("Sally Sixpack", LocalDateTime.of(2022, 3, 15, 12, 00), false);
- List result = new LinkedList<>();
+ List result = new LinkedList<>();
result.add(patientOtto);
result.add(patientTom);
result.add(patientRichard);