2023-05-03 12:02:18 +02:00
|
|
|
package com.example;
|
|
|
|
|
|
|
|
import akka.actor.typed.ActorRef;
|
|
|
|
import akka.actor.typed.Behavior;
|
|
|
|
import akka.actor.typed.javadsl.*;
|
|
|
|
|
2024-05-15 01:29:12 +02:00
|
|
|
import java.util.ArrayList;
|
2024-05-17 01:18:02 +02:00
|
|
|
import java.util.Collections;
|
|
|
|
import java.util.List;
|
2024-05-15 01:29:12 +02:00
|
|
|
|
2023-05-03 12:02:18 +02:00
|
|
|
public class AkkaMainSystem extends AbstractBehavior<AkkaMainSystem.Create> {
|
|
|
|
|
|
|
|
public static class Create {
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Behavior<Create> create() {
|
|
|
|
return Behaviors.setup(AkkaMainSystem::new);
|
|
|
|
}
|
|
|
|
|
|
|
|
private AkkaMainSystem(ActorContext<Create> context) {
|
|
|
|
super(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Receive<Create> createReceive() {
|
|
|
|
return newReceiveBuilder().onMessage(Create.class, this::onCreate).build();
|
|
|
|
}
|
|
|
|
|
2024-05-17 01:18:02 +02:00
|
|
|
|
2023-05-03 12:02:18 +02:00
|
|
|
private Behavior<Create> onCreate(Create command) {
|
2024-05-17 01:18:02 +02:00
|
|
|
|
|
|
|
// Erstellen des Adressbuchs
|
|
|
|
ArrayList<ActorRef<Customer.Message>> customers = new ArrayList<>();
|
|
|
|
ActorRef<AddressBook.Message> addressBook = getContext().spawn(AddressBook.create(customers), "addressBook");
|
|
|
|
|
|
|
|
// Erstellen von vier Empfänger*innen
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
|
|
customers.add(getContext().spawn(Customer.create("Customer" + (i + 1)), "customer" + (i + 1)));
|
|
|
|
}
|
|
|
|
|
|
|
|
// Erstellen des Verteilzentrums
|
|
|
|
ActorRef<DistributionCenter.Message> distributionCenter = getContext().spawn(DistributionCenter.create(), "distributionCenter");
|
|
|
|
|
|
|
|
// Erstellen von vier Wagen mit zufälligen Routen
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
|
|
List<ActorRef<Customer.Message>> route = new ArrayList<>(customers);
|
|
|
|
Collections.shuffle(route);
|
|
|
|
ActorRef<DeliveryCar.Message> truck = getContext().spawn(DeliveryCar.create(route), "truck" + (i + 1));
|
|
|
|
// Erstellen einer leeren Paketliste
|
|
|
|
List<Paket> paketeList = new ArrayList<>();
|
|
|
|
paketeList.add(new Paket("Inhalt 1"));
|
|
|
|
paketeList.add(new Paket("Inhalt 2"));
|
|
|
|
// Beispiel für den Aufruf der ArriveMessage-Nachricht mit korrekten Parametern
|
|
|
|
distributionCenter.tell(new DistributionCenter.ArriveMessage(paketeList, truck));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2023-05-03 12:02:18 +02:00
|
|
|
return this;
|
|
|
|
}
|
|
|
|
}
|