private static String nameOfNullableReference(@Nullable TCSObjectReference<?> reference) { return reference == null ? null : reference.getName(); } }
/** * Processes an event for a {@link Point} if it is interesting. * * @param event The event to be processed. */ private void processPointEvent(TCSObjectEvent event) { if (event.getPreviousObjectState() == null || event.getCurrentObjectState() == null) { // We cannot compare two states to find out what happened - ignore. return; } Point pointOld = (Point) event.getPreviousObjectState(); Point pointNow = (Point) event.getCurrentObjectState(); // Did a vehicle arrive at this point? if (pointNow.getOccupyingVehicle() != null && pointOld.getOccupyingVehicle() == null) { writeEvent(StatisticsEvent.POINT_OCCUPIED, pointNow.getName()); } // Did a vehicle leave this point? if (pointNow.getOccupyingVehicle() == null && pointOld.getOccupyingVehicle() != null) { writeEvent(StatisticsEvent.POINT_FREED, pointNow.getName()); } }
if (event.getPreviousObjectState() == null || event.getCurrentObjectState() == null) { TransportOrder orderOld = (TransportOrder) event.getPreviousObjectState(); TransportOrder orderNow = (TransportOrder) event.getCurrentObjectState(); if (orderNow.hasState(TransportOrder.State.ACTIVE) && !orderOld.hasState(TransportOrder.State.ACTIVE)) { writeEvent(StatisticsEvent.ORDER_ACTIVATED, orderNow.getName()); if (orderNow.hasState(TransportOrder.State.BEING_PROCESSED) && !orderOld.hasState(TransportOrder.State.BEING_PROCESSED)) { writeEvent(StatisticsEvent.ORDER_ASSIGNED, orderNow.getName()); if (orderNow.hasState(TransportOrder.State.FINISHED) && !orderOld.hasState(TransportOrder.State.FINISHED)) { writeEvent(StatisticsEvent.ORDER_FINISHED_SUCC, orderNow.getName()); if (orderNow.getFinishedTime() > orderNow.getDeadline()) { writeEvent(StatisticsEvent.ORDER_CROSSED_DEADLINE, orderNow.getName()); if (orderNow.hasState(TransportOrder.State.FAILED) && !orderOld.hasState(TransportOrder.State.FAILED)) { writeEvent(StatisticsEvent.ORDER_FINISHED_FAIL, orderNow.getName());
public static VehicleStatusMessage fromVehicle(Vehicle vehicle) { VehicleStatusMessage vehicleMessage = new VehicleStatusMessage(); vehicleMessage.setVehicleName(vehicle.getName()); vehicleMessage.setTransportOrderName( vehicle.getTransportOrder() == null ? null : vehicle.getTransportOrder().getName()); vehicleMessage.setPosition( vehicle.getCurrentPosition() == null ? null : vehicle.getCurrentPosition().getName()); vehicleMessage.setState(vehicle.getState()); vehicleMessage.setProcState(vehicle.getProcState()); Triple precisePos = vehicle.getPrecisePosition(); if (precisePos != null) { VehicleStatusMessage.PrecisePosition precisePosElement; precisePosElement = new VehicleStatusMessage.PrecisePosition( precisePos.getX(), precisePos.getY(), precisePos.getZ()); vehicleMessage.setPrecisePosition(precisePosElement); } return vehicleMessage; }
if (!(objEvent.getCurrentOrPreviousObjectState() instanceof TransportOrder)) { return; = (TransportOrder) objEvent.getCurrentOrPreviousObjectState(); if (TCSObjectEvent.Type.OBJECT_CREATED.equals(objEvent.getType())) { knownOrders.add(eventOrder); else if (TCSObjectEvent.Type.OBJECT_REMOVED.equals(objEvent.getType())) { knownOrders.remove(eventOrder); else if (eventOrder.getState().isFinalState()) { knownOrders.remove(eventOrder);
if (event.getPreviousObjectState() == null || event.getCurrentObjectState() == null) { Vehicle vehicleOld = (Vehicle) event.getPreviousObjectState(); Vehicle vehicleNow = (Vehicle) event.getCurrentObjectState(); if (vehicleNow.getTransportOrder() != null && vehicleOld.getTransportOrder() == null) { writeEvent(StatisticsEvent.VEHICLE_STARTS_PROCESSING, vehicleNow.getName()); if (vehicleNow.getTransportOrder() == null && vehicleOld.getTransportOrder() != null) { writeEvent(StatisticsEvent.VEHICLE_STOPS_PROCESSING, vehicleNow.getName()); if (vehicleNow.hasState(Vehicle.State.CHARGING) && !vehicleOld.hasState(Vehicle.State.CHARGING)) { writeEvent(StatisticsEvent.VEHICLE_STARTS_CHARGING, vehicleNow.getName()); if (!vehicleNow.hasState(Vehicle.State.CHARGING) && vehicleOld.hasState(Vehicle.State.CHARGING)) { writeEvent(StatisticsEvent.VEHICLE_STOPS_CHARGING, vehicleNow.getName()); if (vehicleNow.hasProcState(Vehicle.ProcState.PROCESSING_ORDER) && !vehicleNow.hasState(Vehicle.State.EXECUTING) && (vehicleOld.hasState(Vehicle.State.EXECUTING) || !vehicleOld.hasProcState(Vehicle.ProcState.PROCESSING_ORDER))) { writeEvent(StatisticsEvent.VEHICLE_STARTS_WAITING, vehicleNow.getName()); if (vehicleNow.hasProcState(Vehicle.ProcState.PROCESSING_ORDER) && vehicleNow.hasState(Vehicle.State.EXECUTING) && !vehicleOld.hasState(Vehicle.State.EXECUTING)) { writeEvent(StatisticsEvent.VEHICLE_STOPS_WAITING, vehicleNow.getName());
/** * Processes a {@link TCSObjectEvent} and logs it if it is interesting. * * @param event The event to be processed. */ private void processObjectEvent(TCSObjectEvent event) { TCSObject<?> object = event.getCurrentOrPreviousObjectState(); if (object instanceof TransportOrder) { processOrderEvent(event); } else if (object instanceof Vehicle) { processVehicleEvent(event); } else if (object instanceof Point) { processPointEvent(event); } }
public void putVehicleIntegrationLevel(String name, String value) throws ObjectUnknownException, IllegalArgumentException { requireNonNull(name, "name"); requireNonNull(value, "value"); Vehicle vehicle = orderService.fetchObject(Vehicle.class, name); if (vehicle == null) { throw new ObjectUnknownException("Unknown vehicle: " + name); } Vehicle.IntegrationLevel level = Vehicle.IntegrationLevel.valueOf(value); kernelExecutor.submit( () -> vehicleService.updateVehicleIntegrationLevel(vehicle.getReference(), level) ); }
public void withdrawByTransportOrder(String name, boolean immediate, boolean disableVehicle) throws ObjectUnknownException { requireNonNull(name, "name"); if (orderService.fetchObject(TransportOrder.class, name) == null) { throw new ObjectUnknownException("Unknown transport order: " + name); } kernelExecutor.submit(() -> { TransportOrder order = orderService.fetchObject(TransportOrder.class, name); if (disableVehicle && order.getProcessingVehicle() != null) { vehicleService.updateVehicleIntegrationLevel(order.getProcessingVehicle(), Vehicle.IntegrationLevel.TO_BE_RESPECTED); } dispatcherService.withdrawByTransportOrder(order.getReference(), immediate); }); }
public void withdrawByVehicle(String name, boolean immediate, boolean disableVehicle) throws ObjectUnknownException { requireNonNull(name, "name"); Vehicle vehicle = orderService.fetchObject(Vehicle.class, name); if (vehicle == null) { throw new ObjectUnknownException("Unknown vehicle: " + name); } kernelExecutor.submit(() -> { if (disableVehicle) { vehicleService.updateVehicleIntegrationLevel(vehicle.getReference(), Vehicle.IntegrationLevel.TO_BE_RESPECTED); } dispatcherService.withdrawByVehicle(vehicle.getReference(), immediate); }); }
public static VehicleStatusMessage fromVehicle(Vehicle vehicle, long sequenceNumber, Instant creationTimeStamp) { VehicleStatusMessage vehicleMessage = new VehicleStatusMessage(); vehicleMessage.setSequenceNumber(sequenceNumber); vehicleMessage.setCreationTimeStamp(creationTimeStamp); vehicleMessage.setVehicleName(vehicle.getName()); vehicleMessage.setTransportOrderName( vehicle.getTransportOrder() == null ? null : vehicle.getTransportOrder().getName()); vehicleMessage.setPosition( vehicle.getCurrentPosition() == null ? null : vehicle.getCurrentPosition().getName()); vehicleMessage.setState(vehicle.getState()); vehicleMessage.setProcState(vehicle.getProcState()); Triple precisePos = vehicle.getPrecisePosition(); if (precisePos != null) { VehicleStatusMessage.PrecisePosition precisePosElement; precisePosElement = new VehicleStatusMessage.PrecisePosition( precisePos.getX(), precisePos.getY(), precisePos.getZ()); vehicleMessage.setPrecisePosition(precisePosElement); } return vehicleMessage; }
@Override public void onEvent(Object event) { if (!(event instanceof TCSObjectEvent)) { return; } TCSObject<?> object = ((TCSObjectEvent) event).getCurrentOrPreviousObjectState(); if (object instanceof TransportOrder) { synchronized (events) { addOrderStatusMessage((TransportOrder) object, eventCount); eventCount++; cleanUpEvents(); events.notifyAll(); } } else if (object instanceof Vehicle) { synchronized (events) { addVehicleStatusMessage((Vehicle) object, eventCount); eventCount++; cleanUpEvents(); events.notifyAll(); } } }
private static String nameOfNullableReference(@Nullable TCSObjectReference<?> reference) { return reference == null ? null : reference.getName(); }
private void processObjectEvent(TCSObjectEvent event, Writer writer) throws IOException { TCSObject<?> eventObject = event.getCurrentOrPreviousObjectState(); if (eventObject instanceof TransportOrder) { sendMessage(OrderStatusMessage.fromTransportOrder((TransportOrder) eventObject), writer); } else if (eventObject instanceof Vehicle) { sendMessage(VehicleStatusMessage.fromVehicle((Vehicle) eventObject), writer); } }
private boolean intendedVehicleDiffers(@Nullable TCSObjectReference<Vehicle> vehicleReference) { return vehicleReference == null || !intendedVehicle.equals(vehicleReference.getName()); } }
@Override public Component getListCellRendererComponent( JList<? extends TCSObjectReference<Location>> list, TCSObjectReference<Location> value, int index, boolean isSelected, boolean cellHasFocus) { if (value == null) { setText(""); } else { setText(value.getName()); } return this; } }
private List<DestinationCreationTO> createDestinations(List<DriveOrderStructure> structures) { List<DestinationCreationTO> result = new ArrayList<>(); for (DriveOrderStructure currentOrder : structures) { result.add(new DestinationCreationTO(currentOrder.getDriveOrderLocation().getName(), currentOrder.getDriveOrderVehicleOperation())); } return result; } }
@Override public Object getValueAt(int rowIndex, int columnIndex) { if (rowIndex < 0 || rowIndex >= driveOrderDataList.size()) { return null; } DriveOrderStructure data = driveOrderDataList.get(rowIndex); if (data == null) { return null; } switch (columnIndex) { case 0: if (data.getDriveOrderLocation() == null) { return null; } else { return data.getDriveOrderLocation().getName(); } case 1: return data.getDriveOrderVehicleOperation(); default: throw new IllegalArgumentException("Invalid columnIndex: " + columnIndex); } }
/** * Creates XML classes from the actual classes. */ private void createXMLStructure() { xmlData.clear(); for (TransportOrderData curData : transportOrderDataList) { xmlData.add(new TransportOrderXMLStructure( curData.getName(), curData.getDeadline(), curData.getDriveOrders(), curData.getIntendedVehicle() == null ? null : curData.getIntendedVehicle().getName(), curData.getProperties())); } }
private TransportOrder createSingleOrder(TransportOrderData curData) throws KernelRuntimeException { TransportOrder newOrder = transportOrderService.createTransportOrder( new TransportOrderCreationTO("TOrder-" + UUID.randomUUID(), createDestinations(curData.getDriveOrders())) .withDeadline(Instant.now().plusSeconds(curData.getDeadline().getTime() / 1000)) .withIntendedVehicleName(curData.getIntendedVehicle() == null ? null : curData.getIntendedVehicle().getName()) .withProperties(curData.getProperties())); return newOrder; }