package gov.pr.celepar.tabeliao.dao.implementation;
/*
Este programa � licenciado de acordo com a
LPG-AP (LICEN�A P�BLICA GERAL PARA PROGRAMAS DE COMPUTADOR DA ADMINISTRA��O P�BLICA),
vers�o 1.1 ou qualquer vers�o posterior.
A LPG-AP deve acompanhar todas PUBLICA��ES, DISTRIBUI��ES e REPRODU��ES deste Programa.
Caso uma c�pia da LPG-AP n�o esteja dispon�vel junto com este Programa,
voc� pode contatar o LICENCIANTE ou ent�o acessar diretamente:
http://www.celepar.pr.gov.br/licenca/LPG-AP.pdf
Para poder USAR, PUBLICAR, DISTRIBUIR, REPRODUZIR ou ALTERAR este Programa
� preciso estar de acordo com os termos da LPG-AP
*/
import gov.pr.celepar.tabeliao.database.HibernateUtil;
import gov.pr.celepar.framework.exception.ApplicationException;
import java.util.*;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.apache.log4j.Logger;
import gov.pr.celepar.tabeliao.pojo.*;
import gov.pr.celepar.tabeliao.dao.*;
/**
* Classe de manipulacao de objetos da classe Ac.
*
* @author CodeGenerator - Esta classe foi gerada automaticamente
* @since 1.0
* @version 1.0, Fri Sep 01 13:27:14 BRT 2006
*
*/
public class HibernateAcDAO implements AcDAO {
private static Logger log = Logger.getLogger(AcDAO.class);
private String formataString(String nome) {
if(nome == null) {
return "";
}
return nome;
}
public HibernateAcDAO() {
}
/**
* Listagem de objetos Ac.
*
* @param qtdPagina quantidade de itens listados em cada pagina
* @param numPagina numero da pagina a ser buscada
* @return Lista de objetos Ac
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
public Collection<?> listar(Integer qtdPagina, Integer numPagina) throws ApplicationException, Exception {
Collection<?> coll = new ArrayList<Object>();
try {
Session session = HibernateUtil.currentSession();
Criteria q = session.createCriteria(Ac.class);
if (qtdPagina != null && numPagina != null) {
q.setMaxResults(qtdPagina.intValue());
q.setFirstResult( (numPagina.intValue()-1) * qtdPagina.intValue() );
}
coll = q.list();
} catch (HibernateException he) {
throw new ApplicationException("mensagem.erro.ac.listar", he);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.ac.listar", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
return coll;
}
/**
* Listagem de objetos Ac.
*
* @return Lista de objetos Ac
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
public Collection<?> listar() throws ApplicationException, Exception {
return this.listar(null, null);
}
/**
* Obtehm um objeto Ac.
*
* @param obj Chave primaria do objeto
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
public Ac obter(long obj) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
return (Ac)session.get(Ac.class, obj);
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.ac.obter", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.ac.obter", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
private static String buscarQtdeAcsPorIdPaiSql = "SELECT count(*) " +
"FROM gov.pr.celepar.tabeliao.pojo.Ac as ac ";
// "WHERE ac.pai = :pai ";
public int buscarQtdeAcsPorIdPai(int idPai) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
String sql = buscarQtdeAcsPorIdPaiSql;
if(idPai == 0) {
sql = sql + "WHERE ac.pai IS NULL";
} else {
sql = sql + "WHERE ac.pai = :pai";
}
Query query = session.createQuery(sql).setCacheable(true);
if(idPai != 0) {
query.setInteger("pai", idPai);
}
return (Integer)query.uniqueResult();
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.ac.buscarQtdPorPai", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.ac.buscarQtdPorPai", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
private static String buscarAcsPorIdPaiSql = "SELECT ac " +
"FROM gov.pr.celepar.tabeliao.pojo.Ac as ac ";
// "WHERE ac.nome LIKE :nome ";
@SuppressWarnings("unchecked")
public Collection<Ac> buscarAcsPorIdPai(int idPai) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
String sql = buscarAcsPorIdPaiSql;
if(idPai == 0) {
sql = sql + "WHERE ac.pai IS NULL ";
} else {
sql = sql + "WHERE ac.pai = :pai ";
}
sql = sql + "ORDER BY ac.nome";
Query query = session.createQuery(sql).setCacheable(true);
if(idPai != 0) {
query.setInteger("pai", idPai);
}
return query.list();
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.ac.buscarPorPai", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.ac.buscarPorPai", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
private static String buscarQtdeAcsPorNomeSql = "SELECT count(*) " +
"FROM gov.pr.celepar.tabeliao.pojo.Ac as ac " +
"WHERE ac.nome LIKE :nome ";
public int buscarQtdeAcsPorNome(String nome) throws ApplicationException, Exception {
nome = "%" + formataString(nome) + "%";
try {
Session session = HibernateUtil.currentSession();
Query query = session.createQuery(buscarQtdeAcsPorNomeSql).setCacheable(true);
query.setString("nome", nome);
return (Integer)query.uniqueResult();
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.ac.buscarQtdPorNome", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.ac.buscarQtdPorNome", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
private static String buscarAcsPorNomeSql = "SELECT ac " +
"FROM gov.pr.celepar.tabeliao.pojo.Ac as ac " +
"WHERE ac.nome LIKE :nome ";
@SuppressWarnings("unchecked")
public Collection<Ac> buscarAcsPorNome(String nome, int qtdePagina, int indice) throws ApplicationException, Exception {
nome = "%" + formataString(nome) + "%";
try {
Session session = HibernateUtil.currentSession();
Query query = session.createQuery(buscarAcsPorNomeSql).setCacheable(true);
query.setMaxResults(qtdePagina);
query.setFirstResult((indice - 1) * qtdePagina);
query.setString("nome", nome);
return query.list();
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.ac.buscarPorNome", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.ac.buscarPorNome", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
private static String buscarAcPorDNSql = "SELECT ac " +
"FROM gov.pr.celepar.tabeliao.pojo.Ac as ac " +
"WHERE ac.dn = :dn ";
public Ac buscarAcPorDN(String dn) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
Query query = session.createQuery(buscarAcPorDNSql).setCacheable(true);
query.setString("dn", dn);
return (Ac)query.uniqueResult();
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.ac.buscarAcPorDN", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.ac.buscarAcPorDN", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
}