com.sporeon.baseutil.OrdenacaoUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.sporeon.baseutil.OrdenacaoUtil.java

Source

/*
 * baseutil, api de utilitrios Java.
 * Copyright (c) 2015 Senio Caires
 * e-mail: seniocaires@gmail.com
 * 
 * Este arquivo  parte da api baseutil
 * 
 * baseutil  um software livre; voc pode redistribu-lo e/ou
 * modific-lo dentro dos termos da Licena Pblica Geral GNU como
 * publicada pela Fundao do Software Livre (FSF); na verso 3 da
 * Licena, ou (na sua opinio) qualquer verso.
 * 
 * Este programa  distribudo na esperana de que possa ser  til,
 * mas SEM NENHUMA GARANTIA; sem uma garantia implcita de ADEQUAO
 * a qualquer MERCADO ou APLICAO EM PARTICULAR. Veja a
 * Licena Pblica Geral GNU para maiores detalhes.
 * 
 * Voc deve ter recebido uma cpia da Licena Pblica Geral GNU junto
 * com este programa, Se no, veja <http://www.gnu.org/licenses/>.
 */
package com.sporeon.baseutil;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import org.apache.commons.beanutils.BeanComparator;

/**
 * Classe base para utilitarios de ordenao.
 * @author Senio Caires
 */
public final class OrdenacaoUtil {

    /* ------------------------------
     * CONTRUTORES
     * ------------------------------
     */

    /**
     * Construtor padro privado.
     * @author Senio Caires
     */
    private OrdenacaoUtil() {
    }

    /* ------------------------------
     * LISTA
     * ------------------------------
     */

    /**
    * Mtodo responsvel por retorna uma lista de Object ordenada pelo nome do campo informado. <br/>
    * Ordena em ordem crescente.
    * @author Senio Caires
    * @param lista - Lista
    * @param campo - Campo
    * @return lista ordenada
    */
    public static List ordenarLista(final List lista, final String campo) {
        return ordenarLista(lista, campo, TipoOrdenacao.CRESCENTE);
    }

    /**
    * Mtodo responsvel por retorna uma lista de Object ordenada pelo nome do campo informado.
    * @author Senio Caires
    * @param lista - Lista
    * @param campo - Campo
    * @param tipoOrdenacao - Tipo de ordenao
    * @return lista ordenada
    */
    public static List ordenarLista(final List lista, final String campo, final TipoOrdenacao tipoOrdenacao) {

        if (lista != null && !lista.isEmpty() && campo != null && !(campo.trim().length() == 0)) {

            BeanComparator ordem = new BeanComparator(campo, new Comparator() {

                @Override
                public int compare(final Object o1, final Object o2) {

                    int resultado = 0;
                    final int maximoCaracteres = 20;

                    if (o1 instanceof Integer) {
                        resultado = ((String) ManipulacaoUtil
                                .adicionarChar('0', maximoCaracteres, o2.toString(), true))
                                        .compareToIgnoreCase((String) ManipulacaoUtil.adicionarChar('0',
                                                maximoCaracteres, o1.toString(), true));
                    } else {
                        resultado = ((String) o2.toString()).compareToIgnoreCase((String) o1.toString());
                    }

                    return resultado;
                }
            });

            Collections.sort(lista, ordem);

            if (TipoOrdenacao.CRESCENTE.equals(tipoOrdenacao)) {
                Collections.reverse(lista);
            }
        }

        return lista;
    }
}