/** * 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); } }
/** * 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 (!(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);
@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(); } } }
if (event.getPreviousObjectState() == null || event.getCurrentObjectState() == null) { TransportOrder orderOld = (TransportOrder) event.getPreviousObjectState(); TransportOrder orderNow = (TransportOrder) event.getCurrentObjectState();
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); } }
if (event.getPreviousObjectState() == null || event.getCurrentObjectState() == null) { Vehicle vehicleOld = (Vehicle) event.getPreviousObjectState(); Vehicle vehicleNow = (Vehicle) event.getCurrentObjectState();
@Override public void onEvent(Object event) { requireNonNull(event, "event"); //Skip event if we dont want any updates if (!enableUpdates) { return; } //Skip non object events as were only interested in vehicle updates if (!(event instanceof TCSObjectEvent)) { LOG.debug("Event is not a TCSObjectEvent, ignoring."); return; } //Skip non vehicle events TCSObjectEvent tcsObjectEvent = (TCSObjectEvent) event; if (!(tcsObjectEvent.getCurrentOrPreviousObjectState() instanceof Vehicle)) { LOG.debug("TCSObjectEvent is not about a Vehicle, ignoring."); return; } //Check if we have access to the kernel if (portalProvider == null || !portalProvider.portalShared()) { LOG.debug("No connection to the kernel but received an event."); return; } // Ignore events if we're not operating or connected. (Vehicle objects may change a lot in modelling mode.) if (sharedPortal.getPortal().getState() != Kernel.State.OPERATING) { LOG.debug("Kernel is not in operating mode - skipping."); return; } handleVehicleStateChange(sharedPortal.getPortal().getSchedulerService().fetchSchedulerAllocations()); }