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 }