001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.gui.tagging; 003 004 import java.util.ArrayList; 005 import java.util.List; 006 007 public class TagModel { 008 009 /** the name of the tag */ 010 private String name = null; 011 012 /** the list of values */ 013 private ArrayList<String> values = null; 014 015 /** 016 * constructor 017 */ 018 public TagModel() { 019 values = new ArrayList<String>(); 020 setName(""); 021 setValue(""); 022 } 023 024 /** 025 * constructor 026 * @param name the tag name 027 */ 028 public TagModel(String name) { 029 this(); 030 setName(name); 031 } 032 033 /** 034 * constructor 035 * 036 * @param name the tag name 037 * @param value the tag value 038 */ 039 public TagModel(String name, String value) { 040 this(); 041 setName(name); 042 setValue(value); 043 } 044 045 /** 046 * sets the name. Converts name to "" if null. 047 * @param name the tag name 048 */ 049 public void setName(String name) { 050 name = (name == null) ? "" : name; 051 this.name = name; 052 } 053 054 /** 055 * @return the tag name 056 */ 057 public String getName(){ 058 return name; 059 } 060 061 /** 062 * removes all values from the list of values 063 */ 064 public void clearValues() { 065 this.values.clear(); 066 } 067 068 /** 069 * sets a unique value for this tag. Converts value to "", if null. 070 * @param value the value. 071 */ 072 public void setValue(String value) { 073 value = (value == null) ? "" : value; 074 clearValues(); 075 this.values.add(value); 076 } 077 078 /** 079 * 080 * @param value the value to be checked; converted to "" if null 081 * @return true, if the values of this tag include <code>value</code>; false otherwise 082 */ 083 public boolean hasValue(String value) { 084 value = (value == null) ? "" : value; 085 return values.contains(value); 086 } 087 088 public void addValue(String value) { 089 value = (value == null) ? "" : value; 090 if (hasValue(value)) { 091 return; 092 } 093 values.add(value); 094 } 095 096 /** 097 * removes a value from the list of values. Converts value to "" if null 098 * @param value the value 099 */ 100 public void removeValue(String value){ 101 value = (value == null) ? "" : value; 102 values.remove(value); 103 } 104 105 public List<String> getValues() { 106 return values; 107 } 108 109 public String getValue() { 110 if (getValueCount() == 0) { 111 return ""; 112 } else if (getValueCount() == 1) { 113 return values.get(0); 114 } else { 115 StringBuilder sb = new StringBuilder(); 116 for (int i =0; i < values.size(); i++) { 117 sb.append(values.get(i)); 118 if (i + 1 < values.size()) { 119 sb.append(";"); 120 } 121 } 122 return sb.toString(); 123 } 124 } 125 126 public int getValueCount() { 127 return values.size(); 128 } 129 }