// License: GPL. For details, see LICENSE file. package CommandLine; import static org.openstreetmap.josm.tools.I18n.tr; import java.util.ArrayList; import java.util.Collection; import org.openstreetmap.josm.data.osm.OsmPrimitive; public class Parameter { public boolean required; public Type type; public String name; public String description; private Object value; private final ArrayList<OsmPrimitive> valueList; protected float maxVal; protected float minVal; protected int maxInstances; public Parameter() { required = false; maxInstances = 1; maxVal = 0; minVal = 0; value = ""; valueList = new ArrayList<>(); } public String getValue() { String out = ""; switch (type) { case POINT: out = (String) value; break; case LENGTH: out = String.valueOf(value); break; case NATURAL: out = String.valueOf(value); break; case STRING: out = String.valueOf(value); break; case RELAY: out = String.valueOf(((Relay) value).getValue()); break; case NODE: out = String.valueOf(valueList.size()) + " " + tr("nodes"); break; case WAY: out = String.valueOf(valueList.size()) + " " + tr("ways"); break; case RELATION: out = String.valueOf(valueList.size()) + " " + tr("relations"); break; case ANY: out = String.valueOf(valueList.size()) + " " + tr("OSM objects"); break; case USERNAME: out = String.valueOf(value); break; case IMAGERYURL: out = String.valueOf(value); break; case IMAGERYOFFSET: out = String.valueOf(value); break; default: break; } return out; } public Object getRawValue() { return value; } public ArrayList<OsmPrimitive> getValueList() { return valueList; } public void setValue(Object obj) { if (type == Type.RELAY && obj instanceof String && value instanceof Relay) { ((Relay) value).setValue((String) obj); } else value = obj; } public Collection<OsmPrimitive> getParameterObjects() { ArrayList<OsmPrimitive> pObjects = new ArrayList<>(); if (isOsm()) { if (maxInstances == 1) { pObjects.add((OsmPrimitive) value); } else { return valueList; } } return pObjects; } public boolean isOsm() { return type == Type.NODE || type == Type.WAY || type == Type.RELATION || type == Type.ANY; } }