package gcom.atualizacaocadastral; import gcom.cadastro.SituacaoAtualizacaoCadastral; import gcom.cadastro.cliente.IClienteFone; import gcom.cadastro.imovel.IImovel; import gcom.cadastro.imovel.IImovelSubcategoria; import gcom.cadastro.imovel.IImovelTipoOcupanteQuantidade; import gcom.cadastro.imovel.ImovelAtualizacaoCadastral; import gcom.cadastro.imovel.ImovelSubcategoria; import gcom.cadastro.imovel.ImovelSubcategoriaAtualizacaoCadastral; import gcom.cadastro.imovel.ImovelTipoOcupanteQuantidadeAtualizacaoCadastral; import gcom.seguranca.transacao.AlteracaoTipo; import gcom.util.ConstantesSistema; import gcom.util.ErroRepositorioException; import gcom.util.HibernateUtil; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.List; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.jboss.logging.Logger; public class RepositorioAtualizacaoCadastralHBM implements IRepositorioAtualizacaoCadastral { public static IRepositorioAtualizacaoCadastral instancia; private Logger logger = Logger.getLogger(RepositorioAtualizacaoCadastralHBM.class); public static IRepositorioAtualizacaoCadastral getInstancia() { if (instancia == null) { instancia = new RepositorioAtualizacaoCadastralHBM(); } return instancia; } @SuppressWarnings("unchecked") public Collection<IImovel> obterImoveisParaAtualizar(Integer tipoOperacao) throws ErroRepositorioException { Collection<IImovel> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " select imovelRetorno " + " from ImovelRetorno imovelRetorno " + " left join fetch imovelRetorno.ramalLocalInstalacao " + " where imovelRetorno.tipoOperacao = :tipoOperacao " + " and imovelRetorno.id in " + " ( select imovelControle.imovelRetorno.id from ImovelControleAtualizacaoCadastral imovelControle " + " where imovelControle.situacaoAtualizacaoCadastral.id = " + SituacaoAtualizacaoCadastral.APROVADO + " and imovelControle.dataProcessamento is null ) " ; retorno = (Collection<IImovel>) session.createQuery(consulta). setInteger("tipoOperacao", tipoOperacao).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis."); } finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<IImovelSubcategoria> obterImovelSubcategoriaParaAtualizar(Integer idImovel) throws ErroRepositorioException { Collection<IImovelSubcategoria> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "from ImovelSubcategoriaRetorno imovelSubcategoria" + " where imovelSubcategoria.imovel.id = :idImovel " ; retorno = (Collection<IImovelSubcategoria>) session.createQuery(consulta).setInteger("idImovel", idImovel).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imovel subcategoria."); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection<IImovelTipoOcupanteQuantidade> obterImovelQuantidadesOcupantesParaAtualizar(Integer idImovel) throws ErroRepositorioException { Collection<IImovelTipoOcupanteQuantidade> retorno = null; Session session = HibernateUtil.getSession(); try { String consulta = "from ImovelTipoOcupanteQuantidadeRetorno e where e.imovel.id = :idImovel " ; retorno = (Collection<IImovelTipoOcupanteQuantidade>) session.createQuery(consulta).setInteger("idImovel", idImovel).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar quantidades de ocupantes em retorno."); } finally { HibernateUtil.closeSession(session); } return retorno; } public ImovelControleAtualizacaoCadastral pesquisarImovelControleAtualizacao(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); ImovelControleAtualizacaoCadastral retorno = null; try{ String consulta = " SELECT e FROM ImovelControleAtualizacaoCadastral e " + " LEFT JOIN FETCH e.situacaoAtualizacaoCadastral s " + " WHERE e.imovel.id = :idImovel "; retorno = (ImovelControleAtualizacaoCadastral) session.createQuery(consulta) .setInteger("idImovel", idImovel) .uniqueResult(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imovel controle atualizacao cadastral"); } finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<IImovelRamoAtividade> obterImovelRamoAtividadeParaAtualizar(Integer idImovel) throws ErroRepositorioException { Collection<IImovelRamoAtividade> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "from ImovelRamoAtividadeRetorno imovelRamoAtividade" + " where imovelRamoAtividade.imovel.id = :idImovel " ; retorno = (Collection<IImovelRamoAtividade>) session.createQuery(consulta).setInteger("idImovel", idImovel).list(); } catch (HibernateException e) { e.printStackTrace(); } finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<IClienteFone> obterClienterFoneParaAtualizar(Integer idImovel) throws ErroRepositorioException { Collection<IClienteFone> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "select clienteFoneRetorno " + "from ClienteFoneRetorno clienteFoneRetorno, " + " ClienteImovelRetorno clienteImovelRetorno" + " inner join clienteFoneRetorno.cliente cliente " + " where clienteFoneRetorno.idClienteRetorno = clienteImovelRetorno.idClienteRetorno " + " and clienteImovelRetorno.imovel.id = :idImovel "; retorno = (Collection<IClienteFone>) session.createQuery(consulta).setInteger("idImovel", idImovel).list(); } catch (HibernateException e) { e.printStackTrace(); } finally { HibernateUtil.closeSession(session); } return retorno; } public void apagarImovelRetornoPorIdImovel(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try{ String consulta = " DELETE FROM ImovelRetorno imovelRetorno " + " WHERE imovelRetorno.idImovel = :idImovel "; session.createQuery(consulta).setInteger("idImovel", idImovel).executeUpdate(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao excluir imovel retorno"); } finally { HibernateUtil.closeSession(session); } } @SuppressWarnings("unchecked") public List<ImovelSubcategoriaRetorno> pesquisarImovelSubcategoriaRetornoPorIdImovel(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); List<ImovelSubcategoriaRetorno> retorno = null; try{ String consulta = " SELECT imovelSubCatRetorno " + " FROM ImovelSubcategoriaRetorno imovelSubCatRetorno " + " INNER JOIN imovelSubCatRetorno.imovel imovel" + " WHERE imovel.id = :idImovel "; retorno = (List<ImovelSubcategoriaRetorno>) session.createQuery(consulta) .setInteger("idImovel", idImovel).list(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imovel subcategoria"); } finally { HibernateUtil.closeSession(session); } return retorno; } public void apagarImovelQuantidadesOcupantes(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try{ String consulta = " DELETE ImovelTipoOcupanteQuantidadeRetorno e WHERE e.imovel.id = :idImovel "; session.createQuery(consulta).setInteger("idImovel", idImovel).executeUpdate(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao apagar quantidades de ocupantes"); } finally { HibernateUtil.closeSession(session); } } public void apagarImovelRetornoRamoAtividadeRetornoPorIdImovel(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try{ String consulta = " DELETE ImovelRamoAtividadeRetorno ramo " + " WHERE ramo.imovel.id = :idImovel "; session.createQuery(consulta).setInteger("idImovel", idImovel).executeUpdate(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao apagar imovel retorno ramo atividade"); } finally { HibernateUtil.closeSession(session); } } @SuppressWarnings("unchecked") public Collection<ImovelSubcategoria> pesquisarImovelSubcategoriaAtualizacaoCadastral(Integer idImovel, Integer idSubcategoria,Integer idCategoria) throws ErroRepositorioException { Collection<ImovelSubcategoria> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " SELECT imovelSubcategoria" + " FROM ImovelSubcategoriaAtualizacaoCadastral imovelSubcategoria" + " WHERE imovelSubcategoria.imovel.id = :idImovel"; if(idSubcategoria != null){ consulta = consulta + " AND imovelSubcategoria.subcategoria.id = "+idSubcategoria; } if(idCategoria != null){ consulta = consulta + " AND imovelSubcategoria.categoria.id = "+idCategoria; } retorno = (Collection<ImovelSubcategoria>)session.createQuery(consulta).setInteger("idImovel", idImovel.intValue()).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imovel subcategoria"); } finally { HibernateUtil.closeSession(session); } return retorno; } public ImovelAtualizacaoCadastral pesquisarImovelAtualizacaoCadastral(Integer idImovel) throws ErroRepositorioException { ImovelAtualizacaoCadastral imovelAtualizacaoCadastral = null; String consulta = ""; Session session = HibernateUtil.getSession(); try { consulta = " SELECT imov" + " FROM ImovelAtualizacaoCadastral imov" + " WHERE imov.idImovel = :idImovel"; imovelAtualizacaoCadastral = (ImovelAtualizacaoCadastral)session.createQuery(consulta) .setInteger("idImovel", idImovel) .setMaxResults(1).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ap pesquisar imovel atualizacao cadastral"); } finally { HibernateUtil.closeSession(session); } return imovelAtualizacaoCadastral; } @SuppressWarnings("unchecked") public Collection<ClienteImovelRetorno> pesquisarClienteImovelRetornoPorIdImovel(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection<ClienteImovelRetorno> listaClienteImovel; try{ String consulta = " select clienteImovel " + " from ClienteImovelRetorno clienteImovel " + " WHERE clienteImovel.imovel.id = :idImovel "; listaClienteImovel = (Collection<ClienteImovelRetorno>) session.createQuery(consulta).setInteger("idImovel", idImovel).list(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar cliente imovel retorno"); } finally { HibernateUtil.closeSession(session); } return listaClienteImovel; } public void liberarCadastroImovel(Integer idImovel) throws ErroRepositorioException{ Session session = HibernateUtil.getSession(); try { StringBuilder sql = new StringBuilder(); sql.append("update ImovelControleAtualizacaoCadastral tab ") .append(" set tab.situacaoAtualizacaoCadastral.id = :situacao ") .append(" , tab.dataAprovacao = :data") .append(" where tab.imovel.id = :idImovel"); session.createQuery(sql.toString()) .setInteger("situacao", SituacaoAtualizacaoCadastral.APROVADO) .setInteger("idImovel", idImovel) .setTimestamp("data", Calendar.getInstance().getTime()) .executeUpdate(); } catch (HibernateException e) { logger.error("Erro ao liberar cadastro do imovel", e); throw new ErroRepositorioException(e, "Erro ao liberar cadastro do imovel"); } finally { HibernateUtil.closeSession(session); } } public void apagarClienteImovelRetornoPorIdImovel(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { String query = "DELETE FROM ClienteImovelRetorno ret WHERE ret.imovel.id = :idImovel "; session.createQuery(query).setInteger("idImovel", idImovel).executeUpdate(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao apagar cliente imovel retono"); } finally { HibernateUtil.closeSession(session); } } public void apagarClienteEnderecoRetorno(Collection<Integer> idsClientesRetorno) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { String query = " DELETE FROM ClienteEnderecoRetorno clieImovel where clieImovel.idClienteRetorno in (:idsClientesRetorno) "; session.createQuery(query).setParameterList("idsClientesRetorno", idsClientesRetorno).executeUpdate(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao apagar cliente endereco retorno"); }finally { HibernateUtil.closeSession(session); } } public void apagarClienteFoneRetorno(Collection<Integer> idsClientesRetorno) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { String query = " DELETE FROM ClienteFoneRetorno clieImovel where clieImovel.idClienteRetorno in (:idsClientesRetorno) "; session.createQuery(query).setParameterList("idsClientesRetorno", idsClientesRetorno).executeUpdate(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao apagar cliente fone retorno"); }finally { HibernateUtil.closeSession(session); } } public void apagarClienteRetorno(Collection<Integer> idsClientesRetorno) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { String query = " DELETE FROM ClienteRetorno ret where ret.id in (:idsClientesRetorno) "; session.createQuery(query).setParameterList("idsClientesRetorno", idsClientesRetorno).executeUpdate(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao apagar cliente retorno"); }finally { HibernateUtil.closeSession(session); } } @SuppressWarnings("unchecked") public Collection<Integer> pesquisarIdsClienteRetorno(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection<Integer> retorno = null; try { String consulta = "SELECT clieImovel.idClienteRetorno " + " FROM ClienteImovelRetorno clieImovel " + " WHERE clieImovel.imovel.id = :idImovel "; retorno = (Collection<Integer>)session.createQuery(consulta).setInteger("idImovel", idImovel).list(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao pesquisar ids de cliente retorno"); }finally { HibernateUtil.closeSession(session); } return retorno; } public Integer recuperaValorSequenceImovelRetorno() throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Integer retorno = null; try { String consulta = "select last_value from atualizacaocadastral.sequence_imovel_retorno "; retorno = (Integer) session.createSQLQuery(consulta).addScalar("last_value", Hibernate.INTEGER).uniqueResult(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao recuperar valor da sequece do imovel retorno"); }finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<Integer> pesquisarImoveisPorSituacaoPeriodo(Integer situacao, Date dataInicial, Date dataFinal) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try { StringBuilder sql = new StringBuilder(); sql.append("SELECT i.imovel.id ") .append("FROM ImovelControleAtualizacaoCadastral i ") .append("WHERE i.situacaoAtualizacaoCadastral.id = :situacao "); if (situacao.equals(SituacaoAtualizacaoCadastral.DISPONIVEL)) { sql.append("AND date(i.dataGeracao) BETWEEN :dataInicial AND :dataFinal"); } else if (situacao.equals(SituacaoAtualizacaoCadastral.TRANSMITIDO)) { sql.append("AND date(i.dataRetorno) BETWEEN :dataInicial AND :dataFinal"); } else if (situacao.equals(SituacaoAtualizacaoCadastral.APROVADO)) { sql.append("AND date(i.dataAprovacao) BETWEEN :dataInicial AND :dataFinal"); } else if (situacao.equals(SituacaoAtualizacaoCadastral.ATUALIZADO)) { sql.append("AND date(i.dataProcessamento) BETWEEN :dataInicial AND :dataFinal"); } Query query = session.createQuery(sql.toString()).setInteger("situacao", situacao); if (situacao.equals(SituacaoAtualizacaoCadastral.DISPONIVEL) || situacao.equals(SituacaoAtualizacaoCadastral.TRANSMITIDO) || situacao.equals(SituacaoAtualizacaoCadastral.APROVADO) || situacao.equals(SituacaoAtualizacaoCadastral.ATUALIZADO)) { query.setDate("dataInicial", dataInicial).setDate("dataFinal", dataFinal); } return (Collection<Integer>) query.list(); } catch(HibernateException e) { throw new ErroRepositorioException("Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } } public void apagarImagemRetornoPorIdImovel(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); try{ String consulta = " DELETE FROM ImagemRetorno imagemRetorno " + " WHERE imagemRetorno.idImovel = :idImovel "; session.createQuery(consulta).setInteger("idImovel", idImovel).executeUpdate(); }catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao excluir imagem retorno"); } finally { HibernateUtil.closeSession(session); } } @SuppressWarnings("unchecked") public Collection<ImovelControleAtualizacaoCadastral> obterImoveisControle(Collection<IImovel> listaImoveisRetorno) { Collection<ImovelControleAtualizacaoCadastral> listaImoveisControle = null; Session session = HibernateUtil.getSession(); try { String consulta = "select imovelControle " + " from ImovelControleAtualizacaoCadastral imovelControle " + " inner join imovelControle.imovelRetorno imovelRetorno " + " where imovelRetorno.id in (:listaImoveisRetorno)"; listaImoveisControle = (Collection<ImovelControleAtualizacaoCadastral>)session.createQuery(consulta) .setParameterList("listaImoveisRetorno", getIdsImovelRetorno(listaImoveisRetorno)).list(); } catch (HibernateException e) { } finally { HibernateUtil.closeSession(session); } return listaImoveisControle; } public ImovelControleAtualizacaoCadastral obterImovelControlePorImovelRetorno(Integer idImovelRetorno) { ImovelControleAtualizacaoCadastral imovelControle = null; Session session = HibernateUtil.getSession(); try { String consulta = "select imovelControle " + " from ImovelControleAtualizacaoCadastral imovelControle " + " inner join imovelControle.imovelRetorno imovelRetorno " + " where imovelRetorno.id in (:listaImoveisRetorno)"; imovelControle = (ImovelControleAtualizacaoCadastral)session.createQuery(consulta) .setInteger("listaImoveisRetorno", idImovelRetorno).uniqueResult(); } catch (HibernateException e) { } finally { HibernateUtil.closeSession(session); } return imovelControle; } public ImovelControleAtualizacaoCadastral obterImovelControle(Integer idImovelControle) { ImovelControleAtualizacaoCadastral imovelControle = null; Session session = HibernateUtil.getSession(); try { String consulta = "select imovelControle " + " from ImovelControleAtualizacaoCadastral imovelControle " + " left join imovelControle.imovelRetorno imovelRetorno " + " where imovelControle.id = :idImovelControle"; imovelControle = (ImovelControleAtualizacaoCadastral)session.createQuery(consulta) .setInteger("idImovelControle", idImovelControle).uniqueResult(); } catch (HibernateException e) { } finally { HibernateUtil.closeSession(session); } return imovelControle; } private Collection<Integer> getIdsImovelRetorno(Collection<IImovel> listaImoveisRetorno) { Collection<Integer> listaIds = new ArrayList<Integer>(); for (IImovel imovelRetorno : listaImoveisRetorno) { listaIds.add(imovelRetorno.getId()); } return listaIds; } @SuppressWarnings("unchecked") public Collection<ImovelSubcategoriaAtualizacaoCadastral> pesquisarSubCategoriasAtualizacaoCadastral(Integer idImovel) throws ErroRepositorioException { Collection<ImovelSubcategoriaAtualizacaoCadastral> retorno = null; Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); try { consulta.append("select sub ") .append(" from ImovelSubcategoriaAtualizacaoCadastral sub ") .append(" where sub.imovel.id = :idImovel"); retorno = session.createQuery(consulta.toString()) .setInteger("idImovel", idImovel.intValue()) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<ClienteImovelRetorno> obterClientesParaAtualizar() throws ErroRepositorioException { Collection<ClienteImovelRetorno> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " select clienteImovelRetorno " + "from ClienteImovelRetorno clienteImovelRetorno, Cliente cliente " + " inner join fetch clienteImovelRetorno.clienteRelacaoTipo clienteRelacaoTipo " + " where clienteImovelRetorno.cliente.id = cliente.id " + " and clienteImovelRetorno.idImovelRetorno in " + " ( select imovelControle.imovelRetorno.id from ImovelControleAtualizacaoCadastral imovelControle, Imovel imovel " + " where imovelControle.situacaoAtualizacaoCadastral.id = " + SituacaoAtualizacaoCadastral.APROVADO + " and imovel.id = imovelControle.imovel.id " + " and imovelControle.dataProcessamento is null ) " ; retorno = (Collection<ClienteImovelRetorno>) session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis."); } finally { HibernateUtil.closeSession(session); } return retorno; } public ICliente pesquisarClienteRetorno(ClienteImovelRetorno clienteImovelRetorno) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); ICliente retorno = null; try { String consulta = "select clienteRetorno " + " from ClienteRetorno clienteRetorno, " + " ClienteImovelRetorno clienteImovelRetorno " + " where clienteImovelRetorno.idClienteRetorno = clienteRetorno.id " + " and clienteImovelRetorno.idClienteRetorno = :idClienteRetorno " + " and clienteImovelRetorno.idImovelRetorno = :idImovel " + " and clienteImovelRetorno.clienteRelacaoTipo.id = :idClienteRelacaoTipo "; retorno = (ICliente)session.createQuery(consulta) .setInteger("idClienteRetorno", clienteImovelRetorno.getIdClienteRetorno()) .setInteger("idImovel", clienteImovelRetorno.getIdImovelRetorno()) .setInteger("idClienteRelacaoTipo", clienteImovelRetorno.getClienteRelacaoTipo().getId()).uniqueResult(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao pesquisar cliente retorno"); }finally { HibernateUtil.closeSession(session); } return retorno; } public IImovel pesquisarImovelRetorno(Integer idImovel) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); IImovel retorno = null; try { String consulta = "select imovelRetorno " + " from ImovelRetorno imovelRetorno " + " where imovelRetorno.idImovel = :idImovel "; retorno = (IImovel)session.createQuery(consulta).setInteger("idImovel", idImovel).uniqueResult(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao pesquisar imovel retorno"); }finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<IClienteFone> pesquisarClienteFoneRetorno(Integer idClienteRetorno) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection<IClienteFone> retorno = null; try { String consulta = "select clienteFoneRetorno " + " from ClienteFoneRetorno clienteFoneRetorno " + " where clienteFoneRetorno.idClienteRetorno = :idClienteRetorno "; retorno = (Collection<IClienteFone>)session.createQuery(consulta).setInteger("idClienteRetorno", idClienteRetorno).list(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao pesquisar cliente fone retorno"); }finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<IClienteEndereco> pesquisarClienteEnderecoRetorno(Integer idClienteRetorno) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); Collection<IClienteEndereco> retorno = null; try { String consulta = "select clienteEnderecoRetorno " + " from ClienteEnderecoRetorno clienteEnderecoRetorno " + " where clienteEnderecoRetorno.idClienteRetorno = :idClienteRetorno "; retorno = (Collection<IClienteEndereco>)session.createQuery(consulta).setInteger("idClienteRetorno", idClienteRetorno).list(); }catch(HibernateException e) { throw new ErroRepositorioException("Erro ao pesquisar cliente endereco retorno"); }finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<ClienteImovelRetorno> obterClienteImoveisDoImovel(Integer idImovelRetorno) throws ErroRepositorioException { Collection<ClienteImovelRetorno> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " select clienteImovelRetorno " + "from ClienteImovelRetorno clienteImovelRetorno " + " inner join fetch clienteImovelRetorno.clienteRelacaoTipo clienteRelacaoTipo " + " where clienteImovelRetorno.idImovelRetorno = :idImovelRetorno "; retorno = (Collection<ClienteImovelRetorno>) session.createQuery(consulta). setInteger("idImovelRetorno", idImovelRetorno).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis."); } finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<ClienteImovelRetorno> obterClientesNovaRelacao() throws ErroRepositorioException { Collection<ClienteImovelRetorno> retorno = null; Session session = HibernateUtil.getSession(); try { String consulta = " select clienteImovelRetorno " + "from ClienteImovelRetorno clienteImovelRetorno, Cliente cliente " + " inner join fetch clienteImovelRetorno.clienteRelacaoTipo clienteRelacaoTipo " + " where clienteImovelRetorno.cliente.id = cliente.id " + " and clienteImovelRetorno.idImovelRetorno in " + " ( select imovelControle.imovelRetorno.id from ImovelControleAtualizacaoCadastral imovelControle, Imovel imovel " + " where imovelControle.situacaoAtualizacaoCadastral.id = " + SituacaoAtualizacaoCadastral.APROVADO + " and imovel.id = imovelControle.imovel.id " + " and imovelControle.dataProcessamento is null ) " ; retorno = (Collection<ClienteImovelRetorno>) session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis."); } finally { HibernateUtil.closeSession(session); } return retorno; } public boolean existeRelacaoClienteImovel(Integer idImovel, Integer idCliente, Integer idClienteRelacaoTipo) throws ErroRepositorioException { Integer retorno = 0; Session session = HibernateUtil.getSession(); try { String consulta = " select count(clienteImovel) " + " from ClienteImovel clienteImovel " + " where clienteImovel.imovel.id = :idImovel " + " and clienteImovel.cliente.id = :idCliente " + " and clienteImovel.clienteRelacaoTipo = :idClienteRelacaoTipo " + " and clienteImovel.dataFimRelacao is null " ; retorno = (Integer) session.createQuery(consulta) .setInteger("idImovel", idImovel) .setInteger("idCliente",idCliente) .setInteger("idClienteRelacaoTipo", idClienteRelacaoTipo).uniqueResult(); return retorno >0; } catch (HibernateException e) { logger.error("Erro ao pesquisar relacao existente de cliente imovel.", e); throw new ErroRepositorioException("Erro ao pesquisar relacao existente de cliente imovel."); } finally { HibernateUtil.closeSession(session); } } @SuppressWarnings("unchecked") public Collection<ClienteImovelRetorno> obterClientesParaIncluir() throws ErroRepositorioException { Collection<ClienteImovelRetorno> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " select clienteImovelRetorno " + "from ClienteImovelRetorno clienteImovelRetorno " + " inner join fetch clienteImovelRetorno.clienteRelacaoTipo clienteRelacaoTipo " + " where clienteImovelRetorno.cliente.id = " + ConstantesSistema.ZERO + " and clienteImovelRetorno.imovel.id in " + " ( select imovelControle.imovelRetorno.idImovel from ImovelControleAtualizacaoCadastral imovelControle, Imovel imovel " + " where imovelControle.situacaoAtualizacaoCadastral.id = " + SituacaoAtualizacaoCadastral.APROVADO + " and imovel.id = imovelControle.imovel.id " + " and imovelControle.dataProcessamento is null ) " ; retorno = (Collection<ClienteImovelRetorno>) session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis."); } finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<IClienteImovel> obterClientesParaExcluirRelacao() throws ErroRepositorioException { Collection<IClienteImovel> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; String subqueryImoveisAprovados = "select imovelControle.imovel.id " + " from ImovelControleAtualizacaoCadastral imovelControle, Imovel imovel, ImovelRetorno imovelRetorno " + " where imovelControle.situacaoAtualizacaoCadastral.id = " + SituacaoAtualizacaoCadastral.APROVADO + " and imovel.id = imovelControle.imovel.id " + " and imovelRetorno.id = imovelControle.imovelRetorno.id " + " and imovelControle.dataProcessamento is null " + " and imovelRetorno.tipoOperacao <> " + AlteracaoTipo.INCLUSAO; String subqueryClientesImovelRetorno = " select clienteImovelRetorno.cliente.id " + "from ClienteImovelRetorno clienteImovelRetorno, Cliente cliente " + " where clienteImovelRetorno.cliente.id = cliente.id " + " and clienteImovelRetorno.imovel.id in " + " ( " + subqueryImoveisAprovados + " ) "; try { consulta = " select clienteImovel " + " from ClienteImovel clienteImovel " + " inner join fetch clienteImovel.imovel imovel " + " inner join fetch clienteImovel.cliente cliente " + " inner join fetch clienteImovel.clienteRelacaoTipo clienteRelacaoTipo " + " where clienteImovel.imovel.id in ("+ subqueryImoveisAprovados +")" + " and clienteImovel.dataFimRelacao is null " + " and clienteImovel.cliente.id not in ("+ subqueryClientesImovelRetorno +")"; retorno = (Collection<IClienteImovel>) session.createQuery(consulta).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis."); } finally { HibernateUtil.closeSession(session); } return retorno; } public void aprovarImoveis(Collection<IImovel> listaImoveis) throws ErroRepositorioException { Session session = HibernateUtil.getSession(); String consulta = ""; try { Date dataAprovacao = new Date(); consulta = "update ImovelControleAtualizacaoCadastral controle " + " set controle.situacaoAtualizacaoCadastral.id = :situacaoAprovado ," + " controle.dataAprovacao = :dataAprovacao " + " where controle.imovelRetorno.id in (:listaImoveis) "; session.createQuery(consulta) .setInteger("situacaoAprovado", SituacaoAtualizacaoCadastral.APROVADO) .setDate("dataAprovacao", dataAprovacao) .setParameterList("listaImoveis", getIdsImovelRetorno(listaImoveis)) .executeUpdate(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao aprovar im�veis."); } finally { HibernateUtil.closeSession(session); } } public Integer obterquantidadeImoveisAprovadosArquivo(Integer idArquivoAtualizacaoCadastral) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " select count(imovelRetorno) " + "from ImovelRetorno imovelRetorno, " + " ArquivoTextoAtualizacaoCadastral arquivo, " + " ImovelControleAtualizacaoCadastral imovelControle " + " where imovelRetorno.idRota = arquivo.rota.id " + " and imovelControle.imovelRetorno.id = imovelRetorno.id " + " and imovelControle.situacaoAtualizacaoCadastral.id = " + SituacaoAtualizacaoCadastral.APROVADO + " and arquivo.id = :idArquivo " ; retorno = (Integer) session.createQuery(consulta).setInteger("idArquivo", idArquivoAtualizacaoCadastral).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis aprovados para tela de an�lise."); } finally { HibernateUtil.closeSession(session); } return retorno; } public Integer obterquantidadeImoveisComAnormalidadeArquivo(Integer idArquivoAtualizacaoCadastral) throws ErroRepositorioException{ Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " select count(imovelRetorno) " + "from ImovelRetorno imovelRetorno, " + " ArquivoTextoAtualizacaoCadastral arquivo, " + " ImovelControleAtualizacaoCadastral imovelControle, " + " CadastroOcorrencia cadastroOcorrencia" + " where imovelRetorno.idRota = arquivo.rota.id " + " and imovelControle.imovelRetorno.id = imovelRetorno.id " + " and imovelControle.cadastroOcorrencia.id = cadastroOcorrencia.id " + " and cadastroOcorrencia.indicadorValidacao = " + ConstantesSistema.NAO + " and arquivo.id = :idArquivo " ; retorno = (Integer) session.createQuery(consulta).setInteger("idArquivo", idArquivoAtualizacaoCadastral).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis com anormalidade para tela de an�lise."); } finally { HibernateUtil.closeSession(session); } return retorno; } public Integer obterquantidadeImoveisComAlteracaoFaturamentoArquivo(Integer idArquivoAtualizacaoCadastral, String colunaAlteracao) throws ErroRepositorioException{ Integer retorno = new Integer(0); Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = " select count(imovelRetorno) " + "from ImovelRetorno imovelRetorno, " + " ArquivoTextoAtualizacaoCadastral arquivo, " + " ImovelControleAtualizacaoCadastral imovelControle, " + " TabelaAtualizacaoCadastral tabelaAtualizacaoCadastral, " + " TabelaColunaAtualizacaoCadastral tabelaColunaAtualizacaoCadastral, " + " TabelaColuna tabelaColuna " + " where imovelRetorno.idRota = arquivo.rota.id " + " and imovelControle.imovelRetorno.id = imovelRetorno.id " + " and tabelaAtualizacaoCadastral.codigoImovel = imovelRetorno.idImovel " + " and tabelaColunaAtualizacaoCadastral.tabelaAtualizacaoCadastral.id = tabelaAtualizacaoCadastral.id " + " and tabelaColunaAtualizacaoCadastral.tabelaColuna.id = tabelaColuna.id" + " and tabelaColuna.nomeAbreviado like :colunaAlteracao " + " and arquivo.id = :idArquivo " ; retorno = (Integer) session.createQuery(consulta) .setInteger("idArquivo", idArquivoAtualizacaoCadastral) .setString("colunaAlteracao", colunaAlteracao).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis com altera��o de hidr�metro para tela de an�lise."); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection pesquisarDadosFichaFiscalizacaoCadastral(List<Integer> listaIdImoveis) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "SELECT imac.imov_id as idImovel, " + "loca.loca_nmlocalidade as nomeLocalidade, " + "imac.imac_cdsetorcomercial as codigoSetor, " + "imac.imac_nnquadra as numeroQuadra, " + "imac.imac_nnlote as numeroLote, " + "imac.imac_nnsublote as numeroSublote, " + "imac.imac_dslogradouro as descricaoLogradouroImovel, " + "imac.logr_id as idLogradouroImovel, " + "imac.imac_nnimovel as numeroImovel, " + "imac.imac_dscomplementoendereco as complementoEnderecoImovel, " + "imac.imac_nmbairro as bairroImovel, " + "imac.imac_cdcep as cepImovel, " + "rota.rota_cdrota as codigoRota, " + "face.qdfa_nnfacequadra as numeroFace, " + "imac.imac_nmmunicipio as nomeMunicipioImovel, " + "imac.muni_id as idMunicipioImovel, " + "clac.clie_id as idCliente, " + "clac.clac_nmcliente as nomeCliente, " + "clac.clac_nncpfcnpj as cpfCnpj, " + "clac.clac_nnrg as rg, " + "clac.clac_dsufsiglaoerg as uf, " + "clac.psex_id as sexo, " + "clac.clac_dslogradouro as descricaoLogradouroCliente, " + "clac.clac_nnimovel as numeroImovelCliente, " + "clac.edtp_id as enderecoTipoCliente, " + "clac.clac_nmmunicipio as nomeMunicipioCliente, " + "clac.clac_dscomplementoendereco as complementoEnderecoCliente, " + "clac.clac_nmbairro as bairroCliente, " + "clac.clac_cdcep as cepCliente, " + "clac.clac_dsemail as emailCliente, " + "cfac_cdddd as ddd, " + "CASE WHEN fnet_id IN (1,2,4) THEN cfac.cfac_nnfone END as telefone, " + "CASE WHEN fnet_id = 3 THEN cfac.cfac_nnfone END as celular " + "FROM cadastro.imovel_atlz_cadastral imac " + "INNER JOIN atualizacaocadastral.imovel_controle_atlz_cad icac ON icac.imov_id = imac.imov_id " + "INNER JOIN cadastro.imovel imov ON imov.imov_id = imac.imov_id " + "INNER JOIN cadastro.quadra qdra ON qdra.qdra_id = imov.qdra_id " + "INNER JOIN cadastro.quadra_face face ON face.qdra_id = qdra.qdra_id " + "INNER JOIN micromedicao.rota rota ON rota.rota_id = qdra.rota_id " + "INNER JOIN cadastro.localidade loca ON loca.loca_id = imac.loca_id " + "INNER JOIN cadastro.cliente_atlz_cadastral clac ON clac.imov_id = imac.imov_id " + "LEFT JOIN cadastro.cliente_fone_atlz_cad cfac ON cfac.clac_id = clac.clac_id " + "WHERE icac.siac_id = :situacao " + "AND imac.imov_id IN (:listaIdImoveis)"; retorno = (Collection) session.createSQLQuery(consulta) .addScalar("idImovel", Hibernate.INTEGER) .addScalar("nomeLocalidade", Hibernate.STRING) .addScalar("codigoSetor", Hibernate.INTEGER) .addScalar("numeroQuadra", Hibernate.INTEGER) .addScalar("numeroLote", Hibernate.INTEGER) .addScalar("numeroSublote", Hibernate.INTEGER) .addScalar("descricaoLogradouroImovel", Hibernate.STRING) .addScalar("idLogradouroImovel", Hibernate.INTEGER) .addScalar("numeroImovel", Hibernate.STRING) .addScalar("complementoEnderecoImovel", Hibernate.STRING) .addScalar("bairroImovel", Hibernate.STRING) .addScalar("cepImovel", Hibernate.INTEGER) .addScalar("codigoRota", Hibernate.INTEGER) .addScalar("numeroFace", Hibernate.INTEGER) .addScalar("nomeMunicipioImovel", Hibernate.STRING) .addScalar("idMunicipioImovel", Hibernate.INTEGER) .addScalar("idCliente", Hibernate.INTEGER) .addScalar("nomeCliente", Hibernate.STRING) .addScalar("cpfCnpj", Hibernate.STRING) .addScalar("rg", Hibernate.STRING) .addScalar("uf", Hibernate.STRING) .addScalar("sexo", Hibernate.INTEGER) .addScalar("descricaoLogradouroCliente", Hibernate.STRING) .addScalar("numeroImovelCliente", Hibernate.STRING) .addScalar("enderecoTipoCliente", Hibernate.INTEGER) .addScalar("nomeMunicipioCliente", Hibernate.STRING) .addScalar("complementoEnderecoCliente", Hibernate.STRING) .addScalar("bairroCliente", Hibernate.STRING) .addScalar("cepCliente", Hibernate.INTEGER) .addScalar("emailCliente", Hibernate.STRING) .addScalar("ddd", Hibernate.STRING) .addScalar("telefone", Hibernate.STRING) .addScalar("celular", Hibernate.STRING) .setInteger("situacao", SituacaoAtualizacaoCadastral.EM_FISCALIZACAO) .setParameterList("listaIdImoveis", listaIdImoveis) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imoveis para fiscalizacao."); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection pesquisarDadosImoveisPorRotaAtualizacaoCadastral(String idLocalidade, String cdSetorComercial, String cdRota) throws ErroRepositorioException { Collection retorno = null; Session session = HibernateUtil.getSession(); try { String consultaImovelControle = "" + " SELECT icac.imov_id " + " FROM atualizacaocadastral.imovel_controle_atlz_cad icac " + " INNER JOIN cadastro.imovel i ON i.imov_id = icac.imov_id " + " INNER JOIN cadastro.localidade l ON l.loca_id = i.loca_id " + " INNER JOIN cadastro.setor_comercial st ON st.stcm_id = i.stcm_id " + " INNER JOIN cadastro.quadra q ON q.qdra_id = i.qdra_id " + " INNER JOIN micromedicao.rota r ON r.rota_id = q.rota_id " + " WHERE i.loca_id = :idLocalidade AND st.stcm_cdsetorcomercial = :cdSetorComercial AND r.rota_cdRota = :cdRota "; String consultaImoveisForaDoRecadastramento = "" + " SELECT i.imov_id as idImovel, " + " i.loca_id as idLocalidade, " + " l.loca_nmlocalidade as nomeLocalidade, " + " st.stcm_cdsetorcomercial as codigoSetorComercial, " + " q.qdra_nnquadra as numQuadra, " + " i.imov_nnlote as numLote, " + " i.imov_nnsublote as numSubLote, " + " la.last_dsligacaoaguasituacao as descSituacaoLigacaoAgua, " + " 'N�O EST� EM RECADASTRAMENTO' as descSituacaoImovelRecadastramento, " + " 0 as tipoOperacao, " + " 0 as idImovelRetorno " + " FROM cadastro.imovel i " + " INNER JOIN atendimentopublico.ligacao_agua_situacao la ON i.last_id = la.last_id " + " INNER JOIN cadastro.localidade l ON i.loca_id = l.loca_id " + " INNER JOIN cadastro.setor_comercial st ON st.stcm_id = i.stcm_id " + " INNER JOIN cadastro.quadra q ON q.qdra_id = i.qdra_id " + " INNER JOIN micromedicao.rota r ON r.rota_id = q.rota_id " + " WHERE i.loca_id = :idLocalidade AND st.stcm_cdsetorcomercial = :cdSetorComercial AND r.rota_cdRota = :cdRota " + " AND imov_icexclusao = :indicadorExclusao " + " AND imov_id NOT IN (" + consultaImovelControle + ")"; String consultaImovelControleComRetorno = "" + " SELECT icac.imov_id " + " FROM atualizacaocadastral.imovel_controle_atlz_cad icac " + " INNER JOIN cadastro.imovel i ON i.imov_id = icac.imov_id " + " INNER JOIN atualizacaocadastral.imovel_retorno ir ON ir.imov_id = icac.imov_id " + " INNER JOIN cadastro.localidade l ON l.loca_id = i.loca_id " + " INNER JOIN cadastro.setor_comercial st ON st.stcm_id = i.stcm_id " + " INNER JOIN cadastro.quadra q ON q.qdra_id = i.qdra_id " + " INNER JOIN micromedicao.rota r ON r.rota_id = q.rota_id " + " WHERE i.loca_id = :idLocalidade AND st.stcm_cdsetorcomercial = :cdSetorComercial AND r.rota_cdRota = :cdRota "; String consultaImoveisRecadastramento = "" + "SELECT i.imov_id as idImovel, " + " i.loca_id as idLocalidade, " + " l.loca_nmlocalidade as nomeLocalidade, " + " st.stcm_cdsetorcomercial as codigoSetorComercial, " + " q.qdra_nnquadra as numQuadra, " + " i.imov_nnlote as numLote, " + " i.imov_nnsublote as numSubLote, " + " la.last_dsligacaoaguasituacao as descSituacaoLigacaoAgua, " + " sac.siac_dssituacao as descSituacaoImovelRecadastramento, " + " 0 as tipoOperacao, " + " 0 as idImovelRetorno " + " FROM cadastro.imovel i " + " INNER JOIN atualizacaocadastral.imovel_controle_atlz_cad icac ON icac.imov_id = i.imov_id " + " INNER JOIN cadastro.situacao_atlz_cadastral sac on icac.siac_id = sac.siac_id " + " INNER JOIN atendimentopublico.ligacao_agua_situacao la ON i.last_id = la.last_id " + " INNER JOIN cadastro.localidade l ON i.loca_id = l.loca_id " + " INNER JOIN cadastro.setor_comercial st ON st.stcm_id = i.stcm_id " + " INNER JOIN cadastro.quadra q ON q.qdra_id = i.qdra_id " + " INNER JOIN micromedicao.rota r ON r.rota_id = q.rota_id " + " WHERE i.loca_id = :idLocalidade AND st.stcm_cdsetorcomercial = :cdSetorComercial AND r.rota_cdRota = :cdRota " + " AND imov_icexclusao = :indicadorExclusao " + " AND i.imov_id NOT IN ("+ consultaImovelControleComRetorno + ")"; String consultarImoveisRetorno = "" + "SELECT ir.imov_id as idImovel, " + " ir.loca_id as idLocalidade, " + " l.loca_nmlocalidade as nomeLocalidade, " + " imre_cdsetorcomercial as codigoSetorComercial, " + " imre_nnquadra as numQuadra, " + " i.imov_nnlote as numLote, " + " i.imov_nnsublote as numSubLote, " + " la.last_dsligacaoaguasituacao as descSituacaoLigacaoAgua, " + " sac.siac_dssituacao as descSituacaoImovelRecadastramento, " + " ir.imac_tipooperacao as tipoOperacao, " + " ir.imre_id as idImovelRetorno " + " FROM atualizacaocadastral.imovel_retorno ir " + " INNER JOIN cadastro.imovel i on i.imov_id = ir.imov_id " + " INNER JOIN atendimentopublico.ligacao_agua_situacao la on la.last_id = ir.last_id " + " INNER JOIN atualizacaocadastral.imovel_controle_atlz_cad icac on icac.imov_id = ir.imov_id " + " INNER JOIN cadastro.situacao_atlz_cadastral sac on sac.siac_id = icac.siac_id " + " INNER JOIN micromedicao.rota r on r.rota_id = ir.rota_id " + " INNER JOIN cadastro.localidade l on l.loca_id = ir.loca_id " + " WHERE ir.loca_id = :idLocalidade AND ir.imre_cdsetorcomercial = :cdSetorComercial AND r.rota_cdRota = :cdRota "; String consultaPrincipal = "" + " SELECT idImovel, " + " idLocalidade, " + " nomeLocalidade, " + " codigoSetorComercial, " + " numQuadra, " + " numLote, " + " numSubLote, " + " descSituacaoLigacaoAgua, " + " descSituacaoImovelRecadastramento, " + " tipoOperacao, " + " idImovelRetorno " + " FROM (" + consultaImoveisForaDoRecadastramento + " UNION " + consultaImoveisRecadastramento + " UNION " + consultarImoveisRetorno + ") as imoveis " + " ORDER BY idLocalidade, codigoSetorComercial, numQuadra, numLote, numSubLote"; retorno = (Collection) session.createSQLQuery(consultaPrincipal) .addScalar("idImovel", Hibernate.INTEGER) .addScalar("idLocalidade", Hibernate.INTEGER) .addScalar("nomeLocalidade", Hibernate.STRING) .addScalar("codigoSetorComercial", Hibernate.INTEGER) .addScalar("numQuadra", Hibernate.INTEGER) .addScalar("numLote", Hibernate.INTEGER) .addScalar("numSubLote", Hibernate.INTEGER) .addScalar("descSituacaoLigacaoAgua", Hibernate.STRING) .addScalar("descSituacaoImovelRecadastramento", Hibernate.STRING) .addScalar("tipoOperacao", Hibernate.INTEGER) .addScalar("idImovelRetorno", Hibernate.INTEGER) .setInteger("idLocalidade", Integer.parseInt(idLocalidade)) .setInteger("cdSetorComercial", Integer.parseInt(cdSetorComercial)) .setInteger("cdRota", Integer.parseInt(cdRota)) .setShort("indicadorExclusao", ConstantesSistema.NAO) .list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } @SuppressWarnings("unchecked") public Collection<ImovelSubcategoriaRetorno> pesquisarSubcategoriasImovelRetorno(Integer idImovelRetorno) throws ErroRepositorioException { Collection<ImovelSubcategoriaRetorno> retorno = null; Session session = HibernateUtil.getSession(); String consulta = null; try { consulta = "from ImovelSubcategoriaRetorno imovelSubcategoria " + " inner join fetch imovelSubcategoria.subcategoria subcategoria " + " inner join fetch subcategoria.categoria categoria " + " where imovelSubcategoria.idImovelRetorno = :idImovelRetorno " ; retorno = (Collection<ImovelSubcategoriaRetorno>) session.createQuery(consulta).setInteger("idImovelRetorno", idImovelRetorno).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar imovel subcategoria."); } finally { HibernateUtil.closeSession(session); } return retorno; } public Collection<ImovelTipoOcupanteQuantidadeAtualizacaoCadastral> pesquisarOcupantesAtualizacaoCadastral(Integer idImovel) throws ErroRepositorioException{ Collection<ImovelTipoOcupanteQuantidadeAtualizacaoCadastral> retorno = null; Session session = HibernateUtil.getSession(); StringBuilder consulta = new StringBuilder(); try { consulta.append("from ImovelTipoOcupanteQuantidadeAtualizacaoCadastral e ") .append(" inner join fetch e.tipoOcupante") .append(" where e.imovel.id = :idImovel ") ; retorno = (Collection<ImovelTipoOcupanteQuantidadeAtualizacaoCadastral>) session.createQuery(consulta.toString()).setInteger("idImovel", idImovel).list(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro ao pesquisar tipos ocupantes."); } finally { HibernateUtil.closeSession(session); } return retorno; } }