001 // License: GPL. Copyright 2007 by Dave Hansen and others
002 package org.openstreetmap.josm.data.osm;
003
004 import java.util.Set;
005 import java.util.TreeSet;
006
007 /**
008 * A simple class to keep helper functions for merging TIGER data
009 *
010 * @author daveh
011 *
012 */
013 public class TigerUtils {
014
015 public static boolean isTigerTag(String tag)
016 {
017 if (tag.indexOf("tiger:") == -1)
018 return false;
019 return true;
020 }
021
022 public static boolean tagIsInt(String name) {
023 if (name.equals("tiger:tlid"))
024 return true;
025 return false;
026 }
027
028 public static Object tagObj(String name) {
029 if (tagIsInt(name))
030 return new Integer(name);
031 return name;
032 }
033
034 public static String combineTags(String name, Set<String> values) {
035 TreeSet<Object> resultSet = new TreeSet<Object>();
036 for (String value: values) {
037 String[] parts = value.split(":");
038 for (String part: parts) {
039 resultSet.add(tagObj(part));
040 }
041 // Do not produce useless changeset noise if a single value is used and does not contain redundant splitted parts (fix #7405)
042 if (values.size() == 1 && resultSet.size() == parts.length) {
043 return value;
044 }
045 }
046 String combined = "";
047 for (Object part : resultSet) {
048 if (combined.length() > 0)
049 combined += ":";
050 combined += part;
051 }
052 return combined;
053 }
054
055 public static String combineTags(String name, String t1, String t2) {
056 Set<String> set = new TreeSet<String>();
057 set.add(t1);
058 set.add(t2);
059 return TigerUtils.combineTags(name, set);
060 }
061 }