package cz.agents.agentpolis.darptestbed.simmodel.agent.logicconstructor;
import com.google.inject.Injector;
import cz.agents.agentpolis.darptestbed.global.Utils;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.dispatching.protocol.DispatchingMessageProtocol;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.driver.protocol.DriverCentralizedMessageProtocol;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.driver.protocol.DriverMessageProtocol;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.passenger.protocol.PassengerMessageProtocol;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.protocol.GeneralMessageProtocol;
import cz.agents.agentpolis.darptestbed.siminfrastructure.communication.requestconsumer.protocol.RequestConsumerMessageProtocol;
import cz.agents.agentpolis.darptestbed.siminfrastructure.logger.RequestLogger;
import cz.agents.agentpolis.darptestbed.siminfrastructure.planner.TestbedPlanner;
import cz.agents.agentpolis.darptestbed.simmodel.agent.activity.movement.TestbedPassengerActivity;
import cz.agents.agentpolis.darptestbed.simmodel.agent.dispatching.logic.DispatchingLogic;
import cz.agents.agentpolis.darptestbed.simmodel.agent.driver.logic.DriverCentralizedLogic;
import cz.agents.agentpolis.darptestbed.simmodel.agent.driver.logic.DriverDecentralizedLogic;
import cz.agents.agentpolis.darptestbed.simmodel.agent.driver.logic.DriverDecentralizedLogicExample;
import cz.agents.agentpolis.darptestbed.simmodel.agent.passenger.PassengerProfile;
import cz.agents.agentpolis.darptestbed.simmodel.agent.passenger.logic.PassengerCentralizedLogic;
import cz.agents.agentpolis.darptestbed.simmodel.agent.passenger.logic.PassengerDecentralizedLogic;
import cz.agents.agentpolis.darptestbed.simmodel.agent.passenger.logic.PassengerDecentralizedLogicExample;
import cz.agents.agentpolis.darptestbed.simmodel.entity.vehicle.TestbedVehicle;
import cz.agents.agentpolis.darptestbed.simmodel.environment.model.TestbedModel;
import cz.agents.agentpolis.darptestbed.simmodel.environment.model.TestbedVehicleStorage;
import cz.agents.agentpolis.darptestbed.simulator.initializator.LogicConstructor;
import cz.agents.agentpolis.simmodel.agent.activity.TimeSpendingActivity;
import cz.agents.agentpolis.simmodel.agent.activity.movement.DriveVehicleActivity;
import cz.agents.agentpolis.simmodel.environment.model.citymodel.transportnetwork.AllNetworkNodes;
import cz.agents.agentpolis.simmodel.environment.model.query.AgentPositionQuery;
public class DecentralizedLogicConstructor implements LogicConstructor {
@Override
public PassengerDecentralizedLogic constructPassengerLogic(
String agentId, RequestConsumerMessageProtocol sender, DriverMessageProtocol driverMessageProtocol,
GeneralMessageProtocol generalMessageProtocol,
TestbedModel taxiModel, AgentPositionQuery positionQuery, Utils utils, PassengerProfile passengerProfile,
TestbedPassengerActivity passengerActivity,
TimeSpendingActivity timeSpendingActivity, RequestLogger logger) {
return new PassengerDecentralizedLogicExample(agentId, sender, driverMessageProtocol, generalMessageProtocol,
taxiModel, positionQuery, utils, passengerProfile, passengerActivity, timeSpendingActivity, logger);
}
@Override
public boolean usesDispatching() {
return false;
}
@Override
public DriverDecentralizedLogic constructDriverLogic(String agentId, PassengerMessageProtocol sender,
GeneralMessageProtocol generalMessageProtocol,
TestbedModel taxiModel,
AgentPositionQuery positionQuery,
AllNetworkNodes allNetworkNodes, Utils utils,
TestbedVehicle vehicle,
DriveVehicleActivity drivingActivity,
Injector injector) {
return new DriverDecentralizedLogicExample(agentId, sender, generalMessageProtocol,
taxiModel, positionQuery, allNetworkNodes, utils, vehicle, drivingActivity);
}
@Override
public DispatchingLogic constructDispatchingLogic(
String dispatching, PassengerMessageProtocol sender,
DriverCentralizedMessageProtocol driverCentralizedMessageProtocol,
GeneralMessageProtocol generalMessageProtocol, TestbedModel taxiModel,
AgentPositionQuery positionQuery, AllNetworkNodes allNetworkNodes, Utils utils, TestbedPlanner pathPlanner,
TestbedVehicleStorage vehicleStorage) {
throw new IllegalArgumentException();
}
}