private static List<UnitTemplateConfig> getUnitTemplateConfigs(List<UnitTemplate.UnitType> unitTypes) throws CouldNotPerformException { List<UnitTemplateConfig> unitTemplateConfigs = new ArrayList<>(); for (UnitTemplate.UnitType type : unitTypes) { Set<ServiceTemplateConfig> serviceTemplateConfigs = new HashSet<>(); for (ServiceDescription serviceDescription : MockUnitTemplate.getTemplate(type).getServiceDescriptionList()) { serviceTemplateConfigs.add(ServiceTemplateConfig.newBuilder().setServiceType(serviceDescription.getType()).build()); } UnitTemplateConfig config = UnitTemplateConfig.newBuilder().setType(type).addAllServiceTemplateConfig(serviceTemplateConfigs).build(); unitTemplateConfigs.add(config); } return unitTemplateConfigs; }
configPool.register(new MetaConfigVariableProvider("ServiceTemplateMetaConfig", lookupServiceTemplate(deviceClass, unitConfig, serviceConfig).getMetaConfig())); } catch (final NotAvailableException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not load service template meta config for Service[" + serviceConfig.getServiceDescription().getType().name() + "] of Unit[" + unitConfig.getLabel() + "]", ex), logger, LogLevel.ERROR);
if (unitTemplateConfig.getId().equals(config.getUnitTemplateConfigId())) { for (ServiceTemplateConfigType.ServiceTemplateConfig serviceTempalteConfig : unitTemplateConfig.getServiceTemplateConfigList()) { if (serviceTempalteConfig.getServiceType() == ServiceTemplateType.ServiceTemplate.ServiceType.COLOR_STATE_SERVICE) { colorStateServiceTemplateConfig = serviceTempalteConfig; configPool.register(new MetaConfigVariableProvider("ServiceTemplateConfig", colorStateServiceTemplateConfig.getMetaConfig()));
if (unitTemplateConfig.getId().equals(config.getUnitTemplateConfigId())) { for (ServiceTemplateConfig serviceTempalteConfig : unitTemplateConfig.getServiceTemplateConfigList()) { if (serviceTempalteConfig.getServiceType() == ServiceType.COLOR_STATE_SERVICE) { colorStateServiceTemplateConfig = serviceTempalteConfig; configPool.register(new MetaConfigVariableProvider("ServiceTemplateConfig", colorStateServiceTemplateConfig.getMetaConfig()));
for (ServiceTemplateConfigType.ServiceTemplateConfig serviceTemplateConfig : unitTemplateConfig.getServiceTemplateConfigList()) { ServiceConfigType.ServiceConfig.Builder serviceConfig = ServiceConfigType.ServiceConfig.newBuilder().setBindingConfig(BindingConfigType.BindingConfig.newBuilder().setBindingId(deviceClass.getBindingConfig().getBindingId())); serviceConfig.setServiceDescription(ServiceDescription.newBuilder().setType(serviceTemplateConfig.getServiceType())); serviceConfigs.add(serviceConfig.build());
/** * Lookups the service template of the given ServiceType out of the unit * template. * * @param unitTemplate to lookup the service template. * @param serviceType the service type to resolve the template. * @return the related service template for the given service type. * @throws NotAvailableException */ private ServiceTemplateConfig lookupServiceTemplate(final DeviceClass deviceClass, final UnitConfig unitConfig, final ServiceConfig serviceConfig) throws NotAvailableException { List<UnitTemplateConfig> unitTemplateConfigList = deviceClass.getUnitTemplateConfigList(); for (UnitTemplateConfig unitTemplateConfig : unitTemplateConfigList) { if (unitTemplateConfig.getId().equals(unitConfig.getUnitTemplateConfigId())) { List<ServiceTemplateConfig> serviceTemplateList = unitTemplateConfig.getServiceTemplateConfigList(); for (ServiceTemplateConfig serviceTemplate : serviceTemplateList) { if (serviceTemplate.getServiceType().equals(serviceConfig.getServiceDescription().getType())) { return serviceTemplate; } } } } throw new NotAvailableException("service template for ServiceType[" + serviceConfig.getServiceDescription().getType().name() + "]"); }