package gcom.cadastro.localidade; import gcom.cadastro.endereco.LogradouroBairro; import gcom.cadastro.endereco.LogradouroCep; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ErroRepositorioException; import gcom.util.HibernateUtil; import gcom.util.Util; import java.util.Collection; import java.util.Date; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.Session; /** * * Title: GCOM * * Description: Reposit�rio de Localdiade * * Copyright: Copyright (c) 2005 * * Company: COMPESA - Companhia Pernambucana de Saneamento * * @author Pedro Alexandre * @created 13 de Janeiro de 2006 * @version 1.0 */ /** * @author Administrador * */ /** * @author Administrador * */ public class RepositorioLocalidadeHBM implements IRepositorioLocalidade { // cria uma vari�vel da inteface do reposit�rio de localidade private static IRepositorioLocalidade instancia; // construtor da classe private RepositorioLocalidadeHBM() { } // retorna uma inst�ncia da reposit�rio public static IRepositorioLocalidade getInstancia() { // se n�o existe ainda a inst�ncia if (instancia == null) { // cria a inst�ncia do reposit�rio instancia = new RepositorioLocalidadeHBM(); } // retorna a inst�ncia do reposit�rio return instancia; } /** * Pesquisa uma cole��o de localidades por ger�ncia regional * * @param idGerenciaRegional * C�digo da ger�ncia regional solicitada * @return Cole��o de Localidades da Ger�ncia Regional solicitada * @exception ErroRepositorioException * Erro no hibernate */ public Collection<Localidade> pesquisarLocalidadePorGerenciaRegional( int idGerenciaRegional) throws ErroRepositorioException { // cria a vari�vel que vai armazenar a cole��o pesquisada Collection retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select localidade " + "from Localidade localidade " + "inner join localidade.gerenciaRegional greg " + "where greg = :idGerenciaRegional "; // pesquisa a cole��o de acordo com o par�metro informado retorno = session.createQuery(consulta).setInteger( "idGerenciaRegional", idGerenciaRegional).list(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * Obt�m o id da localidade * @author S�vio Luiz * @date 08/03/2006 * * @param idImovel * @return Um integer que representa o id da localidade * @throws ControladorException */ public Integer pesquisarIdLocalidade(Integer idImovel)throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT localidade.id " + "FROM Imovel imovel " + "LEFT JOIN imovel.localidade localidade " + "WHERE imovel.id = :idImovel "; retorno = (Integer) session.createQuery(consulta).setInteger( "idImovel", idImovel.intValue()).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Obt�m o id da localidade * @author S�vio Luiz * @date 08/03/2006 * * @param idImovel * @return Um integer que representa o id da localidade * @throws ControladorException */ public Collection pesquisarTodosIdLocalidade()throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT loc.id " + "FROM Localidade loc where loc.indicadorUso = :icUso "; retorno = session.createQuery(consulta).setShort("icUso",ConstantesSistema.INDICADOR_USO_ATIVO).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * M�todo que retorna o maior id da Localidade * * @author Vivianne Sousa * @date 12/07/2006 * * @return * @throws ControladorException */ public int pesquisarMaximoIdLocalidade() throws ErroRepositorioException { int retorno = 0; Object maxIdLocalidade; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT max(l.id) " + "FROM Localidade l "; maxIdLocalidade = session.createQuery(consulta) .setMaxResults(1).uniqueResult(); if (maxIdLocalidade != null){ retorno = (Integer)maxIdLocalidade; } } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa uma localidade pelo id * * @author Rafael Corr�a * @date 01/08/2006 * * @return Localidade * @exception ErroRepositorioException * Erro no hibernate */ public Object[] pesquisarObjetoLocalidadeRelatorio( Integer idLocalidade) throws ErroRepositorioException { // cria a vari�vel que vai armazenar a cole��o pesquisada Object[] retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select loc.loca_id as id, " + "loc.loca_nmlocalidade as descricao " + "from cadastro.localidade loc " + "where loc.loca_id = " + idLocalidade.toString(); // pesquisa a cole��o de acordo com o par�metro informado Collection colecaoLocalidades = session.createSQLQuery(consulta) .addScalar("id", Hibernate.INTEGER) .addScalar("descricao", Hibernate.STRING).list(); retorno = Util.retonarObjetoDeColecaoArray(colecaoLocalidades); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } public Integer verificarExistenciaLocalidade( Integer idLocalidade) throws ErroRepositorioException { // cria a vari�vel que vai armazenar a cole��o pesquisada Integer retorno = null; // cria a sess�o com o hibernate Session session = HibernateUtil.getSession(); try { // cria o HQL para consulta String consulta = "select id "+ "from Localidade loc "+ "where loc.id =" + idLocalidade.toString(); // pesquisa a cole��o de acordo com o par�metro informado retorno = (Integer) session.createQuery(consulta).setMaxResults(1) .uniqueResult(); // erro no hibernate } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } // retorna a cole��o pesquisada return retorno; } /** * Atualiza logradouroBairro de um ou mais im�veis * * [UC0] Atualizar Logradouro * * @author Raphael Rossiter * @date 22/02/2007 * * @param * @return void */ public void atualizarLogradouroBairroGerenciaRegional(LogradouroBairro logradouroBairroAntigo, LogradouroBairro logradouroBairroNovo) throws ErroRepositorioException { String consulta = ""; Session session = HibernateUtil.getSession(); try { consulta = "UPDATE gcom.cadastro.localidade.GerenciaRegional SET " + "lgbr_id = :idLogradouroBairroNovo, greg_tmultimaalteracao = :ultimaAlteracao " + "WHERE lgbr_id = :idLogradouroBairroAntigo "; session.createQuery(consulta).setInteger( "idLogradouroBairroNovo", logradouroBairroNovo.getId()) .setTimestamp("ultimaAlteracao", new Date()) .setInteger("idLogradouroBairroAntigo", logradouroBairroAntigo.getId()) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Atualiza logradouroCep de um ou mais im�veis * * [UC0] Atualizar Logradouro * * @author Raphael Rossiter * @date 22/02/2007 * * @param * @return void */ public void atualizarLogradouroCepGerenciaRegional(LogradouroCep logradouroCepAntigo, LogradouroCep logradouroCepNovo) throws ErroRepositorioException { String consulta = ""; Session session = HibernateUtil.getSession(); try { consulta = "UPDATE gcom.cadastro.localidade.GerenciaRegional SET " + "lgcp_id = :idLogradouroCepNovo, greg_tmultimaalteracao = :ultimaAlteracao " + "WHERE lgcp_id = :idLogradouroCepAntigo "; session.createQuery(consulta).setInteger( "idLogradouroCepNovo", logradouroCepNovo.getId()) .setTimestamp("ultimaAlteracao", new Date()) .setInteger("idLogradouroCepAntigo", logradouroCepAntigo.getId()) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Atualiza logradouroBairro de um ou mais im�veis * * [UC0] Atualizar Logradouro * * @author Raphael Rossiter * @date 22/02/2007 * * @param * @return void */ public void atualizarLogradouroBairro(LogradouroBairro logradouroBairroAntigo, LogradouroBairro logradouroBairroNovo) throws ErroRepositorioException { String consulta = ""; Session session = HibernateUtil.getSession(); try { consulta = "UPDATE gcom.cadastro.localidade.Localidade SET " + "lgbr_id = :idLogradouroBairroNovo, loca_tmultimaalteracao = :ultimaAlteracao " + "WHERE lgbr_id = :idLogradouroBairroAntigo "; session.createQuery(consulta).setInteger( "idLogradouroBairroNovo", logradouroBairroNovo.getId()) .setTimestamp("ultimaAlteracao", new Date()) .setInteger("idLogradouroBairroAntigo", logradouroBairroAntigo.getId()) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Atualiza logradouroCep de um ou mais im�veis * * [UC0] Atualizar Logradouro * * @author Raphael Rossiter * @date 22/02/2007 * * @param * @return void */ public void atualizarLogradouroCep(LogradouroCep logradouroCepAntigo, LogradouroCep logradouroCepNovo) throws ErroRepositorioException { String consulta = ""; Session session = HibernateUtil.getSession(); try { consulta = "UPDATE gcom.cadastro.localidade.Localidade SET " + "lgcp_id = :idLogradouroCepNovo, loca_tmultimaalteracao = :ultimaAlteracao " + "WHERE lgcp_id = :idLogradouroCepAntigo "; session.createQuery(consulta).setInteger( "idLogradouroCepNovo", logradouroCepNovo.getId()) .setTimestamp("ultimaAlteracao", new Date()) .setInteger("idLogradouroCepAntigo", logradouroCepAntigo.getId()) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Obt�m Elo P�lo * @author Ana Maria * @date 10/12/2007 * * @throws ControladorException */ public Collection pesquisarEloPolo() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "select loca " +"from Localidade loca " +"where loca.id in " +"(select codElo.localidade.id from Localidade codElo) " +"order by loca.id"; retorno = session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0242] - Registrar Movimento dos Arrecadadores * * @author Raphael Rossiter * @date 09/01/2008 * * @param idConta * @return Um integer que representa o id da localidade * @throws ErroRepositorioException */ public Integer pesquisarIdLocalidadePorConta(Integer idConta)throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT localidade.id " + "FROM Conta cnta " + "LEFT JOIN cnta.localidade localidade " + "WHERE cnta.id = :idConta "; retorno = (Integer) session.createQuery(consulta).setInteger( "idConta", idConta.intValue()).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0242] - Registrar Movimento dos Arrecadadores * * @author Raphael Rossiter * @date 09/01/2008 * * @param idConta * @return Um integer que representa o id da localidade * @throws ErroRepositorioException */ public Integer pesquisarIdLocalidadePorContaHistorico(Integer idContaHistorico)throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT localidade.id " + "FROM ContaHistorico cnta " + "LEFT JOIN cnta.localidade localidade " + "WHERE cnta.id = :idConta "; retorno = (Integer) session.createQuery(consulta).setInteger( "idConta", idContaHistorico.intValue()).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * @author Raphael Rossiter * @date 11/01/2008 * * @param idGuiaPagamento * @return Um integer que representa o id da localidade * @throws ErroRepositorioException */ public Integer pesquisarIdLocalidadePorGuiaPagamento(Integer idGuiaPagamento)throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT localidade.id " + "FROM GuiaPagamento gpag " + "LEFT JOIN gpag.localidade localidade " + "WHERE gpag.id = :idGuiaPagamento "; retorno = (Integer) session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamento.intValue()).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * Pesquisar as localidades do munic�pio * * @author S�vio Luiz * @date 25/02/2008 * */ public Collection pesquisarLocalidadesMunicipio(Integer idMunicipio) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select distinct loc.id " +"from SetorComercial setor " +"inner join setor.localidade loc " +"inner join setor.municipio mun " +"where mun.id = :idMunicipio"; retorno = session.createQuery(consulta).setInteger( "idMunicipio", idMunicipio).list(); } catch (HibernateException e) { // levanta a exce��o para a pr�xima camada throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { // fecha a sess�o HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa os ids das localidades que possuem im�veis. * * @author Pedro Alexandre * @date 07/07/2008 * * @return * @throws ErroRepositorioException */ public Collection<Integer> pesquisarIdsLocalidadesImoveis()throws ErroRepositorioException { Collection<Integer> retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT distinct(imov.loca_id) as idLocalidade " + "FROM cadastro.imovel imov " ; retorno = session.createSQLQuery(consulta) .addScalar("idLocalidade",Hibernate.INTEGER) .list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * @author Raphael Rossiter * @date 26/11/2008 * * @param idDebitoACobrar * @return Um integer que representa o id da localidade * @throws ErroRepositorioException */ public Integer pesquisarIdLocalidadePorDebitoACobrar(Integer idDebitoACobrar)throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT localidade.id " + "FROM DebitoACobrar dbac " + "LEFT JOIN dbac.localidade localidade " + "WHERE dbac.id = :idDebitoACobrar "; retorno = (Integer) session.createQuery(consulta).setInteger( "idDebitoACobrar", idDebitoACobrar.intValue()).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * @author Raphael Rossiter * @date 11/01/2008 * * @param idGuiaPagamento * @return Um integer que representa o id da localidade * @throws ErroRepositorioException */ public Integer pesquisarIdLocalidadePorGuiaPagamentoHistorico(Integer idGuiaPagamentoHistorico)throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT localidade.id " + "FROM GuiaPagamentoHistorico gpag " + "LEFT JOIN gpag.localidade localidade " + "WHERE gpag.id = :idGuiaPagamento "; retorno = (Integer) session.createQuery(consulta).setInteger( "idGuiaPagamento", idGuiaPagamentoHistorico.intValue()).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0259] - Processar Pagamento com C�digo de Barras * * @author Raphael Rossiter * @date 26/11/2008 * * @param idDebitoACobrar * @return Um integer que representa o id da localidade * @throws ErroRepositorioException */ public Integer pesquisarIdLocalidadePorDebitoACobrarHistorico(Integer idDebitoACobrarHistorico)throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT localidade.id " + "FROM DebitoACobrarHistorico dbac " + "LEFT JOIN dbac.localidade localidade " + "WHERE dbac.id = :idDebitoACobrar "; retorno = (Integer) session.createQuery(consulta).setInteger( "idDebitoACobrar", idDebitoACobrarHistorico.intValue()).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * Pesquisa os ids de Todas as localidaes. * * @author Hugo Leonardo * @date 08/07/2010 * * @return * @throws ControladorException */ public Collection pesquisarIdsLocalidades() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta; try { consulta = "SELECT loc.id FROM Localidade loc "; retorno = session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } }