package gcom.seguranca.acesso.usuario;
import gcom.seguranca.acesso.Grupo;
import gcom.seguranca.acesso.PermissaoEspecial;
import gcom.util.ConstantesSistema;
import gcom.util.ErroRepositorioException;
import gcom.util.HibernateUtil;
import gcom.util.Util;
import gcom.util.filtro.GeradorHQLCondicional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArraySet;
import org.hibernate.Criteria;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
/**
* < <Descri��o da Classe>>
*
* @author Administrador
* @created 22 de Julho de 2005
*/
public class RepositorioUsuarioHBM implements IRepositorioUsuario {
private static IRepositorioUsuario instancia;
/**
* Constructor for the RepositorioClienteTipoHBM object
*/
public RepositorioUsuarioHBM() {
}
/**
* Retorna o valor de instancia
*
* @return O valor de instancia
*/
public static IRepositorioUsuario getInstancia() {
if (instancia == null) {
instancia = new RepositorioUsuarioHBM();
}
return instancia;
}
/**
* M�todo que consulta os grupos do usu�rio
*
* @author S�vio Luiz
* @date 27/06/2006
*/
public Collection pesquisarGruposUsuario(Integer idUsuario)
throws ErroRepositorioException {
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select grupo " + "from Grupo grupo "
+ "where grupo.id in(select grupo.id "
+ "from UsuarioGrupo usuarioGrupo "
+ "inner join usuarioGrupo.usuario usuario "
+ "inner join usuarioGrupo.grupo grupo "
+ "where usuario.id = :idUsuario) AND "
+ "grupo.indicadorUso = :indicadorUso "
+ "ORDER BY grupo.descricao ";
retorno = session.createQuery(consulta).setInteger("idUsuario",
idUsuario.intValue()).setShort("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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta os grupos do usu�rio
*
* @author S�vio Luiz
* @date 27/06/2006
*/
public Collection pesquisarGruposUsuarioAcesso(Collection colecaoUsuarioGrupos)
throws ErroRepositorioException {
Collection retorno = null;
Collection idsGrupos = new ArrayList();
if(colecaoUsuarioGrupos != null){
Iterator iteUsuarioGrupo = colecaoUsuarioGrupos.iterator();
while(iteUsuarioGrupo.hasNext()){
Grupo grupo = (Grupo)iteUsuarioGrupo.next();
idsGrupos.add(grupo.getId());
}
}
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select grupo " + "from Grupo grupo "
+ "where grupo.id in (select distinct grupoAcesso.comp_id.grupIdacesso "
+ "from gcom.seguranca.acesso.GrupoAcesso grupoAcesso "
+ "where grupoAcesso.comp_id.grupId in (:idsGrupos)) AND "
+ "grupo.indicadorUso = :indicadorUso ";
retorno = session.createQuery(consulta).setParameterList("idsGrupos",
idsGrupos).setShort("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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta as abrang�ncias dos usu�rio pelos os ids das
* abrang�ncias superiores e com o id da abrang�ncia diferente do id da
* abrang�ncia do usu�rio que est� inserindo(usu�rio logado)
*
* @author S�vio Luiz
* @date 28/06/2006
*/
public Collection pesquisarUsuarioAbrangenciaPorSuperior(
Collection colecaoUsuarioAbrangencia,
Integer idUsuarioAbrangenciaLogado) throws ErroRepositorioException {
Collection retorno = null;
Collection idsUsuarioAbrangencia = new ArrayList();
Iterator usuarioAbrangenciaIterator = colecaoUsuarioAbrangencia
.iterator();
while (usuarioAbrangenciaIterator.hasNext()) {
UsuarioAbrangencia usuarioAbrangencia = (UsuarioAbrangencia) usuarioAbrangenciaIterator
.next();
idsUsuarioAbrangencia.add(usuarioAbrangencia);
}
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select usuarioAbrangencia "
+ "from UsuarioAbrangencia usuarioAbrangencia "
+ "inner join usuarioAbrangencia.usuarioAbrangenciaSuperior usuarioAbrangenciaSuperior "
+ "where usuarioAbrangenciaSuperior.id in( :idsUsuarioAbrangencia) and "
+ "usuarioAbrangencia.id != :idUsuarioAbrangenciaLogado";
retorno = session.createQuery(consulta).setParameterList(
"idsUsuarioAbrangencia", idsUsuarioAbrangencia).setInteger(
"idUsuarioAbrangenciaLogado", idUsuarioAbrangenciaLogado)
.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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* Informa o n�mero total de registros de usuario grupo, auxiliando o
* esquema de pagina��o
*
* @author S�vio Luiz
* @date 30/06/2006
*
* @param Filtro
* da Pesquisa
* @param Pacote
* do objeto pesquisado
* @return N�mero de registros da pesquisa
* @throws ErroRepositorioException
* Exce��o do reposit�rio
*/
public int totalRegistrosPesquisaUsuarioGrupo(
FiltroUsuarioGrupo filtroUsuarioGrupo)
throws ErroRepositorioException {
// cria a cole��o de retorno
int retorno = 0;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
List camposOrderBy = new ArrayList();
camposOrderBy = filtroUsuarioGrupo.getCamposOrderBy();
filtroUsuarioGrupo.limparCamposOrderBy();
filtroUsuarioGrupo.limparColecaoCaminhosParaCarregamentoEntidades();
// pesquisa a cole��o de atividades e atribui a vari�vel "retorno"
retorno =
(Integer) GeradorHQLCondicional.gerarCondicionalQuery(
filtroUsuarioGrupo,
"usuarioGrupo",
"select count(distinct usuarioGrupo.usuario.id) from UsuarioGrupo as usuarioGrupo",
session).
uniqueResult();
filtroUsuarioGrupo.setCampoOrderBy((String[]) camposOrderBy.toArray(new String[camposOrderBy.size()]));
} 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;
}
/**
* Informa o n�mero total de registros de usuario grupo, auxiliando o
* esquema de pagina��o
*
* @author S�vio Luiz
* @date 30/06/2006
*
* @param Filtro
* da Pesquisa
* @param Pacote
* do objeto pesquisado
* @return N�mero de registros da pesquisa
* @throws ErroRepositorioException
* Exce��o do reposit�rio
*/
/**
* Informa o n�mero total de registros de usuario grupo, auxiliando o
* esquema de pagina��o
*
* @author S�vio Luiz
* @date 30/06/2006
*
* @param Filtro
* da Pesquisa
* @param Pacote
* do objeto pesquisado
* @return N�mero de registros da pesquisa
* @throws ErroRepositorioException
* Exce��o do reposit�rio
*/
public Collection pesquisarUsuariosDosGruposUsuarios(
FiltroUsuarioGrupo filtroUsuarioGrupo, Integer numeroPagina)
throws ErroRepositorioException {
// cria a cole��o de retorno
Collection retorno = new ArrayList();
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
List camposOrderBy = new ArrayList();
camposOrderBy = filtroUsuarioGrupo.getCamposOrderBy();
// filtroUsuarioGrupo
// .adicionarCaminhoParaCarregamentoEntidade("usuario");
filtroUsuarioGrupo
.adicionarCaminhoParaCarregamentoEntidade("usuario.unidadeOrganizacional");
filtroUsuarioGrupo
.adicionarCaminhoParaCarregamentoEntidade("usuario.usuarioAbrangencia");
filtroUsuarioGrupo
.adicionarCaminhoParaCarregamentoEntidade("usuario.usuarioSituacao");
filtroUsuarioGrupo
.adicionarCaminhoParaCarregamentoEntidade("usuario.usuarioTipo");
filtroUsuarioGrupo
.adicionarCaminhoParaCarregamentoEntidade("usuario.funcionario.unidadeOrganizacional");
filtroUsuarioGrupo.limparCamposOrderBy();
// pesquisa a cole��o de atividades e atribui a vari�vel "retorno"
retorno = new ArrayList(new CopyOnWriteArraySet(GeradorHQLCondicional.gerarCondicionalQuery(
filtroUsuarioGrupo,
"usuario",
"from Usuario as u left join fetch u.usuarioGrupos usuario",
session).setFirstResult(10 * numeroPagina).setMaxResults(10).list()));
filtroUsuarioGrupo.setCampoOrderBy((String[]) camposOrderBy
.toArray(new String[camposOrderBy.size()]));
// Iterator iterator = colecao.iterator();
// while (iterator.hasNext()) {
//
// Usuario usuario = (Usuario) iterator.next();
//
// // carrega todos os objetos
// Hibernate.initialize(usuario.getUsuarioTipo());
// Hibernate.initialize(usuario.getUnidadeOrganizacional());
// Hibernate.initialize(usuario.getUsuarioAbrangencia());
// Hibernate.initialize(usuario.getUsuarioSituacao());
//
// retorno.add(usuario);
// }
} 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 consulta os grupos funcion�rios opera��es passando os ids dos
* grupos
*
* @author S�vio Luiz
* @date 11/07/2006
*/
public Collection pesquisarGruposFuncionalidadesOperacoes(Integer[] idsGrupos)
throws ErroRepositorioException {
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select distinct operacao "
+ "from GrupoFuncionalidadeOperacao grupoFuncionalidadeOperacao "
+ "inner join grupoFuncionalidadeOperacao.grupo grupo "
+ "inner join grupoFuncionalidadeOperacao.operacao operacao "
+ "where grupo.id in(:idsGrupos) ";
retorno = session.createQuery(consulta).setParameterList(
"idsGrupos", idsGrupos).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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta os grupos funcion�rios opera��es passando os ids dos
* grupos e o id da funcionalidade
*
* @author S�vio Luiz
* @date 11/07/2006
*/
public Collection pesquisarGruposFuncionalidadesOperacoesPelaFuncionalidade(
Integer[] idsGrupos, Integer idFuncionalidade)
throws ErroRepositorioException {
Collection retorno = new ArrayList();
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select distinct ope "
+ "from GrupoFuncionalidadeOperacao gfo "
+ "inner join gfo.grupo grp "
+ "inner join gfo.operacao ope "
+ "inner join gfo.funcionalidade fun "
+ "left join fetch ope.funcionalidade func "
+ "where grp.id in(:idsGrupos) and "
+ "fun.id = :idFuncionalidade ";
retorno = session.createQuery(consulta).setParameterList(
"idsGrupos", idsGrupos).setInteger("idFuncionalidade",
idFuncionalidade).list();
// while (iterator.hasNext()) {
// Operacao operacao = (Operacao) iterator.next();
// Hibernate.initialize(operacao.getFuncionalidade());
// retorno.add(operacao);
//
// }
// 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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta os usu�rios restrin��o passando os ids dos grupos , o
* id da funcionalidade e o id do usu�rio
*
* @author S�vio Luiz
* @date 11/07/2006
*/
public Collection pesquisarUsuarioRestrincao(Integer[] idsGrupos,
Integer idFuncionalidade, Integer idUsuario)
throws ErroRepositorioException {
Collection retorno = new ArrayList();
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select distinct ope "
+ "from UsuarioGrupoRestricao usuarioGrup "
+ "left join usuarioGrup.grupoFuncionalidadeOperacao grupoFuncOp "
+ "left join grupoFuncOp.operacao ope "
+ "left join fetch ope.funcionalidade func "
+ "where usuarioGrup.comp_id.grupoId in(:idsGrupos) and "
+ "usuarioGrup.comp_id.funcionalidadeId = :idFuncionalidade and "
+ "usuarioGrup.comp_id.usuarioId = :idUsuario";
retorno = new ArrayList(new CopyOnWriteArraySet(session.createQuery(consulta)
.setParameterList("idsGrupos", idsGrupos).setInteger(
"idFuncionalidade", idFuncionalidade).setInteger(
"idUsuario", idUsuario).list()));
// while (iterator.hasNext()) {
// Operacao operacao = (Operacao) iterator.next();
// Hibernate.initialize(operacao.getFuncionalidade());
// retorno.add(operacao);
//
// }
// 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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta as funcionalidades da(s) funcionalidade(s)
* princpial(is)
*
* @author S�vio Luiz
* @date 12/07/2006
*/
public Collection pesquisarFuncionanidadesDependencia(
Collection idsFuncionalidades) throws ErroRepositorioException {
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select funcDependencia.id "
+ "from FuncionalidadeDependencia funDepen "
+ "inner join funDepen.funcionalidade func "
+ "inner join funDepen.funcionalidadeDependencia funcDependencia "
+ "where func.id in(:idsFuncionalidades)";
retorno = session.createQuery(consulta).setParameterList(
"idsFuncionalidades", idsFuncionalidades).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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta as opera��es da(s) funcionalidade(s)
*
* @author S�vio Luiz
* @date 12/07/2006
*/
public Collection pesquisarOperacoes(Collection idsFuncionalidades)
throws ErroRepositorioException {
Collection retorno = new ArrayList();
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select op " + "from Operacao op "
+ "inner join fetch op.funcionalidade func "
+ "where func.id in(:idsFuncionalidades)";
retorno = session.createQuery(consulta).setParameterList(
"idsFuncionalidades", idsFuncionalidades).list();
// while (iterator.hasNext()) {
// Operacao operacao = (Operacao) iterator.next();
// Hibernate.initialize(operacao.getFuncionalidade());
// retorno.add(operacao);
//
// }
// 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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta as permiss�es especiais do usu�rio
*
* @author S�vio Luiz
* @date 12/07/2006
*/
public Collection pesquisarPermissaoEspecialUsuario(Integer idUsuario)
throws ErroRepositorioException {
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select upe.permissaoEspecial "
+ "from UsuarioPermissaoEspecial upe "
+ "where upe.comp_id.usuarioId = :idUsuario "
+ "order by upe.permissaoEspecial.descricao";
retorno = session.createQuery(consulta).setInteger("idUsuario",
idUsuario).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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta as permiss�es especiais do usu�rio com os parametros
* das permiss�es de outro usu�rio
*
* @author S�vio Luiz
* @date 12/07/2006
*/
public Collection pesquisarPermissaoEspecialUsuarioComPermissoes(
Integer idUsuario, Collection permissoesEspeciais)
throws ErroRepositorioException {
Collection retorno = null;
Iterator iterator = permissoesEspeciais.iterator();
Collection idsPermissoesEspeciais = new ArrayList();
while (iterator.hasNext()) {
PermissaoEspecial permissaoEspecial = (PermissaoEspecial) iterator
.next();
idsPermissoesEspeciais.add(permissaoEspecial.getId());
}
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select pe " + "from UsuarioPermissaoEspecial upe "
+ "inner join upe.usuario usu "
+ "inner join upe.permissaoEspecial pe"
+ "where usu.id = :idUsuario and "
+ "pe.id in(:idsPermissoesEspeciais) ";
retorno = session.createQuery(consulta).setInteger("idUsuario",
idUsuario).setParameterList("idsPermissoesEspeciais",
idsPermissoesEspeciais).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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta as permiss�es especiais do usu�rio sem os parametros
* das permiss�es de outro usu�rio.Recupera todas as permiss�es do usuario
* que n�o tem a permiss�o de outro usu�rio
*
* @author S�vio Luiz
* @date 12/07/2006
*/
public Collection pesquisarPermissaoEspecialUsuarioSemPermissoes(
Integer idUsuario, Collection permissoesEspeciais)
throws ErroRepositorioException {
Iterator iterator = permissoesEspeciais.iterator();
Collection idsPermissoesEspeciais = new ArrayList();
while (iterator.hasNext()) {
PermissaoEspecial permissaoEspecial = (PermissaoEspecial) iterator
.next();
idsPermissoesEspeciais.add(permissaoEspecial.getId());
}
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select pe " + "from UsuarioPermissaoEspecial upe "
+ "inner join upe.usuario usu "
+ "inner join upe.permissaoEspecial pe"
+ "where usu.id = :idUsuario and "
+ "pe.id not in(:idsPermissoesEspeciais) ";
retorno = session.createQuery(consulta).setInteger("idUsuario",
idUsuario).setParameterList("idsPermissoesEspeciais",
idsPermissoesEspeciais).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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* Essa verifica��o � preciso para quando for, [SB0011]- Atualizar Controles
* de Acesso no [SB0230]-Manter Usu�rio ,saber que grupos daquela
* funcionalidade daquela opera��o ser�o inseridos na tabela
* UsuarioGrupoRestrincao
*
* @author S�vio Luiz
* @date 11/07/2006
*/
public Collection pesquisarIdsGruposPelaFuncionalidadeGruposOperacao(
Integer[] idsGrupos, Integer idFuncionalidade, Integer idOperacao)
throws ErroRepositorioException {
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "select distinct grp.id "
+ "from GrupoFuncionalidadeOperacao gfo "
+ "inner join gfo.grupo grp "
+ "inner join gfo.operacao ope "
+ "inner join gfo.funcionalidade fun "
+ "where grp.id in(:idsGrupos) and "
+ "fun.id = :idFuncionalidade and "
+ "ope.id = :idOperacao";
retorno = session.createQuery(consulta).setParameterList(
"idsGrupos", idsGrupos).setInteger("idFuncionalidade",
idFuncionalidade).setInteger("idOperacao", idOperacao)
.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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo que consulta o nome do usu�rio de uma guia de devolu��o, passando
* por par�metro o id da guia de devolucao
*
* @author Daniel Alves
* @date 22/02/2010
*/
public String pesquisarUsuarioPorGuiaDevolucao(Integer idGuiaDevolucao)
throws ErroRepositorioException {
String retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter a sql
String consulta = "";
try {
consulta = "select usuario.usur_nmlogin as nome from seguranca.usuario usuario "
+ "inner join arrecadacao.guia_devolucao guia_devolucao on (usuario.usur_id = guia_devolucao.usur_id) "
+ "inner join arrecadacao.devolucao devolucao on (guia_devolucao.gdev_id = devolucao.gdev_id)"
+ "and (guia_devolucao.gdev_id = :idGuiaDevolucao)";
retorno = session.createSQLQuery(consulta).addScalar("nome",
Hibernate.STRING).setInteger("idGuiaDevolucao",
idGuiaDevolucao).uniqueResult().toString();
// 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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* M�todo para pesquisar os usu�rios de uma Unidade Organizacional
*
* @author Daniel Alves
* @date 11/06/2010
*/
public Collection pesquisarUsuariosUnidadeOrganizacional(Integer idUnidadeOrganizacional) throws ErroRepositorioException {
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "SELECT usuario "
+ "FROM gcom.seguranca.acesso.usuario.Usuario usuario "
+ "INNER JOIN usuario.unidadeOrganizacional unidade "
+ "WHERE unidade.id = :idUnidadeOrganizacional";
retorno = session.createQuery(consulta)
.setInteger("idUnidadeOrganizacional", idUnidadeOrganizacional)
.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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC0204] Consultar Conta
*
* @author Vivianne Sousa
* @date 16/11/2010
*/
public Collection pesquisarUsuario(Integer idOperacao,
Integer idImovel,String referenciaConta)
throws ErroRepositorioException {
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "SELECT usat.usuario "
+ "FROM UsuarioAlteracao usat "
+ "INNER JOIN usat.operacaoEfetuada opef "
+ "where "
+ "opef.operacao.id = :idOperacao and "
+ "opef.argumentoValor = :idImovel and "
+ "opef.dadosAdicionais like '%" + referenciaConta + "%' "
+ "order by opef.ultimaAlteracao ";
retorno = session.createQuery(consulta)
.setInteger("idOperacao", idOperacao)
.setInteger("idImovel", idImovel)
// .setString("referenciaConta", referenciaConta)
.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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC0146] Manter Conta
* [SB0012] � Determinar compet�ncia de retifica��o de consumo
*
* @author Vivianne Sousa
* @date 16/02/2011
*/
public Collection pesquisarGrupoUsuario(Integer idUsuario)throws ErroRepositorioException {
Collection retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "SELECT grupo "
+ "FROM UsuarioGrupo usuarioGrupo "
+ "INNER JOIN usuarioGrupo.usuario usuario "
+ "INNER JOIN usuarioGrupo.grupo grupo "
+ "WHERE usuario.id = :idUsuario "
+ "AND grupo.indicadorUso = :indicadorUso "
+ "AND grupo.competenciaRetificacao is not null "
+ "AND grupo.competenciaRetificacao > 0 "
+ "ORDER BY grupo.competenciaRetificacao ";
retorno = session.createQuery(consulta)
.setInteger("idUsuario",idUsuario.intValue())
.setShort("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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* [UC0146] Manter Conta
* [SB0012] � Determinar compet�ncia de retifica��o de consumo
*
* @author Vivianne Sousa
* @date 16/02/2011
*/
public BigDecimal pesquisarMaiorCompetenciaRetificacaoGrupo()throws ErroRepositorioException {
BigDecimal retorno = null;
// cria uma sess�o com o hibernate
Session session = HibernateUtil.getSession();
// cria a vari�vel que vai conter o hql
String consulta = "";
try {
consulta = "SELECT max(grupo.competenciaRetificacao) "
+ "FROM Grupo grupo "
+ "WHERE grupo.indicadorUso = :indicadorUso ";
retorno = (BigDecimal)session.createQuery(consulta)
.setShort("indicadorUso",ConstantesSistema.INDICADOR_USO_ATIVO).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 com o hibernate
HibernateUtil.closeSession(session);
}
return retorno;
}
/**
* Retorna o usu�rio selecionado para rotina batch caso existe
*
* @author Paulo Diniz
* @date 04/03/2011
*
* @return Usuario da rotina batch
* @throws ErroRepositorioException
* Exce��o do reposit�rio
*/
public Usuario pesquisarUsuarioRotinaBatch()throws ErroRepositorioException {
// cria a cole��o de retorno
Usuario retorno = null;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
Criteria crit = session.createCriteria(Usuario.class);
crit.add(Restrictions.eq("indicadorUsuarioBatch",Short.parseShort("1")));
retorno = (Usuario) crit.uniqueResult();
} 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 o usuario pesquisado
return retorno;
}
/**
* Retorna o usu�rio selecionado para internet caso existe
*
* @author Paulo Diniz
* @date 04/03/2011
*
* @return Usuario da internet
* @throws ErroRepositorioException
* Exce��o do reposit�rio
*/
public Usuario pesquisarUsuarioInternet()throws ErroRepositorioException {
// cria a cole��o de retorno
Usuario retorno = null;
// obt�m a sess�o
Session session = HibernateUtil.getSession();
try {
Criteria crit = session.createCriteria(Usuario.class);
crit.add(Restrictions.eq("indicadorUsuarioInternet",Short.parseShort("1")));
retorno = (Usuario) crit.uniqueResult();
} 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 o usuario pesquisado
return retorno;
}
/**
*
* Filtra os Usuarios por Id ou Nome para ser utilizado no Autocomplete
*
* @author Paulo Diniz
* @date 04/04/2011
*
* @param valor
* @throws ErroRepositorioException
*/
public Collection filtrarAutocompleteUsuario(String valor)throws ErroRepositorioException{
Collection retorno = new ArrayList();
Session session = HibernateUtil.getSession();
String consulta = null;
try {
consulta = " SELECT usur_id as id,usur_nmusuario as nome from Seguranca.Usuario where ";
valor = valor.trim();
if(valor.contains("-")){
valor = valor.split(" - ")[0].trim();
}
if(Util.validarStringNumerica(valor)){
consulta += "usur_id like '%" + valor + "%'";
consulta += " order by 1,2 ";
retorno = session.createSQLQuery(consulta)
.addScalar("id", Hibernate.INTEGER)
.addScalar("nome",Hibernate.STRING).setMaxResults(200).list();
}else{
if(valor.length() > 3){
consulta += "usur_nmusuario like '%" + valor.trim().toUpperCase() + "%'";
consulta += " order by 1,2 ";
retorno = session.createSQLQuery(consulta)
.addScalar("id", Hibernate.INTEGER)
.addScalar("nome",Hibernate.STRING).setMaxResults(200).list();
}
}
} catch (HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
return retorno;
}
}