package gcom.atendimentopublico.ligacaoagua; import gcom.atendimentopublico.bean.IntegracaoComercialHelper; import gcom.atendimentopublico.ligacaoagua.bean.DadosEfetuacaoCorteLigacaoAguaHelper; import gcom.util.ConstantesSistema; import gcom.util.ControladorException; import gcom.util.ErroRepositorioException; import gcom.util.HibernateUtil; import java.util.Collection; import java.util.Date; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; /** * Implementa��o do RepositorioLigacaoAgua * * @author Leonardo Regis * @date 09/09/2006 */ public class RepositorioLigacaoAguaHBM implements IRepositorioLigacaoAgua { private static IRepositorioLigacaoAgua instancia; /** * Construtor da classe RepositorioLigacaoAguaHBM */ private RepositorioLigacaoAguaHBM() { } /** * Retorna o valor de instancia * * @return O valor de instancia */ public static IRepositorioLigacaoAgua getInstancia() { if (instancia == null) { instancia = new RepositorioLigacaoAguaHBM(); } return instancia; } /** * [UC0463] Atualizar Consumo M�nimo da Liga��o de �gua * * @author Leonardo Regis * @date 30/08/2006 * * @param ligacaoAgua * @exception ErroRepositorioExceptions */ public void atualizarConsumoMinimoLigacaoAgua(LigacaoAgua ligacaoAgua) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update; try { update = "update LigacaoAgua set "; if (ligacaoAgua.getNumeroConsumoMinimoAgua() != null) { update = update + "numeroConsumoMinimoAgua = :consumoMinimo, "; } else { update = update + "numeroConsumoMinimoAgua = null, "; } update = update + "ultimaAlteracao = :dataCorrente " + "where id = :ligacaoAguaId"; if (ligacaoAgua.getNumeroConsumoMinimoAgua() != null) { session.createQuery(update).setInteger("consumoMinimo", ligacaoAgua.getNumeroConsumoMinimoAgua()).setTimestamp( "dataCorrente", ligacaoAgua.getUltimaAlteracao()) .setInteger("ligacaoAguaId", ligacaoAgua.getId()) .executeUpdate(); } else { session.createQuery(update).setTimestamp("dataCorrente", ligacaoAgua.getUltimaAlteracao()).setInteger( "ligacaoAguaId", ligacaoAgua.getId()).executeUpdate(); } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0463] Atualizar Consumo M�nimo da Liga��o de �gua * * [SB0001] Atualizar Im�vel/Liga��o �gua/Hist�rico de Instala��o de Hidr�metro * * @author Leonardo Regis * @date 25/09/2006 * * @param helper * @exception ErroRepositorioExceptions */ public void efetuarCorteLigacaoAgua(DadosEfetuacaoCorteLigacaoAguaHelper helper) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update; Query query = null; try { update = "update Imovel set " +"ligacaoAguaSituacao.id = :ligacaoAguaSituacao, " +"ultimaAlteracao = :dataCorrente " +"where id = :imovelId"; session.createQuery(update) .setInteger("ligacaoAguaSituacao", helper.getImovel().getLigacaoAguaSituacao().getId()) .setTimestamp("dataCorrente", helper.getImovel().getUltimaAlteracao()) .setInteger("imovelId", helper.getImovel().getId()) .executeUpdate(); update = "update LigacaoAgua set " +"dataCorte = :dataCorte, numeroSeloCorte ="+ helper.getLigacaoAgua().getNumeroSeloCorte(); update += ",corteTipo.id = :corteTipoId, " +"motivoCorte.id = :motivoCorteId, " +"ultimaAlteracao = :dataCorrente " +"where id = :ligacaoAguaId"; query = session.createQuery(update) .setTimestamp("dataCorte",helper.getLigacaoAgua().getDataCorte()) .setTimestamp("dataCorrente", helper.getLigacaoAgua().getUltimaAlteracao()) .setInteger("corteTipoId", helper.getLigacaoAgua().getCorteTipo().getId()) .setInteger("motivoCorteId", helper.getLigacaoAgua().getMotivoCorte().getId()) .setInteger("ligacaoAguaId", helper.getLigacaoAgua().getId()); query.executeUpdate(); if(helper.getHidrometroInstalacaoHistorico() != null) { update = "update HidrometroInstalacaoHistorico set "; update += "numeroLeituraCorte ="+helper.getHidrometroInstalacaoHistorico().getNumeroLeituraCorte(); update += ",ultimaAlteracao = :dataCorrente " +"where id = :hidrometroId"; query = session.createQuery(update) .setTimestamp("dataCorrente", helper.getLigacaoAgua().getUltimaAlteracao()) .setInteger("hidrometroId", helper.getHidrometroInstalacaoHistorico().getId()); query.executeUpdate(); } } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0463] Atualizar Consumo M�nimo da Liga��o de �gua * * [SB0001] Atualizar Im�vel/Liga��o �gua/Hist�rico de Instala��o de Hidr�metro * * @author Leonardo Regis * @date 25/09/2006 * * @param helper * @exception ErroRepositorioExceptions */ public void efetuarCorteAdministrativoLigacaoAgua(DadosEfetuacaoCorteLigacaoAguaHelper helper) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String update; try { update = "update LigacaoAgua set " +"corteTipo.id = :corteTipoId, " +"ultimaAlteracao = :dataCorrente, " +"dataCorteAdministrativo = :dataCorteAdministrativo " +"where id = :ligacaoAguaId"; session.createQuery(update) .setTimestamp("dataCorrente", new Date()) .setInteger("corteTipoId", helper.getLigacaoAgua().getCorteTipo().getId()) .setTimestamp("dataCorteAdministrativo", helper.getLigacaoAgua().getDataCorteAdministrativo()) .setInteger("ligacaoAguaId", helper.getLigacaoAgua().getId()) .executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * Efetuar Restabelecimento da Liga��o de �gua * * [SB0001] Atualizar Im�vel/Liga��o �gua * * @author Fl�vio Cordeiro * @date 28/09/2006 * * @param ligacaoAgua * @exception ErroRepositorioExceptions */ public void atualizarLigacaoAguaRestabelecimento(LigacaoAgua ligacaoAgua)throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); String update; try { update = "update LigacaoAgua set " +"dataRestabelecimentoAgua = :dataRestabelecimentoAgua, " +"ultimaAlteracao = :dataCorrente " +"where id = :ligacaoAguaId"; session.createQuery(update) .setTimestamp("dataRestabelecimentoAgua",ligacaoAgua.getDataRestabelecimentoAgua()) .setTimestamp("dataCorrente",new Date()) .setInteger("ligacaoAguaId", ligacaoAgua.getId()) .executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0357] Efetuar Religa��o de �gua * * [SB0001] Atualizar Im�vel/Liga��o �gua * * @author Fl�vio Cordeiro * @date 28/09/2006 * * @param ligacaoAgua * @exception ErroRepositorioExceptions */ public void atualizarLigacaoAguaReligacao(LigacaoAgua ligacaoAgua)throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); String update; try { update = "update LigacaoAgua set " +"dataReligacao = :dataReligacao, " +"ultimaAlteracao = :dataCorrente " +"where id = :ligacaoAguaId"; session.createQuery(update) .setTimestamp("dataReligacao",ligacaoAgua.getDataReligacao()) .setTimestamp("dataCorrente",new Date()) .setInteger("ligacaoAguaId", ligacaoAgua.getId()) .executeUpdate(); } catch (HibernateException e) { e.printStackTrace(); throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * [UC0488] Informar Retorno Ordem de Fiscaliza��o * * Recupera os par�metros necess�rios da Ligacao de �gua * * @author S�vio Luiz * @date 14/11/2006 * * @param idOS * @return OrdemServico * @throws ControladorException */ public Object[] pesquisarParmsLigacaoAgua(Integer idImovel) throws ErroRepositorioException { Object[] retornoConsulta = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT ligAgua.id,ligAgua.dataCorte,ligAgua.dataSupressao " + "FROM LigacaoAgua ligAgua " + "WHERE ligAgua.id = :idLigacaoAgua"; retornoConsulta = (Object[]) session.createQuery(consulta) .setInteger("idLigacaoAgua", idImovel) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } /** * [UC0054] - Inserir Dados da Tarifa Social * * Recupera o consumo m�nimo fixado do Im�vel * * @author Rafael Corr�a * @date 04/0/2006 * * @param idImovel * @return Integer * @throws ErroRepositorioException */ public Integer pesquisarConsumoMinimoFixado(Integer idImovel) throws ErroRepositorioException { Integer consumoFixado = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT ligAgua.numeroConsumoMinimoAgua " + "FROM LigacaoAgua ligAgua " + "WHERE ligAgua.id = :idLigacaoAgua"; consumoFixado = (Integer) session.createQuery(consulta).setInteger( "idLigacaoAgua", idImovel).setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return consumoFixado; } /** * * Pesquisa o id do hidrometro * * @author S�vio Luiz * @date 19/02/2007 * * @param idOS * @return OrdemServico * @throws ControladorException */ public Integer pesquisarIdHidrometroInstalacaoHistorico(Integer idImovel) throws ErroRepositorioException { Integer retornoConsulta = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "SELECT hidInstHist.id " + "FROM LigacaoAgua ligAgua " + "LEFT JOIN ligAgua.hidrometroInstalacaoHistorico hidInstHist " + "WHERE ligAgua.id = :idLigacaoAgua"; retornoConsulta = (Integer) session.createQuery(consulta) .setInteger("idLigacaoAgua", idImovel) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retornoConsulta; } public Collection verificaExistenciaLigacaoAgua(Integer idImovel) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); Collection retorno = null; try { String consulta = "SELECT ligAgua.id " + "FROM LigacaoAgua ligAgua " + "INNER JOIN ligAgua.hidrometroInstalacaoHistorico hidInstHist " + "WHERE ligAgua.id = :idLigacaoAgua"; retorno = session.createQuery(consulta) .setInteger("idLigacaoAgua", idImovel) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * [UC0113] - Faturar Grupo de Faturamento * * [SB0001 - Determinar Faturamento para o Im�vel] * * @author Raphael Rossiter * @date 04/06/2008 * * @param idLigacaoAguaSituacao * @param idConsumoTipo * @return LigacaoAguaSituacaoConsumoTipo * @throws ErroRepositorioException */ public LigacaoAguaSituacaoConsumoTipo pesquisarLigacaoAguaSituacaoConsumoTipo(Integer idLigacaoAguaSituacao, Integer idConsumoTipo) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); LigacaoAguaSituacaoConsumoTipo retorno = null; try { String consulta = "SELECT lact " + "FROM LigacaoAguaSituacaoConsumoTipo lact " + "INNER JOIN lact.consumoTipo consumoTipo " + "INNER JOIN lact.ligacaoAguaSituacao last " + "WHERE consumoTipo.id = :idConsumoTipo AND last.id = :idLigacaoAguaSituacao "; retorno = (LigacaoAguaSituacaoConsumoTipo) session.createQuery(consulta) .setInteger("idConsumoTipo", idConsumoTipo) .setInteger("idLigacaoAguaSituacao", idLigacaoAguaSituacao) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } /** * * Atualiza o tipo de corte * * Autor: Hugo Amorim * * Data: 18/05/2009 */ public void atualizarTipoCorte(IntegracaoComercialHelper integracaoComercialHelper) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); Query query = null; try{ String update = "UPDATE gcom.atendimentopublico.ligacaoagua.LigacaoAgua" + " SET corteTipo = :tipoCorte , " + " ultimaAlteracao = :dataAlteracao " + " where id = :idImovel"; query = session.createQuery(update); query.setTimestamp("dataAlteracao", integracaoComercialHelper.getLigacaoAgua().getUltimaAlteracao()); query.setInteger("tipoCorte", integracaoComercialHelper.getLigacaoAgua().getCorteTipo().getId()); query.setParameter("idImovel",integracaoComercialHelper.getMatriculaImovel()); query.executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } /** * @author Wellington Rocha * Data: 21/03/2012 * * Pesquisar todas as situa��es de liga��es de �gua ativas * * Gera��o de Rotas para Recadastramento * * @return Collection * @throws ControladorException * */ public Collection pesquisarLigacaoAguaSituacao() throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try{ consulta = " select ligacaoAguaSituacao " + " from LigacaoAguaSituacao ligacaoAguaSituacao " + " where ligacaoAguaSituacao.indicadorUso = :indicadorUso "; retorno = (Collection) session.createQuery(consulta) .setInteger("indicadorUso", ConstantesSistema.SIM.intValue()).list(); }catch(HibernateException e) { throw new ErroRepositorioException(e,"Erro no hibernate"); }finally { HibernateUtil.closeSession(session); } return retorno; } }