package gcom.cadastro.localidade; import gcom.util.ErroRepositorioException; import gcom.util.HibernateUtil; import gcom.util.Util; import java.util.Collection; import org.hibernate.Hibernate; import org.hibernate.HibernateException; import org.hibernate.Session; /** * * Title: GCOM * * Description: Reposit�rio de Ger�ncia Regional * * Copyright: Copyright (c) 2005 * * Company: COMPESA - Companhia Pernambucana de Saneamento * * @author Pedro Alexandre * @created 13 de Janeiro de 2006 * @version 1.0 */ public class RepositorioGerenciaRegionalHBM implements IRepositorioGerenciaRegional { // cria uma vari�vel da inteface do reposit�rio de ger�ncia regional private static IRepositorioGerenciaRegional instancia; // construtor da classe private RepositorioGerenciaRegionalHBM() { } // retorna uma inst�ncia do reposit�rio public static IRepositorioGerenciaRegional getInstancia() { // se n�o existe ainda a inst�ncia if (instancia == null) { // cria a inst�ncia do reposit�rio instancia = new RepositorioGerenciaRegionalHBM(); } // retorna a inst�ncia do reposit�rio return instancia; } /** * Pesquisa uma cole��o de ger�ncias regionais * * @return Cole��o de Ger�ncias Regionais * @exception ErroRepositorioException * Erro no hibernate */ public Collection<GerenciaRegional> pesquisarGerenciaRegional() 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 gerenciaRegional " + "from GerenciaRegional gerenciaRegional "; // pesquisa a cole��o de acordo com o par�metro informado 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 pesquisada return retorno; } /** * Pesquisa uma ger�ncia regional pelo id * * @author Rafael Corr�a * @date 01/08/2006 * * @return Ger�ncia Regional * @exception ErroRepositorioException * Erro no hibernate */ public Object[] pesquisarObjetoGerenciaRegionalRelatorio( Integer idGerenciaRegional) 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 gr.greg_id as id, " + "gr.greg_nmabreviado as nomeAbreviado " + "from cadastro.gerencia_regional gr " + "where gr.greg_id = " + idGerenciaRegional.toString(); // pesquisa a cole��o de acordo com o par�metro informado Collection colecaoGerenciasRegionais = session.createSQLQuery(consulta) .addScalar("id", Hibernate.INTEGER) .addScalar("nomeAbreviado", Hibernate.STRING).list(); retorno = Util.retonarObjetoDeColecaoArray(colecaoGerenciasRegionais); // 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; } /** * Pesquisa o id da ger�ncia regional para a qual a localidade pertence. * * [UC0267] Encerrar Arrecada��o do M�s * * @author Pedro Alexandre * @date 05/01/2007 * * @param idLocalidade * @return * @throws ErroRepositorioException */ public Integer pesquisarIdGerenciaParaLocalidade(Integer idLocalidade) throws ErroRepositorioException { Integer retorno = null; Session session = HibernateUtil.getSession(); String consulta = ""; try { consulta = "select greg.id from Localidade loca " + "left join loca.gerenciaRegional greg " + "where loca.id = :idLocalidade"; retorno = (Integer) session.createQuery(consulta).setInteger("idLocalidade", idLocalidade).uniqueResult(); } catch (HibernateException e) { throw new ErroRepositorioException(e, "Erro no Hibernate"); } finally { HibernateUtil.closeSession(session); } return retorno; } }