public static OrderStatusMessage fromTransportOrder(TransportOrder order, long sequenceNumber, Instant creationTimeStamp) { OrderStatusMessage orderMessage = new OrderStatusMessage(); orderMessage.setSequenceNumber(sequenceNumber); orderMessage.setCreationTimeStamp(creationTimeStamp); orderMessage.setOrderName(order.getName()); orderMessage.setProcessingVehicleName( order.getProcessingVehicle() == null ? null : order.getProcessingVehicle().getName()); orderMessage.setOrderState(OrderState.fromTransportOrderState(order.getState())); for (DriveOrder curDriveOrder : order.getAllDriveOrders()) { orderMessage.getDestinations().add(Destination.fromDriveOrder(curDriveOrder)); } for (Map.Entry<String, String> mapEntry : order.getProperties().entrySet()) { Property prop = new Property(); prop.setKey(mapEntry.getKey()); prop.setValue(mapEntry.getValue()); orderMessage.getProperties().add(prop); } return orderMessage; }
/** * Creates a <Code>TransportOrderState</Code> instance from a <Code>TransportOrder</Code> instance. * * @param transportOrder The transport order whose properties will be used to create a * <Code>TransportOrderState</Code> instance. * @return A new <Code>TransportOrderState</Code> instance filled with data from * the given transport order. */ public static TransportOrderState fromTransportOrder(TransportOrder transportOrder) { if (transportOrder == null) { return null; } TransportOrderState transportOrderState = new TransportOrderState(); transportOrderState.setName(transportOrder.getName()); transportOrderState.setCategory(transportOrder.getCategory()); transportOrderState.setDestinations( transportOrder.getAllDriveOrders() .stream() .map(driveOrder -> Destination.fromDriveOrder(driveOrder)) .collect(Collectors.toList())); transportOrderState.setIntendedVehicle( nameOfNullableReference(transportOrder.getIntendedVehicle())); transportOrderState.setProcessingVehicle( nameOfNullableReference(transportOrder.getProcessingVehicle())); transportOrderState.setState(transportOrder.getState()); return transportOrderState; }
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 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); }); }
/** * Finds the transport order with the given name. * * @param name The name of the requested transport order. * @return A single transport order with the given name. * @throws ObjectUnknownException If a transport order with the given name does not exist. */ public TransportOrderState getTransportOrderByName(String name) throws ObjectUnknownException { requireNonNull(name, "name"); return orderService.fetchObjects(TransportOrder.class, t -> t.getName().equals(name)) .stream() .map(t -> TransportOrderState.fromTransportOrder(t)) .findAny() .orElseThrow(() -> new ObjectUnknownException("Unknown transport order: " + name)); }
@Override public void setTriggeringEnabled(boolean enabled) { synchronized (knownOrders) { if (enabled) { // Remember all orders that are not finished, failed etc. for (TransportOrder curOrder : objectService.fetchObjects(TransportOrder.class)) { if (!curOrder.getState().isFinalState()) { knownOrders.add(curOrder); } } eventSource.subscribe(this); if (knownOrders.size() <= threshold) { triggerOrderGeneration(); } } else { eventSource.unsubscribe(this); knownOrders.clear(); } } }
@Override public boolean test(TransportOrder transportOrder) { boolean accept = true; if (intendedVehicle != null && intendedVehicleDiffers(transportOrder.getIntendedVehicle())) { accept = false; } return accept; }
prevOrderName = order.getName();
else if (eventOrder.getState().isFinalState()) { knownOrders.remove(eventOrder);
public static OrderStatusMessage fromTransportOrder(TransportOrder order) { OrderStatusMessage orderMessage = new OrderStatusMessage(); orderMessage.setOrderName(order.getName()); orderMessage.setProcessingVehicleName( order.getProcessingVehicle() == null ? null : order.getProcessingVehicle().getName()); orderMessage.setOrderState(OrderState.fromTransportOrderState(order.getState())); for (DriveOrder curDriveOrder : order.getAllDriveOrders()) { Destination dest = new Destination(); dest.setLocationName(curDriveOrder.getDestination().getDestination().getName()); dest.setOperation(curDriveOrder.getDestination().getOperation()); dest.setState(mapDriveOrderState(curDriveOrder.getState())); for (Map.Entry<String, String> mapEntry : curDriveOrder.getDestination().getProperties().entrySet()) { Property prop = new Property(); prop.setKey(mapEntry.getKey()); prop.setValue(mapEntry.getValue()); dest.getProperties().add(prop); } orderMessage.getDestinations().add(dest); } for (Map.Entry<String, String> mapEntry : order.getProperties().entrySet()) { Property prop = new Property(); prop.setKey(mapEntry.getKey()); prop.setValue(mapEntry.getValue()); orderMessage.getProperties().add(prop); } return orderMessage; }
response.setOrderName(order.getName());