br.ufg.inf.es.fs.contpatri.web.controller.BemPatrimonialDataModel.java Source code

Java tutorial

Introduction

Here is the source code for br.ufg.inf.es.fs.contpatri.web.controller.BemPatrimonialDataModel.java

Source

/*
 Esse documento  parte do cdigo fonte e artefatos relacionados ao projeto
 CONTPATRI, em desenvolvimento pela Fbrica de Software da UFG.
    
 Links relevantes: Fbrica de Software: http://fs.inf.ufg.br/ Instituto de
 Informtica UFG: http://www.inf.ufg.br Projeto CONTPATRI DROPBOX:
 https://www.dropbox.com/home/CONTPATRI%20-%20012013 Projeto CONTPATRI
 REDMINE:
    
 Copyleft  UFG.
    
 Licenciado sobre a licena GNU-GPL v3
    
 Voc pode obter uma cpia da licena em http://www.gnu.org/licenses/gpl.html
    
 A menos que especificado ou exigido por legislao local, o software 
 fornecido "da maneira que est", sem garantias ou condies de qualquer tipo,
 nem expressas nem implcitas. Em caso de dvidas referir a licena GNU-GPL.
 */
package br.ufg.inf.es.fs.contpatri.web.controller;

import br.ufg.inf.es.fs.contpatri.model.BemPatrimonial;
import br.ufg.inf.es.fs.contpatri.persistencia.HibernateUtil;
import br.ufg.inf.es.fs.contpatri.persistencia.dao.BemPatrimonialDAO;
import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Query;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

/**
 *
 * @author Guilherme de Paula
 */
public class BemPatrimonialDataModel extends LazyDataModel<BemPatrimonial> implements Serializable {

    private BemPatrimonialDAO bemPatrimonialDAO;

    /**
     *
     */
    public BemPatrimonialDataModel() {
        bemPatrimonialDAO = new BemPatrimonialDAO();
    }

    /**
     *
     * @param first primeiro elemento da lista
     * @param pageSize tamanho da pgina
     * @param sortField campo de ordenao
     * @param sortOrder ordem (decrescente, ascendente)
     * @param filters filtros
     * @return lista com os bens patrimoniais
     */
    @Override
    public List<BemPatrimonial> load(int first, int pageSize, String sortField, SortOrder sortOrder,
            Map<String, String> filters) {
        StringBuilder sb = new StringBuilder("from BemPatrimonial ");

        // Filtros
        if (!filters.isEmpty()) {
            sb.append("where ");
        }
        for (Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
            String filterProperty = it.next();
            String filterValue = filters.get(filterProperty);
            sb.append(filterProperty);
            sb.append(" like ");
            sb.append('\'');
            sb.append(filterValue);
            sb.append("%");
            sb.append('\'').append(' ');
            if (it.hasNext()) {
                sb.append(" and ");
            }
        }

        // Ordenao
        if (sortField != null) {
            if (sortOrder == SortOrder.ASCENDING) {
                sb.append("order by ").append(sortField).append(" asc");
            } else if (sortOrder == SortOrder.DESCENDING) {
                sb.append("order by ").append(sortField).append(" desc");
            }
        }

        // Obtendo dados
        String hql = sb.toString();
        HibernateUtil.beginTransaction();
        Query query = HibernateUtil.getSession().createQuery(hql);
        query.setFirstResult(first);
        query.setMaxResults(pageSize);
        List<BemPatrimonial> dados = bemPatrimonialDAO.findMany(query);
        HibernateUtil.commitTransaction();

        // Contagem das linhas na tabela
        HibernateUtil.beginTransaction();
        String hqlRowCount = "select count (*) ".concat(hql);
        query = HibernateUtil.getSession().createQuery(hqlRowCount);
        int rows = ((Long) query.list().get(0)).intValue();
        HibernateUtil.commitTransaction();

        setRowCount(rows);

        return dados;
    }

    /**
     *
     * @param object
     * @return chave do bem patrimonial
     */
    @Override
    public Object getRowKey(BemPatrimonial object) {
        return object.getId();
    }

}