001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.data.osm;
003    
004    import java.util.ArrayList;
005    import java.util.Arrays;
006    import java.util.Locale;
007    
008    public class OsmUtils {
009    
010        static ArrayList<String> TRUE_VALUES = new ArrayList<String>(Arrays
011                .asList(new String[] { "true", "yes", "1", "on" }));
012        static ArrayList<String> FALSE_VALUES = new ArrayList<String>(Arrays
013                .asList(new String[] { "false", "no", "0", "off" }));
014        static ArrayList<String> REVERSE_VALUES = new ArrayList<String>(Arrays
015                .asList(new String[] { "reverse", "-1" }));
016    
017        public static final String trueval = "yes";
018        public static final String falseval = "no";
019        public static final String reverseval = "-1";
020    
021        public static Boolean getOsmBoolean(String value) {
022            if(value == null) return null;
023            String lowerValue = value.toLowerCase(Locale.ENGLISH);
024            if (TRUE_VALUES.contains(lowerValue)) return Boolean.TRUE;
025            if (FALSE_VALUES.contains(lowerValue)) return Boolean.FALSE;
026            return null;
027        }
028    
029        public static String getNamedOsmBoolean(String value) {
030            Boolean res = getOsmBoolean(value);
031            return res == null ? value : (res ? trueval : falseval);
032        }
033    
034        public static boolean isReversed(String value) {
035            return REVERSE_VALUES.contains(value);
036        }
037    
038        public static boolean isTrue(String value) {
039            return TRUE_VALUES.contains(value);
040        }
041    
042        public static boolean isFalse(String value) {
043            return FALSE_VALUES.contains(value);
044        }
045    }