/** * Copyright (c) 2014-2017 by the respective copyright holders. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.smarthome.config.core.dto; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import org.eclipse.smarthome.config.core.ConfigDescription; import org.eclipse.smarthome.config.core.ConfigDescriptionParameter; import org.eclipse.smarthome.config.core.ConfigDescriptionParameterGroup; import org.eclipse.smarthome.config.core.FilterCriteria; import org.eclipse.smarthome.config.core.ParameterOption; /** * {@link ConfigDescriptionDTOMapper} maps {@link ConfigDescription}s to the data transfer object * {@link ConfigDescriptionDTO}. * * @author Dennis Nobel - Initial contribution * */ public class ConfigDescriptionDTOMapper { /** * Maps config description into config description DTO object. * * @param configDescription the config description (not null) * @return the config description DTO object */ public static ConfigDescriptionDTO map(ConfigDescription configDescription) { List<ConfigDescriptionParameterGroupDTO> parameterGroups = mapParameterGroups( configDescription.getParameterGroups()); List<ConfigDescriptionParameterDTO> parameters = mapParameters(configDescription.getParameters()); return new ConfigDescriptionDTO(configDescription.getURI().toString(), parameters, parameterGroups); } /** * Maps config description parameters into DTO objects. * * @param parameters the config description parameters (not null) * * @return the parameter DTO objects (not null) */ public static List<ConfigDescriptionParameterDTO> mapParameters(List<ConfigDescriptionParameter> parameters) { List<ConfigDescriptionParameterDTO> configDescriptionParameterBeans = new ArrayList<>(parameters.size()); for (ConfigDescriptionParameter configDescriptionParameter : parameters) { ConfigDescriptionParameterDTO configDescriptionParameterBean = new ConfigDescriptionParameterDTO( configDescriptionParameter.getName(), configDescriptionParameter.getType(), configDescriptionParameter.getMinimum(), configDescriptionParameter.getMaximum(), configDescriptionParameter.getStepSize(), configDescriptionParameter.getPattern(), configDescriptionParameter.isRequired(), configDescriptionParameter.isReadOnly(), configDescriptionParameter.isMultiple(), configDescriptionParameter.getContext(), configDescriptionParameter.getDefault(), configDescriptionParameter.getLabel(), configDescriptionParameter.getDescription(), mapOptions(configDescriptionParameter.getOptions()), mapFilterCriteria(configDescriptionParameter.getFilterCriteria()), configDescriptionParameter.getGroupName(), configDescriptionParameter.isAdvanced(), configDescriptionParameter.getLimitToOptions(), configDescriptionParameter.getMultipleLimit(), configDescriptionParameter.getUnit(), configDescriptionParameter.getUnitLabel(), configDescriptionParameter.isVerifyable()); configDescriptionParameterBeans.add(configDescriptionParameterBean); } return configDescriptionParameterBeans; } /** * Maps config description parameter groups into DTO objects. * * @param parameterGroups the config description parameter groups (not null) * * @return the parameter group DTO objects (not null) */ public static List<ConfigDescriptionParameterGroupDTO> mapParameterGroups( List<ConfigDescriptionParameterGroup> parameterGroups) { List<ConfigDescriptionParameterGroupDTO> parameterGroupBeans = new ArrayList<>(parameterGroups.size()); for (ConfigDescriptionParameterGroup parameterGroup : parameterGroups) { parameterGroupBeans .add(new ConfigDescriptionParameterGroupDTO(parameterGroup.getName(), parameterGroup.getContext(), parameterGroup.isAdvanced(), parameterGroup.getLabel(), parameterGroup.getDescription())); } return parameterGroupBeans; } private static List<FilterCriteriaDTO> mapFilterCriteria(List<FilterCriteria> filterCriteria) { if (filterCriteria == null) { return null; } List<FilterCriteriaDTO> result = new LinkedList<FilterCriteriaDTO>(); for (FilterCriteria criteria : filterCriteria) { result.add(new FilterCriteriaDTO(criteria.getName(), criteria.getValue())); } return result; } private static List<ParameterOptionDTO> mapOptions(List<ParameterOption> options) { if (options == null) { return null; } List<ParameterOptionDTO> result = new LinkedList<ParameterOptionDTO>(); for (ParameterOption option : options) { result.add(new ParameterOptionDTO(option.getValue(), option.getLabel())); } return result; } }