From b3daa4a45e62340597dd5afc2c1e17c0215ad22a Mon Sep 17 00:00:00 2001 From: Jonas Hinterdorfer Date: Tue, 11 Mar 2025 13:53:26 +0100 Subject: [PATCH] done all unit tests --- .idea/vcs.xml | 6 +++ .../at/ionas999/health/model/Patient.java | 42 +++++++++++++++- .../at/ionas999/health/model/WaitingRoom.java | 48 +++++++++++++++++++ .../at/ionas999/observer/ChangeObserver.java | 2 +- .../ionas999/health/model/UpdateObserver.java | 3 +- .../health/model/WaitingRoomTest.java | 20 ++++---- 6 files changed, 108 insertions(+), 13 deletions(-) create mode 100644 .idea/vcs.xml 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);