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 java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import gov.pr.celepar.tabeliao.dao.AtualizaLCRDAO;
import gov.pr.celepar.tabeliao.database.HibernateUtil;
import gov.pr.celepar.tabeliao.pojo.AtualizaLCR;
import gov.pr.celepar.framework.exception.ApplicationException;
import gov.pr.celepar.framework.util.Data;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.apache.log4j.Logger;
/**
* Classe de manipulacao de objetos da classe AtualizaLCR - implementacao.
*
*
*/
public class HibernateAtualizaLCRDAO implements AtualizaLCRDAO {
private static Logger log = Logger.getLogger(AtualizaLCRDAO.class);
public HibernateAtualizaLCRDAO() {
}
/**
* Salva objeto AtualizaLCR.
*
* @param obj Objeto da classe AtualizaLCR
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
public void salvar(AtualizaLCR obj) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
session.save(obj);
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.salvar", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.salvar", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
/**
* Altera objeto AtualizaLCR.
*
* @param obj Objeto da classe AtualizaLCR
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
public void alterar(AtualizaLCR obj) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
session.update(obj);
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.alterar", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.alterar", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
/**
* Exclui objeto AtualizaLCR.
*
* @param obj Objeto da classe AtualizaLCR
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
public void excluir(AtualizaLCR obj) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
session.delete(obj);
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.excluir", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.excluir", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
/**
* Listagem de objetos AtualizaLCR.
*
* @param qtdPagina quantidade de itens listados em cada pagina
* @param numPagina numero da pagina a ser buscada
* @return Lista de objetos AtualizaLCR
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
@SuppressWarnings("unchecked")
public Collection<AtualizaLCR> listar(Integer qtdPagina, Integer numPagina) throws ApplicationException, Exception {
Collection<AtualizaLCR> coll = new ArrayList<AtualizaLCR>();
try {
Session session = HibernateUtil.currentSession();
Criteria q = session.createCriteria(AtualizaLCR.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.atualizaLCR.listar", he);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.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 AtualizaLCR.
*
* @return Lista de objetos AtualizaLCR
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
public Collection<AtualizaLCR> listar() throws ApplicationException, Exception {
return this.listar(null, null);
}
/**
* Obtehm um objeto AtualizaLCR.
*
* @param obj Chave primaria do objeto
* @throws Exception Caso ocorra erro com hibernate/conexao.
*/
public AtualizaLCR obter(long obj) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
return (AtualizaLCR)session.get(AtualizaLCR.class, obj);
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.obter", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.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 buscarPorIpSql = "SELECT AtualizaLCR " +
"FROM gov.pr.celepar.tabeliao.pojo.AtualizaLCR as AtualizaLCR " +
"WHERE AtualizaLCR.ip = :ip ";
/**
* Busca pelo endereco IP
*/
public AtualizaLCR buscarPorIp(String ip) throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
Query query = session.createQuery(buscarPorIpSql);
query.setString("ip", ip);
return (AtualizaLCR)query.uniqueResult();
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.buscarPorIp", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.buscarPorIp", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
private static final String buscarServicosParados = "SELECT servicos " +
"FROM gov.pr.celepar.tabeliao.pojo.AtualizaLCR as servicos " +
"WHERE servicos.dtExecucao < :dataAtualiza";
/**
* Busca os servicos parados a mais de 10 minutos.
*/
@SuppressWarnings("unchecked")
public List<AtualizaLCR> buscarServicosParados() throws ApplicationException, Exception {
try {
Session session = HibernateUtil.currentSession();
Query query = session.createQuery(buscarServicosParados);
Date dataHora = new Date(); // data e hora atual
Date dataHoraMenos = null;
int qtdMin = -10; // Diminui 10 minutos
Calendar calendar = Data.getCalendar(dataHora);
calendar.add(Calendar.MINUTE, qtdMin);
dataHoraMenos = calendar.getTime();
query.setTimestamp("dataAtualiza", dataHoraMenos);
return query.list();
} catch (HibernateException e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.buscarServicosParados", e);
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.buscarServicosParados", e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error("Erro ao Fechar Conexao com o Hibernate: ", e);
}
}
}
/**
* Busca a quantidade de Servicos cadastrados
*/
private static final String quantidadeServicos = "SELECT count(*) " +
"FROM gov.pr.celepar.tabeliao.pojo.AtualizaLCR as servicos";
public Long buscarQtdLista() throws ApplicationException {
Long qtd = null;
try {
Session session = HibernateUtil.currentSession();
Query query = session.createQuery(quantidadeServicos);
qtd = (Long) query.uniqueResult();
} catch (Exception e) {
throw new ApplicationException("mensagem.erro.atualizaLCR.qtdServicos", e);
}catch (Throwable t) {
t.printStackTrace();
} finally {
try {
HibernateUtil.closeSession();
}catch (Exception e) {
log.error("Problema ao tentar fechar conexao com o banco de dados: buscarQtdServicos", e);
}
}
return qtd;
}
}