1bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/* 2bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Licensed to the Apache Software Foundation (ASF) under one or more 3bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * contributor license agreements. See the NOTICE file distributed with 4bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * this work for additional information regarding copyright ownership. 5bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * The ASF licenses this file to You under the Apache License, Version 2.0 6bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * (the "License"); you may not use this file except in compliance with 7bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * the License. You may obtain a copy of the License at 8bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 9bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * http://www.apache.org/licenses/LICENSE-2.0 10bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 11bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Unless required by applicable law or agreed to in writing, software 12bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * distributed under the License is distributed on an "AS IS" BASIS, 13bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * See the License for the specific language governing permissions and 15bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * limitations under the License. 16bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 17bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpackage org.apache.commons.io; 18bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 19bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport java.io.Serializable; 20bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 21bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook/** 22bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Enumeration of IO case sensitivity. 23bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 24bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Different filing systems have different rules for case-sensitivity. 25bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Windows is case-insensitive, Unix is case-sensitive. 26bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 27bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * This class captures that difference, providing an enumeration to 28bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * control how filename comparisons should be performed. It also provides 29bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * methods that use the enumeration to perform comparisons. 30bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 31bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Wherever possible, you should use the <code>check</code> methods in this 32bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * class to compare filenames. 33bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 34bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @author Stephen Colebourne 35bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @version $Id: IOCase.java 606345 2007-12-21 23:43:01Z ggregory $ 36bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @since Commons IO 1.3 37bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 38bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpublic final class IOCase implements Serializable { 39bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 40bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 41bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * The constant for case sensitive regardless of operating system. 42bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 43bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public static final IOCase SENSITIVE = new IOCase("Sensitive", true); 44bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 45bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 46bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * The constant for case insensitive regardless of operating system. 47bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 48bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public static final IOCase INSENSITIVE = new IOCase("Insensitive", false); 49bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 50bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 51bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * The constant for case sensitivity determined by the current operating system. 52bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Windows is case-insensitive when comparing filenames, Unix is case-sensitive. 53bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 54bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * If you derialize this constant of Windows, and deserialize on Unix, or vice 55bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * versa, then the value of the case-sensitivity flag will change. 56bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 57bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public static final IOCase SYSTEM = new IOCase("System", !FilenameUtils.isSystemWindows()); 58bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 59bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** Serialization version. */ 60bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private static final long serialVersionUID = -6343169151696340687L; 61bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 62bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** The enumeration name. */ 63bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private final String name; 64bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 65bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** The sensitivity flag. */ 66bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private final transient boolean sensitive; 67bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 68bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook //----------------------------------------------------------------------- 69bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 70bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Factory method to create an IOCase from a name. 71bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 72bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param name the name to find 73bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return the IOCase object 74bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @throws IllegalArgumentException if the name is invalid 75bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 76bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public static IOCase forName(String name) { 77bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (IOCase.SENSITIVE.name.equals(name)){ 78bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return IOCase.SENSITIVE; 79bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 80bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (IOCase.INSENSITIVE.name.equals(name)){ 81bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return IOCase.INSENSITIVE; 82bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 83bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (IOCase.SYSTEM.name.equals(name)){ 84bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return IOCase.SYSTEM; 85bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 86bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook throw new IllegalArgumentException("Invalid IOCase name: " + name); 87bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 88bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 89bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook //----------------------------------------------------------------------- 90bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 91bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Private constructor. 92bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 93bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param name the name 94bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param sensitive the sensitivity 95bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 96bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private IOCase(String name, boolean sensitive) { 97bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this.name = name; 98bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook this.sensitive = sensitive; 99bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 100bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 101bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 102bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Replaces the enumeration from the stream with a real one. 103bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * This ensures that the correct flag is set for SYSTEM. 104bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 105bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return the resolved object 106bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 107bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private Object readResolve() { 108bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return forName(name); 109bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 110bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 111bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook //----------------------------------------------------------------------- 112bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 113bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Gets the name of the constant. 114bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 115bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return the name of the constant 116bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 117bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public String getName() { 118bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return name; 119bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 120bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 121bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 122bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Does the object represent case sensitive comparison. 123bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 124bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return true if case sensitive 125bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 126bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public boolean isCaseSensitive() { 127bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return sensitive; 128bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 129bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 130bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook //----------------------------------------------------------------------- 131bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 132bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Compares two strings using the case-sensitivity rule. 133bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 134bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * This method mimics {@link String#compareTo} but takes case-sensitivity 135bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * into account. 136bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 137bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param str1 the first string to compare, not null 138bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param str2 the second string to compare, not null 139bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return true if equal using the case rules 140bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @throws NullPointerException if either string is null 141bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 142bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public int checkCompareTo(String str1, String str2) { 143bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (str1 == null || str2 == null) { 144bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook throw new NullPointerException("The strings must not be null"); 145bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 146bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return sensitive ? str1.compareTo(str2) : str1.compareToIgnoreCase(str2); 147bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 148bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 149bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 150bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Compares two strings using the case-sensitivity rule. 151bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 152bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * This method mimics {@link String#equals} but takes case-sensitivity 153bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * into account. 154bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 155bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param str1 the first string to compare, not null 156bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param str2 the second string to compare, not null 157bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return true if equal using the case rules 158bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @throws NullPointerException if either string is null 159bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 160bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public boolean checkEquals(String str1, String str2) { 161bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (str1 == null || str2 == null) { 162bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook throw new NullPointerException("The strings must not be null"); 163bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 164bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return sensitive ? str1.equals(str2) : str1.equalsIgnoreCase(str2); 165bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 166bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 167bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 168bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Checks if one string starts with another using the case-sensitivity rule. 169bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 170bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * This method mimics {@link String#startsWith(String)} but takes case-sensitivity 171bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * into account. 172bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 173bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param str the string to check, not null 174bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param start the start to compare against, not null 175bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return true if equal using the case rules 176bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @throws NullPointerException if either string is null 177bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 178bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public boolean checkStartsWith(String str, String start) { 179bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return str.regionMatches(!sensitive, 0, start, 0, start.length()); 180bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 181bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 182bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 183bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Checks if one string ends with another using the case-sensitivity rule. 184bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 185bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * This method mimics {@link String#endsWith} but takes case-sensitivity 186bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * into account. 187bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 188bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param str the string to check, not null 189bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param end the end to compare against, not null 190bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return true if equal using the case rules 191bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @throws NullPointerException if either string is null 192bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 193bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public boolean checkEndsWith(String str, String end) { 194bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int endLen = end.length(); 195bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return str.regionMatches(!sensitive, str.length() - endLen, end, 0, endLen); 196bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 197bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 198bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 199bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Checks if one string contains another at a specific index using the case-sensitivity rule. 200bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * <p> 201bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * This method mimics parts of {@link String#regionMatches(boolean, int, String, int, int)} 202bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * but takes case-sensitivity into account. 203bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 204bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param str the string to check, not null 205bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param strStartIndex the index to start at in str 206bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param search the start to search for, not null 207bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return true if equal using the case rules 208bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @throws NullPointerException if either string is null 209bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 210bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public boolean checkRegionMatches(String str, int strStartIndex, String search) { 211bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return str.regionMatches(!sensitive, strStartIndex, search, 0, search.length()); 212bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 213bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 214bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 215bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Converts the case of the input String to a standard format. 216bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Subsequent operations can then use standard String methods. 217bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 218bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @param str the string to convert, null returns null 219bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return the lower-case version if case-insensitive 220bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 221bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook String convertCase(String str) { 222bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (str == null) { 223bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return null; 224bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 225bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return sensitive ? str : str.toLowerCase(); 226bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 227bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 228bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook //----------------------------------------------------------------------- 229bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook /** 230bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * Gets a string describing the sensitivity. 231bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * 232bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook * @return a string describing the sensitivity 233bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook */ 234bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook public String toString() { 235bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook return name; 236bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 237bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 238bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook} 239