serviceMap.get(serviceConfig.getServiceDescription().getType()).add(unitConfig); }); } catch (CouldNotPerformException ex) {
public static Iterable<ServiceConfigType.ServiceConfig> getServiceConfig(final UnitTemplate template) { List<ServiceConfigType.ServiceConfig> serviceConfigList = new ArrayList<>(); template.getServiceDescriptionList().stream().forEach((serviceDescription) -> { BindingConfig bindingServiceConfig = BindingConfig.newBuilder().setBindingId("OPENHAB").build(); serviceConfigList.add(ServiceConfig.newBuilder().setServiceDescription(serviceDescription).setBindingConfig(bindingServiceConfig).build()); }); return serviceConfigList; }
if (serviceConfig.getServiceDescription().getPattern() == ServicePattern.CONSUMER) { continue; if (serviceTypeSet.contains(serviceConfig.getServiceDescription().getType())) { continue; if (serviceConfig.getServiceDescription().getPattern() == ServicePattern.PROVIDER) { if (unitHasServiceAsOperationService(unitConfig, serviceConfig.getServiceDescription().getType())) { continue; if (serviceConfig.getServiceDescription().getType() == ServiceType.TEMPERATURE_ALARM_STATE_SERVICE) { continue; serviceTypeSet.add(serviceConfig.getServiceDescription().getType()); try { itemEntryList.add(new ServiceItemEntry(deviceClass, deviceUnitConfig.getMetaConfig(), unitConfig, serviceConfig)); } catch (Exception ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not generate item for Service[" + serviceConfig.getServiceDescription().getType().name() + "] of Unit[" + unitConfig.getLabel() + "]", ex), logger, LogLevel.WARN);
if (serviceType != ServiceType.UNKNOWN && serviceConfig.getServiceDescription().getType() != serviceType) { continue; if (serviceConfig.getServiceDescription().getPattern().equals(ServicePattern.CONSUMER)) { continue; if (!servicePanelMap.containsKey(serviceConfig.getServiceDescription().getType())) { try { servicePanel = new JPanel(); servicePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(StringProcessor.transformUpperCaseToCamelCase(serviceConfig.getServiceDescription().getType().name()) + " " + ScopeGenerator.generateStringRep(unitConfig.getScope()))); AbstractServicePanel abstractServicePanel = instantiatServicePanel(serviceConfig, loadServicePanelClass(serviceConfig.getServiceDescription().getType()), getRemoteService()); abstractServicePanel.setUnitId(unitConfig.getId()); abstractServicePanel.setServiceType(serviceConfig.getServiceDescription().getType()); servicePanel.add(abstractServicePanel); servicePanelMap.put(serviceConfig.getServiceDescription().getType(), abstractServicePanel); componentList.add(servicePanel); } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not load service panel for ServiceType[" + serviceConfig.getServiceDescription().getType().name() + "]", ex), logger, LogLevel.ERROR); if (!servicePanelMap.containsKey(serviceConfig.getServiceDescription().getType())) { logger.error("Skip Service[" + serviceConfig.getServiceDescription().getType() + "] binding because no related service panel registered!"); continue; servicePanelMap.get(serviceConfig.getServiceDescription().getType()).bindServiceConfig(serviceConfig); } catch (CouldNotPerformException | NullPointerException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not configure service panel for ServiceType[" + serviceConfig.getServiceDescription().getType().name() + "]", ex), logger, LogLevel.ERROR); if (!serviceTypeSet.contains(serviceConfig.getServiceDescription().getType())) { serviceTypeSet.add(serviceConfig.getServiceDescription().getType());
if (serviceConfig.getServiceDescription().getType() == ServiceTemplateType.ServiceTemplate.ServiceType.COLOR_STATE_SERVICE) { colorStateServiceConfig = serviceConfig; configPool.register(new MetaConfigVariableProvider("ServiceConfig", colorStateServiceConfig.getMetaConfig()));
configPool.register(new MetaConfigVariableProvider("BindingServiceConfig", serviceConfig.getBindingConfig().getMetaConfig())); configPool.register(new MetaConfigVariableProvider("ServiceMetaConfig", serviceConfig.getMetaConfig())); configPool.register(new MetaConfigVariableProvider("UnitLocationMetaConfig", locationUnitConfig.getMetaConfig())); configPool.register(new MetaConfigVariableProvider("UnitMetaConfig", unitConfig.getMetaConfig())); 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); this.commandType = configPool.getValue(SERVICE_TEMPLATE_BINDING_COMMAND); } catch (NotAvailableException ex) { this.commandType = getDefaultCommand(serviceConfig.getServiceDescription().getType()); this.groups.add(ItemIdGenerator.generateServiceGroupID(serviceConfig.getServiceDescription().getType()));
if (serviceConfig.getServiceDescription().getType() == ServiceType.COLOR_STATE_SERVICE) { colorStateServiceConfig = serviceConfig; configPool.register(new MetaConfigVariableProvider("ServiceConfig", colorStateServiceConfig.getMetaConfig()));
List<ServiceConfigType.ServiceConfig> serviceConfigs = new ArrayList<>(); 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());
for(ServiceDescription serviceDescription : unitGroup.getServiceDescriptionList()) { for(ServiceConfig serviceConfig : unitConfig.getServiceConfigList()) { if(serviceDescription.equals(serviceConfig.getServiceDescription())) { skip = false;
private void setServiceConfig(final ServiceConfig serviceConfig) throws CouldNotPerformException { try { try { switch (serviceConfig.getServiceDescription().getPattern()) { case OPERATION: if (operationServiceConfig != null) { break; default: throw new EnumNotSupportedException(serviceConfig.getServiceDescription().getPattern(), this);
/** * {@inheritDoc} * * @param type * @param serviceTypes * @return * @throws CouldNotPerformException */ @Override public List<UnitConfig> getUnitConfigsByUnitTypeAndServiceTypes(final UnitType type, final List<ServiceType> serviceTypes) throws CouldNotPerformException { List<UnitConfig> unitConfigs = getUnitConfigs(type); boolean foundServiceType; for (UnitConfig unitConfig : new ArrayList<>(unitConfigs)) { foundServiceType = false; for (ServiceType serviceType : serviceTypes) { for (ServiceConfig serviceConfig : unitConfig.getServiceConfigList()) { if (serviceConfig.getServiceDescription().getType() == serviceType) { foundServiceType = true; } } if (!foundServiceType) { unitConfigs.remove(unitConfig); } } } return unitConfigs; }
@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.hasType()) { throw new NotAvailableException("unitConfig.type"); } boolean modification = false; UnitTemplate unitTemplate = getUnitTemplateByType(unitConfig.getType()); for (ServiceDescription serviceDescription : unitTemplate.getServiceDescriptionList()) { if (!unitConfigContainsServiceDescription(unitConfig, serviceDescription)) { unitConfig.addServiceConfig(ServiceConfig.newBuilder().setServiceDescription(serviceDescription).setBindingConfig(BindingConfig.getDefaultInstance())); modification = true; } } for (int i = 0; i < unitConfig.getServiceConfigCount(); i++) { if (!serviceDescriptionListContainsDescription(unitTemplate.getServiceDescriptionList(), unitConfig.getServiceConfig(i).getServiceDescription())) { unitConfig.removeServiceConfig(i); i--; modification = true; } } if (modification) { throw new EntryModification(entry.setMessage(unitConfig), this); } }
/** * {@inheritDoc} * * @throws org.openbase.jul.exception.CouldNotPerformException {@inheritDoc} * @throws org.openbase.jul.exception.NotAvailableException {@inheritDoc} */ @Override public List<UnitConfig> getUnitConfigsByConnection(ServiceType type, String connectionConfigId) throws CouldNotPerformException, NotAvailableException { List<UnitConfig> unitConfigList = new ArrayList<>(); UnitConfig unitConfig; for (String unitConfigId : getConnectionConfigById(connectionConfigId).getConnectionConfig().getUnitIdList()) { try { unitConfig = unitRegistry.getUnitConfigById(unitConfigId); for (ServiceConfig serviceConfig : unitConfig.getServiceConfigList()) { if (serviceConfig.getServiceDescription().getType().equals(type)) { unitConfigList.add(unitConfig); } } } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not resolve UnitConfigId[" + unitConfigId + "] by device registry!", ex), logger); } } return unitConfigList; }
/** * {@inheritDoc} * * @throws org.openbase.jul.exception.CouldNotPerformException {@inheritDoc} * @throws org.openbase.jul.exception.NotAvailableException {@inheritDoc} */ @Override public List<UnitConfig> getUnitConfigsByLocation(final ServiceType type, final String locationConfigId) throws CouldNotPerformException, NotAvailableException { List<UnitConfig> unitConfigList = new ArrayList<>(); UnitConfig unitConfig; for (String unitConfigId : getLocationConfigById(locationConfigId).getLocationConfig().getUnitIdList()) { try { unitConfig = unitRegistryRemote.getUnitConfigById(unitConfigId); for (ServiceConfigType.ServiceConfig serviceConfig : unitConfig.getServiceConfigList()) { if (serviceConfig.getServiceDescription().getType().equals(type)) { unitConfigList.add(unitConfig); } } } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not resolve UnitConfigId[" + unitConfigId + "] by device registry!", ex), logger); } } return unitConfigList; }
/** * 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() + "]"); }
/** * {@inheritDoc} * * @throws org.openbase.jul.exception.CouldNotPerformException {@inheritDoc} * @throws org.openbase.jul.exception.NotAvailableException {@inheritDoc} */ @Override public List<UnitConfig> getUnitConfigsByConnection(ServiceType type, String connectionConfigId) throws CouldNotPerformException, NotAvailableException { List<UnitConfig> unitConfigList = new ArrayList<>(); UnitConfig unitConfig; for (String unitConfigId : getConnectionConfigById(connectionConfigId).getConnectionConfig().getUnitIdList()) { try { unitConfig = unitRegistryRemote.getUnitConfigById(unitConfigId); for (ServiceConfigType.ServiceConfig serviceConfig : unitConfig.getServiceConfigList()) { if (serviceConfig.getServiceDescription().getType().equals(type)) { unitConfigList.add(unitConfig); } } } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not resolve UnitConfigId[" + unitConfigId + "] by device registry!", ex), logger); } } return unitConfigList; }
/** * {@inheritDoc} * * @throws org.openbase.jul.exception.CouldNotPerformException {@inheritDoc} * @throws org.openbase.jul.exception.NotAvailableException {@inheritDoc} */ @Override public List<UnitConfig> getUnitConfigsByLocation(final ServiceType type, final String locationConfigId) throws CouldNotPerformException, NotAvailableException { List<UnitConfig> unitConfigList = new ArrayList<>(); UnitConfig unitConfig; for (String unitConfigId : getLocationConfigById(locationConfigId).getLocationConfig().getUnitIdList()) { try { unitConfig = unitRegistry.getUnitConfigById(unitConfigId); for (ServiceConfig serviceConfig : unitConfig.getServiceConfigList()) { if (serviceConfig.getServiceDescription().getType().equals(type)) { unitConfigList.add(unitConfig); } } } catch (CouldNotPerformException ex) { ExceptionPrinter.printHistory(new CouldNotPerformException("Could not resolve UnitConfigId[" + unitConfigId + "] by device registry!", ex), logger); } } return unitConfigList; }
public static String generateItemName(final UnitConfig device, final String deviceClassLabel, final UnitConfig unit, final ServiceConfig service, final UnitConfig location) throws CouldNotPerformException { if (device == null) { throw new NotAvailableException("deviceconfig"); } if (unit == null) { throw new NotAvailableException("unitconfig"); } if (service == null) { throw new NotAvailableException("serviceconfig"); } return StringProcessor.transformToIdString(deviceClassLabel) + ITEM_SEGMENT_DELIMITER + ScopeGenerator.generateStringRepWithDelimiter(location.getScope(), ITEM_SUBSEGMENT_DELIMITER) + ITEM_SEGMENT_DELIMITER + StringProcessor.transformUpperCaseToCamelCase(unit.getType().toString()) + ITEM_SEGMENT_DELIMITER + StringProcessor.transformToIdString(unit.getLabel()) + ITEM_SEGMENT_DELIMITER + StringProcessor.transformUpperCaseToCamelCase(service.getServiceDescription().getType().toString()); } }
/** * {@inheritDoc} * * @param serviceType {@inheritDoc} * @return {@inheritDoc} * @throws CouldNotPerformException {@inheritDoc} * @throws NotAvailableException {@inheritDoc} */ @Override public List<ServiceConfig> getServiceConfigs(final ServiceType serviceType) throws CouldNotPerformException, NotAvailableException { List<ServiceConfig> serviceConfigs = new ArrayList<>(); for (UnitConfig unitConfig : getUnitConfigs()) { for (ServiceConfig serviceConfig : unitConfig.getServiceConfigList()) { if (serviceConfig.getServiceDescription().getType() == serviceType) { serviceConfigs.add(serviceConfig); } } } return serviceConfigs; }
/** * This method binds a service config to this unit service panel. * Make sure the remote unit was initialized before and the service config is compatible with this unit. * * @param serviceConfig the new service config to bind to this unit remote. * @throws CouldNotPerformException is thrown if any error occurs during the binding process. * @throws InterruptedException */ public void bindServiceConfig(final ServiceConfig serviceConfig) throws CouldNotPerformException, InterruptedException { try { if (unitRemote == null) { throw new InvalidStateException("The unit remote is unknown!!"); } setServiceConfig(serviceConfig); // updateDynamicComponents(); } catch (CouldNotPerformException ex) { throw new CouldNotPerformException("Could not bind ServiceConfig[" + serviceConfig.getServiceDescription().getType() + "] on UnitRemote[" + unitRemote.getScope() + "]!", ex); } }