final ConfigDescription configDescription, final @Nullable Locale locale) { final List<ConfigDescriptionParameter> localizedConfigDescriptionParameters = new ArrayList<>( configDescription.getParameters().size()); for (final ConfigDescriptionParameter configDescriptionParameter : configDescription.getParameters()) { final ConfigDescriptionParameter localizedConfigDescriptionParameter = getLocalizedConfigDescriptionParameter( bundle, configDescription, configDescriptionParameter, locale); configDescription.getParameterGroups().size()); .getParameterGroups()) { final ConfigDescriptionParameterGroup localizedConfigDescriptionGroup = getLocalizedConfigDescriptionGroup( bundle, configDescription, configDescriptionParameterGroup, locale); localizedConfigDescriptionGroups.add(localizedConfigDescriptionGroup); return new ConfigDescription(configDescription.getUID(), localizedConfigDescriptionParameters, localizedConfigDescriptionGroups);
/** * Returns the value of the {@code config-description-ref} and the {@code config-description} tags from the specific * XML type definition. * * @param nodeIterator the iterator to be used to extract the information (must not be null) * * @return the URI and configuration object * (contains two elements: URI - could be null, ConfigDescription - could be null) */ protected Object[] getConfigDescriptionObjects(NodeIterator nodeIterator) { URI configDescriptionURI = readConfigDescriptionURI(nodeIterator); ConfigDescription configDescription = null; if (configDescriptionURI == null) { configDescription = readConfigDescription(nodeIterator); if (configDescription != null) { configDescriptionURI = configDescription.getURI(); } } return new Object[] { configDescriptionURI, configDescription }; }
private List<ConfigDescriptionParameter> getLocalizedConfigDescriptionParameters( List<ConfigDescriptionParameter> parameters, String prefix, String uid, Bundle bundle, Locale locale) { URI uri = null; try { uri = new URI(prefix + ":" + uid + ".name"); } catch (URISyntaxException e) { logger.error("Constructed invalid uri '{}:{}.name'", prefix, uid, e); } ConfigDescription configDescription = new ConfigDescription(uri, parameters); return localizationService.getLocalizedConfigDescription(bundle, configDescription, locale).getParameters(); }
private boolean fillFromProviders(URI uri, Locale locale, List<ConfigDescriptionParameter> parameters, List<ConfigDescriptionParameterGroup> parameterGroups) { boolean found = false; for (ConfigDescriptionProvider configDescriptionProvider : this.configDescriptionProviders) { ConfigDescription config = configDescriptionProvider.getConfigDescription(uri, locale); if (config != null) { found = true; // Simply merge the groups and parameters parameters.addAll(config.getParameters()); parameterGroups.addAll(config.getParameterGroups()); } } return found; }
/** * Maps configuration description into configuration description DTO object. * * @param configDescription the configuration description (not null) * @return the configuration description DTO object */ public static ConfigDescriptionDTO map(ConfigDescription configDescription) { List<ConfigDescriptionParameterGroupDTO> parameterGroups = mapParameterGroups( configDescription.getParameterGroups()); List<ConfigDescriptionParameterDTO> parameters = mapParameters(configDescription.getParameters()); return new ConfigDescriptionDTO(toDecodedString(configDescription.getUID()), parameters, parameterGroups); }
private List<String> getRequiredParameters(ConfigDescription description) { List<String> requiredParameters = new ArrayList<>(); for (ConfigDescriptionParameter param : description.getParameters()) { if (param.isRequired()) { requiredParameters.add(param.getName()); } } return requiredParameters; }
private @Nullable ConfigDescription createParamConfigDescription(MetadataConfigDescriptionProvider provider, String value, @Nullable Locale locale) { String namespace = provider.getNamespace(); URI uri = URI.create(SCHEME + SEPARATOR + namespace + SEPARATOR + value); List<ConfigDescriptionParameter> parameters = provider.getParameters(value, locale); if (parameters == null || parameters.isEmpty()) { return null; } return new ConfigDescription(uri, parameters); }
@Override public ConfigDescription getConfigDescription(URI uri, Locale locale) { if (configDescription != null && configDescription.getUID().equals(uri)) { return configDescription; } if ("channel".equals(uri.getScheme()) == false) { return null; } ChannelUID channelUID = new ChannelUID(uri.getSchemeSpecificPart()); // Is this a zigbee thing? if (!channelUID.getBindingId().equals(ZigBeeBindingConstants.BINDING_ID)) { return null; } // Do we know this channel? if (channels.get(channelUID) == null) { return null; } ZigBeeBaseChannelConverter converter = channels.get(channelUID); return new ConfigDescription(uri, converter.getConfigDescription()); }
@GET @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = "Gets all available config descriptions.", response = ConfigDescriptionDTO.class, responseContainer = "List") @ApiResponses(value = @ApiResponse(code = 200, message = "OK", response = ConfigDescriptionDTO.class, responseContainer = "List")) public Response getAll(@HeaderParam("Accept-Language") @ApiParam(value = "Accept-Language") String language, // @QueryParam("scheme") @ApiParam(value = "scheme filter", required = false) @Nullable String scheme) { Locale locale = localeService.getLocale(language); Collection<ConfigDescription> configDescriptions = configDescriptionRegistry.getConfigDescriptions(locale); return Response.ok(new Stream2JSONInputStream(configDescriptions.stream().filter(configDescription -> { return scheme == null || scheme.equals(configDescription.getUID().getScheme()); }).map(ConfigDescriptionDTOMapper::map))).build(); }
private List<ConfigDescriptionParameter> getConfigDescParams(ThingType thingType) { if (thingType != null && thingType.getConfigDescriptionURI() != null) { URI descURI = thingType.getConfigDescriptionURI(); ConfigDescription desc = configDescRegistry.getConfigDescription(descURI); if (desc != null) { return desc.getParameters(); } } return Collections.emptyList(); }
return new ConfigDescription(uri, parametersWithOptions, parameterGroups); } else {
/** * Filter existing metadata namespaces against the given namespaeSelector. The given String might consist of a comma * separated list of namespaces as well as a regular expression. * * @param namespaceSelector a comma separated list of namespaces or regular expression. * @param locale the locale for config descriptions with the scheme "metadata". * @return a {@link Set} of matching namespaces. */ public Set<String> filterNamespaces(String namespaceSelector, Locale locale) { if (namespaceSelector == null || namespaceSelector.isEmpty()) { return Collections.emptySet(); } else { Set<String> originalNamespaces = Arrays.stream(namespaceSelector.split(",")) // .filter(n -> !metadataRegistry.isInternalNamespace(n)) // .map(n -> n.trim()) // .collect(Collectors.toSet()); String namespacePattern = originalNamespaces.stream().collect(Collectors.joining("|")); Pattern pattern = Pattern.compile(METADATA_SCHEME_PREFIX + "(" + namespacePattern + ")$"); Collection<ConfigDescription> configDescriptions = configDescriptionRegistry.getConfigDescriptions(locale); Set<String> configNamespaces = configDescriptions.stream() .filter(cd -> cd.getUID().getScheme().equals(METADATA_SCHEME)).map(cd -> cd.getUID().toString()) .filter(pattern.asPredicate()).map(uri -> uri.substring(METADATA_SCHEME_PREFIX.length())) .collect(toSet()); // merge configDescription namespaces and namespaces from the namespace selector: Set<String> result = new HashSet<>(originalNamespaces); result.addAll(configNamespaces); // filter all name spaces which do not match the UID segment pattern (this will be the regex tokens): return result.stream().filter(namespace -> namespace.matches(AbstractUID.SEGMENT_PATTERN)).collect(toSet()); } }
ConfigDescription configFromMap = configMap.get(configDescription.getUID()); if (configFromMap != null) { parameters.addAll(configFromMap.getParameters()); parameters.addAll(configDescription.getParameters()); parameterGroups.addAll(configFromMap.getParameterGroups()); parameterGroups.addAll(configDescription.getParameterGroups()); configMap.put(configDescription.getUID(), new ConfigDescription(configDescription.getUID(), parameters, parameterGroups)); } else { configMap.put(configDescription.getUID(), configDescription);
private List<ConfigDescriptionParameter> getConfigDescParams(ThingType thingType) { if (thingType != null && thingType.getConfigDescriptionURI() != null) { URI descURI = thingType.getConfigDescriptionURI(); ConfigDescription desc = configDescRegistry.getConfigDescription(descURI); if (desc != null) { return desc.getParameters(); } } return Collections.emptyList(); }
private ConfigDescription createValueConfigDescription(MetadataConfigDescriptionProvider provider, @Nullable Locale locale) { String namespace = provider.getNamespace(); String description = provider.getDescription(locale); List<ParameterOption> options = provider.getParameterOptions(locale); URI uri = URI.create(SCHEME + SEPARATOR + namespace); ConfigDescriptionParameterBuilder builder = ConfigDescriptionParameterBuilder.create("value", Type.TEXT); if (options != null && !options.isEmpty()) { builder.withOptions(options); builder.withLimitToOptions(true); } else { builder.withLimitToOptions(false); } builder.withDescription(description != null ? description : namespace); ConfigDescriptionParameter parameter = builder.build(); return new ConfigDescription(uri, Collections.singletonList(parameter)); }
/** * Returns the value of the {@code config-description-ref} and the {@code config-description} tags from the specific * XML type definition. * * @param nodeIterator the iterator to be used to extract the information (must not be null) * * @return the URI and configuration object * (contains two elements: URI - could be null, ConfigDescription - could be null) */ protected Object[] getConfigDescriptionObjects(NodeIterator nodeIterator) { URI configDescriptionURI = readConfigDescriptionURI(nodeIterator); ConfigDescription configDescription = null; if (configDescriptionURI == null) { configDescription = readConfigDescription(nodeIterator); if (configDescription != null) { configDescriptionURI = configDescription.getUID(); } } return new Object[] { configDescriptionURI, configDescription }; }
private void applyDefaultConfiguration(final Configuration configuration, final ChannelType channelType) { if (((this.configDescriptionRegistry != null) && (configuration != null))) { URI _configDescriptionURI = channelType.getConfigDescriptionURI(); boolean _tripleNotEquals = (_configDescriptionURI != null); if (_tripleNotEquals) { final ConfigDescription configDescription = this.configDescriptionRegistry.getConfigDescription(channelType.getConfigDescriptionURI()); if ((configDescription != null)) { final Function1<ConfigDescriptionParameter, Boolean> _function = (ConfigDescriptionParameter it) -> { return Boolean.valueOf(((it.getDefault() != null) && (configuration.get(it.getName()) == null))); }; final Consumer<ConfigDescriptionParameter> _function_1 = (ConfigDescriptionParameter it) -> { final Object value = this.getDefaultValueAsCorrectType(it.getType(), it.getDefault()); if ((value != null)) { configuration.put(it.getName(), value); } }; IterableExtensions.<ConfigDescriptionParameter>filter(configDescription.getParameters(), _function).forEach(_function_1); } } } }
configDescription = new ConfigDescription(uri, configDescriptionParams, configDescriptionGroups);
/** * Localize a config description parameter group. * * @param bundle the bundle the i18n resources are located * @param configDescription the config description the parameter group is part of * @param group the parameter group that should be localized * @param locale the locale it should be localized to * @return a localized parameter group on success, a non-localized one on error (e.g. no translation is found). */ public ConfigDescriptionParameterGroup getLocalizedConfigDescriptionGroup(final Bundle bundle, final ConfigDescription configDescription, final ConfigDescriptionParameterGroup group, final @Nullable Locale locale) { final URI configDescriptionURI = configDescription.getUID(); final String name = group.getName(); final String label = this.configDescriptionGroupI18nUtil.getGroupLabel(bundle, configDescriptionURI, name, group.getLabel(), locale); final String description = this.configDescriptionGroupI18nUtil.getGroupDescription(bundle, configDescriptionURI, name, group.getDescription(), locale); final ConfigDescriptionParameterGroup localizedGroup = new ConfigDescriptionParameterGroup(name, group.getContext(), group.isAdvanced(), label, description); return localizedGroup; }
logger.debug("NODE {}: Node advancer: ASSOCIATIONS - no configuration!", node.getNodeId()); } else { for (ConfigDescriptionParameter parm : config.getParameters()) { String[] cfg = parm.getName().split("_"); if ("group".equals(cfg[0])) { for (ConfigDescriptionParameter parm : cfgConfig.getParameters()) { String[] cfg = parm.getName().split("_"); if ("config".equals(cfg[0])) {