From 94ae08701bbd7585a0b7e5a92d1975965a503c03 Mon Sep 17 00:00:00 2001 From: Dennis Kao <ulysseskao@gmail.com> Date: Wed, 15 Jan 2014 11:28:52 +0800 Subject: [PATCH] Merge branch 'origin/2.1.x' --- xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/StringUtils.java | 1060 ++++++++++++++++++++-------------------------------------- 1 files changed, 372 insertions(+), 688 deletions(-) diff --git a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/StringUtils.java b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/StringUtils.java index 5821070..272e230 100644 --- a/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/StringUtils.java +++ b/xdgnjobs/ximple-spatialjob/src/main/java/com/ximple/eofms/util/StringUtils.java @@ -18,8 +18,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -public abstract class StringUtils -{ +public abstract class StringUtils { public static String ENCODING_US_ASCII = "US-ASCII"; public static String ENCODING_ISO_8859_1 = "ISO-8859-1"; public static String ENCODING_ISO_8859_2 = "ISO-8859-2"; @@ -50,8 +49,7 @@ private static final HtmlEncoderFallbackHandler HTML_ENCODER_FALLBACK = new HtmlEncoderFallbackHandler(); - static - { + static { // Html encoding mapping according to the HTML 4.0 spec // http://www.w3.org/TR/REC-html40/sgml/entities.html @@ -315,14 +313,12 @@ DEFENSIVE_HTML_ENCODE_MAP.put('\u2666', "♦"); Set<Map.Entry<Character, String>> aggresive_entries = AGGRESSIVE_HTML_ENCODE_MAP.entrySet(); - for (Map.Entry<Character, String> entry : aggresive_entries) - { + for (Map.Entry<Character, String> entry : aggresive_entries) { HTML_DECODE_MAP.put(entry.getValue(), entry.getKey()); } Set<Map.Entry<Character, String>> defensive_entries = DEFENSIVE_HTML_ENCODE_MAP.entrySet(); - for (Map.Entry<Character, String> entry : defensive_entries) - { + for (Map.Entry<Character, String> entry : defensive_entries) { HTML_DECODE_MAP.put(entry.getValue(), entry.getKey()); } @@ -433,10 +429,8 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeClassname(String name) - { - if (null == name) - { + public static String encodeClassname(String name) { + if (null == name) { return null; } @@ -446,10 +440,8 @@ return matcher.replaceAll("_"); } - private static boolean needsUrlEncoding(String source) - { - if (null == source) - { + private static boolean needsUrlEncoding(String source) { + if (null == source) { return false; } @@ -458,15 +450,13 @@ // string is returned as-is boolean encode = false; char ch; - for (int i = 0; i < source.length(); i++) - { + for (int i = 0; i < source.length(); i++) { ch = source.charAt(i); if (ch >= 'a' && ch <= 'z' || - ch >= 'A' && ch <= 'Z' || - ch >= '0' && ch <= '9' || - ch == '-' || ch == '_' || ch == '.' || ch == '*') - { + ch >= 'A' && ch <= 'Z' || + ch >= '0' && ch <= '9' || + ch == '-' || ch == '_' || ch == '.' || ch == '*') { continue; } @@ -493,20 +483,16 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeUrl(String source) - { - if (!needsUrlEncoding(source)) - { + public static String encodeUrl(String source) { + if (!needsUrlEncoding(source)) { return source; } - try - { + try { return URLEncoder.encode(source, ENCODING_ISO_8859_1); } ///CLOVER:OFF - catch (UnsupportedEncodingException e) - { + catch (UnsupportedEncodingException e) { // this should never happen, ISO-8859-1 is a standard encoding throw new RuntimeException(e); } @@ -533,36 +519,29 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeUrlValue(String source) - { - if (!needsUrlEncoding(source)) - { + public static String encodeUrlValue(String source) { + if (!needsUrlEncoding(source)) { return source; } // check if the string is valid US-ASCII encoding boolean valid = true; CharsetEncoder encoder = CHARSET_US_ASCII.newEncoder(); - try - { + try { encoder.encode(CharBuffer.wrap(source)); } - catch (CharacterCodingException e) - { + catch (CharacterCodingException e) { valid = false; } - try - { + try { // if it is valid US-ASCII, use the regular URL encoding method - if (valid) - { + if (valid) { return URLEncoder.encode(source, ENCODING_US_ASCII); } // otherwise, base-64 encode the UTF-8 bytes and mark the string // as being encoded in a special way - else - { + else { StringBuilder encoded = new StringBuilder("%02%02"); String base64 = Base64.encodeToString(source.getBytes(ENCODING_UTF_8), false); String base64_urlsafe = replace(base64, "=", "%3D"); @@ -572,8 +551,7 @@ } } ///CLOVER:OFF - catch (UnsupportedEncodingException e) - { + catch (UnsupportedEncodingException e) { // this should never happen, ISO-8859-1 is a standard encoding throw new RuntimeException(e); } @@ -593,22 +571,17 @@ * @see #doesUrlValueNeedDecoding(String) * @since 1.0 */ - public static String decodeUrlValue(String source) - { - try - { + public static String decodeUrlValue(String source) { + try { byte[] decoded = Base64.decode(source.substring(2)); - if (null == decoded) - { + if (null == decoded) { return null; - } else - { + } else { return new String(decoded, StringUtils.ENCODING_UTF_8); } } ///CLOVER:OFF - catch (UnsupportedEncodingException e) - { + catch (UnsupportedEncodingException e) { // this should never happen, UTF-8 is a standard encoding throw new RuntimeException(e); } @@ -628,34 +601,28 @@ * @see #decodeUrlValue(String) * @since 1.0 */ - public static boolean doesUrlValueNeedDecoding(String source) - { + public static boolean doesUrlValueNeedDecoding(String source) { if (source != null && - source.length() > 2 && - source.startsWith("\u0002\u0002")) - { + source.length() > 2 && + source.startsWith("\u0002\u0002")) { return true; } return false; } - private static boolean needsHtmlEncoding(String source, boolean defensive) - { - if (null == source) - { + private static boolean needsHtmlEncoding(String source, boolean defensive) { + if (null == source) { return false; } boolean encode = false; char ch; - for (int i = 0; i < source.length(); i++) - { + for (int i = 0; i < source.length(); i++) { ch = source.charAt(i); if ((defensive || (ch != '\u0022' && ch != '\u0026' && ch != '\u003C' && ch != '\u003E')) && - ch < '\u00A0') - { + ch < '\u00A0') { continue; } @@ -669,11 +636,9 @@ /** * @since 1.6 */ - public static String decodeHtml(String source) - { + public static String decodeHtml(String source) { if (null == source || - 0 == source.length()) - { + 0 == source.length()) { return source; } @@ -683,23 +648,18 @@ StringBuilder result = null; - while (current_index <= source.length()) - { + while (current_index <= source.length()) { delimiter_start_index = source.indexOf('&', current_index); - if (delimiter_start_index != -1) - { + if (delimiter_start_index != -1) { delimiter_end_index = source.indexOf(';', delimiter_start_index + 1); - if (delimiter_end_index != -1) - { + if (delimiter_end_index != -1) { // ensure that the string builder is setup correctly - if (null == result) - { + if (null == result) { result = new StringBuilder(); } // add the text that leads up to this match - if (delimiter_start_index > current_index) - { + if (delimiter_start_index > current_index) { result.append(source.substring(current_index, delimiter_start_index)); } @@ -709,55 +669,44 @@ current_index = delimiter_end_index + 1; // try to decoded numeric entities - if (entity.charAt(1) == '#') - { + if (entity.charAt(1) == '#') { int start = 2; int radix = 10; // check if the number is hexadecimal - if (entity.charAt(2) == 'X' || entity.charAt(2) == 'x') - { + if (entity.charAt(2) == 'X' || entity.charAt(2) == 'x') { start++; radix = 16; } - try - { + try { Character c = new Character((char) Integer.parseInt(entity.substring(start, entity.length() - 1), radix)); result.append(c); } // when the number of the entity can't be parsed, add the entity as-is - catch (NumberFormatException e) - { + catch (NumberFormatException e) { result.append(entity); } - } else - { + } else { // try to decode the entity as a literal Character decoded = HTML_DECODE_MAP.get(entity); - if (decoded != null) - { + if (decoded != null) { result.append(decoded); } // if there was no match, add the entity as-is - else - { + else { result.append(entity); } } - } else - { + } else { break; } - } else - { + } else { break; } } - if (null == result) - { + if (null == result) { return source; - } else if (current_index < source.length()) - { + } else if (current_index < source.length()) { result.append(source.substring(current_index)); } @@ -781,10 +730,8 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeHtml(String source) - { - if (needsHtmlEncoding(source, false)) - { + public static String encodeHtml(String source) { + if (needsHtmlEncoding(source, false)) { return encode(source, HTML_ENCODER_FALLBACK, AGGRESSIVE_HTML_ENCODE_MAP, DEFENSIVE_HTML_ENCODE_MAP); } return source; @@ -809,10 +756,8 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeHtmlDefensive(String source) - { - if (needsHtmlEncoding(source, true)) - { + public static String encodeHtmlDefensive(String source) { + if (needsHtmlEncoding(source, true)) { return encode(source, null, DEFENSIVE_HTML_ENCODE_MAP); } return source; @@ -835,8 +780,7 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeXml(String source) - { + public static String encodeXml(String source) { return encode(source, null, XML_ENCODE_MAP); } @@ -857,8 +801,7 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeString(String source) - { + public static String encodeString(String source) { return encode(source, null, STRING_ENCODE_MAP); } @@ -879,22 +822,18 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeUnicode(String source) - { - if (null == source) - { + public static String encodeUnicode(String source) { + if (null == source) { return null; } StringBuilder encoded = new StringBuilder(); String hexstring = null; - for (int i = 0; i < source.length(); i++) - { + for (int i = 0; i < source.length(); i++) { hexstring = Integer.toHexString((int) source.charAt(i)).toUpperCase(); encoded.append("\\u"); // fill with zeros - for (int j = hexstring.length(); j < 4; j++) - { + for (int j = hexstring.length(); j < 4; j++) { encoded.append("0"); } encoded.append(hexstring); @@ -920,8 +859,7 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeSql(String source) - { + public static String encodeSql(String source) { return encode(source, null, SQL_ENCODE_MAP); } @@ -942,10 +880,8 @@ * @see #encodeRegexp(String) * @since 1.0 */ - public static String encodeLatex(String source) - { - if (null == source) - { + public static String encodeLatex(String source) { + if (null == source) { return null; } @@ -970,16 +906,13 @@ * @return The encoded <code>String</code> object. * @since 1.0 */ - private static String encode(String source, EncoderFallbackHandler fallbackHandler, Map<Character, String>... encodingTables) - { - if (null == source) - { + private static String encode(String source, EncoderFallbackHandler fallbackHandler, Map<Character, String>... encodingTables) { + if (null == source) { return null; } if (null == encodingTables || - 0 == encodingTables.length) - { + 0 == encodingTables.length) { return source; } @@ -987,13 +920,10 @@ char[] string_to_encode_array = source.toCharArray(); int last_match = -1; - for (int i = 0; i < string_to_encode_array.length; i++) - { + for (int i = 0; i < string_to_encode_array.length; i++) { char char_to_encode = string_to_encode_array[i]; - for (Map<Character, String> encoding_table : encodingTables) - { - if (encoding_table.containsKey(char_to_encode)) - { + for (Map<Character, String> encoding_table : encodingTables) { + if (encoding_table.containsKey(char_to_encode)) { encoded_string = prepareEncodedString(source, encoded_string, i, last_match, string_to_encode_array); encoded_string.append(encoding_table.get(char_to_encode)); @@ -1002,9 +932,8 @@ } if (fallbackHandler != null && - last_match < i && - fallbackHandler.hasFallback(char_to_encode)) - { + last_match < i && + fallbackHandler.hasFallback(char_to_encode)) { encoded_string = prepareEncodedString(source, encoded_string, i, last_match, string_to_encode_array); fallbackHandler.appendFallback(encoded_string, char_to_encode); @@ -1012,60 +941,49 @@ } } - if (null == encoded_string) - { + if (null == encoded_string) { return source; - } else - { + } else { int difference = string_to_encode_array.length - (last_match + 1); - if (difference > 0) - { + if (difference > 0) { encoded_string.append(string_to_encode_array, last_match + 1, difference); } return encoded_string.toString(); } } - private static StringBuilder prepareEncodedString(String source, StringBuilder encodedString, int i, int lastMatch, char[] stringToEncodeArray) - { - if (null == encodedString) - { + private static StringBuilder prepareEncodedString(String source, StringBuilder encodedString, int i, int lastMatch, char[] stringToEncodeArray) { + if (null == encodedString) { encodedString = new StringBuilder(source.length()); } int difference = i - (lastMatch + 1); - if (difference > 0) - { + if (difference > 0) { encodedString.append(stringToEncodeArray, lastMatch + 1, difference); } return encodedString; } - private static interface EncoderFallbackHandler - { + private static interface EncoderFallbackHandler { abstract boolean hasFallback(char character); abstract void appendFallback(StringBuilder encodedBuffer, char character); } - private static class HtmlEncoderFallbackHandler implements EncoderFallbackHandler - { + private static class HtmlEncoderFallbackHandler implements EncoderFallbackHandler { private final static String PREFIX = "&#"; private final static String SUFFIX = ";"; - public boolean hasFallback(char character) - { - if (character < '\u00A0') - { + public boolean hasFallback(char character) { + if (character < '\u00A0') { return false; } return true; } - public void appendFallback(StringBuilder encodedBuffer, char character) - { + public void appendFallback(StringBuilder encodedBuffer, char character) { encodedBuffer.append(PREFIX); encodedBuffer.append((int) character); encodedBuffer.append(SUFFIX); @@ -1089,11 +1007,9 @@ * @see #encodeLatex(String) * @since 1.3 */ - public static String encodeRegexp(String source) - { + public static String encodeRegexp(String source) { int regexp_quote_start = source.indexOf("\\E"); - if (-1 == regexp_quote_start) - { + if (-1 == regexp_quote_start) { return "\\Q" + source + "\\E"; } @@ -1103,8 +1019,7 @@ regexp_quote_start = 0; int current = 0; - while (-1 == (regexp_quote_start = source.indexOf("\\E", current))) - { + while (-1 == (regexp_quote_start = source.indexOf("\\E", current))) { buffer.append(source.substring(current, regexp_quote_start)); current = regexp_quote_start + 2; buffer.append("\\E\\\\E\\Q"); @@ -1126,8 +1041,7 @@ * of the substring. * @since 1.0 */ - public static int count(String source, String substring) - { + public static int count(String source, String substring) { return count(source, substring, true); } @@ -1142,15 +1056,12 @@ * of the substring. * @since 1.0 */ - public static int count(String source, String substring, boolean matchCase) - { - if (null == source) - { + public static int count(String source, String substring, boolean matchCase) { + if (null == source) { return 0; } - if (null == substring) - { + if (null == substring) { return 0; } @@ -1158,21 +1069,17 @@ int substring_index = 0; int count = 0; - if (!matchCase) - { + if (!matchCase) { source = source.toLowerCase(); substring = substring.toLowerCase(); } - while (current_index < source.length() - 1) - { + while (current_index < source.length() - 1) { substring_index = source.indexOf(substring, current_index); - if (-1 == substring_index) - { + if (-1 == substring_index) { break; - } else - { + } else { current_index = substring_index + substring.length(); count++; } @@ -1193,8 +1100,7 @@ * <code>String</code> objects. * @since 1.0 */ - public static ArrayList<String> split(String source, String seperator) - { + public static ArrayList<String> split(String source, String seperator) { return split(source, seperator, true); } @@ -1212,17 +1118,14 @@ * <code>String</code> objects. * @since 1.0 */ - public static ArrayList<String> split(String source, String seperator, boolean matchCase) - { + public static ArrayList<String> split(String source, String seperator, boolean matchCase) { ArrayList<String> substrings = new ArrayList<String>(); - if (null == source) - { + if (null == source) { return substrings; } - if (null == seperator) - { + if (null == seperator) { substrings.add(source); return substrings; } @@ -1232,26 +1135,21 @@ String element = null; String source_lookup_reference = null; - if (!matchCase) - { + if (!matchCase) { source_lookup_reference = source.toLowerCase(); seperator = seperator.toLowerCase(); - } else - { + } else { source_lookup_reference = source; } - while (current_index <= source_lookup_reference.length()) - { + while (current_index <= source_lookup_reference.length()) { delimiter_index = source_lookup_reference.indexOf(seperator, current_index); - if (-1 == delimiter_index) - { + if (-1 == delimiter_index) { element = new String(source.substring(current_index, source.length())); substrings.add(element); current_index = source.length() + 1; - } else - { + } else { element = new String(source.substring(current_index, delimiter_index)); substrings.add(element); current_index = delimiter_index + seperator.length(); @@ -1272,8 +1170,7 @@ * @return A <code>String[]</code> array containing the seperated parts. * @since 1.0 */ - public static String[] splitToArray(String source, String seperator) - { + public static String[] splitToArray(String source, String seperator) { return splitToArray(source, seperator, true); } @@ -1290,8 +1187,7 @@ * @return A <code>String[]</code> array containing the seperated parts. * @since 1.0 */ - public static String[] splitToArray(String source, String seperator, boolean matchCase) - { + public static String[] splitToArray(String source, String seperator, boolean matchCase) { ArrayList<String> substrings = split(source, seperator, matchCase); String[] substrings_array = new String[substrings.size()]; substrings_array = substrings.toArray(substrings_array); @@ -1310,8 +1206,7 @@ * @return An <code>int[]</code> array containing the seperated parts. * @since 1.0 */ - public static int[] splitToIntArray(String source, String seperator) - { + public static int[] splitToIntArray(String source, String seperator) { return splitToIntArray(source, seperator, true); } @@ -1328,20 +1223,16 @@ * @return An <code>int[]</code> array containing the seperated parts. * @since 1.0 */ - public static int[] splitToIntArray(String source, String seperator, boolean matchCase) - { + public static int[] splitToIntArray(String source, String seperator, boolean matchCase) { ArrayList<String> string_parts = split(source, seperator, matchCase); int number_of_valid_parts = 0; - for (String string_part : string_parts) - { - try - { + for (String string_part : string_parts) { + try { Integer.parseInt(string_part); number_of_valid_parts++; } - catch (NumberFormatException e) - { + catch (NumberFormatException e) { // just continue } } @@ -1349,15 +1240,12 @@ int[] string_parts_int = (int[]) Array.newInstance(int.class, number_of_valid_parts); int added_parts = 0; - for (String string_part : string_parts) - { - try - { + for (String string_part : string_parts) { + try { string_parts_int[added_parts] = Integer.parseInt(string_part); added_parts++; } - catch (NumberFormatException e) - { + catch (NumberFormatException e) { // just continue } } @@ -1377,8 +1265,7 @@ * @return A <code>byte[]</code> array containing the bytes. * @since 1.0 */ - public static byte[] splitToByteArray(String source, String seperator) - { + public static byte[] splitToByteArray(String source, String seperator) { return splitToByteArray(source, seperator, true); } @@ -1395,34 +1282,27 @@ * @return A <code>byte[]</code> array containing the bytes. * @since 1.0 */ - public static byte[] splitToByteArray(String source, String seperator, boolean matchCase) - { + public static byte[] splitToByteArray(String source, String seperator, boolean matchCase) { ArrayList<String> string_parts = split(source, seperator, matchCase); int number_of_valid_parts = 0; - for (String string_part : string_parts) - { - try - { + for (String string_part : string_parts) { + try { Byte.parseByte(string_part); number_of_valid_parts++; } - catch (NumberFormatException e) - { + catch (NumberFormatException e) { // just continue } } byte[] string_parts_byte = (byte[]) Array.newInstance(byte.class, number_of_valid_parts); int added_parts = 0; - for (String string_part : string_parts) - { - try - { + for (String string_part : string_parts) { + try { string_parts_byte[added_parts] = Byte.parseByte(string_part); added_parts++; } - catch (NumberFormatException e) - { + catch (NumberFormatException e) { // just continue } } @@ -1439,8 +1319,7 @@ * @return A new <code>String</code> containing the stripped result. * @since 1.0 */ - public static String stripFromFront(String source, String stringToStrip) - { + public static String stripFromFront(String source, String stringToStrip) { return stripFromFront(source, stringToStrip, true); } @@ -1454,15 +1333,12 @@ * @return A new <code>String</code> containing the stripping result. * @since 1.0 */ - public static String stripFromFront(String source, String stringToStrip, boolean matchCase) - { - if (null == source) - { + public static String stripFromFront(String source, String stringToStrip, boolean matchCase) { + if (null == source) { return null; } - if (null == stringToStrip) - { + if (null == stringToStrip) { return source; } @@ -1471,29 +1347,24 @@ int last_index = 0; String source_lookup_reference = null; - if (!matchCase) - { + if (!matchCase) { source_lookup_reference = source.toLowerCase(); stringToStrip = stringToStrip.toLowerCase(); - } else - { + } else { source_lookup_reference = source; } new_index = source_lookup_reference.indexOf(stringToStrip); - if (0 == new_index) - { - do - { + if (0 == new_index) { + do { last_index = new_index; new_index = source_lookup_reference.indexOf(stringToStrip, new_index + strip_length); } while (new_index != -1 && - new_index == last_index + strip_length); + new_index == last_index + strip_length); return source.substring(last_index + strip_length); - } else - { + } else { return source; } } @@ -1507,8 +1378,7 @@ * @return A new <code>String</code> containing the stripped result. * @since 1.0 */ - public static String stripFromEnd(String source, String stringToStrip) - { + public static String stripFromEnd(String source, String stringToStrip) { return stripFromEnd(source, stringToStrip, true); } @@ -1522,15 +1392,12 @@ * @return A new <code>String</code> containing the stripped result. * @since 1.0 */ - public static String stripFromEnd(String source, String stringToStrip, boolean matchCase) - { - if (null == source) - { + public static String stripFromEnd(String source, String stringToStrip, boolean matchCase) { + if (null == source) { return null; } - if (null == stringToStrip) - { + if (null == stringToStrip) { return source; } @@ -1539,30 +1406,25 @@ int last_index = 0; String source_lookup_reference = null; - if (!matchCase) - { + if (!matchCase) { source_lookup_reference = source.toLowerCase(); stringToStrip = stringToStrip.toLowerCase(); - } else - { + } else { source_lookup_reference = source; } new_index = source_lookup_reference.lastIndexOf(stringToStrip); if (new_index != -1 && - source.length() == new_index + strip_length) - { - do - { + source.length() == new_index + strip_length) { + do { last_index = new_index; new_index = source_lookup_reference.lastIndexOf(stringToStrip, last_index - 1); } while (new_index != -1 && - new_index == last_index - strip_length); + new_index == last_index - strip_length); return source.substring(0, last_index); - } else - { + } else { return source; } } @@ -1579,8 +1441,7 @@ * result. * @since 1.0 */ - public static String replace(String source, String stringToReplace, String replacementString) - { + public static String replace(String source, String stringToReplace, String replacementString) { return replace(source, stringToReplace, replacementString, true); } @@ -1598,32 +1459,26 @@ * result. * @since 1.0 */ - public static String replace(String source, String stringToReplace, String replacementString, boolean matchCase) - { - if (null == source) - { + public static String replace(String source, String stringToReplace, String replacementString, boolean matchCase) { + if (null == source) { return null; } - if (null == stringToReplace) - { + if (null == stringToReplace) { return source; } - if (null == replacementString) - { + if (null == replacementString) { return source; } Iterator<String> string_parts = split(source, stringToReplace, matchCase).iterator(); StringBuilder new_string = new StringBuilder(); - while (string_parts.hasNext()) - { + while (string_parts.hasNext()) { String string_part = string_parts.next(); new_string.append(string_part); - if (string_parts.hasNext()) - { + if (string_parts.hasNext()) { new_string.append(replacementString); } } @@ -1641,16 +1496,13 @@ * concatenation result. * @since 1.0 */ - public static String repeat(String source, int count) - { - if (null == source) - { + public static String repeat(String source, int count) { + if (null == source) { return null; } StringBuilder new_string = new StringBuilder(); - while (count > 0) - { + while (count > 0) { new_string.append(source); count--; } @@ -1667,17 +1519,14 @@ * @return The new <code>String</code> array. * @since 1.0 */ - public static String[] toStringArray(Iterator<String> iterator) - { - if (null == iterator) - { + public static String[] toStringArray(Iterator<String> iterator) { + if (null == iterator) { return new String[0]; } ArrayList<String> strings = new ArrayList<String>(); - while (iterator.hasNext()) - { + while (iterator.hasNext()) { strings.add(iterator.next()); } @@ -1697,17 +1546,14 @@ * <code>String</code> array. * @since 1.0 */ - public static ArrayList<String> toArrayList(String[] stringArray) - { + public static ArrayList<String> toArrayList(String[] stringArray) { ArrayList<String> strings = new ArrayList<String>(); - if (null == stringArray) - { + if (null == stringArray) { return strings; } - for (String element : stringArray) - { + for (String element : stringArray) { strings.add(element); } @@ -1725,26 +1571,20 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(Collection collection, String seperator) - { - if (null == collection) - { + public static String join(Collection collection, String seperator) { + if (null == collection) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (0 == collection.size()) - { + if (0 == collection.size()) { return ""; - } else - { + } else { StringBuilder result = new StringBuilder(); - for (Object element : collection) - { + for (Object element : collection) { result.append(String.valueOf(element)); result.append(seperator); } @@ -1763,8 +1603,7 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(Object[] array, String seperator) - { + public static String join(Object[] array, String seperator) { return join(array, seperator, null, false); } @@ -1778,8 +1617,7 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(Object[] array, String seperator, String delimiter) - { + public static String join(Object[] array, String seperator, String delimiter) { return join(array, seperator, delimiter, false); } @@ -1795,41 +1633,31 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(Object[] array, String seperator, String delimiter, boolean encodeStrings) - { - if (null == array) - { + public static String join(Object[] array, String seperator, String delimiter, boolean encodeStrings) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (null == delimiter) - { + if (null == delimiter) { delimiter = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; String array_value = null; StringBuilder result = new StringBuilder(); - while (current_index < array.length - 1) - { - if (null == array[current_index]) - { + while (current_index < array.length - 1) { + if (null == array[current_index]) { result.append("null"); - } else - { + } else { array_value = String.valueOf(array[current_index]); - if (encodeStrings) - { + if (encodeStrings) { array_value = encodeString(array_value); } result.append(delimiter); @@ -1840,14 +1668,11 @@ current_index++; } - if (null == array[current_index]) - { + if (null == array[current_index]) { result.append("null"); - } else - { + } else { array_value = String.valueOf(array[current_index]); - if (encodeStrings) - { + if (encodeStrings) { array_value = encodeString(array_value); } result.append(delimiter); @@ -1867,27 +1692,21 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(boolean[] array, String seperator) - { - if (null == array) - { + public static String join(boolean[] array, String seperator) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; String result = ""; - while (current_index < array.length - 1) - { + while (current_index < array.length - 1) { result = result + array[current_index] + seperator; current_index++; } @@ -1906,27 +1725,21 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(byte[] array, String seperator) - { - if (null == array) - { + public static String join(byte[] array, String seperator) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; String result = ""; - while (current_index < array.length - 1) - { + while (current_index < array.length - 1) { result = result + array[current_index] + seperator; current_index++; } @@ -1945,27 +1758,21 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(double[] array, String seperator) - { - if (null == array) - { + public static String join(double[] array, String seperator) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; String result = ""; - while (current_index < array.length - 1) - { + while (current_index < array.length - 1) { result = result + array[current_index] + seperator; current_index++; } @@ -1984,27 +1791,21 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(float[] array, String seperator) - { - if (null == array) - { + public static String join(float[] array, String seperator) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; String result = ""; - while (current_index < array.length - 1) - { + while (current_index < array.length - 1) { result = result + array[current_index] + seperator; current_index++; } @@ -2023,27 +1824,21 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(int[] array, String seperator) - { - if (null == array) - { + public static String join(int[] array, String seperator) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; String result = ""; - while (current_index < array.length - 1) - { + while (current_index < array.length - 1) { result = result + array[current_index] + seperator; current_index++; } @@ -2062,27 +1857,21 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(long[] array, String seperator) - { - if (null == array) - { + public static String join(long[] array, String seperator) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; String result = ""; - while (current_index < array.length - 1) - { + while (current_index < array.length - 1) { result = result + array[current_index] + seperator; current_index++; } @@ -2101,27 +1890,21 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(short[] array, String seperator) - { - if (null == array) - { + public static String join(short[] array, String seperator) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; String result = ""; - while (current_index < array.length - 1) - { + while (current_index < array.length - 1) { result = result + array[current_index] + seperator; current_index++; } @@ -2140,8 +1923,7 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(char[] array, String seperator) - { + public static String join(char[] array, String seperator) { return join(array, seperator, null); } @@ -2155,32 +1937,25 @@ * @return A new <code>String</code> with the join result. * @since 1.0 */ - public static String join(char[] array, String seperator, String delimiter) - { - if (null == array) - { + public static String join(char[] array, String seperator, String delimiter) { + if (null == array) { return null; } - if (null == seperator) - { + if (null == seperator) { seperator = ""; } - if (null == delimiter) - { + if (null == delimiter) { delimiter = ""; } - if (0 == array.length) - { + if (0 == array.length) { return ""; - } else - { + } else { int current_index = 0; StringBuilder result = new StringBuilder(); - while (current_index < array.length - 1) - { + while (current_index < array.length - 1) { result.append(delimiter); result.append(array[current_index]); result.append(delimiter); @@ -2206,8 +1981,7 @@ * substring. * @since 1.0 */ - public static int[] indicesOf(String source, String substring) - { + public static int[] indicesOf(String source, String substring) { return indicesOf(source, substring, true); } @@ -2223,21 +1997,17 @@ * substring. * @since 1.0 */ - public static int[] indicesOf(String source, String substring, boolean matchCase) - { + public static int[] indicesOf(String source, String substring, boolean matchCase) { if (null == source || - null == substring) - { + null == substring) { return new int[0]; } String source_lookup_reference = null; - if (!matchCase) - { + if (!matchCase) { source_lookup_reference = source.toLowerCase(); substring = substring.toLowerCase(); - } else - { + } else { source_lookup_reference = source; } @@ -2247,15 +2017,12 @@ int[] indices = new int[count]; int counter = 0; - while (current_index < source.length() - 1) - { + while (current_index < source.length() - 1) { substring_index = source_lookup_reference.indexOf(substring, current_index); - if (-1 == substring_index) - { + if (-1 == substring_index) { break; - } else - { + } else { current_index = substring_index + substring.length(); indices[counter] = substring_index; counter++; @@ -2276,19 +2043,15 @@ * <p><code>null</code> if no match could be found. * @since 1.0 */ - public static Matcher getMatchingRegexp(String value, Collection<Pattern> regexps) - { + public static Matcher getMatchingRegexp(String value, Collection<Pattern> regexps) { if (value != null && - value.length() > 0 && - regexps != null && - regexps.size() > 0) - { + value.length() > 0 && + regexps != null && + regexps.size() > 0) { Matcher matcher = null; - for (Pattern regexp : regexps) - { + for (Pattern regexp : regexps) { matcher = regexp.matcher(value); - if (matcher.matches()) - { + if (matcher.matches()) { return matcher; } } @@ -2309,18 +2072,14 @@ * <p><code>null</code> if no match could be found. * @since 1.0 */ - public static Matcher getRegexpMatch(Collection<String> values, Pattern regexp) - { + public static Matcher getRegexpMatch(Collection<String> values, Pattern regexp) { if (values != null && - values.size() > 0 && - regexp != null) - { + values.size() > 0 && + regexp != null) { Matcher matcher = null; - for (String value : values) - { + for (String value : values) { matcher = regexp.matcher(value); - if (matcher.matches()) - { + if (matcher.matches()) { return matcher; } } @@ -2340,17 +2099,14 @@ * <p><code>false</code> otherwise. * @since 1.0 */ - public static boolean filter(String name, Pattern included, Pattern excluded) - { + public static boolean filter(String name, Pattern included, Pattern excluded) { Pattern[] included_array = null; - if (included != null) - { + if (included != null) { included_array = new Pattern[]{included}; } Pattern[] excluded_array = null; - if (excluded != null) - { + if (excluded != null) { excluded_array = new Pattern[]{excluded}; } @@ -2368,26 +2124,20 @@ * <p><code>false</code> otherwise. * @since 1.0 */ - public static boolean filter(String name, Pattern[] included, Pattern[] excluded) - { - if (null == name) - { + public static boolean filter(String name, Pattern[] included, Pattern[] excluded) { + if (null == name) { return false; } boolean accepted = false; // retain only the includes - if (null == included) - { + if (null == included) { accepted = true; - } else - { - for (Pattern pattern : included) - { + } else { + for (Pattern pattern : included) { if (pattern != null && - pattern.matcher(name).matches()) - { + pattern.matcher(name).matches()) { accepted = true; break; } @@ -2396,13 +2146,10 @@ // remove the excludes if (accepted && - excluded != null) - { - for (Pattern pattern : excluded) - { + excluded != null) { + for (Pattern pattern : excluded) { if (pattern != null && - pattern.matcher(name).matches()) - { + pattern.matcher(name).matches()) { accepted = false; break; } @@ -2419,16 +2166,13 @@ * @return The capitalized <code>String</code>. * @since 1.0 */ - public static String capitalize(String source) - { - if (source == null || source.length() == 0) - { + public static String capitalize(String source) { + if (source == null || source.length() == 0) { return source; } if (source.length() > 1 && - Character.isUpperCase(source.charAt(0))) - { + Character.isUpperCase(source.charAt(0))) { return source; } @@ -2444,16 +2188,13 @@ * @return The uncapitalized <code>String</code>. * @since 1.5 */ - public static String uncapitalize(String source) - { - if (source == null || source.length() == 0) - { + public static String uncapitalize(String source) { + if (source == null || source.length() == 0) { return source; } if (source.length() > 1 && - Character.isLowerCase(source.charAt(0))) - { + Character.isLowerCase(source.charAt(0))) { return source; } @@ -2462,86 +2203,70 @@ return new String(chars); } - private static String convertUrl(String source, Pattern pattern, boolean shorten, boolean sanitize, boolean no_follow) - { + private static String convertUrl(String source, Pattern pattern, boolean shorten, boolean sanitize, boolean no_follow) { int max_length = 1024; String result = source; Matcher url_matcher = pattern.matcher(source); boolean found = url_matcher.find(); - if (found) - { + if (found) { String visual_url = null; String actual_url = null; int last = 0; StringBuilder sb = new StringBuilder(); - do - { + do { actual_url = url_matcher.group(1); - if (url_matcher.groupCount() > 1) - { + if (url_matcher.groupCount() > 1) { visual_url = url_matcher.group(2); - } else - { + } else { visual_url = actual_url; } - if (sanitize) - { + if (sanitize) { // defang javascript actual_url = StringUtils.replace(actual_url, "javascript:", ""); // fill in http:// for URLs that don't begin with / if ((actual_url.indexOf("://") == -1) && - (!actual_url.startsWith("/"))) - { + (!actual_url.startsWith("/"))) { actual_url = "http://" + actual_url; } } - if (pattern.equals(BBCODE_BAREURL)) - { + if (pattern.equals(BBCODE_BAREURL)) { sb.append(source.substring(last, url_matcher.start(1))); - } else - { + } else { sb.append(source.substring(last, url_matcher.start(0))); } sb.append("<a href=\""); sb.append(actual_url); sb.append("\""); if (actual_url.startsWith("http://") || - actual_url.startsWith("https://")) - { + actual_url.startsWith("https://")) { sb.append(" target=\"_blank\""); } - if (no_follow) - { + if (no_follow) { sb.append(" rel=\"nofollow\""); } sb.append(">"); - if (visual_url.length() <= max_length || !shorten) - { + if (visual_url.length() <= max_length || !shorten) { sb.append(visual_url); - } else - { + } else { String ellipsis = "..."; int query_index = visual_url.indexOf("?"); // hack query string off // keep '?' - if (query_index != -1) - { + if (query_index != -1) { visual_url = visual_url.substring(0, query_index + 1) + ellipsis; } - if (visual_url.length() >= max_length) - { + if (visual_url.length() >= max_length) { int last_slash = visual_url.lastIndexOf("/"); int start_slash = visual_url.indexOf("/", visual_url.indexOf("://") + 3); - if (last_slash != start_slash) - { + if (last_slash != start_slash) { visual_url = visual_url.substring(0, start_slash + 1) + ellipsis + visual_url.substring(last_slash); } } @@ -2550,11 +2275,9 @@ } sb.append("</a>"); - if (pattern.equals(BBCODE_BAREURL)) - { + if (pattern.equals(BBCODE_BAREURL)) { last = url_matcher.end(1); - } else - { + } else { last = url_matcher.end(0); } @@ -2569,8 +2292,7 @@ return result; } - private static String parseBBCode(String source, boolean shorten, boolean sanitize, boolean convert_bare, boolean no_follow) - { + private static String parseBBCode(String source, boolean shorten, boolean sanitize, boolean convert_bare, boolean no_follow) { String result = source; result = StringUtils.replace(result, "[b]", "<b>", false); @@ -2587,46 +2309,38 @@ StringBuilder buffer = new StringBuilder(); int startIndex; int endIndex; - while (-1 != (startIndex = resultLowerCopy.indexOf("[*]"))) - { + while (-1 != (startIndex = resultLowerCopy.indexOf("[*]"))) { int begin = resultLowerCopy.indexOf("[list]", startIndex + 3); int end = resultLowerCopy.indexOf("[/list]", startIndex + 3); int next = resultLowerCopy.indexOf("[*]", startIndex + 3); // 3 == sizeof [*] - if (begin == -1) - { + if (begin == -1) { begin = Integer.MAX_VALUE; } - if (end == -1) - { + if (end == -1) { end = Integer.MAX_VALUE; } - if (next == -1) - { + if (next == -1) { next = Integer.MAX_VALUE; } - if (next < begin && next < end) - { + if (next < begin && next < end) { endIndex = next; - } else if (begin < next && begin < end) - { + } else if (begin < next && begin < end) { endIndex = begin; - } else if (end < next && end < begin) - { + } else if (end < next && end < begin) { endIndex = end; - } else - { + } else { endIndex = resultLowerCopy.length(); } buffer - .append(resultCopy.substring(0, startIndex)) - .append("<li>") - .append(resultCopy.substring(startIndex + 3, endIndex)) // 3 == sizeof [*] - .append("</li>"); + .append(resultCopy.substring(0, startIndex)) + .append("<li>") + .append(resultCopy.substring(startIndex + 3, endIndex)) // 3 == sizeof [*] + .append("</li>"); resultCopy = resultCopy.substring(endIndex); resultLowerCopy = resultLowerCopy.substring(endIndex); @@ -2649,8 +2363,7 @@ result = convertUrl(result, BBCODE_URL_SHORT, shorten, sanitize, no_follow); result = convertUrl(result, BBCODE_URL_LONG, shorten, sanitize, no_follow); - if (convert_bare) - { + if (convert_bare) { result = convertUrl(result, BBCODE_BAREURL, shorten, sanitize, no_follow); } @@ -2681,20 +2394,17 @@ * @return The corresponding <code>boolean</code> value. * @since 1.0 */ - public static boolean convertToBoolean(String value) - { - if (null == value) - { + public static boolean convertToBoolean(String value) { + if (null == value) { return false; } if (value.equals("1") || - value.equalsIgnoreCase("t") || - value.equalsIgnoreCase("true") || - value.equalsIgnoreCase("y") || - value.equalsIgnoreCase("yes") || - value.equalsIgnoreCase("on")) - { + value.equalsIgnoreCase("t") || + value.equalsIgnoreCase("true") || + value.equalsIgnoreCase("y") || + value.equalsIgnoreCase("yes") || + value.equalsIgnoreCase("on")) { return true; } @@ -2711,18 +2421,15 @@ * replaced tabs. * @since 1.0 */ - public static String convertTabsToSpaces(String line, int tabWidth) - { + public static String convertTabsToSpaces(String line, int tabWidth) { StringBuilder result = new StringBuilder(); int tab_index = -1; int last_tab_index = 0; int added_chars = 0; int tab_size; - while ((tab_index = line.indexOf("\t", last_tab_index)) != -1) - { + while ((tab_index = line.indexOf("\t", last_tab_index)) != -1) { tab_size = tabWidth - ((tab_index + added_chars) % tabWidth); - if (0 == tab_size) - { + if (0 == tab_size) { tab_size = tabWidth; } added_chars += tab_size - 1; @@ -2730,11 +2437,9 @@ result.append(StringUtils.repeat(" ", tab_size)); last_tab_index = tab_index + 1; } - if (0 == last_tab_index) - { + if (0 == last_tab_index) { return line; - } else - { + } else { result.append(line.substring(last_tab_index)); } @@ -2749,10 +2454,8 @@ * @return The trimmed <code>String</code>. * @since 1.0 */ - public static String trim(String source) - { - if (source == null || source.length() == 0) - { + public static String trim(String source) { + if (source == null || source.length() == 0) { return source; } @@ -2772,23 +2475,18 @@ * @param width the maximum length of any one line. * @return a new String with reformatted as needed. */ - public static String wordWrap(String input, int width, Locale locale) - { + public static String wordWrap(String input, int width, Locale locale) { // handle invalid input - if (input == null) - { + if (input == null) { return ""; - } else if (width < 5) - { + } else if (width < 5) { return input; - } else if (width >= input.length()) - { + } else if (width >= input.length()) { return input; } // default locale - if (locale == null) - { + if (locale == null) { locale = Locale.US; } @@ -2799,87 +2497,73 @@ String line; // go over the input string and jump from line to line - while (current_index <= input.length()) - { + while (current_index <= input.length()) { // look for the next linebreak delimiter_index = input.indexOf(seperator, current_index); // get the line that corresponds to it - if (-1 == delimiter_index) - { - line = new String(input.substring(current_index, input.length())); - current_index = input.length() + 1; - } - else - { - line = new String(input.substring(current_index, delimiter_index)); - current_index = delimiter_index + seperator.length(); - } + if (-1 == delimiter_index) { + line = new String(input.substring(current_index, input.length())); + current_index = input.length() + 1; + } else { + line = new String(input.substring(current_index, delimiter_index)); + current_index = delimiter_index + seperator.length(); + } - // handle the wrapping of the line - BreakIterator breaks = BreakIterator.getLineInstance(locale); - breaks.setText(line); + // handle the wrapping of the line + BreakIterator breaks = BreakIterator.getLineInstance(locale); + breaks.setText(line); - int line_start = 0; - int start = breaks.first(); - int end = breaks.next(); - while (end != BreakIterator.DONE) - { - // check if the width has been exceeded - if (end - 1 - line_start >= width) - { - boolean break_line = true; + int line_start = 0; + int start = breaks.first(); + int end = breaks.next(); + while (end != BreakIterator.DONE) { + // check if the width has been exceeded + if (end - 1 - line_start >= width) { + boolean break_line = true; - // first check if the last characters were spaces, - // if they were and by removing them the width is not - // exceeded, just continue - if (Character.isWhitespace(line.charAt(end - 1))) - { - for (int j = end - 1; j >= 0; j--) - { - if (!Character.isWhitespace(line.charAt(j))) - { - if (j - line_start < width) - { - break_line = false; - } + // first check if the last characters were spaces, + // if they were and by removing them the width is not + // exceeded, just continue + if (Character.isWhitespace(line.charAt(end - 1))) { + for (int j = end - 1; j >= 0; j--) { + if (!Character.isWhitespace(line.charAt(j))) { + if (j - line_start < width) { + break_line = false; + } - break; - } - } - } + break; + } + } + } - if (break_line) - { - String line_breaked = line.substring(line_start, start); - // this can happen with trailing whitespace - if (line_breaked.length() > width) - { - line_breaked = line_breaked.substring(0, width); - } - buffer.append(line_breaked); + if (break_line) { + String line_breaked = line.substring(line_start, start); + // this can happen with trailing whitespace + if (line_breaked.length() > width) { + line_breaked = line_breaked.substring(0, width); + } + buffer.append(line_breaked); - buffer.append("\n"); + buffer.append("\n"); - line_start = start; - } - } + line_start = start; + } + } - start = end; - end = breaks.next(); - } + start = end; + end = breaks.next(); + } - if (line_start < line.length()) - { - buffer.append(line.substring(line_start)); - } + if (line_start < line.length()) { + buffer.append(line.substring(line_start)); + } - if (delimiter_index != -1) - { - buffer.append("\n"); - } - } + if (delimiter_index != -1) { + buffer.append("\n"); + } + } - return buffer.toString(); + return buffer.toString(); } } -- Gitblit v0.0.0-SNAPSHOT