org.jrimum.utilix.Objects.java Source code

Java tutorial

Introduction

Here is the source code for org.jrimum.utilix.Objects.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:02:40
 * 
 * ================================================================================
 * 
 * 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:02:40
 * 
 */

package org.jrimum.utilix;

import org.apache.commons.lang.builder.ToStringBuilder;

/**
 * <p>
 * Classe utilitria para validaes de objetos em geral, como verificaes de
 * objetos nulos, com e sem excees.
 * </p>
 * 
 * <p>
 * Fornece mtodos booleanos e mtodos que verificam se o valor do objeto est
 * de acordo com o desejado e, caso no estejam, lanam exceo.
 * </p>
 * 
 * @author <a href="http://gilmatryx.googlepages.com/">Gilmar P.S.L.</a>
 * @author <a href="mailto:romulomail@gmail.com">Rmulo Augusto</a>
 * 
 * @since 0.2
 * 
 * @version 0.2
 */
public final class Objects {

    /**
     * Utility class pattern: classe no instancivel
     * 
     * @throws IllegalStateException
     *             Caso haja alguma tentativa de utilizao deste construtor.
     */
    private Objects() {

        checkState(false, "Instanciao no permitida!");
    }

    /**
     * <p>
     * Verifica se o objeto passado por parmetro  {@code null}.
     * </p>
     * 
     * @param object
     *            - Objeto analisado
     * 
     * @return (object == null)
     * 
     * @since 0.2
     */
    public static boolean isNull(Object object) {

        return (object == null);
    }

    /**
     * <p>
     * Verifica se o objeto passado por parmetro <strong>no</strong> 
     * {@code null}.
     * </p>
     * <p>
     *  o mesmo que usar o mtodo {@code isNull} da forma
     * {@code !isNull(obj)}, porm de forma mais legvel.
     * </p>
     * 
     * @param object
     *            - Objeto analisado
     * 
     * @return (object != null)
     * 
     * @see #isNull(Object)
     * 
     * @since 0.2
     */
    public static boolean isNotNull(Object object) {

        return (object != null);
    }

    /**
     * <p>
     * Verifica se existe uma referncia ao objeto dado.
     * </p>
     * 
     * @param object
     *            - Objeto analisado
     * 
     * @return (object != null);
     * 
     * @see #isNotNull(Object)
     * 
     * @since 0.2
     */
    public static boolean exists(Object object) {

        return (object != null);
    }

    /**
     * Verifica a verdade de uma expresso e lana uma
     * {@code IllegalArgumentException}, caso a expresso seja
     * <strong>false</strong>.
     * 
     * @param expression
     *            - Qualquer expresso booleana
     * @throws IllegalArgumentException
     *             se {@code expression == false}
     * 
     * @since 0.2
     */
    public static void checkArgument(boolean expression) {

        if (!expression) {
            throw new IllegalArgumentException();
        }
    }

    /**
     * Verifica a verdade de uma expresso e lana uma
     * {@code IllegalArgumentException}, com a mensagem iformada, caso a
     * expresso seja <strong>false</strong>.
     * 
     * @param expression
     *            - Qualquer expresso booleana
     * @param message
     *            - Mensagem utilizada na exceo
     * @throws IllegalArgumentException
     *             se {@code expression == false}
     * 
     * @since 0.2
     */
    public static void checkArgument(boolean expression, String message) {

        if (!expression) {
            throw new IllegalArgumentException(message);
        }
    }

    /**
     * Verifica a verdade de uma expresso e lana uma
     * {@code IllegalStateException}, caso a expresso seja
     * <strong>false</strong>.
     * 
     * @param expression
     *            - Qualquer expresso booleana
     * @throws IllegalStateException
     *             se {@code expression == false}
     * 
     * @since 0.2
     */
    public static void checkState(boolean expression) {

        if (!expression) {
            throw new IllegalStateException();
        }
    }

    /**
     * Verifica a verdade de uma expresso e lana uma
     * {@code IllegalStateException}, com a mensagem iformada, caso a
     * expresso seja <strong>false</strong>.
     * 
     * @param expression
     *            - Qualquer expresso booleana
     * @param message
     *            - Mensagem utilizada na exceo
     * @throws IllegalStateException
     *             se {@code expression == false}
     * 
     * @since 0.2
     */
    public static void checkState(boolean expression, String message) {

        if (!expression) {
            throw new IllegalStateException(message);
        }
    }

    /**
     * <p>
     * Verifica se o objeto  nulo e lana {@code IllegalArgumentException}
     * , com a mensagem informada, caso <strong>no</strong> seja.
     * </p>
     * 
     * @thows IllegalArgumentException - Caso o objeto <strong>no</strong> seja
     *        {@code null}.
     * 
     * @see #isNull(Object)
     * @see #isNotNull(Object)
     * 
     * @since 0.2
     * 
     * @param object
     *            - Objeto analisado
     * @param message
     *            - Mensagem utilizada na exceo
     */
    public static void checkNull(Object object, String message) {

        if (object != null) {

            throw new IllegalArgumentException(message);
        }
    }

    /**
     * <p>
     * Verifica se o objeto  nulo e lana {@code IllegalArgumentException}
     * caso <strong>no</strong> seja.
     * </p>
     * 
     * @param object
     *            - Objeto analisado
     * 
     * @thows IllegalArgumentException - Caso o objeto <strong>no</strong> seja
     *        {@code null}.
     * 
     * @see #checkNull(Object, String)
     * @see #isNull(Object)
     * @see #isNotNull(Object)
     * 
     * @since 0.2
     */
    public static void checkNull(Object object) {

        checkNull(object, new StringBuilder("Objeto no nulo! Valor [ ").append(object).append(" ].").toString());
    }

    /**
     * <p>
     * Verifica se o objeto <strong>no</strong>  nulo e lana
     * {@code IllegalArgumentException}, com a mensagem informada, caso
     * seja.
     * </p>
     * 
     * @param object
     *            - Objeto analisado
     * @param message
     *            - Mensagem utilizada na exceo
     * 
     * @thows IllegalArgumentException - Caso o objeto seja {@code null}.
     * 
     * @see #isNull(Object)
     * @see #isNotNull(Object)
     * 
     * @since 0.2
     */
    public static void checkNotNull(Object object, String message) {

        if (object == null) {

            throw new IllegalArgumentException(message);
        }
    }

    /**
     * <p>
     * Verifica se o objeto <strong>no</strong>  nulo e lana
     * {@code IllegalArgumentException} caso seja.
     * </p>
     * 
     * @param object
     *            - Objeto analisado
     * 
     * @thows IllegalArgumentException - Caso o objeto seja {@code null}.
     * 
     * @see #checkNotNull(Object, String)
     * @see #isNull(Object)
     * @see #isNotNull(Object)
     * 
     * @since 0.2
     */
    public static void checkNotNull(Object object) {

        checkNotNull(object, "Objeto nulo!");
    }

    /**
     * <p>
     * Retorna um dado valor padro quando o determinado objeto for nulo.
     * </p>
     * 
     * <pre>
     * whenNull(null, null)      = null
     * whenNull(null, "")        = ""
     * whenNull(null, "ex")      = "ex"
     * whenNull("abc", *)        = "abc"
     * whenNull(Boolean.TRUE, *) = Boolean.TRUE
     * </pre>
     * 
     * @param <T>
     *            tipo do objeto pretendido
     * @param object
     *            - O {@code objeto} a testar, pode ser {@code null}
     * @param defaultValue
     *            - O valor padro retornado, pode ser {@code null}
     * @return {@code object} - Se no nulo, caso contrrio
     *         {@code defaultValue}
     * 
     * @since 0.2
     */
    @SuppressWarnings("unchecked")
    public static <T> T whenNull(Object object, Object defaultValue) {

        return (T) (object != null ? object : defaultValue);
    }

    /**
     * <p>
     * Retorna um dado valor padro quando o determinado objeto for nulo e outro
     * valor quando contrrio.
     * </p>
     * 
     * <pre>
     * whenNull(null, null, null)       = null
     * whenNull(null, "1", "2")         = "1"
     * whenNull("ok", "1", "2")         = "2"
     * </pre>
     * 
     * @param <T>
     *            tipo do objeto pretendido
     * @param object
     *            - O {@code objeto} a testar, pode ser {@code null}
     * @param defaultValue
     *            - O valor padro retornado, pode ser {@code null}
     * @param notDefaultValue
     *            - O valor quando {@code object}  nulo, pode ser
     *            {@code null}
     * @return {@code defaultValue} - Se no nulo, caso contrrio
     *         {@code notDefaultValue}
     * 
     * @since 0.2
     */
    @SuppressWarnings("unchecked")
    public static <T> T whenNull(Object object, Object defaultValue, Object notDefaultValue) {

        return (T) (object == null ? defaultValue : notDefaultValue);
    }

    /**
     * Exibe os valores de instncia para um objeto JRimum.
     * 
     * @see org.apache.commons.lang.builder.ToStringBuilder#reflectionToString
     * 
     * @since 0.2
     * 
     * @see java.lang.Object#toString()
     */
    public static String toString(Object obj) {

        return "JRimumObject: " + ToStringBuilder.reflectionToString(obj);
    }
}