@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); } }
/** * {@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, 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"); } } }
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 UnitConfig getUnitGroupConfigById(final String groupConfigId) throws CouldNotPerformException { validateData(); return unitGroupUnitConfigRemoteRegistry.get(groupConfigId).getMessage(); }
@Override public UnitConfig getAppConfigById(String appUnitConfigId) throws CouldNotPerformException { unitRegistryRemote.validateData(); return appUnitConfigRemoteRegistry.get(appUnitConfigId).getMessage(); }
protected String generateFrameId(final String label, final PlacementConfig placementConfig) throws CouldNotPerformException { try { String frameId = StringProcessor.transformToIdString(label); if (labelCollisionList.contains(frameId.toLowerCase())) { return locationRegistry.get(placementConfig.getLocationId()).getMessage().getPlacementConfig().getTransformationFrameId() + "_" + frameId; } labelCollisionList.add(frameId.toLowerCase()); return frameId; } catch (final CouldNotPerformException ex) { throw new CouldNotPerformException("Could not generate frame id!", ex); } }
@Override public void processData(final String id, final IdentifiableMessage<String, UnitTemplate, Builder> entry, final ProtoBufMessageMap<String, UnitTemplate, Builder> entryMap, ProtoBufRegistry<String, UnitTemplate, Builder> registry) throws CouldNotPerformException, EntryModification { final UnitTemplate unitTemplate = entry.getMessage(); if (unitTypeUnitTemplateMap.containsKey(unitTemplate.getType()) && !unitTemplate.getId().equals(unitTypeUnitTemplateMap.get(unitTemplate.getType()).getId())) { throw new VerificationFailedException("UnitTemplate[" + unitTypeUnitTemplateMap.get(unitTemplate.getType()) + "] and unitTemplate[" + unitTemplate + "] both contain the same type"); } unitTypeUnitTemplateMap.put(unitTemplate.getType(), unitTemplate); }
@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 locationUnitConfig = entry.getMessage(); for (String childLocationId : new ArrayList<>(locationUnitConfig.getLocationConfig().getChildIdList())) { UnitConfig childLocationUnitConfig = registry.getMessage(childLocationId); if (labelConsistencyMap.containsKey(childLocationUnitConfig.getLabel()) && !labelConsistencyMap.get(childLocationUnitConfig.getLabel()).equals(childLocationId)) { throw new InvalidStateException("Location [" + locationUnitConfig.getId() + "," + locationUnitConfig.getLabel() + "] has more than on child with the same label [" + childLocationUnitConfig.getLabel() + "]"); } else { labelConsistencyMap.put(childLocationUnitConfig.getLabel(), childLocationId); } } }
@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 { AppConfig appConfig = entry.getMessage().getAppConfig(); if (!appConfig.hasAppClassId() || appConfig.getAppClassId().isEmpty()) { throw new NotAvailableException("appclass.id"); } // get throws a CouldNotPerformException if the agent class with the id does not exists appClassRegistry.get(appConfig.getAppClassId()); } }
@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 { AgentConfig agentConfig = entry.getMessage().getAgentConfig(); if (!agentConfig.hasAgentClassId() || agentConfig.getAgentClassId().isEmpty()) { throw new NotAvailableException("agentclass.id"); } // get throws a CouldNotPerformException if the agent class with the id does not exists agentClassRegistry.get(agentConfig.getAgentClassId()); } }
private void loopTestTopDown(final UnitConfig locationConfig, ProtoBufRegistry<String, UnitConfig, UnitConfig.Builder> registry, List<String> processedLocations) throws InvalidStateException, CouldNotPerformException { markAsProcessed(locationConfig, processedLocations); for (String locationId : locationConfig.getLocationConfig().getChildIdList()) { loopTestTopDown(registry.get(locationId).getMessage(), registry, processedLocations); } }
@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.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(); 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 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, 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 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); } }