/** * CentralIT - CITSmart */ package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLForm; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.NotificacaoDTO; import br.com.centralit.citcorpore.bean.NotificacaoGrupoDTO; import br.com.centralit.citcorpore.bean.NotificacaoUsuarioDTO; import br.com.centralit.citcorpore.bean.PastaDTO; import br.com.centralit.citcorpore.bean.PerfilAcessoDTO; import br.com.centralit.citcorpore.bean.PerfilAcessoGrupoDTO; import br.com.centralit.citcorpore.bean.PerfilAcessoPastaDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.GrupoEmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.NotificacaoGrupoService; import br.com.centralit.citcorpore.negocio.NotificacaoService; import br.com.centralit.citcorpore.negocio.NotificacaoUsuarioService; import br.com.centralit.citcorpore.negocio.PastaService; import br.com.centralit.citcorpore.negocio.PerfilAcessoGrupoService; import br.com.centralit.citcorpore.negocio.PerfilAcessoService; import br.com.centralit.citcorpore.negocio.UsuarioService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.UtilI18N; /** * Action de Pasta. * * @author valdoilo.damasceno */ @SuppressWarnings({ "rawtypes", "unchecked", "unused" }) public class Pasta extends AjaxFormAction { private PastaDTO pastaBean; @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PastaDTO pastaDto = new PastaDTO(); UsuarioDTO usuarioDto = new UsuarioDTO(); usuarioDto = WebUtil.getUsuario(request); this.carregarComboDePastas(document, request); document.executeScript("deleteAllRows()"); if (pastaDto == null || pastaDto.getHerdaPermissoes() == null || !StringUtils.contains(pastaDto.getHerdaPermissoes().toLowerCase().trim(), "S")) { HTMLForm formulario = document.getForm("form"); this.gerarGridPerfilAcesso(document, null); document.executeScript("exibirGridPerfilAcesso()"); formulario.setValues(pastaDto); } this.preencherComboNotificacao(document, request, response); document.executeScript("$('#btnGravarNotificacao').hide();"); } /** * Salva Nova Pasta no CITSmart. * * @param document * @param request * @param response * @throws Exception * @author valdoilo.damasceno */ public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { document.executeScript("aguarde();"); PastaDTO pastaDto = new PastaDTO(); pastaDto = (PastaDTO) document.getBean(); PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null); pastaDto.setPerfisDeAcesso(br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(PerfilAcessoPastaDTO.class, "perfisSerializados", request)); pastaDto.setListaDeUsuario((ArrayList<NotificacaoUsuarioDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(NotificacaoUsuarioDTO.class, "usuariosSerializados", request)); pastaDto.setListaDeGrupo((ArrayList<NotificacaoGrupoDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(NotificacaoGrupoDTO.class, "gruposSerializados", request)); if (pastaDto.getId() == null) { if (pastaService.verificaSeExistePasta(pastaDto)) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado")); document.executeScript("fechar_aguarde();"); return; } /*if(pastaDto.getTitulo() == null && pastaDto.getTitulo().equalsIgnoreCase("")){ document.alert("Titulo : campo obrigatorio"); return; } if(pastaDto.getTipoNotificacao()==null && pastaDto.getTipoNotificacao().equalsIgnoreCase("")){ document.alert("Tipo Notifica��o : campo obrigatorio"); return; }*/ pastaService.create(pastaDto); document.alert(UtilI18N.internacionaliza(request, "MSG05")); document.executeScript("fechar_aguarde();"); document.executeScript("limpar();"); } else { if (pastaService.verificaSeExistePasta(pastaDto)) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado")); document.executeScript("fechar_aguarde();"); return; } if(existeCruzamentoDeHeranca(pastaDto)) { document.alert(UtilI18N.internacionaliza(request, "pasta.naoEPossivelRelacionarAPastaSuperior")); document.executeScript("fechar_aguarde();"); return; } pastaService.update(pastaDto); document.alert(UtilI18N.internacionaliza(request, "MSG06")); document.executeScript("fechar_aguarde();"); document.executeScript("limpar();"); } CITCorporeUtil.limparFormulario(document); document.executeScript("ocultarGridPerfilAcesso()"); load(document, request, response); } /** * Restaura a pasta e seus Perfis de Acesso. * * @param document * @param request * @param response * @throws LogicException * @throws ServiceException * @throws Exception * @author valdoilo.damasceno */ public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PastaDTO pastaDto = new PastaDTO(); NotificacaoDTO notificacaoDto = new NotificacaoDTO(); pastaDto = (PastaDTO) document.getBean(); PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null); PerfilAcessoService perfilAcessoService = (PerfilAcessoService) ServiceLocator.getInstance().getService(PerfilAcessoService.class, null); NotificacaoService notificacaoService = (NotificacaoService) ServiceLocator.getInstance().getService(NotificacaoService.class, null); NotificacaoGrupoService notificacaoGrupoService = (NotificacaoGrupoService) ServiceLocator.getInstance().getService(NotificacaoGrupoService.class, null); NotificacaoUsuarioService notificacaoUsuarioService = (NotificacaoUsuarioService) ServiceLocator.getInstance().getService(NotificacaoUsuarioService.class, null); GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); pastaDto = (PastaDTO) pastaService.restore(pastaDto); document.executeScript("deleteAllRowsUsuario()"); document.executeScript("deleteAllRowsGrupo()"); if(pastaDto.getIdNotificacao()!=null){ notificacaoDto.setIdNotificacao(pastaDto.getIdNotificacao()); notificacaoDto = (NotificacaoDTO) notificacaoService.restore(notificacaoDto); Collection<NotificacaoGrupoDTO> listaIdGrupo = notificacaoGrupoService.listaIdGrupo(notificacaoDto.getIdNotificacao()); Collection<NotificacaoUsuarioDTO> listaIdUsuario = notificacaoUsuarioService.listaIdUsuario(notificacaoDto.getIdNotificacao()); if (listaIdUsuario != null && !listaIdUsuario.isEmpty()) { for (NotificacaoUsuarioDTO notificacaoUsuarioDto : listaIdUsuario) { if (notificacaoUsuarioDto.getIdUsuario() != null) { UsuarioDTO usuarioDto = new UsuarioDTO(); usuarioDto.setIdUsuario(notificacaoUsuarioDto.getIdUsuario()); usuarioDto = (UsuarioDTO) usuarioService.restore(usuarioDto); document.executeScript("addLinhaTabelaUsuario(" + usuarioDto.getIdUsuario() + ", '" + usuarioDto.getNomeUsuario() + "', " + false + ");"); document.executeScript("exibirTabelaUsuario()"); document.executeScript("$('#gridUsuario').show()"); } } } if (listaIdGrupo != null && !listaIdGrupo.isEmpty()) { for (NotificacaoGrupoDTO notificacaoGrupoDto : listaIdGrupo) { if (notificacaoGrupoDto.getIdGrupo() != null) { GrupoDTO grupoDto = new GrupoDTO(); grupoDto.setIdGrupo(notificacaoGrupoDto.getIdGrupo()); grupoDto = (GrupoDTO) grupoService.restore(grupoDto); document.executeScript("addLinhaTabelaGrupo(" + grupoDto.getIdGrupo() + ", '" + grupoDto.getNome() + "', " + false + ");"); document.executeScript("exibirTabelaGrupo()"); document.executeScript("$('#gridGrupo').show()"); } } } pastaDto.setTitulo(notificacaoDto.getTitulo()); pastaDto.setTipoNotificacao(notificacaoDto.getTipoNotificacao()); } document.executeScript("deleteAllRows()"); HTMLForm form = CITCorporeUtil.limparFormulario(document); carregarComboPastaSuperiorNoRestore(document, request, pastaDto); form.setValues(pastaDto); document.executeScript("setarValoresPopupNotificacao();"); document.executeScript("$('#btnGravarNotificacao').show();"); Collection<PerfilAcessoDTO> listPerfilAcesso = perfilAcessoService.consultarPerfisDeAcesso(pastaDto); gerarGridPerfilAcesso(document, listPerfilAcesso); if (pastaDto.getIdPastaPai() != null) { document.executeScript("exibirHerdaPermissao()"); if (pastaDto.getHerdaPermissoes() != null && StringUtils.contains(pastaDto.getHerdaPermissoes().toUpperCase().trim(), "S")) { document.executeScript("ocultarGridPerfilAcesso()"); } else { document.executeScript("exibirGridPerfilAcesso()"); } } else { document.executeScript("ocultarHerdaPermissao()"); } } /** * Restaura Grid de Perfil de Acesso Pasta. * * @param document * @param perfisDeAcessoDaPasta * @throws Exception */ public void gerarGridPerfilAcesso(DocumentHTML document, Collection<PerfilAcessoDTO> perfisDeAcessoDaPasta) throws Exception { PerfilAcessoService perfilAcessoService = (PerfilAcessoService) ServiceLocator.getInstance().getService(PerfilAcessoService.class, null); Collection<PerfilAcessoDTO> todosOsPerfisDeAcesso = perfilAcessoService.consultarPerfisDeAcessoAtivos(); if (todosOsPerfisDeAcesso != null && !todosOsPerfisDeAcesso.isEmpty()) { int count = 0; document.executeScript("count = 0"); for (PerfilAcessoDTO perfil : todosOsPerfisDeAcesso) { count++; document.executeScript("restoreRow()"); document.executeScript("seqSelecionada = " + count); String perfilAcesso = (perfil.getNomePerfilAcesso() != null ? perfil.getNomePerfilAcesso() : ""); String aprovaBaseConhecimento = (perfil.getAprovaBaseConhecimento() != null ? perfil.getAprovaBaseConhecimento() : "N"); if (perfilAcesso != null) { perfilAcesso = perfilAcesso.replaceAll("'", ""); } document.executeScript("setRestorePerfilAcesso('" + perfil.getIdPerfilAcesso() + "'," + "'" + br.com.citframework.util.WebUtil.codificaEnter(StringEscapeUtils.escapeJavaScript(perfilAcesso)) + "'," + "'" + br.com.citframework.util.WebUtil.codificaEnter(aprovaBaseConhecimento) + "')"); if (perfisDeAcessoDaPasta != null && !perfisDeAcessoDaPasta.isEmpty()) { for (PerfilAcessoDTO perfilAcessoPasta : perfisDeAcessoDaPasta) { String aprovaBase = br.com.citframework.util.WebUtil.codificaEnter((perfilAcessoPasta.getAprovaBaseConhecimento() != null ? perfilAcessoPasta.getAprovaBaseConhecimento() : "")); String permiteLeitura = br.com.citframework.util.WebUtil.codificaEnter((perfilAcessoPasta.getPermiteLeitura() != null ? perfilAcessoPasta.getPermiteLeitura() : "")); String permiteLeituraGravacao = br.com.citframework.util.WebUtil.codificaEnter((perfilAcessoPasta.getPermiteLeituraGravacao() != null ? perfilAcessoPasta.getPermiteLeituraGravacao() : "")); document.executeScript("atribuirChecked('" + perfilAcessoPasta.getIdPerfilAcesso() + "','" + aprovaBase + "','" + permiteLeitura + "','" + permiteLeituraGravacao + "')"); } } } } } /** * Cara combo de pastas. * * @param document * @param idPasta * @throws Exception * @throws LogicException * @throws ServiceException */ private void carregarComboPastaSuperiorNoRestore(DocumentHTML document, HttpServletRequest request, PastaDTO pastaDto) throws Exception, LogicException, ServiceException { PerfilAcessoGrupoDTO perfilAcessoGrupo = new PerfilAcessoGrupoDTO(); UsuarioDTO usuarioDto = new UsuarioDTO(); usuarioDto = WebUtil.getUsuario(request); PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null); GrupoEmpregadoService grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(GrupoEmpregadoService.class, null); PerfilAcessoGrupoService perfilAcessoGrupoService = (PerfilAcessoGrupoService) ServiceLocator.getInstance().getService(PerfilAcessoGrupoService.class, null); HTMLSelect comboPasta = (HTMLSelect) document.getSelectById("comboPastaPai"); comboPasta.removeAllOptions(); comboPasta.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); Collection<PastaDTO> pastasAtivas = pastaService.consultarPastasAtivas(); ArrayList<PastaDTO> listaPastaAux = (ArrayList<PastaDTO>) pastaService.listPastasESubpastas(); for (PastaDTO pasta : listaPastaAux) { if (pasta.getDataFim() == null) { if (!pasta.getId().equals(pastaDto.getId())) { comboPasta.addOption(pasta.getId().toString(), StringEscapeUtils.escapeJavaScript(pasta.getNomeNivel())); } } } } /** * Exclui Pasta. * * @param document * @param request * @param response * @throws Exception * @throws ServiceException * @author valdoilo.damasceno */ public void excluirPasta(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception { PastaDTO pastaDto = new PastaDTO(); pastaDto = (PastaDTO) document.getBean(); PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null); if (pastaService.excluirPasta(pastaDto)) { CITCorporeUtil.limparFormulario(document); document.alert(UtilI18N.internacionaliza(request, "MSG07")); document.executeScript("fechar_aguarde();"); } else { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroNaoPodeSerExcluido")); document.executeScript("fechar_aguarde();"); } } /** * Carrega combo de Pastas. * * @param document * @throws Exception */ private void carregarComboDePastas(DocumentHTML document, HttpServletRequest request) throws Exception { HTMLSelect comboPasta = (HTMLSelect) document.getSelectById("comboPastaPai"); comboPasta.removeAllOptions(); comboPasta.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null); Collection<PastaDTO> listPastasESubpastas = pastaService.listPastasESubpastas(); if (listPastasESubpastas != null && !listPastasESubpastas.isEmpty()) { for (PastaDTO pasta : listPastasESubpastas) { if (pasta.getDataFim() == null) { comboPasta.addOption(pasta.getId().toString(), StringEscapeUtils.escapeJavaScript(pasta.getNomeNivel())); } } } } /** * Ativa Checkbox "Herdar Permiss�es" caso a pasta * * @param document * @param request * @param response * @throws ServiceException * @throws Exception */ public void ativarHerdarPemissoes(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws ServiceException, Exception { PastaDTO pastaDto = (PastaDTO) document.getBean(); PastaDTO pastaSelecionada = new PastaDTO(); if (pastaDto.getIdPastaPai() != null) { document.executeScript("ativarCheckHerdarPermissoes()"); } else { document.executeScript("desativarCheckHerdarPermissoes()"); } } public void preencherComboNotificacao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { HTMLSelect comboTipoNotificacao = (HTMLSelect) document.getSelectById("tipo"); inicializaCombo(comboTipoNotificacao, request); for (Enumerados.TipoNotificacao tipoNotificacao : Enumerados.TipoNotificacao.values()) { comboTipoNotificacao.addOption(tipoNotificacao.getTipoNotificacao(), UtilI18N.internacionaliza(request, tipoNotificacao.getDescricao())); } } private void inicializaCombo(HTMLSelect componenteCombo, HttpServletRequest request) { componenteCombo.removeAllOptions(); componenteCombo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); } public void gravarNotificacao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{ PastaDTO pastaDto = (PastaDTO) document.getBean(); NotificacaoDTO notificacaoDto = new NotificacaoDTO(); pastaDto.setPerfisDeAcesso(br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(PerfilAcessoPastaDTO.class, "perfisSerializados", request)); pastaDto.setListaDeUsuario((ArrayList<NotificacaoUsuarioDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(NotificacaoUsuarioDTO.class, "usuariosSerializados", request)); pastaDto.setListaDeGrupo((ArrayList<NotificacaoGrupoDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(NotificacaoGrupoDTO.class, "gruposSerializados", request)); PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null); NotificacaoService notificacaoService = (NotificacaoService) ServiceLocator.getInstance().getService(NotificacaoService.class, null); if(pastaDto.getId()!=null){ if(pastaDto.getIdNotificacao()!=null ){ if(pastaDto.getTitulo()!=null && !pastaDto.getTitulo().equalsIgnoreCase("")){ notificacaoDto.setTitulo(pastaDto.getTitulo()); }else{ document.alert(UtilI18N.internacionaliza(request, "baseConhecimento.tituloObrigatorio")); return; } if(pastaDto.getTipoNotificacao()!=null && !pastaDto.getTipoNotificacao().equalsIgnoreCase("")){ notificacaoDto.setTipoNotificacao(pastaDto.getTipoNotificacao()); }else{ document.alert(UtilI18N.internacionaliza(request, "baseConhecimento.tipoNotificacaoObrigatorio")); return; } pastaService.criarNotificacao(pastaDto, null); document.alert(UtilI18N.internacionaliza(request, "MSG06")); }else{ if(pastaDto.getTitulo()!=null && !pastaDto.getTitulo().equalsIgnoreCase("")){ notificacaoDto.setTitulo(pastaDto.getTitulo()); }else{ document.alert(UtilI18N.internacionaliza(request, "baseConhecimento.tituloObrigatorio")); return; } if(pastaDto.getTipoNotificacao()!=null && !pastaDto.getTipoNotificacao().equalsIgnoreCase("")){ notificacaoDto.setTipoNotificacao(pastaDto.getTipoNotificacao()); }else{ document.alert(UtilI18N.internacionaliza(request, "baseConhecimento.tipoNotificacaoObrigatorio")); return; } notificacaoDto = pastaService.criarNotificacao(pastaDto, null); pastaDto.setIdNotificacao(notificacaoDto.getIdNotificacao()); pastaService.update(pastaDto); document.alert(UtilI18N.internacionaliza(request, "MSG05")); } } } /** * * @param document * @param request * @param response * @return * @throws Exception */ public void validarHerancadePermissao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PastaDTO pastaDto = (PastaDTO) document.getBean(); if(pastaDto.getId() != null){ if(existeCruzamentoDeHeranca(pastaDto)) { document.alert(UtilI18N.internacionaliza(request, "pasta.naoEPossivelRelacionarAPastaSuperior")); } } } public boolean existeCruzamentoDeHeranca(PastaDTO pastaDTO) throws ServiceException, Exception { PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null); if(pastaDTO.getIdPastaPai() != null) { PastaDTO pastaPai = (PastaDTO) pastaService.restore(new PastaDTO(pastaDTO.getIdPastaPai())); if(pastaPai != null && pastaPai.getIdPastaPai() != null) { if(pastaPai.getIdPastaPai().equals(pastaDTO.getId())) return true; } } return false; } @Override public Class getBeanClass() { // TODO Auto-generated method stub return PastaDTO.class; } }