Ticket #19632: 19632.extra_tag.patch
File 19632.extra_tag.patch, 5.1 KB (added by , 4 years ago) |
---|
-
src/org/openstreetmap/josm/data/osm/tag/ArrayTag.java
1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.data.osm.tag; 3 4 import java.util.List; 5 import java.util.stream.Collectors; 6 7 import org.openstreetmap.josm.data.osm.Tag; 8 9 public class ArrayTag extends Tag implements IValueTag<List<Tag>> { 10 11 private List<Tag> value; 12 13 public ArrayTag(String key, List<Tag> value) { 14 super(key, convertToString(value)); 15 this.value = value; 16 } 17 18 @Override 19 public List<Tag> getRealValue() { 20 return value; 21 } 22 23 @Override 24 public String getValue() { 25 return convertToString(value); 26 } 27 28 private static String convertToString(List<Tag> value) { 29 return value.stream().map(Tag::getValue).collect(Collectors.joining(", ", "[", "]")); 30 } 31 } -
src/org/openstreetmap/josm/data/osm/tag/BooleanTag.java
1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.data.osm.tag; 3 4 import org.openstreetmap.josm.data.osm.Tag; 5 6 public class BooleanTag extends Tag implements IValueTag<Boolean> { 7 private Boolean value; 8 9 public BooleanTag(Boolean value) { 10 super(value.toString()); 11 this.value = value; 12 } 13 14 @Override 15 public Boolean getRealValue() { 16 return value; 17 } 18 } -
src/org/openstreetmap/josm/data/osm/tag/IValueTag.java
1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.data.osm.tag; 3 4 public interface IValueTag<T> { 5 T getRealValue(); 6 } -
src/org/openstreetmap/josm/data/osm/tag/NumberTag.java
1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.data.osm.tag; 3 4 import org.openstreetmap.josm.data.osm.Tag; 5 6 public class NumberTag extends Tag implements IValueTag<Number> { 7 8 private Number value; 9 public NumberTag(String key, Number value) { 10 super(key, value.toString()); 11 this.value = value; 12 } 13 14 @Override 15 public Number getRealValue() { 16 return this.value; 17 } 18 19 } -
src/org/openstreetmap/josm/data/osm/tag/ObjectTag.java
1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.data.osm.tag; 3 4 import java.util.Map; 5 import java.util.stream.Collectors; 6 7 import org.openstreetmap.josm.data.osm.Tag; 8 9 public class ObjectTag extends Tag implements IValueTag<Map<String, Tag>> { 10 private Map<String, Tag> value; 11 public ObjectTag(String key, Map<String, Tag> value) { 12 super(key, convertToString(value)); 13 this.value = value; 14 } 15 16 @Override 17 public Map<String, Tag> getRealValue() { 18 return value; 19 } 20 21 @Override 22 public String getValue() { 23 return convertToString(value); 24 } 25 26 private static String convertToString(Map<String, Tag> value) { 27 return value.entrySet().stream().map(e -> e.getKey() + ":" + e.getValue().getValue()).collect(Collectors.joining(",", "{", "}")); 28 } 29 } -
src/org/openstreetmap/josm/data/osm/tag/StringTag.java
1 // License: GPL. For details, see LICENSE file. 2 package org.openstreetmap.josm.data.osm.tag; 3 4 import org.openstreetmap.josm.data.osm.Tag; 5 import org.openstreetmap.josm.data.osm.Tagged; 6 7 /** 8 * Tag represents an immutable key/value-pair. Both the key and the value may be empty, but not null. 9 * <p> 10 * It implements the {@link Tagged} interface. However, since instances of this class are immutable, 11 * the modifying methods throw an {@link UnsupportedOperationException}. 12 */ 13 public class StringTag extends Tag implements IValueTag<String> { 14 15 public StringTag(String key, String value) { 16 super(key, value); 17 } 18 19 @Override 20 public String getRealValue() { 21 return super.getValue(); 22 } 23 }