view artifact-database/src/main/java/de/intevation/artifactdatabase/StringUtils.java @ 261:f3d970a832ff

Bugfix: the document that is used to trigger the OUT operation of a collection will now contain the name of the output mode and its concrete subtype. artifacts/trunk@1933 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Tue, 17 May 2011 09:57:10 +0000
parents 23ec48ce717e
children
line wrap: on
line source
/*
 * Copyright (c) 2010 by Intevation GmbH
 *
 * This program is free software under the LGPL (>=v2.1)
 * Read the file LGPL.txt coming with the software for details
 * or visit http://www.gnu.org/licenses/ if it does not exist.
 */

package de.intevation.artifactdatabase;

import java.io.UnsupportedEncodingException;

import java.util.UUID;

import org.apache.commons.codec.DecoderException;

import org.apache.commons.codec.binary.Hex;

import org.apache.log4j.Logger;

/**
 * Commonly used string functions.
 *
 * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
 */
public final class StringUtils
{
    private static Logger logger = Logger.getLogger(StringUtils.class);

    /**
     * Generated a random UUIDv4 in form of a string.
     * @return the UUID
     */
    public static final String newUUID() {
        return UUID.randomUUID().toString();
    }

    /**
     * Checks if a given string is a valid UUID.
     * @param uuid The string to test.
     * @return true if the string is a valid UUID else false.
     */
    public static final boolean checkUUID(String uuid) {
        try {
            UUID.fromString(uuid);
        }
        catch (IllegalArgumentException iae) {
            logger.warn(iae.getLocalizedMessage());
            return false;
        }
        return true;
    }

    /**
     * Returns the UTF-8 byte array representation of a given string.
     * @param s The string to be transformed.
     * @return The byte array representation.
     */
    public static final byte [] getUTF8Bytes(String s) {
        try {
            return s.getBytes("UTF-8");
        }
        catch (UnsupportedEncodingException usee) {
            logger.error(usee.getLocalizedMessage(), usee);
            return s.getBytes();
        }
    }

    /**
     * Tries to convert a Base64 encoded string into the
     * corresponing byte array.
     * @param s The Base64 encoded string
     * @return The byte array representation or null if
     * an decoding error occurs.
     */
    public static final byte [] decodeHex(String s) {
        try {
            return Hex.decodeHex(s.toCharArray());
        }
        catch (DecoderException de) {
            return null;
        }
    }

    public static final String repeat(String s, int count, String sep) {
        if (count <= 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder(s);
        for (--count; count > 0; --count) {
            sb.append(sep).append(s);
        }
        return sb.toString();
    }

    public static final String repeat(char c, int count, char sep) {
        if (count <= 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder(2*count-1).append(c);
        for (--count; count > 0; --count) {
            sb.append(sep).append(c);
        }
        return sb.toString();
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org