ListCriteria um iniciante, mas poderoso recurso de filtragem em lista

2 respostas
D

Ola, tudo bem?
Eu sou Anderson Felix, e a alguns meses eu venho criando uma ferramenta(em meu tempo livre) para resolver o problema de filtrar lista em java de maneira facil e rapida. Para isso foi criado um projeto que pega como parametro as listas que vão ser filtradas, com o auxilio de uma interface (FilterObject/FilterCampo), os tipos de união que avera entre essas listas(atraves da class Join) e os criterios que vai ser usado para filtrar( CriteriaBoolean/CriteriaComparator) e isso tudo é organizado e processado na class ListCriteria. Com isso consegui bons resultados depois de muito trabalho, como outras pessoas disponibilizaram soluções excelentes e que me ajudou muito a resolver problemas que eu tive, decidi disponibilizar esse projetinho para que outras pessoas usem e também para que o projeto creça. Ele se encontra em um diretorio publico do github com o nome de ListCriteria.

public static void main(String[] args) {
    List<testModelo> listTest = new ArrayList();
        for (int i = 0; i < 10; i++) {
            testModelo pojo = new testModelo();
            pojo.setCpf("[telefone removido]");
            pojo.setHelloWorhd("ola mundo" + i);
            pojo.setNome("Anderson" + i);
            pojo.setIdadeMenino(9 + i);
            pojo.setFornecedor(new testFornecedor("rita" + i, "Cassia", null, false));
            pojo.setDataNacimento(new Date());
            listTest.add(pojo);
        }
        
        
        List<Object[]> lc = ListCriteria.begin(listTest, "this")
                .add(Restricions.not(Restricions.equals("this.nome","Anderson1")))
                .add(Restricions.maiorQue("this.idadeMenino",10))
                .setProjection(Projections.cria()
                        .addProjectio(Projections.propertName("this.nome"))
                        .addProjectio(Projections.propertName("this.cpf"))
                        .addProjectio(Projections.propertName("this.idadeMenino"))
                        .addProjectio(Projections.propertName("this.fornecedor.nome"))
                )
                .list();
 //            
        for (Object[] lc1 : lc) {
            System.out.println(Arrays.toString(lc1));
        }
}

Espero com esse poste ajudar a muitas pessoas que sofrem tendo que criar estruturas com for, while e if para filtrar listas.
Quem quiser saber mais ou contribuir com esse projeto me procure pelo:
Facebook
WattsApp-([telefone removido].

Obrigado pela atenção e não deixem de usar essa tecnologia.

2 Respostas

igomes

Existe também o query by example para ajudar nos filtros do hibernate

D

igomes muito obrigado por responder. e Sim, mas o ListCriteria é para consultas em Listas que estão em memoria e não em banco de dados.

Criado 1 de agosto de 2016
Ultima resposta 2 de ago. de 2016
Respostas 2
Participantes 2