/* (c) 2017 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.opensearch.eo; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.geotools.data.Parameter; /** * Simple helper to build {@link Parameter} objects * * @author Andrea Aime - GeoSolutions */ class ParameterBuilder { String key; Class type; boolean required; String prefix; Integer min; Integer max; String name; ParameterBuilder(String key, Class type) { this.key = key; this.type = type; } ParameterBuilder required(boolean required) { this.required = required; return this; } public ParameterBuilder prefix(String prefix) { this.prefix = prefix; return this; } public ParameterBuilder name(String name) { this.name = name; return this; } public Parameter build() { Map<String, Object> metadata = new HashMap<>(2); if (prefix != null) { metadata.put(OpenSearchParameters.PARAM_PREFIX, prefix); } if (name != null) { metadata.put(OpenSearchParameters.PARAM_NAME, name); } if (min != null) { metadata.put(OpenSearchParameters.MIN_INCLUSIVE, min); } if (max != null) { metadata.put(OpenSearchParameters.MAX_INCLUSIVE, max); } return new Parameter<>(key, type, null, null, required, required ? 1 : 0, 1, null, Collections.unmodifiableMap(metadata)); } public ParameterBuilder minimumInclusive(int min) { this.min = min; return this; } public ParameterBuilder maximumInclusive(int max) { this.max = max; return this; } }