package br.com.centralit.citcorpore.bpm; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.bpm.dto.GrupoBpmDTO; import br.com.centralit.bpm.dto.UsuarioBpmDTO; import br.com.centralit.bpm.negocio.IUsuarioGrupo; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.GrupoEmailDTO; import br.com.centralit.citcorpore.bean.GrupoEmpregadoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.integracao.EmpregadoDao; import br.com.centralit.citcorpore.integracao.GrupoDao; import br.com.centralit.citcorpore.integracao.GrupoEmailDao; import br.com.centralit.citcorpore.integracao.GrupoEmpregadoDao; import br.com.centralit.citcorpore.integracao.UsuarioDao; import br.com.citframework.integracao.CrudDAO; import br.com.citframework.integracao.TransactionControler; public class BPMUsuarioGrupo implements IUsuarioGrupo { private TransactionControler transacao; @Override public UsuarioBpmDTO recuperaUsuario(final Integer idUsuario) throws Exception { final UsuarioDao usuarioDao = new UsuarioDao(); this.setTransacaoDao(usuarioDao); UsuarioBpmDTO usuarioBpmDto = null; UsuarioDTO usuarioDto = new UsuarioDTO(); usuarioDto.setIdUsuario(idUsuario); usuarioDto = (UsuarioDTO) usuarioDao.restore(usuarioDto); if (usuarioDto != null) { usuarioBpmDto = new UsuarioBpmDTO(); usuarioBpmDto.setIdUsuario(usuarioDto.getIdUsuario()); usuarioBpmDto.setLogin(usuarioDto.getLogin()); usuarioBpmDto.setNome(usuarioDto.getNomeUsuario()); final EmpregadoDao empregadoDao = new EmpregadoDao(); this.setTransacaoDao(empregadoDao); final EmpregadoDTO empregadoDto = empregadoDao.restoreByIdEmpregado(usuarioDto.getIdEmpregado()); if (empregadoDto != null) { usuarioBpmDto.setEmails(new String[] {empregadoDto.getEmail()}); } } return usuarioBpmDto; } @Override public UsuarioBpmDTO recuperaUsuario(final String login) throws Exception { if (login == null) { return null; } final UsuarioDao usuarioDao = new UsuarioDao(); this.setTransacaoDao(usuarioDao); UsuarioBpmDTO usuarioBpmDto = null; final UsuarioDTO usuarioDto = usuarioDao.restoreByLogin(login.trim()); if (usuarioDto != null) { usuarioBpmDto = new UsuarioBpmDTO(); usuarioBpmDto.setIdUsuario(usuarioDto.getIdUsuario()); usuarioBpmDto.setLogin(login); usuarioBpmDto.setNome(usuarioDto.getNomeUsuario()); final EmpregadoDao empregadoDao = new EmpregadoDao(); this.setTransacaoDao(empregadoDao); final EmpregadoDTO empregadoDto = empregadoDao.restoreByIdEmpregado(usuarioDto.getIdEmpregado()); if (empregadoDto != null) { usuarioBpmDto.setEmails(new String[] {empregadoDto.getEmail()}); } } return usuarioBpmDto; } @Override public GrupoBpmDTO recuperaGrupo(final String siglaGrupo) throws Exception { if (siglaGrupo == null) { return null; } final GrupoDao grupoDao = new GrupoDao(); this.setTransacaoDao(grupoDao); GrupoBpmDTO grupoBpmDto = null; final GrupoDTO grupoDto = grupoDao.restoreBySigla(siglaGrupo.trim()); if (grupoDto != null) { grupoBpmDto = new GrupoBpmDTO(); grupoBpmDto.setIdGrupo(grupoDto.getIdGrupo()); grupoBpmDto.setSigla(siglaGrupo); grupoBpmDto.setEmails(this.recuperaEmailsGrupo(grupoDto.getIdGrupo())); } return grupoBpmDto; } @Override public boolean existeUsuario(final String login) throws Exception { return this.recuperaUsuario(login) != null; } @Override public boolean existeGrupo(final String siglaGrupo) throws Exception { return this.recuperaGrupo(siglaGrupo) != null; } @Override public List<GrupoBpmDTO> getGruposDoUsuario(final String login) throws Exception { if (login == null) { return null; } List<GrupoBpmDTO> result = null; final UsuarioDao usuarioDao = new UsuarioDao(); this.setTransacaoDao(usuarioDao); final UsuarioDTO usuarioDto = usuarioDao.restoreByLogin(login.trim()); if (usuarioDto != null) { final GrupoEmpregadoDao grupoEmpregadoDao = new GrupoEmpregadoDao(); this.setTransacaoDao(grupoEmpregadoDao); try { final Collection<GrupoEmpregadoDTO> colGrupos = grupoEmpregadoDao.findAtivosByIdEmpregado(usuarioDto.getIdEmpregado()); if (colGrupos != null) { result = new ArrayList<>(); for (final GrupoEmpregadoDTO grupoDto : colGrupos) { final GrupoBpmDTO grupoBpmDto = new GrupoBpmDTO(); grupoBpmDto.setIdGrupo(grupoDto.getIdGrupo()); grupoBpmDto.setSigla(grupoDto.getSigla()); grupoBpmDto.setEmails(this.recuperaEmailsGrupo(grupoDto.getIdGrupo())); result.add(grupoBpmDto); } } } catch (final Exception e) {} } return result; } @Override public GrupoBpmDTO recuperaGrupo(final Integer idGrupo) throws Exception { final GrupoDao grupoDao = new GrupoDao(); this.setTransacaoDao(grupoDao); GrupoBpmDTO grupoBpmDto = null; GrupoDTO grupoDto = new GrupoDTO(); grupoDto.setIdGrupo(idGrupo); grupoDto = (GrupoDTO) grupoDao.restore(grupoDto); if (grupoDto != null) { grupoBpmDto = new GrupoBpmDTO(); grupoBpmDto.setIdGrupo(grupoDto.getIdGrupo()); grupoBpmDto.setSigla(grupoDto.getSigla()); grupoBpmDto.setEmails(this.recuperaEmailsGrupo(grupoDto.getIdGrupo())); } return grupoBpmDto; } @Override public boolean pertenceAoGrupo(final String login, final String siglaGrupo) throws Exception { boolean bResult = false; final List<GrupoBpmDTO> grupos = this.getGruposDoUsuario(login); if (grupos != null) { for (final GrupoBpmDTO grupoDto : grupos) { if (grupoDto.getSigla().equalsIgnoreCase(siglaGrupo)) { bResult = true; break; } } } return bResult; } private String[] recuperaEmailsGrupo(final Integer idGrupo) throws Exception { final GrupoEmailDao grupoEmailDao = new GrupoEmailDao(); this.setTransacaoDao(grupoEmailDao); final Collection<GrupoEmailDTO> colEmails = grupoEmailDao.findByIdGrupo(idGrupo); if (colEmails != null) { int i = 0; final String[] emails = new String[colEmails.size()]; for (final GrupoEmailDTO grupoEmailDto : colEmails) { emails[i] = grupoEmailDto.getEmail(); i++; } return emails; } else { return null; } } @Override public void setTransacao(final TransactionControler transacao) throws Exception { this.transacao = transacao; } protected void setTransacaoDao(final CrudDAO dao) throws Exception { if (transacao != null) { dao.setTransactionControler(transacao); } } }