package cz.agents.agentpolis.tools.geovisio.spy.darptestbed; import java.awt.Color; import cz.agents.agentpolis.darptestbed.simmodel.agent.driver.DriverAgent; import cz.agents.agentpolis.darptestbed.simmodel.agent.passenger.PassengerAgent; import cz.agents.agentpolis.tools.geovisio.attributesource.AttributeMethodSource; import cz.agents.agentpolis.tools.geovisio.layer.visparameter.VisParameterMapper; import cz.agents.agentpolis.tools.geovisio.layer.visparameter.VisParameters; import cz.agents.agentpolis.tools.geovisio.spy.darptestbed.RequestStorage.State; /** * * @author Marek Cuchy * */ public class DarpTestbedVisParameterMapper implements VisParameterMapper { private final RequestStorage requestStorage; private final AttributeMethodSource currentTimeSource; public DarpTestbedVisParameterMapper(RequestStorage requestStorage, AttributeMethodSource currentTimeSource) { super(); this.requestStorage = requestStorage; this.currentTimeSource = currentTimeSource; } @Override public VisParameters getVisParameter(Object object) { if (object instanceof PassengerAgent) { Color color = getPassengerColor(((PassengerAgent) object).getId()); return new VisParameters(color, 5); } if (object instanceof DriverAgent) { return new VisParameters(Color.GREEN, 5); } return new VisParameters(Color.BLACK, 5); } private Color getPassengerColor(String passengerId) { try { State state = requestStorage.getCurrentState(passengerId, (long) currentTimeSource.getValue(passengerId)); switch (state) { case NONE: case SENT: case OUT_OF_VEHICLE: return Color.BLACK; case DELAYED_SENT: case DELAYED_CONFIRMED: case IN_VEHICLE_WITH_DELAYED_ARRIVAL: case IN_VEHICLE_WITH_DELAYED_DEPARTURE: return Color.RED; case IN_VEHICLE: return Color.ORANGE; case OUT_OF_VEHICLE_WITH_DELAYED_ARRIVAL: return Color.MAGENTA; case CONFIRMED: return Color.BLUE; default: return Color.BLACK; } } catch (IllegalArgumentException | ReflectiveOperationException e) { return Color.BLACK; } } }