package gcom.cadastro.localidade;
import gcom.micromedicao.bean.NumeroQuadraMinimoMaximoDaRotaHelper;
import gcom.util.ConstantesSistema;
import gcom.util.ControladorException;
import gcom.util.ErroRepositorioException;
import gcom.util.HibernateUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
/**
* <p>
*
* Title: GCOM
* </p>
* <p>
*
* Description: Sistema de Gest�o Comercial
* </p>
* <p>
*
* Copyright: Copyright (c) 2005
* </p>
* <p>
*
* Company: COMPESA - Companhia Pernambucana de Saneamento
* </p>
*
* @author Rossiter
* @created 8 de Setembro de 2005
* @version 1.0
*/
public class RepositorioQuadraHBM implements IRepositorioQuadra {
private static IRepositorioQuadra instancia;
/**
* Constructor for the RepositorioQuadraHBM object
*/
public RepositorioQuadraHBM() {
}
/**
* Retorna o valor de instancia
*
* @return O valor de instancia
*/
public static IRepositorioQuadra getInstancia() {
if (instancia == null) {
instancia = new RepositorioQuadraHBM();
}
return instancia;
}
/**
* Pesquisa uma cole��o de cliente imovel com uma query especifica
*
* @param idSetorComercial
* Description of the Parameter
* @return Description of the Return Value
* @exception ErroRepositorioException
* Description of the Exception
*/
public Collection pesquisarQuadra(int idSetorComercial)
throws ErroRepositorioException {
// cria a cole��o de retorno
Collection retorno = null;
// Query
String consulta;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
// pesquisa a cole��o de quadras e atribui a vari�vel "retorno"
consulta = "SELECT quadra.id, quadra.numeroQuadra, "
+ "rota.id, ftgr.id "
+ "FROM gcom.cadastro.localidade.Quadra as quadra "
+ "INNER JOIN quadra.rota rota "
+ "INNER JOIN rota.faturamentoGrupo ftgr "
+ "WHERE quadra.setorComercial.id = " + idSetorComercial
+ " and quadra.indicadorUso = 1";
retorno = session.createQuery(consulta).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 de atividades pesquisada(s)
return retorno;
}
/**
* M�todo que retorna o maior n�mero da quadra de um setor comercial
*
* @author Rafael Corr�a - Vivianne Sousa
* @date 11/07/2006 - 12/07/2006
*
* @param idSetorComercial
* @return
* @throws ControladorException
*/
public int pesquisarMaximoCodigoQuadra(Integer idSetorComercial)
throws ErroRepositorioException {
int retorno = 0;
Object maxCodigoQuadra;
Session session = HibernateUtil.getSession();
String consulta;
try {
consulta = "SELECT max(q.numeroQuadra) " + "FROM Quadra q "
+ "INNER JOIN q.setorComercial sc "
+ "WHERE sc.id = :idSetorComercial ";
maxCodigoQuadra = session.createQuery(consulta).setInteger(
"idSetorComercial", idSetorComercial).setMaxResults(1)
.uniqueResult();
if (maxCodigoQuadra != null) {
retorno = (Integer) maxCodigoQuadra;
}
} catch (HibernateException e) {
throw new ErroRepositorioException("Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* Description of the Method
*
* @param quadraParametros
* Description of the Parameter
* @return Description of the Return Value
* @exception ErroRepositorioException
* Description of the Exception
*/
/*
* public Collection pesquisarQuadraRelatorio(Quadra quadraParametros)
* throws ErroRepositorioException { //cria a cole��o de retorno Collection
* retorno = null;
*
* //Inicializa os parametros da quadra Integer idLocalidade =
* quadraParametros.getSetorComercial().getLocalidade().getId(); int
* codigoSetorComercial = quadraParametros.getSetorComercial().getCodigo();
* int numeroQuadra = quadraParametros.getNumeroQuadra(); String nomeBairro =
* quadraParametros.getBairro().getNome(); Short indicadorUso =
* quadraParametros.getIndicadorUso(); //Query StringBuffer consulta = new
* StringBuffer();
*
* //obt�m a sess�o Session session = HibernateUtil.getSession(); try {
* //pesquisa a cole��o de quadras e atribui a vari�vel "retorno"
* consulta.append("select new
* gcom.relatorio.cadastro.localidade.RelatorioManterQuadraBean" +
* "(quadra.numeroQuadra,localidade.descricao," +
* "setorComercial.codigo,setorComercial.descricao," +
* "quadra.quadraPerfil.descricao," +
* "quadra.indicadorRedeAgua,quadra.indicadorRedeEsgoto," +
* "setorComercial.municipio.nome,quadra.bairro.nome," +
* "quadra.bacia.sistemaEsgoto.descricaoAbreviada," +
* "quadra.bacia.descricao," +
* "quadra.distritoOperacional.descricaoAbreviada," +
* "quadra.ibgeSetorCensitario.descricao," +
* "quadra.zeis.descricaoAbreviada," + "quadra.rota.id,quadra.indicadorUso) " +
* "from gcom.cadastro.localidade.Localidade as localidade," +
* "gcom.cadastro.localidade.SetorComercial as setorComercial," +
* "gcom.cadastro.localidade.Quadra as quadra " + "left join quadra.bacia "+
* "left join quadra.bacia.sistemaEsgoto " + "left join
* quadra.ibgeSetorCensitario " + "left join quadra.zeis " + "left join
* quadra.distritoOperacional " + "where (quadra.setorComercial.id =
* setorComercial.id) AND " + "(setorComercial.localidade.id =
* localidade.id) "); if (idLocalidade != null && !idLocalidade.equals("")) {
* consulta.append("AND(quadra.setorComercial.localidade.id=" + idLocalidade + ")
* "); } if (codigoSetorComercial != 0) {
* consulta.append("AND(quadra.setorComercial.codigo=" +
* codigoSetorComercial + ") "); } if (numeroQuadra != 0) {
* consulta.append("AND(quadra.numeroQuadra=" + numeroQuadra + ") "); } if
* (nomeBairro != null && !nomeBairro.equals("")) {
* consulta.append("AND(quadra.bairro.nome like" + nomeBairro + "%) "); }
*
* if (indicadorUso != null && !indicadorUso.equals("")) {
* consulta.append("AND(quadra.indicadorUso=" + indicadorUso + ") "); }
* pesquisar
*
* consulta.append("order by
* setorComercial.localidade.id,setorComercial.codigo,quadra.numeroQuadra");
*
* retorno = session.createQuery(consulta.toString()).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 de atividades
* pesquisada(s) return retorno; }
*
*/
public Collection pesquisarQuadrasPorSetorComercialFaturamentoGrupo(
int localidade, int idSetoresComercial[], Integer idFaturamentoGrupo)
throws ErroRepositorioException {
// cria a cole��o de retorno
Collection retorno = null;
// Query
String consulta;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
Collection idsSetores = new ArrayList();
for (int i = 0; i < idSetoresComercial.length; i++) {
idsSetores.add(new Integer(idSetoresComercial[i]));
}
try {
// pesquisa a cole��o de quadras e atribui a vari�vel "retorno"
consulta = "SELECT quadra.id, quadra.numeroQuadra, "
+ "quadra.setorComercial.id, quadra.setorComercial.codigo, re.id, quadra.ultimaAlteracao," +
" quadra.ultimaAlteracao "
+ "FROM gcom.cadastro.localidade.Quadra as quadra "
+ "INNER JOIN quadra.setorComercial stcm "
+ "LEFT OUTER JOIN quadra.roteiroEmpresa re "
+ "WHERE quadra.setorComercial.id in (:idsSetores) "
+ " and stcm.localidade = "
+ localidade
+ " and quadra.indicadorUso = 1 "
+ " and quadra.rota.id in "
+ "(SELECT rota.id from quadra.rota as rota "
+ "where rota.faturamentoGrupo.id = "
+ idFaturamentoGrupo
+ ") "
+ " and quadra.roteiroEmpresa is null"
+ " order by quadra.setorComercial.codigo, quadra.numeroQuadra";
retorno = session.createQuery(consulta).setParameterList(
"idsSetores", idsSetores).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 de atividades pesquisada(s)
return retorno;
}
/**
*
* [UC608] Efetuar Liga��o de Esgoto sem RA
* @author S�vio Luiz
* @date 10/09/2007
*
* @return
*/
public Short pesquisarIndicadorRedeEsgotoQuadra(int idImovel)
throws ErroRepositorioException {
// cria a cole��o de retorno
Short retorno = null;
// Query
String consulta;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
// pesquisa a cole��o de quadras e atribui a vari�vel "retorno"
consulta = "SELECT quad.indicadorRedeEsgoto " + "FROM Imovel imov "
+ "INNER JOIN imov.quadra quad " + "WHERE imov.id = "
+ idImovel + " and quad.indicadorUso = 1";
retorno = (Short) 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 de atividades pesquisada(s)
return retorno;
}
public Collection pesquisarQuadrasPorRoteiroEmpresa(
int idRoteiroEmpresa)
throws ErroRepositorioException {
// cria a cole��o de retorno
Collection retorno = null;
// Query
String consulta;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
// pesquisa a cole��o de quadras e atribui a vari�vel "retorno"
consulta = "SELECT quadra.id, quadra.numeroQuadra, "
+ "quadra.setorComercial.id, quadra.setorComercial.codigo, re.id, rota.id, "
+ "rota.faturamentoGrupo.id, stcm.localidade.id, loca.descricao, quadra.ultimaAlteracao "
+ "FROM gcom.cadastro.localidade.Quadra as quadra "
+ "INNER JOIN quadra.setorComercial stcm "
+ "INNER JOIN stcm.localidade loca "
+ "INNER JOIN quadra.rota rota "
+ "LEFT OUTER JOIN quadra.roteiroEmpresa re "
+ "WHERE re.id = " + idRoteiroEmpresa
+ " order by quadra.setorComercial.codigo, quadra.numeroQuadra";
retorno = session.createQuery(consulta).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 de atividades pesquisada(s)
return retorno;
}
/**
* @author: Vivianne Sousa
* @date: 16/05/2008
*/
public Collection pesquisarIdQuadraPorSetorComercial(Integer idSetorComercial)
throws ErroRepositorioException {
// cria a cole��o de retorno
Collection retorno = null;
// Query
String consulta;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
// pesquisa a cole��o de quadras e atribui a vari�vel "retorno"
consulta = " SELECT quadra.id "
+ " FROM Quadra as quadra "
+ " WHERE quadra.setorComercial.id = :idSetorComercial"
+ " AND quadra.indicadorUso = :indicadorUso ";
retorno = session.createQuery(consulta)
.setInteger("idSetorComercial", idSetorComercial)
.setInteger("indicadorUso", ConstantesSistema.INDICADOR_USO_ATIVO)
.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 de atividades pesquisada(s)
return retorno;
}
/**
* [????] Informar Subdivis�es de Rota
*
* Atualiza o campo rota das quadras que pertencem ao intervalo de numero informado e ao setor comercial
*
* @author: Victor Cisneiros
* @date: 30/09/2008
*/
public void atualizarRotaDasQuadrasNoIntervaloNumero(
int idNovaRota, int idSetorComercial, int numeroInicial, int numeroFinal) throws ErroRepositorioException {
String consulta;
Session session = HibernateUtil.getSession();
try {
consulta = " UPDATE Quadra q SET rota.id = :idNovaRota WHERE " +
"q.setorComercial.id = :idSetorComercial AND " +
"q.numeroQuadra BETWEEN :numeroInicial AND :numeroFinal ";
session.createQuery(consulta)
.setInteger("idNovaRota", idNovaRota)
.setInteger("idSetorComercial", idSetorComercial)
.setInteger("numeroInicial", numeroInicial)
.setInteger("numeroFinal", numeroFinal)
.executeUpdate();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
}
/**
* [????] Informar Subdivis�es de Rota
*
* @author: Victor Cisneiros
* @date: 30/09/2008
*/
public Collection<NumeroQuadraMinimoMaximoDaRotaHelper> pesquisarNumeroQuadraMininoMaximoDaRota(
Collection<Integer> idsRotas) throws ErroRepositorioException {
List<NumeroQuadraMinimoMaximoDaRotaHelper> retorno = new ArrayList<NumeroQuadraMinimoMaximoDaRotaHelper>();
String consulta;
Session session = HibernateUtil.getSession();
try {
consulta =
"SELECT " +
"q.rota.id, " +
"MIN(q.numeroQuadra), " +
"MAX(q.numeroQuadra)," +
"COUNT(q.rota.id) " +
"FROM Quadra q " +
"WHERE " +
"q.rota.id IN (:idsRotas) " +
"GROUP BY " +
"q.rota.id ";
Collection<Object[]> retornoConsulta = session.createQuery(consulta)
.setParameterList("idsRotas", idsRotas).list();
for (Object[] linha : retornoConsulta) {
NumeroQuadraMinimoMaximoDaRotaHelper helper = new NumeroQuadraMinimoMaximoDaRotaHelper();
helper.setIdRota((Integer) linha[0]);
helper.setNumeroQuadraMinimo((Integer) linha[1]);
helper.setNumeroQuadraMaximo((Integer) linha[2]);
helper.setQuantidadeQuadras(new Integer(linha[3].toString()));
retorno.add(helper);
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC0???] Informar Subdivis�es de Rota
*
* @author: Victor Cisneiros
* @date: 27/10/2008
*/
public Integer pesqisarQuantidadeQuadrasDaRota(
Integer idRota, Integer quadraInicial, Integer quadraFinal) throws ErroRepositorioException {
Integer retorno = 0;
String consulta;
Session session = HibernateUtil.getSession();
try {
consulta =
"SELECT " +
"COUNT(*) " +
"FROM Quadra q " +
"WHERE " +
"q.rota.id = (:idRota) " +
"AND q.numeroQuadra >= :quadraInicial " +
"AND q.numeroQuadra <= :quadraFinal ";
retorno = (Integer) session.createQuery(consulta)
.setInteger("idRota", idRota)
.setInteger("quadraInicial", quadraInicial)
.setInteger("quadraFinal", quadraFinal)
.uniqueResult();
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* Integra��o com o conceito de face da quadra
*
* @author Raphael Rossiter
* @date 21/05/2009
*
* @param idImovel
* @return Quadra
* @throws ErroRepositorioException
*/
public Quadra pesquisarQuadra(Integer idImovel)throws ErroRepositorioException {
Quadra retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try {
consulta = "SELECT qdra " + "FROM Imovel imov "
+ "INNER JOIN imov.quadra qdra "
+ "LEFT JOIN FETCH qdra.distritoOperacional diop "
+ "LEFT JOIN FETCH qdra.bacia baci "
+ "LEFT JOIN FETCH baci.sistemaEsgoto sesg "
+ "LEFT JOIN FETCH sesg.divisaoEsgoto dves "
+ "WHERE imov.id = :idImovel ";
retorno = (Quadra) 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;
}
/**
* Integra��o com o conceito de face da quadra
*
* @author Raphael Rossiter
* @date 21/05/2009
*
* @param idImovel
* @return QuadraFace
* @throws ErroRepositorioException
*/
public QuadraFace pesquisarQuadraFace(Integer idImovel)throws ErroRepositorioException {
QuadraFace retorno = null;
Session session = HibernateUtil.getSession();
String consulta;
try {
consulta = "SELECT qdfa " + "FROM Imovel imov "
+ "INNER JOIN imov.quadraFace qdfa "
+ "LEFT JOIN FETCH qdfa.distritoOperacional diop "
+ "LEFT JOIN FETCH qdfa.bacia baci "
+ "LEFT JOIN FETCH baci.sistemaEsgoto sesg "
+ "LEFT JOIN FETCH sesg.divisaoEsgoto dves "
+ "WHERE imov.id = :idImovel ";
retorno = (QuadraFace) 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;
}
}