package gcom.seguranca;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.seguranca.transacao.TabelaAtualizacaoCadastral;
import gcom.seguranca.transacao.TabelaColunaAtualizacaoCadastral;
import gcom.util.ConstantesSistema;
import gcom.util.ErroRepositorioException;
import gcom.util.HibernateUtil;
import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
public class RepositorioSegurancaHBM implements IRepositorioSeguranca {
private static IRepositorioSeguranca instancia;
private RepositorioSegurancaHBM() {
}
public static IRepositorioSeguranca getInstancia() {
if (instancia == null) {
instancia = new RepositorioSegurancaHBM();
}
return instancia;
}
public List<TabelaAtualizacaoCadastral> pesquisaTabelaAtualizacaoCadastralPorImovel(Integer idImovel) throws ErroRepositorioException {
Session session = HibernateUtil.getSession();
try {
String consulta = " SELECT tabela "
+ " FROM TabelaAtualizacaoCadastral tabela "
+ " WHERE tabela.codigoImovel = :idImovel";
return (List<TabelaAtualizacaoCadastral>) session.createQuery(consulta)
.setInteger("idImovel", idImovel).list();
}catch(HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
}
public List<TabelaColunaAtualizacaoCadastral> pesquisaTabelaColunaAtualizacaoCadastral(Integer idTabelaAtualizacaoCadastral) throws ErroRepositorioException {
Session session = HibernateUtil.getSession();
try {
String consulta = " SELECT tabelaColuna "
+ " FROM TabelaColunaAtualizacaoCadastral tabelaColuna "
+ " INNER JOIN tabelaColuna.tabelaAtualizacaoCadastral tabela "
+ " WHERE tabela.id = :idTabelaAtualizacaoCadastral ";
return (List<TabelaColunaAtualizacaoCadastral>) session.createQuery(consulta)
.setInteger("idTabelaAtualizacaoCadastral", idTabelaAtualizacaoCadastral).list();
}catch(HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
}
public void autorizarAtualizacaoCadastral(Integer idImovel) throws ErroRepositorioException {
Session session = HibernateUtil.getSession();
try {
StringBuilder sql = new StringBuilder();
sql.append(" UPDATE TabelaAtualizacaoCadastral t ")
.append(" SET t.indicadorAutorizado = :autorizacao ")
.append(" WHERE t.codigoImovel = :idImovel ");
session.createQuery(sql.toString())
.setShort("autorizacao", ConstantesSistema.SIM)
.setInteger("idImovel", idImovel)
.executeUpdate();
}catch(HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
}
public Integer pesquisarIdUsuarioAutorizadorImoveis(Integer idImovel) throws ErroRepositorioException {
Session session = HibernateUtil.getSession();
try {
StringBuilder sql = new StringBuilder();
sql.append("SELECT distinct(tcac.usur_id) as usuarioLogado");
sql.append(" FROM seguranca.tab_col_atlz_cadastral tcac");
sql.append(" inner join seguranca.tab_atlz_cadastral tac on (tac.tatc_id = tcac.tatc_id)");
sql.append(" where tac.tatc_cdimovel = :idImovel");
sql.append(" and tcac.usur_id is not null ");
return (Integer) (session.createSQLQuery(sql.toString())
.addScalar("usuarioLogado", Hibernate.INTEGER)
.setInteger("idImovel", idImovel).uniqueResult());
}catch(HibernateException e) {
throw new ErroRepositorioException(e, "Erro no Hibernate");
} finally {
HibernateUtil.closeSession(session);
}
}
}