use of org.eclipse.smarthome.config.core.ConfigDescriptionParameter.Type in project smarthome by eclipse.
the class ConfigDescriptionParameterConverter method unmarshal.
@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
ConfigDescriptionParameter configDescriptionParam = null;
// read attributes
Map<String, String> attributes = this.attributeMapValidator.readValidatedAttributes(reader);
String name = attributes.get("name");
Type type = toType(attributes.get("type"));
BigDecimal min = toNumber(attributes.get("min"));
BigDecimal max = toNumber(attributes.get("max"));
BigDecimal step = toNumber(attributes.get("step"));
String patternString = attributes.get("pattern");
Boolean required = toBoolean(attributes.get("required"));
Boolean readOnly = falseIfNull(toBoolean(attributes.get("readOnly")));
Boolean multiple = falseIfNull(toBoolean(attributes.get("multiple")));
String groupName = attributes.get("groupName");
String unit = attributes.get("unit");
// read values
ConverterValueMap valueMap = new ConverterValueMap(reader, context);
String parameterContext = valueMap.getString("context");
if (required == null) {
// fallback to deprecated "required" element
required = valueMap.getBoolean("required", false);
}
String defaultValue = valueMap.getString("default");
String label = valueMap.getString("label");
String description = valueMap.getString("description");
Boolean advanced = valueMap.getBoolean("advanced", false);
Boolean verify = valueMap.getBoolean("verify", false);
Boolean limitToOptions = valueMap.getBoolean("limitToOptions", true);
Integer multipleLimit = valueMap.getInteger("multipleLimit");
String unitLabel = null;
if (unit == null) {
unitLabel = valueMap.getString("unitLabel");
}
// read options and filter criteria
List<ParameterOption> options = readParameterOptions(valueMap.getObject("options"));
@SuppressWarnings("unchecked") List<FilterCriteria> filterCriteria = (List<FilterCriteria>) valueMap.getObject("filter");
// create object
configDescriptionParam = ConfigDescriptionParameterBuilder.create(name, type).withMinimum(min).withMaximum(max).withStepSize(step).withPattern(patternString).withRequired(required).withReadOnly(readOnly).withMultiple(multiple).withContext(parameterContext).withDefault(defaultValue).withLabel(label).withDescription(description).withOptions(options).withFilterCriteria(filterCriteria).withGroupName(groupName).withAdvanced(advanced).withVerify(verify).withLimitToOptions(limitToOptions).withMultipleLimit(multipleLimit).withUnit(unit).withUnitLabel(unitLabel).build();
return configDescriptionParam;
}
Aggregations