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    }