diff --git a/.gradle/7.1/executionHistory/executionHistory.bin b/.gradle/7.1/executionHistory/executionHistory.bin index 075f977..77bc6be 100644 Binary files a/.gradle/7.1/executionHistory/executionHistory.bin and b/.gradle/7.1/executionHistory/executionHistory.bin differ diff --git a/.gradle/7.1/executionHistory/executionHistory.lock b/.gradle/7.1/executionHistory/executionHistory.lock index 8d906a3..447d784 100644 Binary files a/.gradle/7.1/executionHistory/executionHistory.lock and b/.gradle/7.1/executionHistory/executionHistory.lock differ diff --git a/.gradle/7.1/fileHashes/fileHashes.bin b/.gradle/7.1/fileHashes/fileHashes.bin index 8b6fcd9..8eb76b3 100644 Binary files a/.gradle/7.1/fileHashes/fileHashes.bin and b/.gradle/7.1/fileHashes/fileHashes.bin differ diff --git a/.gradle/7.1/fileHashes/fileHashes.lock b/.gradle/7.1/fileHashes/fileHashes.lock index 272f2e1..0f88752 100644 Binary files a/.gradle/7.1/fileHashes/fileHashes.lock and b/.gradle/7.1/fileHashes/fileHashes.lock differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 51928ac..0704bfe 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/com/example/DeliveryCar$LoadMessage.class b/build/classes/java/main/com/example/DeliveryCar$LoadMessage.class index 1987861..2498bf0 100644 Binary files a/build/classes/java/main/com/example/DeliveryCar$LoadMessage.class and b/build/classes/java/main/com/example/DeliveryCar$LoadMessage.class differ diff --git a/build/classes/java/main/com/example/DeliveryCar$PickupResponse.class b/build/classes/java/main/com/example/DeliveryCar$PickupResponse.class index 6a5bf7c..c5fac13 100644 Binary files a/build/classes/java/main/com/example/DeliveryCar$PickupResponse.class and b/build/classes/java/main/com/example/DeliveryCar$PickupResponse.class differ diff --git a/build/classes/java/main/com/example/DeliveryCar.class b/build/classes/java/main/com/example/DeliveryCar.class index 2f80b47..e0f1c8c 100644 Binary files a/build/classes/java/main/com/example/DeliveryCar.class and b/build/classes/java/main/com/example/DeliveryCar.class differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index f3fd877..1557966 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/main/java/com/example/AkkaMainSystem.java b/src/main/java/com/example/AkkaMainSystem.java index 34cd799..1b2b98a 100644 --- a/src/main/java/com/example/AkkaMainSystem.java +++ b/src/main/java/com/example/AkkaMainSystem.java @@ -58,4 +58,4 @@ public class AkkaMainSystem extends AbstractBehavior { */ return this; } -} +} \ No newline at end of file diff --git a/src/main/java/com/example/AkkaStart.java b/src/main/java/com/example/AkkaStart.java index 45339c2..61d6744 100644 --- a/src/main/java/com/example/AkkaStart.java +++ b/src/main/java/com/example/AkkaStart.java @@ -17,4 +17,4 @@ public class AkkaStart { messageMain.terminate(); } } -} +} \ No newline at end of file diff --git a/src/main/java/com/example/Customer.java b/src/main/java/com/example/Customer.java index d6428dc..4e86b7b 100644 --- a/src/main/java/com/example/Customer.java +++ b/src/main/java/com/example/Customer.java @@ -106,4 +106,4 @@ public class Customer extends AbstractBehavior { getContext().getLog().info("Ich habe ein Paket von {} erhalten mit dem Inhalt: {}", pkt.paket.absender, pkt.paket.inhalt); return this; } -} +} \ No newline at end of file diff --git a/src/main/java/com/example/DeliveryCar.java b/src/main/java/com/example/DeliveryCar.java index 4d6d0f2..6e5919d 100644 --- a/src/main/java/com/example/DeliveryCar.java +++ b/src/main/java/com/example/DeliveryCar.java @@ -6,7 +6,6 @@ import akka.actor.typed.javadsl.AbstractBehavior; import akka.actor.typed.javadsl.ActorContext; import akka.actor.typed.javadsl.Behaviors; import akka.actor.typed.javadsl.Receive; -import akka.actor.typed.javadsl.TimerScheduler; import java.util.ArrayList; import java.util.List; @@ -25,7 +24,7 @@ public class DeliveryCar extends AbstractBehavior { public record PickupResponse(Paket paket) implements Message {} public record StartRoute() implements Message {} - + private DeliveryCar(ActorContext context, ArrayList> route) { super(context); this.route = route; @@ -40,9 +39,7 @@ public class DeliveryCar extends AbstractBehavior { return newReceiveBuilder() .onMessage(PickupResponse.class, this::onPickupResponse) .onMessage(LoadMessage.class, this::onLoadMessage) - .onMessage(PickupResponse.class, this::onPickupResponse) - .onMessage(StartRoute.class, msg->{ - onStartRoute();return this;}) + .onMessage(StartRoute.class, this::onStartRoute) .build(); } @@ -53,88 +50,58 @@ public class DeliveryCar extends AbstractBehavior { } private Behavior onPickupResponse(PickupResponse rsp) { - if(rsp.paket.inhalt == null){ + if (rsp.paket == null || rsp.paket.inhalt == null) { globalIndex++; checkNextStop(); - }else { - if(pakete.size()==3){ - checkNextStop(); + } else { + if (pakete.size() < maxCapacity) { + pakete.add(rsp.paket); + getContext().getLog().info("Aktuelle Anzahl der Pakete im Truck: {}", pakete.size()); } - pakete.add(rsp.paket); - getContext().getLog().info("Aktuelle Anzahl der Pakete im Truck: {}", pakete.size()); globalIndex++; checkNextStop(); } return this; } -//Die rekursive Methode,die über alle Addressen iteriert + private void checkNextStop() { - //Wenn Wagen voll ist, dann wird erstmal geguckt ob man ein Paket liefern kann if (pakete.size() >= maxCapacity) { deliverPackages(); - checkNextStop(); - } - //Wenn fertig iteriert so geht der Wagen an den Verteilerzentrum - if(globalIndex==4){ - DistributionCenter.ArriveMessage antwort = new DistributionCenter.ArriveMessage(pakete,getContext().getSelf()); - //ActorRef antwort1; - // antwort1.tell(antwort); - - //Fehlende Antwort an den Verteilerzentrum - - - // - - } - else { - //Guckt ob Paket für Kunden da ist und fragt an ob etwas mitgenommen werden muss - deliverPackages(); + } else if (globalIndex >= route.size()) { + getContext().getLog().info("Wagen kehrt zum Verteilzentrum zurück."); + DistributionCenter.ArriveMessage antwort = new DistributionCenter.ArriveMessage(pakete, getContext().getSelf()); + // Antwort an das Verteilzentrum senden (die genaue Implementierung hängt von Ihrer Systemarchitektur ab) + } else { sendPickupMessage(); } } - public Behavior onStartRoute(){ - /*if(globalIndex==0){ - checkNextStop(); - return this; - }else{ - if(globalIndex==4) { - globalIndex = 0; - onStartRoute(); - } - } - return this;*/ + private Behavior onStartRoute(StartRoute msg) { globalIndex = 0; checkNextStop(); return this; } -//Sendet PickUp Nachricht an den jetztigen Kunden wo der gerade ist. private void sendPickupMessage() { - ActorRef nextCustomer = route.get(globalIndex); - nextCustomer.tell(new Customer.PickUpMessage(getContext().getSelf(), "Wagen kann Paket aufnehmen")); - globalIndex++; + if (globalIndex < route.size()) { + ActorRef nextCustomer = route.get(globalIndex); + nextCustomer.tell(new Customer.PickUpMessage(getContext().getSelf(), "Wagen kann Paket aufnehmen")); + } else { + getContext().getLog().info("Keine weiteren Kunden in der Route."); + } } - - //Prüft ob Paket im Wagen für den Empfänger ist oder nicht, falls ja wird dieser direkt entfernt private void deliverPackages() { - ActorRef nextCustomer = route.get(globalIndex); - //Iteriert über alle Pakete - for (Paket paket : pakete) { - //Falls Empfänger vorhanden so wird dieser aus dem Wagen genommen und geht dann weiter - if(pakete.get(globalIndex).empfaenger == nextCustomer ) { - nextCustomer.tell(new Customer.DeliveryMessage(paket)); - pakete.remove(globalIndex); - // globalIndex++; + if (globalIndex < route.size()) { + ActorRef nextCustomer = route.get(globalIndex); + for (int i = 0; i < pakete.size(); i++) { + Paket paket = pakete.get(i); + if (paket.empfaenger == nextCustomer) { + nextCustomer.tell(new Customer.DeliveryMessage(paket)); + pakete.remove(i); + i--; // Index anpassen, da ein Element entfernt wurde + } } } - } - - private void removeMessage(Paket paket){ - pakete.remove(paket); - } - - -} \ No newline at end of file +} diff --git a/src/main/java/com/example/DistributionCenter.java b/src/main/java/com/example/DistributionCenter.java index f2b6fdd..f79b703 100644 --- a/src/main/java/com/example/DistributionCenter.java +++ b/src/main/java/com/example/DistributionCenter.java @@ -167,4 +167,4 @@ public class DistributionCenter extends AbstractBehavior