serviceType = Registries.getUnitRegistry().getUnitTemplateByType(unitType).getServiceDescriptionList().get(0).getType(); } catch (IndexOutOfBoundsException ex) {
serviceInterfaceMap.put(StringProcessor.transformUpperCaseToCamelCase(serviceDescription.getType().name()) + StringProcessor.transformUpperCaseToCamelCase(serviceDescription.getPattern().name()), serviceDescription); for (Entry<String, ServiceDescription> serviceInterfaceMapEntry : serviceInterfaceMap.entrySet()) { try { if (null != serviceInterfaceMapEntry.getValue().getPattern()) // Identify package switch (serviceInterfaceMapEntry.getValue().getPattern()) { case CONSUMER: servicePackage = ConsumerService.class.getPackage(); String serviceDataTypeName = StringProcessor.transformUpperCaseToCamelCase(serviceInterfaceMapEntry.getValue().getType().name()).replaceAll("Service", ""); String servicePatternName = StringProcessor.transformUpperCaseToCamelCase(serviceInterfaceMapEntry.getValue().getPattern().name()); String serviceClassName = servicePackage.getName() + "." + serviceDataTypeName + servicePatternName + "Service"; try {
final UnitConfig unitConfig = Registries.getUnitRegistry().getUnitConfigById(childUnitId); for (ServiceDescription serviceDescription : Registries.getUnitRegistry().getUnitTemplateByType(unitConfig.getType()).getServiceDescriptionList()) { if (!serviceDescriptionsOnLocation.containsKey(serviceDescription.getType())) { serviceDescriptionsOnLocation.put(serviceDescription.getType(), serviceDescription); } else { if (serviceDescriptionsOnLocation.get(serviceDescription.getType()).getPattern() == ServiceTemplate.ServicePattern.PROVIDER && serviceDescription.getPattern() == ServiceTemplate.ServicePattern.OPERATION) { serviceDescriptionsOnLocation.put(serviceDescription.getType(), serviceDescription); if (serviceDescription.getType() == ServiceType.COLOR_STATE_SERVICE || serviceDescription.getType() == ServiceType.POWER_STATE_SERVICE || serviceDescription.getType() == ServiceType.POWER_CONSUMPTION_STATE_SERVICE || serviceDescription.getType() == ServiceType.TEMPERATURE_STATE_SERVICE || serviceDescription.getType() == ServiceType.MOTION_STATE_SERVICE) { LocationItemEntry entry = new LocationItemEntry(locationUnitConfig, serviceDescription); itemEntryList.add(entry); Set<ServiceType> serviceTypeSet = new HashSet<>(); for (ServiceDescription serviceDescription : unitGroupUnitConfig.getUnitGroupConfig().getServiceDescriptionList()) { logger.info("Generate ItemEntry for group[" + unitGroupUnitConfig.getLabel() + "] for service [" + serviceDescription.getType() + "]"); if (serviceDescription.getType() == ServiceType.COLOR_STATE_SERVICE || serviceDescription.getType() == ServiceType.POWER_STATE_SERVICE) { if (!serviceTypeSet.contains(serviceDescription.getType())) { UnitGroupItemEntry entry = new UnitGroupItemEntry(unitGroupUnitConfig, serviceDescription); itemEntryList.add(entry); logger.debug("Added unit group entry [" + entry.buildStringRep() + "]"); serviceTypeSet.add(serviceDescription.getType()); if (serviceConfig.getServiceDescription().getPattern() == ServicePattern.CONSUMER) { continue;
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 (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;
serviceMap.get(serviceConfig.getServiceDescription().getType()).add(unitConfig); }); } catch (CouldNotPerformException ex) {
if (serviceConfig.getServiceDescription().getType() == ServiceType.COLOR_STATE_SERVICE) { colorStateServiceConfig = serviceConfig;
if (serviceDescription.getPattern() == ServicePattern.PROVIDER && serviceTempus == ServiceTempus.REQUESTED) { continue; if (!serviceTempusServiceTypeObservableMap.get(serviceTempus).containsKey(serviceDescription.getType())) { serviceTempusServiceTypeObservableMap.get(serviceTempus).put(serviceDescription.getType(), new ServiceDataFilteredObservable(this)); if (serviceType == serviceDescription.getType()) {
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 : getUnitTemplate().getServiceDescriptionList()) { try { ServiceStateDescription.Builder serviceStateDescription = ServiceStateDescription.newBuilder().setServiceType(serviceDescription.getType()).setUnitId(getId()); if (serviceDescription.getPattern() != ServiceTemplate.ServicePattern.OPERATION) { continue; Message serviceAttribute = (Message) Services.invokeServiceMethod(serviceDescription.getType(), ServiceTemplate.ServicePattern.PROVIDER, this); serviceStateDescription.setServiceType(serviceDescription.getType()); serviceStateDescription.setServiceAttributeType(serviceJSonProcessor.getServiceAttributeType(serviceAttribute));
final Set<ServiceType> serviceTypeSet = new HashSet<>(); for (final ServiceDescription serviceDescription : getUnitTemplate().getServiceDescriptionList()) { if (serviceDescription.getPattern() == ServicePattern.PROVIDER && serviceTempus == ServiceTempus.REQUESTED) { continue; if (!serviceTypeSet.contains(serviceDescription.getType())) { serviceTypeSet.add(serviceDescription.getType()); try { Object serviceData = Services.invokeServiceMethod(serviceDescription.getType(), ServicePattern.PROVIDER, serviceTempus, data1); serviceTempusServiceTypeObservableMap.get(serviceTempus).get(serviceDescription.getType()).notifyObservers(serviceData); } catch (CouldNotPerformException ex) { logger.debug("Could not notify state update for service[" + serviceDescription.getType() + "] because this service is not supported by this remote controller.", ex);
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);
List<ServiceDescription> serviceDescriptionList = new ArrayList<>(); for (ServiceDescription serviceDescription : unitTemplate.getServiceDescriptionList()) { if (serviceDescription.getServiceTemplateId().isEmpty() || !serviceTemplateRegistry.contains(serviceDescription.getServiceTemplateId())) { if (!serviceDescription.hasType()) { throw new NotAvailableException("ServiceDescription [" + serviceDescription + "] does not contain a valid id and type!"); serviceTemplate = getServiceTemplateByType(serviceDescription.getType()); serviceDescriptionList.add(serviceDescription.toBuilder().setServiceTemplateId(serviceTemplate.getId()).build()); modification = true; } else { serviceTemplate = serviceTemplateRegistry.getMessage(serviceDescription.getServiceTemplateId()); if(serviceDescription.hasType() && serviceTemplate.getType() == serviceDescription.getType()) { serviceDescriptionList.add(serviceDescription.toBuilder().setType(serviceTemplate.getType()).build()); modification = true;
/** * {@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; }
/** * {@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; }
/** * {@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} * * @param serviceTypes * @return * @throws CouldNotPerformException */ @Override public List<UnitConfig> getUnitGroupConfigsByServiceTypes(final List<ServiceType> serviceTypes) throws CouldNotPerformException { List<UnitConfig> unitGroups = new ArrayList<>(); for (UnitConfig unitGroupUnitConfig : unitGroupUnitConfigRegistry.getMessages()) { boolean skipGroup = false; for (ServiceDescription serviceDescription : unitGroupUnitConfig.getUnitGroupConfig().getServiceDescriptionList()) { if (!serviceTypes.contains(serviceDescription.getType())) { skipGroup = true; } } if (skipGroup) { continue; } unitGroups.add(unitGroupUnitConfig); } return unitGroups; }