@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); } } }
for (final Object message : registryRemoteMessageList) { if (!registryRemoteFilteredMessageList.contains(message)) { logger.info("Filtered Message[" + new IdentifiableMessage((GeneratedMessage) message).generateMessageDescription() + "] because permission was denied."); for (Object message : registryRemoteFilteredMessageList) { if (!remoteRegistry.getMessages().contains(message)) { logger.info("Message[" + new IdentifiableMessage((GeneratedMessage) message).generateMessageDescription() + "] was not synchronized from the registry remote into the internal remote registry!"); logger.info("Message[" + new IdentifiableMessage((GeneratedMessage) message).generateMessageDescription() + "] was not removed form the internal remote registry!");
@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 { // rootLocation is saved to only make this check once per consistency process if (rootLocation == null) { // method validates if there is only one root location an if not tries to compute a valid one rootLocation = LocationUtils.detectRootLocation(entry.getMessage(), entryMap, 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 unitLocationConfig = entry.getMessage().toBuilder(); // check if placement exists. if (!unitLocationConfig.hasPlacementConfig()) { throw new NotAvailableException("locationconfig.placementconfig"); } // check children consistency if (!unitLocationConfig.getPlacementConfig().hasLocationId()) { throw new NotAvailableException("locationconfig.placementconfig.locationid"); } // skip root locations if (unitLocationConfig.getLocationConfig().getRoot()) { return; } // check if parent is registered. if (!entryMap.containsKey(unitLocationConfig.getPlacementConfig().getLocationId())) { entry.setMessage(unitLocationConfig.setPlacementConfig(unitLocationConfig.getPlacementConfig().toBuilder().clearLocationId())); throw new EntryModification("Parent[" + unitLocationConfig.getPlacementConfig().getLocationId() + "] of child[" + unitLocationConfig.getId() + "] is unknown! Entry will moved to root location!", entry, this); } // check if parents knows given child. IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> parent = registry.get(unitLocationConfig.getPlacementConfig().getLocationId()); if (parent != null && !parentHasChild(parent.getMessage(), unitLocationConfig.build()) && !parent.getMessage().getPlacementConfig().getLocationId().equals(unitLocationConfig.getId())) { LocationConfig.Builder parentLocationConfig = parent.getMessage().getLocationConfig().toBuilder().addChildId(unitLocationConfig.getId()); parent.setMessage(parent.getMessage().toBuilder().setLocationConfig(parentLocationConfig)); throw new EntryModification("Parent[" + parent.getId() + "] does not know Child[" + unitLocationConfig.getId() + "]", parent, this); } }
/** * {@inheritDoc} * * @param unitTemplateId {@inheritDoc} * @return {@inheritDoc} * @throws CouldNotPerformException {@inheritDoc} */ @Override public UnitTemplate getUnitTemplateById(final String unitTemplateId) throws CouldNotPerformException { return unitTemplateRegistry.get(unitTemplateId).getMessage(); }
@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 { loopTestBottomUp(entry.getMessage(), registry); }
@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); } }
/** * {@inheritDoc} * * @param deviceClassId {@inheritDoc} * @return {@inheritDoc} * @throws CouldNotPerformException {@inheritDoc} */ @Override public DeviceClass getDeviceClassById(String deviceClassId) throws CouldNotPerformException { return deviceClassRegistry.get(deviceClassId).getMessage(); }
@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); } } }
/** * {@inheritDoc} * * @param groupConfigId * @return * @throws CouldNotPerformException */ @Override public UnitConfig getUnitGroupConfigById(final String groupConfigId) throws CouldNotPerformException { return unitGroupUnitConfigRegistry.get(groupConfigId).getMessage(); }
@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, DeviceClass, Builder> entry, ProtoBufMessageMap<String, DeviceClass, Builder> entryMap, ProtoBufRegistry<String, DeviceClass, Builder> registry) throws CouldNotPerformException { if (!entry.getMessage().hasCompany() || entry.getMessage().getCompany().isEmpty()) { throw new InvalidStateException("DeviceClass is missing company"); } if (!entry.getMessage().hasLabel() || entry.getMessage().getLabel().isEmpty()) { throw new InvalidStateException("DeviceClass is missing label"); } } }
@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); } } }
private static UnitConfig getRootLocationUnitConfig(final Map<String, IdentifiableMessage<String, UnitConfig, UnitConfig.Builder>> locations) throws NotAvailableException { try { for (final IdentifiableMessage<String, UnitConfig, UnitConfig.Builder> locationUnitConfig : locations.values()) { if (isRootLocation(locationUnitConfig.getMessage(), locations)) { return locationUnitConfig.getMessage(); } } throw new InvalidStateException("Registry does not provide a root location!"); } catch (CouldNotPerformException ex) { throw new NotAvailableException("RootLocation", ex); } }
@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, UserActivityConfig, UserActivityConfig.Builder> entry, ProtoBufMessageMap<String, UserActivityConfig, UserActivityConfig.Builder> entryMap, ProtoBufRegistry<String, UserActivityConfig, Builder> registry) throws CouldNotPerformException, EntryModification { if (!entry.getMessage().hasUserActivityClassId()) { throw new VerificationFailedException("UserActivityConfig [" + entry.getMessage() + "] has no userActivityClassId!"); } if (!userActivityClassRegistry.contains(entry.getMessage().getUserActivityClassId())) { throw new NotAvailableException("UserActivityClass[" + entry.getMessage().getUserActivityClassId() + "]"); } } }
@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 UnitConfig getUnitGroupConfigById(final String groupConfigId) throws CouldNotPerformException { validateData(); return unitGroupUnitConfigRemoteRegistry.get(groupConfigId).getMessage(); }
@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); } } }