sascha@301: /* sascha@301: * Copyright (c) 2010 by Intevation GmbH sascha@301: * sascha@301: * This program is free software under the LGPL (>=v2.1) sascha@301: * Read the file LGPL.txt coming with the software for details sascha@301: * or visit http://www.gnu.org/licenses/ if it does not exist. sascha@301: */ sascha@301: teichmann@475: package org.dive4elements.artifacts.common.utils; sascha@301: sascha@301: import java.io.UnsupportedEncodingException; sascha@301: sascha@301: import java.util.UUID; sascha@301: sascha@301: import org.apache.commons.codec.DecoderException; sascha@301: sascha@301: import org.apache.commons.codec.binary.Hex; sascha@301: sascha@301: import org.apache.log4j.Logger; sascha@301: sascha@301: /** sascha@301: * Commonly used string functions. sascha@301: * sascha@301: * @author Sascha L. Teichmann sascha@301: */ sascha@301: public final class StringUtils sascha@301: { sascha@301: private static Logger logger = Logger.getLogger(StringUtils.class); sascha@301: sascha@301: /** sascha@301: * Generated a random UUIDv4 in form of a string. sascha@301: * @return the UUID sascha@301: */ sascha@301: public static final String newUUID() { sascha@301: return UUID.randomUUID().toString(); sascha@301: } sascha@301: sascha@301: /** sascha@301: * Checks if a given string is a valid UUID. sascha@301: * @param uuid The string to test. sascha@301: * @return true if the string is a valid UUID else false. sascha@301: */ sascha@301: public static final boolean checkUUID(String uuid) { sascha@301: try { sascha@301: UUID.fromString(uuid); sascha@301: } sascha@301: catch (IllegalArgumentException iae) { sascha@301: logger.warn(iae.getLocalizedMessage()); sascha@301: return false; sascha@301: } sascha@301: return true; sascha@301: } sascha@301: sascha@301: /** sascha@301: * Returns the UTF-8 byte array representation of a given string. sascha@301: * @param s The string to be transformed. sascha@301: * @return The byte array representation. sascha@301: */ sascha@301: public static final byte [] getUTF8Bytes(String s) { sascha@301: try { sascha@301: return s.getBytes("UTF-8"); sascha@301: } sascha@301: catch (UnsupportedEncodingException usee) { sascha@301: logger.error(usee.getLocalizedMessage(), usee); sascha@301: return s.getBytes(); sascha@301: } sascha@301: } sascha@301: sascha@301: /** sascha@301: * Tries to convert a Base64 encoded string into the sascha@301: * corresponing byte array. sascha@301: * @param s The Base64 encoded string sascha@301: * @return The byte array representation or null if sascha@301: * an decoding error occurs. sascha@301: */ sascha@301: public static final byte [] decodeHex(String s) { sascha@301: try { sascha@301: return Hex.decodeHex(s.toCharArray()); sascha@301: } sascha@301: catch (DecoderException de) { sascha@301: return null; sascha@301: } sascha@301: } sascha@301: sascha@301: public static final String repeat(String s, int count, String sep) { sascha@301: if (count <= 0) { sascha@301: return ""; sascha@301: } sascha@301: StringBuilder sb = new StringBuilder(s); sascha@301: for (--count; count > 0; --count) { sascha@301: sb.append(sep).append(s); sascha@301: } sascha@301: return sb.toString(); sascha@301: } sascha@301: sascha@301: public static final String repeat(char c, int count, char sep) { sascha@301: if (count <= 0) { sascha@301: return ""; sascha@301: } sascha@301: StringBuilder sb = new StringBuilder(2*count-1).append(c); sascha@301: for (--count; count > 0; --count) { sascha@301: sb.append(sep).append(c); sascha@301: } sascha@301: return sb.toString(); sascha@301: } sascha@342: sascha@342: public static final String [] toUpperCase(String [] s) { sascha@342: if (s == null) { sascha@342: return null; sascha@342: } sascha@342: String [] d = new String[s.length]; sascha@342: for (int i = 0; i < s.length; ++i) { sascha@342: if (s[i] != null) { sascha@342: d[i] = s[i].toUpperCase(); sascha@342: } sascha@342: } sascha@342: return d; sascha@394: } sascha@376: sascha@376: public static String join(String sep, String [] strings) { sascha@376: StringBuilder sb = new StringBuilder(); sascha@376: for (int i = 0; i < strings.length; ++i) { sascha@376: if (i > 0) sb.append(sep); sascha@376: sb.append(strings[i]); sascha@376: } sascha@376: return sb.toString(); sascha@376: } sascha@397: sascha@401: public static final String [] join(String [] a, String [] b) { sascha@401: if (a == null && b == null) return null; sascha@401: if (a == null) return b; sascha@401: if (b == null) return a; sascha@401: String [] dst = new String[a.length + b.length]; sascha@401: System.arraycopy(a, 0, dst, 0, a.length); sascha@401: System.arraycopy(b, 0, dst, a.length, b.length); sascha@401: return dst; sascha@401: } sascha@401: teichmann@498: public static final int indexOf(String needle, String [] haystack) { teichmann@498: for (int i = 0; i < haystack.length; ++i) { teichmann@498: if (needle.equals(haystack[i])) { teichmann@498: return i; sascha@397: } sascha@397: } teichmann@498: return -1; teichmann@498: } teichmann@498: teichmann@498: public static final boolean contains(String needle, String [] haystack) { teichmann@498: return indexOf(needle, haystack) != -1; sascha@397: } sascha@301: } sascha@301: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :