// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.tagging; import java.util.ArrayList; import java.util.List; public class TagModel { /** the name of the tag */ private String name = null; /** the list of values */ private ArrayList<String> values = null; /** * constructor */ public TagModel() { values = new ArrayList<String>(); setName(""); setValue(""); } /** * constructor * @param name the tag name */ public TagModel(String name) { this(); setName(name); } /** * constructor * * @param name the tag name * @param value the tag value */ public TagModel(String name, String value) { this(); setName(name); setValue(value); } /** * sets the name. Converts name to "" if null. * @param name the tag name */ public void setName(String name) { name = (name == null) ? "" : name; this.name = name; } /** * @return the tag name */ public String getName(){ return name; } /** * removes all values from the list of values */ public void clearValues() { this.values.clear(); } /** * sets a unique value for this tag. Converts value to "", if null. * @param value the value. */ public void setValue(String value) { value = (value == null) ? "" : value; clearValues(); this.values.add(value); } /** * * @param value the value to be checked; converted to "" if null * @return true, if the values of this tag include <code>value</code>; false otherwise */ public boolean hasValue(String value) { value = (value == null) ? "" : value; return values.contains(value); } public void addValue(String value) { value = (value == null) ? "" : value; if (hasValue(value)) { return; } values.add(value); } /** * removes a value from the list of values. Converts value to "" if null * @param value the value */ public void removeValue(String value){ value = (value == null) ? "" : value; values.remove(value); } public List<String> getValues() { return values; } public String getValue() { if (getValueCount() == 0) { return ""; } else if (getValueCount() == 1) { return values.get(0); } else { StringBuilder sb = new StringBuilder(); for (int i =0; i < values.size(); i++) { sb.append(values.get(i)); if (i + 1 < values.size()) { sb.append(";"); } } return sb.toString(); } } public int getValueCount() { return values.size(); } }