package gcom.micromedicao.hidrometro;
import gcom.util.ErroRepositorioException;
import gcom.util.HibernateUtil;
import gcom.util.filtro.Filtro;
import gcom.util.filtro.GeradorHQLCondicional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.concurrent.CopyOnWriteArraySet;
import org.hibernate.HibernateException;
import org.hibernate.Session;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
*/
public class RepositorioHidrometroHBM implements IRepositorioHidrometro {
private static IRepositorioHidrometro instancia;
/**
* Construtor da classe RepositorioMicromedicaoHBM
*/
private RepositorioHidrometroHBM() {
}
/**
* Retorna o valor de instancia
*
* @return O valor de instancia
*/
public static IRepositorioHidrometro getInstancia() {
if (instancia == null) {
instancia = new RepositorioHidrometroHBM();
}
return instancia;
}
public Collection pesquisarHidrometroPorHidrometroMovimentacao(Filtro filtro)
throws ErroRepositorioException {
// cria a cole��o de retorno
Collection retorno = null;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
// pesquisa a cole��o de atividades e atribui a vari�vel "retorno"
retorno = new ArrayList(new CopyOnWriteArraySet(GeradorHQLCondicional
.gerarCondicionalQuery(
filtro,
"hidrometroMovimentado",
"from gcom.micromedicao.hidrometro.HidrometroMovimentado as hidrometroMovimentado ",
session).list()));
// Carrega os objetos informados no filtro
/* if (!filtro.getColecaoCaminhosParaCarregamentoEntidades().isEmpty()) {
PersistenciaUtil
.processaObjetosParaCarregamento(filtro
.getColecaoCaminhosParaCarregamentoEntidades(),
retorno);
}
*/ } 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;
}
/**
* [UC0000] - Efetuar Retirada de Hidr�metro
*
* Pesquisa todos os campos do Hidrometro e seus relacionamentos obrigat�rios.
* @author Thiago Ten�rio
* @date 28/09/2006
*
* @param idHidrometro
* @throws ErroRepositorioException
*/
public Object[] pesquisarHidrometroPeloId(Integer idHidrometro)
throws ErroRepositorioException {
Session session = HibernateUtil.getSession();
String consulta;
Object[] retornoConsulta = null;
try {
consulta = "select h.id, h.numero, "
+ "h.dataAquisicao, h.anoFabricacao, "
+ "h.indicadorMacromedidor, h.dataUltimaRevisao, "
+ "h.dataBaixa, h.numeroLeituraAcumulada, "
+ "h.numeroDigitosLeitura, htp.id, "
+ "hsit.id, hmarc.id, hcap.id, hcm.id, "
+ "hdm.id "
+ "from Hidrometro h "
+ "inner join h.hidrometroCapacidade hcap "
+ "inner join h.hidrometroMarca hmarc "
+ "inner join h.hidrometroTipo htp "
+ "inner join h.hidrometroDiametro hdm "
+ "inner join h.hidrometroSituacao hsit "
+ "inner join h.hidrometroClasseMetrologica hcm "
+ "where h.id = :idHidrometro";
retornoConsulta = (Object[]) session.createQuery(consulta)
.setInteger("idHidrometro", idHidrometro).setMaxResults(1)
.uniqueResult();
} catch (HibernateException e) {
e.printStackTrace();
throw new ErroRepositorioException("Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retornoConsulta;
}
}