br.com.nordestefomento.jrimum.utilix.StringUtil.java Source code

Java tutorial

Introduction

Here is the source code for br.com.nordestefomento.jrimum.utilix.StringUtil.java

Source

/*
 * Copyright 2008 JRimum Project
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
 * applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
 * OF ANY KIND, either express or implied. See the License for the specific
 * language governing permissions and limitations under the License.
 * 
 * Created at: 30/03/2008 - 18:18:19
 * 
 * ================================================================================
 * 
 * Direitos autorais 2008 JRimum Project
 * 
 * Licenciado sob a Licena Apache, Verso 2.0 ("LICENA"); voc no pode usar
 * esse arquivo exceto em conformidade com a esta LICENA. Voc pode obter uma
 * cpia desta LICENA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
 * haja exigncia legal ou acordo por escrito, a distribuio de software sob
 * esta LICENA se dar COMO EST??, SEM GARANTIAS OU CONDIES DE QUALQUER
 * TIPO, sejam expressas ou tcitas. Veja a LICENA para a redao especfica a
 * reger permisses e limitaes sob esta LICENA.
 * 
 * Criado em: 30/03/2008 - 18:18:19
 * 
 */

package br.com.nordestefomento.jrimum.utilix;

import static br.com.nordestefomento.jrimum.utilix.ObjectUtil.isNotNull;

import java.io.Serializable;

import org.apache.commons.lang.StringUtils;

/**
 * <p>
 * Esta classe tem a responsabilidade de prover servios utilitrios
 * relacionados a manipulao de <code>Strings</code>
 * </p>
 * 
 * 
 * @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L</a>
 * @author Misael Barreto
 * @author Rmulo Augusto
 * @author <a href="http://www.nordeste-fomento.com.br">Nordeste Fomento
 *         Mercantil</a>
 * 
 * @since 0.2
 * 
 * @version 0.2
 */
public class StringUtil implements Serializable {

    public static final String WHITE_SPACE = " ";

    /**
     * 
     */
    private static final long serialVersionUID = 7425529940068032055L;

    /**
     * <p>
     * Construtor privado que previne a instanciao da classe at por
     * reflection
     * </p>
     * 
     * @since 0.2
     */
    private StringUtil() {
        throw new AssertionError();
    }

    /**
     * <p>
     * Mtodo privado para fins de reutilizao de cdigo.
     * </p>
     * <p>
     * Verifica se a <code>String</code> passada por parmetro no  <code>null</code>, 
     * no  vazia (<code>StringUtils.EMPTY</code>) e no possui apenas espaos em branco. 
     * </p>
     * <p>
     * Lana <code>NullPointerException</code>, com a mensagem definida em <code>messageNullPointer</code> 
     * (segundo parmetro String), caso o valor passado seja <code>null</code>
     * </p>
     * <p>
     * Lana <code>IllegalArgumentException</code>, com a mensagem definida em <code>messageIllegalArgument</code> 
     * (terceiro parmetro String), caso o valor passado seja vazio ou contenha apenas espaos em branco.
     * </p>
     * 
     * @param value - String analisada
     * 
     * @throws NullPointerException - Caso a string seja <code>null</code>.
     * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaos em branco.
     * 
     * @since 0.2
     */
    private static void checkNotBlank(String value, String messageNullPointer, String messageIllegalArgument) {

        ObjectUtil.checkNotNull(value, messageNullPointer);

        if (StringUtils.isBlank(value)) {
            throw new IllegalArgumentException(messageIllegalArgument);
        }
    }

    /**
     * <p>
     * Elimina simbolos como: <pre>><,;.:!*&%+-_<>[]\/</pre>
     * </p>
     * 
     * @param str
     *            String com os smbolos a serem removidos.
     * @return String sem smbolos.
     * @since 0.2
     */
    public static String eliminateSymbols(final String str) {

        String modifiedStr = str;

        if (isNotNull(modifiedStr)) {

            modifiedStr = StringUtils.replace(str, "-", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "_", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "=", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "+", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "%", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "*", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "@", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "#", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "&", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, ":", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, ".", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, ";", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, ",", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "!", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "?", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "(", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, ")", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "{", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "}", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "[", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "]", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "/", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "\\", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, ">", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "<", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "\"", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "'", StringUtils.EMPTY);
            modifiedStr = StringUtils.replace(str, "`", StringUtils.EMPTY);
        }

        return modifiedStr;
    }

    /**
     * <p>
     * Remove os zeros iniciais de uma <code>String</code>, seja ela numrica ou
     * no.
     * </p>
     * <p>
     * <code>removeStartWithZeros("00000") => 0</code><br />
     * <code>removeStartWithZeros("00023") => 23</code><br />
     * <code>removeStartWithZeros("02003") => 2003</code>
     * <p>
     * 
     * @param str
     * @return a string sem zeros inicias ou um nico zero.
     * 
     * @since 0.2
     */

    public static String removeStartWithZeros(final String str) {

        String withoutZeros = StringUtils.EMPTY;
        final String zero = "0";

        if (isNotNull(str)) {

            if (StringUtils.startsWith(str, zero)) {

                withoutZeros = StringUtils.removeStart(str, zero);

                while (StringUtils.startsWith(withoutZeros, zero)) {
                    withoutZeros = StringUtils.removeStart(withoutZeros, zero);
                }

                if (withoutZeros.trim().length() == 0) {
                    withoutZeros = zero;
                }

            } else {
                withoutZeros = str;
            }
        }

        return withoutZeros;
    }

    /**
     * <p>
     * Remove a acentuao do texto, que inclui os acentos:
     * <ul>
     * <li>Agudo. ex.: </li>
     * <li>Grave. ex.: </li>
     * <li>Til. ex.: </li>
     * <li>Trema. ex.: </li>
     * <li>Circunflexo. ex.: </li>
     * </ul>
     * e o Cedilha ().
     * </p>
     * <p>
     * Os acentos so removidos tanto para letras minsculas como para letras
     * maisculas.
     * </p>
     * 
     * @param value
     *            String com os caracteres a serem removidos.
     * @return String sem acentuao.
     * @since 0.2
     */
    public static String eliminateAccent(final String value) {

        String modifiedValue = value;

        // Para  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E7', 'c');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C7', 'C');

        // Para , , ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E0', 'a');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E1', 'a');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E2', 'a');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E3', 'a');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E4', 'a');

        // Para , ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E8', 'e');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00E9', 'e');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EA', 'e');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EB', 'e');

        // Para , ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EC', 'i');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00ED', 'i');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EE', 'i');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00EF', 'i');

        // Para , , ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F2', 'o');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F3', 'o');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F4', 'o');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F5', 'o');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F6', 'o');

        // Para , ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00F9', 'u');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FA', 'u');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FB', 'u');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00FC', 'u');

        // Para , ?, ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C0', 'A');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C1', 'A');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C2', 'A');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C3', 'A');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C4', 'A');

        // Para , ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C8', 'E');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00C9', 'E');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CA', 'E');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CB', 'E');

        // Para , ?,  e ?
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CC', 'I');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CD', 'I');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CE', 'I');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00CF', 'I');

        // Para , , ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D2', 'O');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D3', 'O');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D4', 'O');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D5', 'O');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D6', 'O');

        // Para , ,  e 
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00D9', 'U');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DA', 'U');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DB', 'U');
        modifiedValue = StringUtils.replaceChars(modifiedValue, '\u00DC', 'U');

        return modifiedValue;
    }

    /**
     * <p>
     * Verifica se a <code>String</code> passada por parmetro no  <code>null</code>, 
     * no  vazia (<code>StringUtils.EMPTY</code>) e no possui apenas espaos em branco. 
     * </p>
     * <p>
     * Lana exceo, com a mensagem passada por parmetro (segundo parmetro String), 
     * caso no preencha estes requisitos.
     * </p>
     * 
     * @param value - String analisada
     * 
     * @throws NullPointerException - Caso a string seja <code>null</code>.
     * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaos em branco.
     * 
     * @since 0.2
     */
    public static void checkNotBlank(String value, String message) {
        checkNotBlank(value, message, message);
    }

    /**
     * <p>
     * Verifica se a <code>String</code> passada por parmetro no  <code>null</code>, 
     * no  vazia (<code>StringUtils.EMPTY</code>) e no possui apenas espaos em branco. 
     * Lana exceo caso no preencha estes requisitos.
     * </p>
     * 
     * @param value - String analisada
     * 
     * @throws NullPointerException - Caso a string seja <code>null</code>.
     * @thows IllegalArgumentException - Caso a string seja vazia ou contenha apenas espaos em branco.
     * 
     * @since 0.2
     */
    public static void checkNotBlank(String value) {
        checkNotBlank(value, "String nula", "Valor invlido. String vazia ou contendo apenas espaos em brancos");
    }
}