/** * CentralIT - CITSmart */ package br.com.centralit.citcorpore.integracao; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.citcorpore.bean.PerfilAcessoUsuarioDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.PersistenceException; import br.com.citframework.integracao.Condition; import br.com.citframework.integracao.CrudDaoDefaultImpl; import br.com.citframework.integracao.Field; import br.com.citframework.integracao.Order; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; /** * DAO de PerfilAcessoUsuario. * * @author valdoilo.damasceno */ @SuppressWarnings({ "rawtypes", "unchecked" }) public class PerfilAcessoUsuarioDAO extends CrudDaoDefaultImpl { public PerfilAcessoUsuarioDAO() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection find(IDto arg0) throws PersistenceException { return null; } @Override public Collection<Field> getFields() { Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("IDPERFIL", "idPerfilAcesso", true, false, false, false)); listFields.add(new Field("IDUSUARIO", "idUsuario", true, false, false, false)); listFields.add(new Field("DATAINICIO", "dataInicio", false, false, false, false)); listFields.add(new Field("DATAFIM", "dataFim", false, false, false, false)); return listFields; } /** * Verifica se Usu�rio possui Perfi de Acesso espec�fico. * * @param usuario * @return boolean * @author valdoilo.damasceno * @throws PersistenceException */ public boolean verificarSeUsuarioPossuiPerfilAcessoEspecifico(UsuarioDTO usuario) throws PersistenceException { if (usuario == null) { return false; } StringBuilder sql = new StringBuilder(); List parametro = new ArrayList(); sql.append("SELECT idusuario FROM perfilacessousuario "); sql.append("WHERE idusuario = ? and datafim IS NULL"); parametro.add(usuario.getIdUsuario()); List list = this.execSQL(sql.toString(), parametro.toArray()); if (list != null && !list.isEmpty()) { return true; } else { return false; } } /** * Retorna PerfilAcessoUsuario. * * @param usuario * @return PerfilAcessoUsuarioDTO * @throws Exception */ public PerfilAcessoUsuarioDTO obterPerfilAcessoUsuario(UsuarioDTO usuario) throws PersistenceException { StringBuilder sql = new StringBuilder(); List parametro = new ArrayList(); List fields = gerarFieldsRetornoPerfilAcessoUsuario(); sql.append("SELECT idPerfil, idUsuario, dataInicio, dataFim FROM perfilacessousuario "); sql.append("WHERE idusuario = ? and datafim IS NULL"); parametro.add(usuario.getIdUsuario()); List list = this.execSQL(sql.toString(), parametro.toArray()); if (list != null && !list.isEmpty()) { List novaLista = this.listConvertion(PerfilAcessoUsuarioDTO.class, list, fields); return (PerfilAcessoUsuarioDTO) novaLista.get(0); } else { return null; } } @Override public String getTableName() { return "PERFILACESSOUSUARIO"; } @Override public Collection list() throws PersistenceException { return null; } @Override public Class getBean() { return PerfilAcessoUsuarioDTO.class; } public PerfilAcessoUsuarioDTO listByIdUsuario(PerfilAcessoUsuarioDTO obj) throws PersistenceException { List list = new ArrayList(); List fields = new ArrayList(); String sql = "select idperfil from " + getTableName() + " where idUsuario = " + obj.getIdUsuario() + " AND dataFim IS NULL"; fields.add("idPerfilAcesso"); list = this.execSQL(sql, null); List novaLista = this.listConvertion(getBean(), list, fields); if (novaLista != null && !novaLista.isEmpty()) { return (PerfilAcessoUsuarioDTO) novaLista.get(0); } else { return null; } } public Collection listPerfilByIdUsuario(UsuarioDTO usuarioDTO) throws PersistenceException { List list = new ArrayList(); List fields = new ArrayList(); String sql = "select idperfil from " + getTableName() + " where idUsuario = " + usuarioDTO.getIdUsuario() + " AND dataFim IS NULL"; fields.add("idPerfilAcesso"); list = this.execSQL(sql, null); List novaLista = this.listConvertion(getBean(), list, fields); if (novaLista != null && !novaLista.isEmpty()) { return novaLista; } else { return null; } } public void updateDataFim(PerfilAcessoUsuarioDTO obj) throws PersistenceException { PerfilAcessoUsuarioDTO perfilAcessoUsuarioDTO = (PerfilAcessoUsuarioDTO) obj; List parametros = new ArrayList(); parametros.add(UtilDatas.getDataAtual()); parametros.add(perfilAcessoUsuarioDTO.getIdUsuario()); String sql = "UPDATE " + getTableName() + " SET DATAFIM = ? WHERE IDUSUARIO = ?"; this.execUpdate(sql, parametros.toArray()); } /** * Atualiza o Perfil de Acesso do usu�rio. * * @param perfilAcessoUsuario * @throws Exception */ public void update(PerfilAcessoUsuarioDTO perfilAcessoUsuario) throws PersistenceException { PerfilAcessoUsuarioDTO perfilAcessoUsuarioDTO = (PerfilAcessoUsuarioDTO) perfilAcessoUsuario; List parametros = new ArrayList(); parametros.add(perfilAcessoUsuario.getIdPerfilAcesso()); parametros.add(perfilAcessoUsuarioDTO.getIdUsuario()); String sql = "UPDATE " + getTableName() + " SET idperfil = ? WHERE IDUSUARIO = ? "; this.execUpdate(sql, parametros.toArray()); } @Override public IDto restore(IDto obj) throws PersistenceException { PerfilAcessoUsuarioDTO perfilAcessoUsuarioDTO = (PerfilAcessoUsuarioDTO) obj; List fields = gerarFieldsRetornoPerfilAcessoUsuario(); String sql = "SELECT idPerfil, idUsuario, dataInicio, dataFim FROM " + getTableName() + " WHERE dataFim IS NULL AND idPerfil = " + perfilAcessoUsuarioDTO.getIdUsuario(); List dados = this.execSQL(sql, null); return (IDto) this.listConvertion(getBean(), dados, fields); } public IDto restorePerfilAcessoUsuario(IDto obj) throws PersistenceException { PerfilAcessoUsuarioDTO perfilAcessoUsuarioDTO = (PerfilAcessoUsuarioDTO) obj; List fields = gerarFieldsRetornoPerfilAcessoUsuario(); String sql = "SELECT idPerfil, idUsuario, dataInicio, dataFim FROM " + getTableName() + " WHERE dataFim IS NULL AND idUsuario = " + perfilAcessoUsuarioDTO.getIdUsuario(); List dados = this.execSQL(sql, null); if (dados != null && !dados.isEmpty()) { return (IDto) this.listConvertion(getBean(), dados, fields).get(0); } else { return null; } } private List gerarFieldsRetornoPerfilAcessoUsuario() { List fields = new ArrayList(); fields.add("idPerfilAcesso"); fields.add("idUsuario"); fields.add("dataInicio"); fields.add("dataFim"); return fields; } @Override public void delete(IDto obj) throws PersistenceException { PerfilAcessoUsuarioDTO dto = (PerfilAcessoUsuarioDTO) obj; String sql = "DELETE FROM " + getTableName() + " WHERE IDUSUARIO = ? "; this.execUpdate(sql, new Object[] {dto.getIdUsuario()}); } /** * Retorna PerfilAcessoUsuario Ativos por idPerfilAcesso. * * @param idPerfilAcesso * @return * @throws Exception */ public Collection findByIdPerfil(Integer idPerfilAcesso) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("idPerfilAcesso", "=", idPerfilAcesso)); condicao.add(new Condition("dataFim", "is", null)); ordenacao.add(new Order("idPerfilAcesso")); return super.findByCondition(condicao, ordenacao); } public void reativaPerfisUsuario(Integer idUsuario) throws PersistenceException { String sql = "UPDATE " + getTableName() + " SET DATAFIM = null WHERE IDUSUARIO = ? "; this.execUpdate(sql, new Object[] { idUsuario }); } }