@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig locationConfig = entry.getMessage(); ScopeType.Scope newScope = ScopeGenerator.generateLocationScope(locationConfig, entryMap); // verify and update scope if (!ScopeGenerator.generateStringRep(locationConfig.getScope()).equals(ScopeGenerator.generateStringRep(newScope))) { entry.setMessage(locationConfig.toBuilder().setScope(newScope)); throw new EntryModification(entry, this); } } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig.Builder locationConfig = entry.getMessage().toBuilder(); // check if placement exists, otherwise create. if (!locationConfig.hasPlacementConfig()) { throw new EntryModification(entry.setMessage(locationConfig.setPlacementConfig(PlacementConfigType.PlacementConfig.newBuilder())), this); } } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig authorizationGroupUnitConfig = entry.getMessage(); if (!authorizationGroupUnitConfig.hasLabel() || authorizationGroupUnitConfig.getLabel().isEmpty()) { if (authorizationGroupUnitConfig.getAliasCount() <= 1) { throw new InvalidStateException("Alias not provided by Unit[" + authorizationGroupUnitConfig.getId() + "]!"); } throw new EntryModification(entry.setMessage(authorizationGroupUnitConfig.toBuilder().setLabel(authorizationGroupUnitConfig.getAlias(0))), this); } if (!authorizationGroupMap.containsKey(authorizationGroupUnitConfig.getLabel())) { authorizationGroupMap.put(authorizationGroupUnitConfig.getLabel(), authorizationGroupUnitConfig); } else { throw new InvalidStateException("AuthorizationGroup [" + authorizationGroupUnitConfig + "] and authorizationGroup [" + authorizationGroupMap.get(authorizationGroupUnitConfig.getLabel()) + "] are registered with the same label!"); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig authorizationGroupUnitConfig = entry.getMessage(); if (!authorizationGroupUnitConfig.hasPermissionConfig()) { entry.setMessage(authorizationGroupUnitConfig.toBuilder().setPermissionConfig(generateDefaultPermissionConfig(authorizationGroupUnitConfig))); throw new EntryModification(entry, this); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig UserUnitConfig = entry.getMessage(); if (!UserUnitConfig.hasPermissionConfig()) { entry.setMessage(UserUnitConfig.toBuilder().setPermissionConfig(generateDefaultPermissionConfig(UserUnitConfig))); throw new EntryModification(entry, this); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig authorizationGroupUnitConfig = entry.getMessage(); if (!authorizationGroupUnitConfig.hasLabel() || authorizationGroupUnitConfig.getLabel().isEmpty()) { throw new NotAvailableException("user.label"); } ScopeType.Scope newScope = ScopeGenerator.generateAuthorizationGroupScope(authorizationGroupUnitConfig); // verify and update scope if (!ScopeGenerator.generateStringRep(authorizationGroupUnitConfig.getScope()).equals(ScopeGenerator.generateStringRep(newScope))) { entry.setMessage(authorizationGroupUnitConfig.toBuilder().setScope(newScope)); throw new EntryModification(entry, this); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig userUnitConfig = entry.getMessage(); UserConfig userConfig = userUnitConfig.getUserConfig(); String label = generateUserLabel(userConfig); if (!userUnitConfig.hasLabel() || !label.equals(userUnitConfig.getLabel())) { throw new EntryModification(entry.setMessage(userUnitConfig.toBuilder().setLabel(label).build()), this); } }
@Override public void processData(final String id, final IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, final ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, final ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig locationConfig = entry.getMessage(); PlacementConfig placementConfig = verifyAndUpdatePlacement(locationConfig.getLabel(), locationConfig.getPlacementConfig()); if (placementConfig != null) { entry.setMessage(locationConfig.toBuilder().setPlacementConfig(placementConfig)); throw new EntryModification(entry, this); } } }
@Override public void processData(final String id, final IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, final ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, final ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig connectionConfig = entry.getMessage(); PlacementConfig placementConfig = verifyAndUpdatePlacement(connectionConfig.getLabel(), connectionConfig.getPlacementConfig()); if (placementConfig != null) { entry.setMessage(connectionConfig.toBuilder().setPlacementConfig(placementConfig)); throw new EntryModification(entry, this); } } }
@Override public void processData(final String id, final IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, final ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, final ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig.Builder unitDeviceConfig = entry.getMessage().toBuilder(); PlacementConfig placementConfig = verifyAndUpdatePlacement(unitDeviceConfig.getLabel(), unitDeviceConfig.getPlacementConfig()); if (placementConfig != null) { entry.setMessage(unitDeviceConfig.setPlacementConfig(placementConfig)); throw new EntryModification(entry, this); } } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig userUnitConfig = entry.getMessage(); if (!userUnitConfig.getUserConfig().hasUserName() || userUnitConfig.getUserConfig().getUserName().isEmpty()) { throw new NotAvailableException("user.userName"); } ScopeType.Scope newScope = ScopeGenerator.generateUserScope(userUnitConfig); // verify and update scope if (!ScopeGenerator.generateStringRep(userUnitConfig.getScope()).equals(ScopeGenerator.generateStringRep(newScope))) { throw new EntryModification(entry.setMessage(userUnitConfig.toBuilder().setScope(newScope)), this); } } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig connectionUnitConfig = entry.getMessage(); Scope newScope = ScopeGenerator.generateConnectionScope(connectionUnitConfig, locationRegistry.getMessage(connectionUnitConfig.getPlacementConfig().getLocationId())); // verify and update scope if (!ScopeGenerator.generateStringRep(connectionUnitConfig.getScope()).equals(ScopeGenerator.generateStringRep(newScope))) { entry.setMessage(connectionUnitConfig.toBuilder().setScope(newScope)); throw new EntryModification(entry, this); } } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig.Builder unitConfig = entry.getMessage().toBuilder(); if (!unitConfig.hasEnablingState() || !unitConfig.getEnablingState().hasValue() || unitConfig.getEnablingState().getValue() == EnablingState.State.UNKNOWN) { throw new EntryModification(entry.setMessage(unitConfig.setEnablingState(DEFAULT_ENABLING_STATE)), this); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig.Builder connectionUnitConfig = entry.getMessage().toBuilder(); String locationId; try { locationId = getLowestCommonParentLocation(connectionUnitConfig.getConnectionConfig().getTileIdList(), locationRegistry).getId(); } catch (CouldNotPerformException ex) { throw new CouldNotPerformException("Could not find parent location for connection [" + connectionUnitConfig + "]", ex); } if (!locationId.equals(connectionUnitConfig.getPlacementConfig().getLocationId())) { PlacementConfig.Builder placement = connectionUnitConfig.getPlacementConfig().toBuilder().setLocationId(locationId); throw new EntryModification(entry.setMessage(connectionUnitConfig.setPlacementConfig(placement)), this); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig.Builder unitConfig = entry.getMessage().toBuilder(); DeviceConfig.Builder deviceConfig = unitConfig.getDeviceConfigBuilder(); // verify if configured owner exists. if (deviceConfig.hasInventoryState() && deviceConfig.getInventoryState().hasOwnerId() && !deviceConfig.getInventoryState().getOwnerId().isEmpty() && !userRegistry.contains(deviceConfig.getInventoryState().getOwnerId())) { // remove unknown owner deviceConfig.setInventoryState(InventoryState.newBuilder(deviceConfig.getInventoryState()).setOwnerId("")); throw new EntryModification(entry.setMessage(unitConfig), this); } } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig locationConfig = entry.getMessage(); if (!locationConfig.hasPlacementConfig()) { throw new NotAvailableException("locationconfig.placementconfig"); } // setup position if (!locationConfig.getPlacementConfig().hasPosition()) { entry.setMessage(locationConfig.toBuilder().setPlacementConfig(locationConfig.getPlacementConfig().toBuilder().setPosition(generateDefaultInstance()))); throw new EntryModification(entry, this); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { final UnitConfig.Builder unitConfig = entry.getMessage().toBuilder(); // filter if config does not contain placement or shape if (!unitConfig.hasPlacementConfig() || !unitConfig.getPlacementConfig().hasShape() || unitConfig.getPlacementConfig().getShape().getFloorList().isEmpty() || unitConfig.getPlacementConfig().getShape().getCeilingList().isEmpty()) { return; } final Shape shape = unitConfig.getPlacementConfig().getShape(); final AxisAlignedBoundingBox3DFloat newBoundingBox = updateBoundingBox(shape); //detect changes if(!shape.getBoundingBox().equals(newBoundingBox)) { unitConfig.getPlacementConfigBuilder().getShapeBuilder().setBoundingBox(newBoundingBox); throw new EntryModification(entry.setMessage(unitConfig), this); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, Builder> entry, ProtoBufMessageMap<String, UnitConfig, Builder> entryMap, ProtoBufRegistry<String, UnitConfig, Builder> registry) throws CouldNotPerformException, EntryModification { if (entry.getMessage().getAliasList().isEmpty()) { if (updateNeeded) { try { updateUnitTypeAliasNumberMap(); } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory("Could not update internal alias map!", ex, LOGGER); } } UnitConfig.Builder unitConfig = entry.getMessage().toBuilder(); unitConfig.addAlias(generateAndRegisterAlias(unitConfig.getType())); throw new EntryModification(entry.setMessage(unitConfig), this); } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig.Builder unitConfig = entry.getMessage().toBuilder(); if (!unitConfig.hasDeviceConfig()) { throw new NotAvailableException("DeviceConfig"); } if (!unitConfig.getDeviceConfig().hasInventoryState() || !unitConfig.getDeviceConfig().getInventoryState().hasValue()) { unitConfig.getDeviceConfigBuilder().setInventoryState(DEFAULT_INVENTORY_STATE); throw new EntryModification(entry.setMessage(unitConfig), this); } } }
@Override public void processData(String id, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> entry, ProtoBufMessageMap<String, UnitConfig, UnitConfig.Builder> entryMap, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry) throws CouldNotPerformException, EntryModification { UnitConfig.Builder unitConfig = entry.getMessage().toBuilder(); if (unitConfig.getType() == UnitTemplateType.UnitTemplate.UnitType.LOCATION) { return; } if (unitConfig.hasPlacementConfig() && unitConfig.getPlacementConfig().hasPosition()) { final Pose pose = unitConfig.getPlacementConfig().getPosition(); if (pose.getTranslation().getX() == 0 && pose.getTranslation().getY() == 0 && pose.getTranslation().getZ() == 0) { unitConfig.getPlacementConfigBuilder().clearPosition(); throw new EntryModification(entry.setMessage(unitConfig), this); } } } }