void addDevice(CommDevice device, CommUser user) { usersDevices.put(user, device); usersHasChanged = true; if (eventDispatcher.hasListenerFor(EventTypes.ADD_COMM_USER)) { eventDispatcher.dispatchEvent(new CommModelEvent( EventTypes.ADD_COMM_USER, this, device, user)); } }
@Override public void handleEvent(Event e) { @SuppressWarnings("unchecked") final StateTransitionEvent<Trigger, RealtimeModel> event = (StateTransitionEvent<Trigger, RealtimeModel>) e; LOGGER.debug("{} {}", timeLapse, event); if ((event.newState == realtimeState || event.newState == INIT_RT) && eventDispatcher.hasListenerFor(SWITCH_TO_REAL_TIME)) { eventDispatcher.dispatchEvent(new Event(SWITCH_TO_REAL_TIME, ref)); } else if ((event.newState == st || event.newState == INIT_ST) && eventDispatcher.hasListenerFor(SWITCH_TO_SIM_TIME)) { eventDispatcher.dispatchEvent(new Event(SWITCH_TO_SIM_TIME, ref)); } } }, StateMachineEvent.values());
@Override public boolean unregister(CommUser commUser) { checkArgument(contains(commUser), "CommModel does not contain %s.", commUser); final CommDevice unregDevice = usersDevices.remove(commUser); unregDevice.unregister(); unregisteredUsersDevices.put(commUser, unregDevice); usersHasChanged = true; if (eventDispatcher.hasListenerFor(EventTypes.REMOVE_COMM_USER)) { eventDispatcher.dispatchEvent(new CommModelEvent( EventTypes.REMOVE_COMM_USER, this, unregDevice, commUser)); } return true; }
@Override public void removeNode(Point node) { // collect data of removed connections but only if there is a listener final List<Connection<?>> removedConnections = newArrayList(); if (eventDispatcher.hasListenerFor(EventTypes.REMOVE_CONNECTION)) { for (final Point p : delegate.getIncomingConnections(node)) { removedConnections.add(delegate.getConnection(p, node)); } for (final Point p : delegate.getOutgoingConnections(node)) { removedConnections.add(delegate.getConnection(node, p)); } } delegate.removeNode(node); // notify listeners for (final Connection<?> c : removedConnections) { eventDispatcher.dispatchEvent(new GraphEvent( EventTypes.REMOVE_CONNECTION, this, c)); } }
@Override public void removeNode(Point node) { // collect data of removed connections but only if there is a listener final List<Connection<?>> removedConnections = newArrayList(); if (eventDispatcher.hasListenerFor(EventTypes.REMOVE_CONNECTION)) { for (final Point p : delegate.getIncomingConnections(node)) { removedConnections.add(delegate.getConnection(p, node)); } for (final Point p : delegate.getOutgoingConnections(node)) { removedConnections.add(delegate.getConnection(node, p)); } } delegate.removeNode(node); // notify listeners for (final Connection<?> c : removedConnections) { eventDispatcher.dispatchEvent(new GraphEvent( EventTypes.REMOVE_CONNECTION, this, c)); } }
@Test public void dispatchEvent() { assertFalse(dispatcher.hasListenerFor(EVENT1)); assertFalse(dispatcher.hasListenerFor(EVENT2)); assertFalse(dispatcher.hasListenerFor(EVENT3)); assertFalse(dispatcher.hasListenerFor(OTHER_EVENT1)); assertTrue(dispatcher.hasListenerFor(EVENT1)); assertFalse(dispatcher.hasListenerFor(EVENT2)); assertFalse(dispatcher.hasListenerFor(EVENT3)); assertFalse(dispatcher.hasListenerFor(OTHER_EVENT1)); assertFalse(dispatcher.hasListenerFor(EVENT3)); assertTrue(dispatcher.hasListenerFor(EVENT1)); assertFalse(dispatcher.hasListenerFor(OTHER_EVENT1));