@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 authorizationGroupUnitConfig = entry.getMessage().toBuilder(); AuthorizationGroupConfig.Builder authorizationGroup = authorizationGroupUnitConfig.getAuthorizationGroupConfigBuilder(); Set<String> memberIdSet = new HashSet<>(); boolean modification = false; for(String memberId : authorizationGroup.getMemberIdList()) { if(memberIdSet.contains(memberId)) { modification = true; } else { memberIdSet.add(memberId); } } if(modification) { authorizationGroup.clearMemberId(); authorizationGroup.addAllMemberId(memberIdSet); throw new EntryModification(entry.setMessage(authorizationGroupUnitConfig), 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 unitGroupUnitConfig = entry.getMessage().toBuilder(); UnitGroupConfig.Builder unitGroupConfig = unitGroupUnitConfig.getUnitGroupConfigBuilder(); unitGroupConfig.clearMemberId(); boolean modification = false; List<String> memberIds = new ArrayList<>(); for (String memberId : entry.getMessage().getUnitGroupConfig().getMemberIdList()) { if (!memberIds.contains(memberId)) { memberIds.add(memberId); } else { modification = true; } } if (modification) { unitGroupConfig.addAllMemberId(memberIds); throw new EntryModification(entry.setMessage(unitGroupUnitConfig), 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(); 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.Builder unitConfig = entry.getMessage().toBuilder(); boolean modification = false; PlacementConfig placementConfig; placementConfig = verifyAndUpdatePlacement(unitConfig.getLabel(), unitConfig.getPlacementConfig()); if (placementConfig != null) { unitConfig.setPlacementConfig(placementConfig); logger.debug("UnitTransformationFrameConsistencyHandler Upgrade Unit[" + unitConfig.getId() + "] frame to " + placementConfig.getTransformationFrameId()); modification = true; } if (modification) { logger.debug("UnitTransformationFrameConsistencyHandler Publish Device[" + unitConfig.getId() + "]!"); 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 unitGroupUnitConfig = entry.getMessage().toBuilder(); UnitGroupConfig.Builder unitGroup = unitGroupUnitConfig.getUnitGroupConfigBuilder(); // remove a member id if the according unit does not exists or it is the group id itself boolean modification = false; List<String> unitConfigsIds = new ArrayList<>(); unitGroup.clearMemberId(); for (String unitConfigId : entry.getMessage().getUnitGroupConfig().getMemberIdList()) { if (!unitConfigId.equals(unitGroupUnitConfig.getId()) && containsUnitConfigById(unitConfigId)) { unitConfigsIds.add(unitConfigId); } else { modification = true; } } unitGroup.addAllMemberId(unitConfigsIds); if (modification) { throw new EntryModification(entry.setMessage(unitGroupUnitConfig), 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(String id, IdentifiableMessage<String, DeviceClass, DeviceClass.Builder> entry, ProtoBufMessageMap<String, DeviceClass, DeviceClass.Builder> entryMap, ProtoBufRegistry<String, DeviceClass, DeviceClass.Builder> registry) throws CouldNotPerformException, EntryModification { DeviceClass.Builder deviceClass = entry.getMessage().toBuilder(); deviceClass.clearUnitTemplateConfig(); boolean modification = false; for (UnitTemplateConfig.Builder unitTemplateConfig : entry.getMessage().toBuilder().getUnitTemplateConfigBuilderList()) { if (!unitTemplateConfig.hasLabel() || unitTemplateConfig.getLabel().isEmpty()) { // unit template starts with deviceClassId_ so remove that unitTemplateConfig.setLabel(unitTemplateConfig.getId().substring(deviceClass.getId().length() + 1)); modification = true; } deviceClass.addUnitTemplateConfig(unitTemplateConfig); } if (modification) { throw new EntryModification(entry.setMessage(deviceClass), 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 unitGroupUnitConfig = entry.getMessage().toBuilder(); UnitGroupConfig.Builder unitGroup = unitGroupUnitConfig.getUnitGroupConfigBuilder(); if (unitGroup.hasUnitType() && !(unitGroup.getUnitType() == UnitType.UNKNOWN)) { if (unitGroup.getServiceDescriptionList().isEmpty()) { unitGroup.addAllServiceDescription(getUnitTemplateByType(unitGroup.getUnitType()).getServiceDescriptionList()); throw new EntryModification(entry.setMessage(unitGroupUnitConfig), this); } if (!unitTemplateHasSameServices(unitGroup.getUnitType(), unitGroup.getServiceDescriptionList())) { unitGroup.setUnitType(UnitType.UNKNOWN); throw new EntryModification(entry.setMessage(unitGroupUnitConfig), 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 unitConfig = entry.getMessage(); if (!unitConfig.hasLabel() || unitConfig.getLabel().isEmpty()) { throw new EntryModification(entry.setMessage(unitConfig.toBuilder().setLabel(generateDefaultLabel(unitConfig))), this); } if (!unitConfig.hasPlacementConfig() || !unitConfig.getPlacementConfig().hasLocationId() || unitConfig.getPlacementConfig().getLocationId().isEmpty()) { throw new NotAvailableException("baseunit.placement.locationId"); } String key = unitConfig.getLabel() + unitConfig.getPlacementConfig().getLocationId(); if (baseUnitMap.containsKey(key)) { final String typeName = StringProcessor.transformUpperCaseToCamelCase(unitConfig.getType().name()); throw new InvalidStateException(typeName+"[" + unitConfig.getAlias(0) + "] and "+typeName+"[" + baseUnitMap.get(key).getAlias(0) + "] are registered with the same label and type at the same location."); } baseUnitMap.put(key, unitConfig); }
@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); } }