package br.com.centralit.citcorpore.metainfo.ajaxForms; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.math.BigInteger; import java.sql.Date; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; import br.com.centralit.citajax.framework.ParserRequest; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citcorpore.bean.PerfilAcessoMenuDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.metainfo.bean.CamposObjetoNegocioDTO; import br.com.centralit.citcorpore.metainfo.bean.ColumnsDTO; import br.com.centralit.citcorpore.metainfo.bean.DinamicViewsDTO; import br.com.centralit.citcorpore.metainfo.bean.GrupoVisaoCamposNegocioDTO; import br.com.centralit.citcorpore.metainfo.bean.GrupoVisaoDTO; import br.com.centralit.citcorpore.metainfo.bean.HtmlCodeVisaoDTO; import br.com.centralit.citcorpore.metainfo.bean.ScriptsVisaoDTO; import br.com.centralit.citcorpore.metainfo.bean.VisaoDTO; import br.com.centralit.citcorpore.metainfo.bean.VisaoRelacionadaDTO; import br.com.centralit.citcorpore.metainfo.negocio.BotaoAcaoVisaoService; import br.com.centralit.citcorpore.metainfo.negocio.CamposObjetoNegocioService; import br.com.centralit.citcorpore.metainfo.negocio.DinamicViewsService; import br.com.centralit.citcorpore.metainfo.negocio.GrupoVisaoCamposNegocioService; import br.com.centralit.citcorpore.metainfo.negocio.GrupoVisaoService; import br.com.centralit.citcorpore.metainfo.negocio.HtmlCodeVisaoService; import br.com.centralit.citcorpore.metainfo.negocio.ScriptsVisaoService; import br.com.centralit.citcorpore.metainfo.negocio.ValorVisaoCamposNegocioService; import br.com.centralit.citcorpore.metainfo.negocio.VisaoRelacionadaService; import br.com.centralit.citcorpore.metainfo.negocio.VisaoService; import br.com.centralit.citcorpore.metainfo.script.ScriptRhinoJSExecute; import br.com.centralit.citcorpore.metainfo.util.JSONUtil; import br.com.centralit.citcorpore.metainfo.util.MetaUtil; import br.com.centralit.citcorpore.negocio.ExecucaoSolicitacaoService; import br.com.centralit.citcorpore.negocio.MenuService; import br.com.centralit.citcorpore.negocio.ServicoContratoServiceEjb; import br.com.centralit.citcorpore.negocio.SlaRequisitoSlaServiceEjb; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; import br.com.centralit.citcorpore.util.Util; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilFormatacao; import br.com.citframework.util.UtilI18N; import br.com.citframework.util.UtilStrings; import com.google.gson.Gson; @SuppressWarnings({"rawtypes", "unchecked"}) public class DinamicViews extends AjaxFormAction { private static final Logger LOGGER = Logger.getLogger(DinamicViews.class); private static boolean DEBUG = false; private static Gson GSON = new Gson(); @Override public Class<DinamicViewsDTO> getBeanClass() { return DinamicViewsDTO.class; } @Override public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final UsuarioDTO usuarioDto = WebUtil.getUsuario(request); if (usuarioDto == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } final DinamicViewsDTO dinamicViewsDTO = (DinamicViewsDTO) document.getBean(); if (dinamicViewsDTO.getIdVisao() == null) { if (StringUtils.isNotBlank(dinamicViewsDTO.getIdentificacao())) { final VisaoService visaoService = (VisaoService) ServiceLocator.getInstance().getService(VisaoService.class, null); final VisaoDTO visaoDto = visaoService.findByIdentificador(dinamicViewsDTO.getIdentificacao()); if (visaoDto == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.visao_nao_encontrada")); return; } dinamicViewsDTO.setIdVisao(visaoDto.getIdVisao()); } else { document.alert(UtilI18N.internacionaliza(request, "dinamicview.visaonaoencontrada")); return; } } final VisaoDTO visaoDto = this.recuperaVisao(dinamicViewsDTO.getIdVisao(), true); if (visaoDto == null) { document.alert(UtilI18N.internacionaliza(request, "dinamicview.visaonaoencontrada")); return; } final Map hashValores = this.getFormFields(request); if (DEBUG) { this.debugValuesFromRequest(hashValores); } final Map<String, Object> map = new HashMap<>(); map.put("SESSION.DINAMICVIEWS_SAVEINFO", request.getSession().getAttribute("DinamicViews_SaveInfo")); map.put("SESSION.NUMERO_CONTRATO_EDICAO", request.getSession().getAttribute("NUMERO_CONTRATO_EDICAO")); request.setAttribute("visao", visaoDto); request.getSession().setAttribute("DinamicViews_SaveInfo", ""); request.getSession().setAttribute("DinamicViews_SaveInfo", dinamicViewsDTO.getSaveInfo()); final BotaoAcaoVisaoService botaoAcaoVisaoService = (BotaoAcaoVisaoService) ServiceLocator.getInstance().getService(BotaoAcaoVisaoService.class, null); final Collection colBotoes = botaoAcaoVisaoService.findByIdVisao(dinamicViewsDTO.getIdVisao()); request.setAttribute("botoes", colBotoes); final String strScript = (String) visaoDto.getMapScripts().get(ScriptsVisaoDTO.SCRIPT_EXECUTE_SERVER + "#" + ScriptsVisaoDTO.SCRIPT_LOAD.getName()); if (StringUtils.isNotBlank(strScript)) { final ScriptRhinoJSExecute scriptExecute = new ScriptRhinoJSExecute(); final Context cx = Context.enter(); final Scriptable scope = cx.initStandardObjects(); scope.put("usuarioDto", scope, usuarioDto); scope.put("document", scope, document); scope.put("mapFields", scope, map); scope.put("visaoDto", scope, visaoDto); scope.put("request", scope, request); scope.put("response", scope, response); scope.put("language", scope, WebUtil.getLanguage(request)); scriptExecute.processScript(cx, scope, strScript, DinamicViews.class.getName() + "_" + ScriptsVisaoDTO.SCRIPT_LOAD.getName()); } this.setValuesFromMap(document, request, map, "document.form"); if (StringUtils.isNotBlank(dinamicViewsDTO.getId())) { final VisaoDTO visaoPesquisaDto = this.recuperaVisao(visaoDto.getIdVisao(), false); final Collection colFilter = new ArrayList(); final Collection colGrupos = visaoPesquisaDto.getColGrupos(); for (final Iterator it = colGrupos.iterator(); it.hasNext();) { final GrupoVisaoDTO grupoVisaoDTO = (GrupoVisaoDTO) it.next(); if (grupoVisaoDTO.getColCamposVisao() != null) { for (final Iterator it2 = grupoVisaoDTO.getColCamposVisao().iterator(); it2.hasNext();) { final GrupoVisaoCamposNegocioDTO grupoVisaoCamposNegocioDTO = (GrupoVisaoCamposNegocioDTO) it2.next(); if (grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto().getPk().equalsIgnoreCase("S")) { grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto().setValue(dinamicViewsDTO.getId()); colFilter.add(grupoVisaoCamposNegocioDTO); } } } } final String metodoOrigem = "load"; this.restoreVisao(document, request, response, visaoDto.getIdVisao(), colFilter, metodoOrigem); } /** * Recupera��o de permiss�o de menus feita atrav�s do mapa est�tico da sess�o * * @author thyen.chang * @since 28/01/2015 - OPERA��O USAIN BOLT */ final MenuService menuService = (MenuService) ServiceLocator.getInstance().getService(MenuService.class, null); final String pathInfo = this.getRequestedPath(request); final String url = pathInfo.replaceAll("/pages", ""); final Integer idMenu = menuService.buscarIdMenu(url); String acessoGravar = "N"; String acessoDeletar = "N"; String acessoPesquisar = "N"; if (idMenu != null) { final List<PerfilAcessoMenuDTO> listaAcessoMenus = WebUtil.getPerfilAcessoUsuarioByMenu(request, usuarioDto, idMenu); if (listaAcessoMenus != null) { for (final PerfilAcessoMenuDTO perfilAcessoMenu : listaAcessoMenus) { if (perfilAcessoMenu.getGrava() != null && perfilAcessoMenu.getGrava().equalsIgnoreCase("S")) { acessoGravar = "S"; } if (perfilAcessoMenu.getDeleta() != null && perfilAcessoMenu.getDeleta().equalsIgnoreCase("S")) { acessoDeletar = "S"; } if (perfilAcessoMenu.getPesquisa() != null && perfilAcessoMenu.getPesquisa().equalsIgnoreCase("S")) { acessoPesquisar = "S"; } } } } else { acessoGravar = "S"; acessoDeletar = "S"; acessoPesquisar = "S"; } if (acessoGravar.equalsIgnoreCase("N")) { document.executeScript("try{document.getElementById('btnGravar').style.display='none';}catch(e){}"); } if (acessoDeletar.equalsIgnoreCase("N")) { document.executeScript("try{document.getElementById('btnExcluir').style.display='none';}catch(e){}"); } if (acessoPesquisar.equalsIgnoreCase("S")) { document.executeScript("try{acaoPesquisar = 'S';}catch(e){}"); } if (dinamicViewsDTO.getIdentificacao() != null && "Contratos".equalsIgnoreCase(dinamicViewsDTO.getIdentificacao())) { this.limparCamposFirefox(document); } } /** * Metodo responsavel por limpar os campos da dinamic view contrato. * * A cria��o dessa fun��o diretamente na tela, estava gerando um alert de erro. * * a solu��o encontrada para n�o gerar alerta de erro ao usu�rio, foi criar a fun��o direto na classe e * * ser� executada apenas se a identifica��o da dinamicView for igual a 'Contratos' * * @param document * * @author Ezequiel Bispo Nunes */ private void limparCamposFirefox(final DocumentHTML document) { final StringBuilder acaoLimparCamposFirefox = new StringBuilder(); acaoLimparCamposFirefox.append("if ( $('#IDCONTRATO').val() != null && $('#IDCONTRATO').val() != ''){ "); acaoLimparCamposFirefox.append(" $('#form').find(\"input[type='text'], select, textarea\").val(\"\"); "); acaoLimparCamposFirefox.append(" $(\"#codigo\").val(); "); acaoLimparCamposFirefox.append(" $('#IDCONTRATO').val(\"\"); "); acaoLimparCamposFirefox.append(" jQuery(\"input[type='radio']\").attr(\"checked\",false); "); acaoLimparCamposFirefox.append(" limpaVinculacoes(); "); acaoLimparCamposFirefox.append("}"); document.executeScript(acaoLimparCamposFirefox.toString()); } private String getRequestedPath(final HttpServletRequest request) { String path = request.getRequestURI() + "?" + request.getQueryString(); path = path.substring(request.getContextPath().length()); return path; } public String getObjectName(final String path) { String strResult = ""; boolean b = false; for (int i = path.length() - 1; i >= 0; i--) { if (b) { if (path.charAt(i) == '/') { return strResult; } else { strResult = path.charAt(i) + strResult; } } else { if (path.charAt(i) == '.') { b = true; } } } return strResult; } public void setDadosTemporarios(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final UsuarioDTO usuarioDto = WebUtil.getUsuario(request); if (usuarioDto == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } final DinamicViewsDTO dinamicViewsDTO = (DinamicViewsDTO) document.getBean(); request.getSession(true).setAttribute("tempData_" + usuarioDto.getIdUsuario() + "_" + dinamicViewsDTO.getKeyControl(), dinamicViewsDTO.getDinamicViewsJson_tempData()); } public void recuperaVisaoFluxo(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final DinamicViewsDTO dinamicViewsDTO = (DinamicViewsDTO) document.getBean(); if (dinamicViewsDTO.getIdTarefa() != null) { final Collection<GrupoVisaoCamposNegocioDTO> colFilter = this.findCamposTarefa(dinamicViewsDTO.getIdTarefa()); if (colFilter != null) { final String metodoOrigem = "recuperaVisaoFluxo"; this.restoreVisao(document, request, response, dinamicViewsDTO.getDinamicViewsIdVisao(), colFilter, metodoOrigem); } } } public VisaoDTO recuperaVisao(final Integer idVisao, final boolean comFilhos) throws ServiceException, Exception { final VisaoService visaoService = (VisaoService) ServiceLocator.getInstance().getService(VisaoService.class, null); final GrupoVisaoService grupoVisaoService = (GrupoVisaoService) ServiceLocator.getInstance().getService(GrupoVisaoService.class, null); final GrupoVisaoCamposNegocioService grupoVisaoCamposNegocioService = (GrupoVisaoCamposNegocioService) ServiceLocator.getInstance().getService( GrupoVisaoCamposNegocioService.class, null); final CamposObjetoNegocioService camposObjetoNegocioService = (CamposObjetoNegocioService) ServiceLocator.getInstance().getService(CamposObjetoNegocioService.class, null); final ValorVisaoCamposNegocioService valorVisaoCamposNegocioService = (ValorVisaoCamposNegocioService) ServiceLocator.getInstance().getService( ValorVisaoCamposNegocioService.class, null); final VisaoRelacionadaService visaoRelacionadaService = (VisaoRelacionadaService) ServiceLocator.getInstance().getService(VisaoRelacionadaService.class, null); final ScriptsVisaoService scriptsVisaoService = (ScriptsVisaoService) ServiceLocator.getInstance().getService(ScriptsVisaoService.class, null); final HtmlCodeVisaoService htmlCodeVisaoService = (HtmlCodeVisaoService) ServiceLocator.getInstance().getService(HtmlCodeVisaoService.class, null); VisaoDTO visaoDto = new VisaoDTO(); visaoDto.setIdVisao(idVisao); visaoDto = (VisaoDTO) visaoService.restore(visaoDto); if (visaoDto == null) { return null; } final Collection colGrupos = grupoVisaoService.findByIdVisaoAtivos(idVisao); if (colGrupos != null) { for (final Iterator it = colGrupos.iterator(); it.hasNext();) { final GrupoVisaoDTO grupoVisaoDTO = (GrupoVisaoDTO) it.next(); grupoVisaoDTO.setColCamposVisao(grupoVisaoCamposNegocioService.findByIdGrupoVisaoAtivos(grupoVisaoDTO.getIdGrupoVisao())); if (grupoVisaoDTO.getColCamposVisao() != null) { for (final Iterator it2 = grupoVisaoDTO.getColCamposVisao().iterator(); it2.hasNext();) { final GrupoVisaoCamposNegocioDTO grupoVisaoCamposNegocioDTO = (GrupoVisaoCamposNegocioDTO) it2.next(); CamposObjetoNegocioDTO camposObjetoNegocioDTO = new CamposObjetoNegocioDTO(); camposObjetoNegocioDTO.setIdCamposObjetoNegocio(grupoVisaoCamposNegocioDTO.getIdCamposObjetoNegocio()); camposObjetoNegocioDTO = (CamposObjetoNegocioDTO) camposObjetoNegocioService.restore(camposObjetoNegocioDTO); grupoVisaoCamposNegocioDTO.setCamposObjetoNegocioDto(camposObjetoNegocioDTO); final Collection colValores = valorVisaoCamposNegocioService.findByIdGrupoVisaoAndIdCampoObjetoNegocio(grupoVisaoDTO.getIdGrupoVisao(), grupoVisaoCamposNegocioDTO.getIdCamposObjetoNegocio()); grupoVisaoCamposNegocioDTO.setColValores(colValores); } } } } visaoDto.setColGrupos(colGrupos); if (comFilhos) { final Collection colVisoesRelacionadas = visaoRelacionadaService.findByIdVisaoPaiAtivos(idVisao); visaoDto.setColVisoesRelacionadas(colVisoesRelacionadas); if (colVisoesRelacionadas != null) { for (final Iterator it = colVisoesRelacionadas.iterator(); it.hasNext();) { final VisaoRelacionadaDTO visaoRelacionadaDto = (VisaoRelacionadaDTO) it.next(); if (visaoRelacionadaDto.getIdVisaoFilha() != null) { final VisaoDTO visaoFilhaDTO = this.recuperaVisao(visaoRelacionadaDto.getIdVisaoFilha(), false); if (visaoFilhaDTO != null) { visaoFilhaDTO.setFilha(true); visaoFilhaDTO.setAcaoVisaoFilhaPesqRelacionada(visaoRelacionadaDto.getAcaoEmSelecaoPesquisa()); visaoRelacionadaDto.setVisaoFilhaDto(visaoFilhaDTO); } } } } final Collection colScripts = scriptsVisaoService.findByIdVisao(idVisao); visaoDto.setColScripts(colScripts); HashMap map = new HashMap(); if (colScripts != null) { for (final Iterator it = colScripts.iterator(); it.hasNext();) { final ScriptsVisaoDTO scriptsVisaoDTO = (ScriptsVisaoDTO) it.next(); map.put(scriptsVisaoDTO.getTypeExecute() + "#" + scriptsVisaoDTO.getScryptType().trim(), scriptsVisaoDTO.getScript()); } } visaoDto.setMapScripts(map); final Collection colHtmlCode = htmlCodeVisaoService.findByIdVisao(idVisao); visaoDto.setColHtmlCode(colHtmlCode); map = new HashMap(); if (colHtmlCode != null) { for (final Iterator it = colHtmlCode.iterator(); it.hasNext();) { final HtmlCodeVisaoDTO htmlCodeVisaoDTO = (HtmlCodeVisaoDTO) it.next(); map.put(htmlCodeVisaoDTO.getHtmlCodeType().trim(), htmlCodeVisaoDTO.getHtmlCode()); } } visaoDto.setMapHtmlCodes(map); } if (visaoDto.getMapScripts() == null) { visaoDto.setMapScripts(new HashMap()); } if (visaoDto.getMapHtmlCodes() == null) { visaoDto.setMapHtmlCodes(new HashMap()); } return visaoDto; } public void save(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final UsuarioDTO usuarioDto = WebUtil.getUsuario(request); if (usuarioDto == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } try { final DinamicViewsDTO dinamicViewsDto = (DinamicViewsDTO) document.getBean(); final DinamicViewsService dinamicViewsService = (DinamicViewsService) ServiceLocator.getInstance().getService(DinamicViewsService.class, WebUtil.getUsuarioSistema(request)); final Map hashValores = this.getFormFields(request); if (DEBUG) { this.debugValuesFromRequest(hashValores); } Map<String, Object> map = null; try { map = JSONUtil.convertJsonToMap(dinamicViewsDto.getDinamicViewsDadosAdicionais(), true); } catch (final Exception e) { LOGGER.error("dinamicViewsDto.getDinamicViewsDadosAdicionais(): " + dinamicViewsDto.getDinamicViewsDadosAdicionais(), e); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); throw e; } dinamicViewsDto.setDinamicViewsMapDadosAdicional(map); if (map != null) { hashValores.putAll(map); } hashValores.put("SESSION.DINAMICVIEWS_SAVEINFO", request.getSession().getAttribute("DinamicViews_SaveInfo")); hashValores.put("SESSION.NUMERO_CONTRATO_EDICAO", request.getSession().getAttribute("NUMERO_CONTRATO_EDICAO")); if (dinamicViewsDto.getJsonMatriz() != null && !dinamicViewsDto.getJsonMatriz().trim().equalsIgnoreCase("")) { dinamicViewsService.saveMatriz(usuarioDto, dinamicViewsDto, request); } else { dinamicViewsService.save(usuarioDto, dinamicViewsDto, hashValores, request); } if (dinamicViewsDto.getMsgRetorno() == null || dinamicViewsDto.getMsgRetorno().trim().equalsIgnoreCase("")) { document.alert(UtilI18N.internacionaliza(request, "dinamicview.gravadocomsucesso")); if (dinamicViewsDto.getIdFluxo() == null) { document.executeScript("limpar()"); } else { document.executeScript("cancelar()"); } document.executeScript("fecharSePOPUP()"); } else { document.alert(dinamicViewsDto.getMsgRetorno()); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } catch (final Exception e) { LOGGER.warn(e.getMessage(), e); final String msgErro = e.getMessage().replaceAll("java.lang.Exception:", ""); document.alert(msgErro); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } } private Map getFormFields(final HttpServletRequest req) { try { req.setCharacterEncoding("ISO-8859-1"); } catch (final UnsupportedEncodingException e) { LOGGER.warn("PROBLEMA COM CODIFICACAO DE CARACTERES!!! [AjaxProcessEvent.getFormFields()]: " + e.getMessage(), e); } final Map formFields = new HashMap(); final Enumeration en = req.getParameterNames(); String[] strValores; while (en.hasMoreElements()) { final String nomeCampo = (String) en.nextElement(); strValores = req.getParameterValues(nomeCampo); if (strValores.length == 0) { formFields.put(nomeCampo.toUpperCase(), UtilStrings.decodeCaracteresEspeciais(req.getParameter(nomeCampo))); } else { if (strValores.length == 1) { formFields.put(nomeCampo.toUpperCase(), UtilStrings.decodeCaracteresEspeciais(Util.tratarAspasSimples(strValores[0]))); } else { formFields.put(nomeCampo.toUpperCase(), strValores); } } } return formFields; } public void delete(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final ScriptsVisaoService scriptsVisaoService = (ScriptsVisaoService) ServiceLocator.getInstance().getService(ScriptsVisaoService.class, null); final UsuarioDTO usuarioDto = WebUtil.getUsuario(request); if (usuarioDto == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } final DinamicViewsDTO dinamicViewsDto = (DinamicViewsDTO) document.getBean(); final DinamicViewsService dinamicViewsService = (DinamicViewsService) ServiceLocator.getInstance() .getService(DinamicViewsService.class, WebUtil.getUsuarioSistema(request)); final ParserRequest parser = new ParserRequest(); final Map hashValores = parser.getFormFields(request); if (DEBUG) { this.debugValuesFromRequest(hashValores); } final Map<String, Object> map = JSONUtil.convertJsonToMap(dinamicViewsDto.getDinamicViewsDadosAdicionais(), true); dinamicViewsDto.setDinamicViewsMapDadosAdicional(map); if (map != null) { hashValores.putAll(map); } // tratamento de dele��o para a vis�o de contratos if (hashValores.containsKey("IDCONTRATO") && hashValores.containsKey("DATAFIMCONTRATO") && hashValores.containsKey("COTACAOMOEDA")) { final boolean defineExclusao = new ServicoContratoServiceEjb().pesquisaServicosVinculados(document, hashValores, request); if (!defineExclusao) { document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } } /** * Tratativa para exclus�o de Requisitos de SLA * * @author thyen.chang */ if (hashValores.containsKey("IDREQUISITOSLA") && hashValores.containsKey("REQUISITADOEM") && hashValores.get("IDREQUISITOSLA") != null && !((String) hashValores.get("IDREQUISITOSLA")).isEmpty()) { final boolean existeRelacionamento = new SlaRequisitoSlaServiceEjb().existeAcordoByRequisito(Integer.parseInt((String) hashValores.get("IDREQUISITOSLA"))); if (existeRelacionamento) { document.alert(UtilI18N.internacionaliza(request, "dinamicview.existerequisitorelacionado")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } } final Collection colScripts = scriptsVisaoService.findByIdVisao(dinamicViewsDto.getDinamicViewsIdVisao()); final HashMap mapScritps = new HashMap(); if (colScripts != null) { for (final Iterator it = colScripts.iterator(); it.hasNext();) { final ScriptsVisaoDTO scriptsVisaoDTO = (ScriptsVisaoDTO) it.next(); mapScritps.put(scriptsVisaoDTO.getTypeExecute() + "#" + scriptsVisaoDTO.getScryptType().trim(), scriptsVisaoDTO.getScript()); } } final String strScript = (String) mapScritps.get(ScriptsVisaoDTO.SCRIPT_EXECUTE_SERVER + "#" + ScriptsVisaoDTO.SCRIPT_ONDELETE.getName()); if (StringUtils.isNotBlank(strScript)) { final ScriptRhinoJSExecute scriptExecute = new ScriptRhinoJSExecute(); final Context cx = Context.enter(); final Scriptable scope = cx.initStandardObjects(); scope.put("usuarioDto", scope, usuarioDto); scope.put("dinamicViewsDto", scope, dinamicViewsDto); scope.put("document", scope, document); scope.put("mapFields", scope, hashValores); scope.put("request", scope, request); scope.put("response", scope, response); scope.put("language", scope, WebUtil.getLanguage(request)); scriptExecute.processScript(cx, scope, strScript, DinamicViews.class.getName() + "_" + ScriptsVisaoDTO.SCRIPT_ONDELETE.getName()); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); } hashValores.put("REMOVED", "true"); /* * Thiago Fernandes Oliveira - 28/10/2013 - Sol. 121468 - S� sera excluido algum registro caso ele tenha sido restaurado, evitando o cadastro de algum registro ao clicar em * excluir. * Modulos, Libera��o, Mudan�a e Problema. */ if (hashValores.containsKey("IDJUSTIFICATIVAMUDANCA") || hashValores.containsKey("IDJUSTIFICATIVALIBERACAO") || hashValores.containsKey("IDJUSTIFICATIVAPROBLEMA")) { if (hashValores.get("IDJUSTIFICATIVAMUDANCA") != null && !hashValores.get("IDJUSTIFICATIVAMUDANCA").equals("") || hashValores.get("IDJUSTIFICATIVALIBERACAO") != null && !hashValores.get("IDJUSTIFICATIVALIBERACAO").equals("") || hashValores.get("IDJUSTIFICATIVAPROBLEMA") != null && !hashValores.get("IDJUSTIFICATIVAPROBLEMA").equals("")) { dinamicViewsService.save(usuarioDto, dinamicViewsDto, hashValores, request); // A exclus�o � sempre l�gica. document.alert(UtilI18N.internacionaliza(request, "MSG07") + "!"); if (dinamicViewsDto.getIdFluxo() == null) { document.executeScript("limpar()"); document.executeScript("location.reload()"); } else { document.executeScript("cancelar()"); } document.executeScript("fecharSePOPUP()"); return; } else { document.alert(UtilI18N.internacionaliza(request, "jornadaTrabalho.necessarioSelecionarRegistro")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } } /* * Inserido para tratar quando n�o existe nenhum elemento a ser exclu�do. * M�rio J�nior - 14/02/2014 */ final Collection colCamposPKPrincipal = new ArrayList(); final Collection colCamposTodosPrincipal = new ArrayList(); dinamicViewsService.setInfoSave(dinamicViewsDto.getDinamicViewsIdVisao(), colCamposPKPrincipal, colCamposTodosPrincipal); final boolean existeAlgumElemento = dinamicViewsService.isPKExists(colCamposPKPrincipal, hashValores); if (!existeAlgumElemento) { document.alert(UtilI18N.internacionaliza(request, "jornadaTrabalho.necessarioSelecionarRegistro")); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } dinamicViewsService.save(usuarioDto, dinamicViewsDto, hashValores, request); // A exclus�o � sempre l�gica. /* * Rodrigo Pecci Acorse - 21/01/2014 15h30 - #131113 * Utiliza os scripts da dinamic view e valida se a exclus�o foi feita ou n�o. */ if (dinamicViewsDto.getMsgRetorno() == null || dinamicViewsDto.getMsgRetorno().trim().equalsIgnoreCase("")) { document.alert(UtilI18N.internacionaliza(request, "MSG07") + "!"); } else { document.alert(dinamicViewsDto.getMsgRetorno()); } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); if (dinamicViewsDto.getIdFluxo() == null) { document.executeScript("limpar()"); document.executeScript("location.reload()"); } else { document.executeScript("cancelar()"); } document.executeScript("fecharSePOPUP()"); } public void restoreVisao(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response, final Integer idVisao, final Collection colFilter, final String metodoOrigem) throws Exception { final UsuarioDTO usuarioDto = WebUtil.getUsuario(request); if (usuarioDto == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } final DinamicViewsService dinamicViewsService = (DinamicViewsService) ServiceLocator.getInstance().getService(DinamicViewsService.class, null); final ScriptsVisaoService scriptsVisaoService = (ScriptsVisaoService) ServiceLocator.getInstance().getService(ScriptsVisaoService.class, null); final Collection col = dinamicViewsService.restoreVisao(idVisao, colFilter); final HashMap map = new HashMap(); if (col != null) { for (final Iterator it = col.iterator(); it.hasNext();) { final GrupoVisaoCamposNegocioDTO grupoVisaoCamposNegocioDTO = (GrupoVisaoCamposNegocioDTO) it.next(); final CamposObjetoNegocioDTO camposObjetoNegocioDTO = grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto(); if (camposObjetoNegocioDTO.getTipoDB().startsWith("NUMBER") && camposObjetoNegocioDTO.getPrecisionDB() == 0) { if (camposObjetoNegocioDTO.getValue() instanceof BigDecimal) { final BigDecimal aux = (BigDecimal) camposObjetoNegocioDTO.getValue(); camposObjetoNegocioDTO.setValue(new Integer(aux.intValue())); } } map.put(camposObjetoNegocioDTO.getNomeDB(), camposObjetoNegocioDTO.getValue()); if (grupoVisaoCamposNegocioDTO.getTipoNegocio().equalsIgnoreCase(MetaUtil.RELATION)) { if (grupoVisaoCamposNegocioDTO.getTipoLigacao().equalsIgnoreCase(GrupoVisaoCamposNegocioDTO.RELATION_SIMPLE)) { if (camposObjetoNegocioDTO.getReturnLookupDTO() != null) { map.put(camposObjetoNegocioDTO.getNomeDB() + "_label", camposObjetoNegocioDTO.getReturnLookupDTO().getLabel()); } } } } final Collection colScripts = scriptsVisaoService.findByIdVisao(idVisao); final HashMap mapScritps = new HashMap(); if (colScripts != null) { for (final Iterator it = colScripts.iterator(); it.hasNext();) { final ScriptsVisaoDTO scriptsVisaoDTO = (ScriptsVisaoDTO) it.next(); mapScritps.put(scriptsVisaoDTO.getTypeExecute() + "#" + scriptsVisaoDTO.getScryptType().trim(), scriptsVisaoDTO.getScript()); } } final String strScript = (String) mapScritps.get(ScriptsVisaoDTO.SCRIPT_EXECUTE_SERVER + "#" + ScriptsVisaoDTO.SCRIPT_ONRESTORE.getName()); if (StringUtils.isNotBlank(strScript)) { final ScriptRhinoJSExecute scriptExecute = new ScriptRhinoJSExecute(); final Context cx = Context.enter(); final Scriptable scope = cx.initStandardObjects(); scope.put("usuarioDto", scope, usuarioDto); scope.put("document", scope, document); scope.put("mapFields", scope, map); scope.put("request", scope, request); scope.put("response", scope, response); scope.put("language", scope, WebUtil.getLanguage(request)); scriptExecute.processScript(cx, scope, strScript, DinamicViews.class.getName() + "_" + ScriptsVisaoDTO.SCRIPT_ONRESTORE.getName()); } document.executeScript("try{limpar();}catch(e){}"); this.setValuesFromMap(document, request, map, "document.form"); document.getElementById("dinamicViewsIdVisao").setValue("" + idVisao); document.executeScript("try{$( '#tabs' ).tabs('select', 0);}catch(e){}"); document.executeScript("carregaVinculacoes()"); String modoExibicao = request.getParameter("modoExibicao"); if (modoExibicao == null || modoExibicao.trim().length() == 0) { modoExibicao = "N"; } if (!modoExibicao.equals("J")) { if (metodoOrigem == null || !metodoOrigem.equalsIgnoreCase("load")) { document.executeScript("restore_scripts()"); } } else { document.executeScript("restore_scripts()"); } } else { document.alert(UtilI18N.internacionaliza(request, "dinamicview.naofoipossivelrecuperar")); } } /** * Converte e seta os valores registrados no HashMap para a grid * * @param document * @param request * @param map * @param formName */ public void setValuesFromMap(final DocumentHTML document, final HttpServletRequest request, final Map map, final String formName) { for (final Iterator it = map.entrySet().iterator(); it.hasNext();) { final Map.Entry me = (Map.Entry) it.next(); final Object valor = me.getValue(); String property = (String) me.getKey(); property = property.trim(); String valorTransf = null; if (valor instanceof BigInteger) { valorTransf = UtilFormatacao.formatInt(((BigInteger) valor).intValue(), "################"); } if (valor instanceof Long) { valorTransf = UtilFormatacao.formatInt(((Long) valor).intValue(), "################"); } if (valor instanceof Integer) { valorTransf = UtilFormatacao.formatInt(((Integer) valor).intValue(), "################"); } if (valor instanceof Float) { valorTransf = valor.toString(); } if (valor instanceof Double) { valorTransf = UtilFormatacao.formatBigDecimal(new BigDecimal(((Double) valor).doubleValue()), 2); } if (valor instanceof BigDecimal) { if (property.startsWith("ID")) { valorTransf = UtilFormatacao.formatBigDecimal((BigDecimal) valor, 2); valorTransf = valorTransf.replaceAll(",00", ""); } else { valorTransf = UtilFormatacao.formatBigDecimal((BigDecimal) valor, 2); } } if (valor instanceof String) { valorTransf = (String) valor; } if (valor instanceof Date) { valorTransf = UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, (Date) valor, WebUtil.getLanguage(request)); } if (valor instanceof Timestamp) { valorTransf = UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, (Timestamp) valor, WebUtil.getLanguage(request)); } if (valorTransf != null) { // #139700 - Corre��o da solicita��o hack para tratamento do combogrid if (property.contains("label")) { property = property.replace("_label", ""); document.executeScript("try{$('#" + property + "').combogrid('setValue', ObjectUtils.decodificaAspasApostrofe(ObjectUtils.decodificaEnter('" + StringEscapeUtils.escapeJavaScript(valorTransf) + "')));}catch(e){}"); continue; } document.executeScript("HTMLUtils.setValue('" + property + "', ObjectUtils.decodificaAspasApostrofe(ObjectUtils.decodificaEnter('" + StringEscapeUtils.escapeJavaScript(valorTransf) + "')), " + formName + ")"); } } } public void tableSearchClick(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final DinamicViewsDTO dinamicViewsDTO = (DinamicViewsDTO) document.getBean(); Map<String, Object> map = null; try { map = JSONUtil.convertJsonToMap(dinamicViewsDTO.getDinamicViewsJson_data(), true); } catch (final Exception e) { LOGGER.error("dinamicViewsDTO.getDinamicViewsJson_data(): " + dinamicViewsDTO.getDinamicViewsJson_data(), e); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); throw e; } final VisaoDTO visaoPesquisaDto = this.recuperaVisao(dinamicViewsDTO.getDinamicViewsIdVisaoPesquisaSelecionada(), false); final Collection colFilter = new ArrayList(); if (dinamicViewsDTO.getDinamicViewsAcaoPesquisaSelecionada() != null && dinamicViewsDTO.getDinamicViewsAcaoPesquisaSelecionada().equalsIgnoreCase(VisaoRelacionadaDTO.ACAO_RECUPERAR_PRINCIPAL)) { final Collection colGrupos = visaoPesquisaDto.getColGrupos(); for (final Iterator it = colGrupos.iterator(); it.hasNext();) { final GrupoVisaoDTO grupoVisaoDTO = (GrupoVisaoDTO) it.next(); if (grupoVisaoDTO.getColCamposVisao() != null) { for (final Iterator it2 = grupoVisaoDTO.getColCamposVisao().iterator(); it2.hasNext();) { if (map != null) { final GrupoVisaoCamposNegocioDTO grupoVisaoCamposNegocioDTO = (GrupoVisaoCamposNegocioDTO) it2.next(); if (grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto().getPk().equalsIgnoreCase("S")) { grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto().setValue(map.get(grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto().getNomeDB())); colFilter.add(grupoVisaoCamposNegocioDTO); } } } } } final String metodoOrigem = "tableSearchClick"; this.restoreVisao(document, request, response, dinamicViewsDTO.getDinamicViewsIdVisao(), colFilter, metodoOrigem); } } public void tableEditClick(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final DinamicViewsDTO dinamicViewsDTO = (DinamicViewsDTO) document.getBean(); final ColumnsDTO columnsDTO = GSON.fromJson(dinamicViewsDTO.getJsonDataEdit(), ColumnsDTO.class); final VisaoDTO visaoPesquisaDto = this.recuperaVisao(dinamicViewsDTO.getIdVisaoEdit(), false); final Collection colFilter = new ArrayList(); final Collection colGrupos = visaoPesquisaDto.getColGrupos(); int i = 1; // A primeira coluna (indice 0) � de controle do sistema. for (final Iterator it = colGrupos.iterator(); it.hasNext();) { final GrupoVisaoDTO grupoVisaoDTO = (GrupoVisaoDTO) it.next(); if (grupoVisaoDTO.getColCamposVisao() != null) { for (final Iterator it2 = grupoVisaoDTO.getColCamposVisao().iterator(); it2.hasNext();) { final GrupoVisaoCamposNegocioDTO grupoVisaoCamposNegocioDTO = (GrupoVisaoCamposNegocioDTO) it2.next(); if (columnsDTO.getColuna() != null && columnsDTO.getColuna().length > i) { if (grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto().getPk().equalsIgnoreCase("S")) { if (columnsDTO.getColuna()[i].equalsIgnoreCase("")) { document.alert("Por favor, salve o servi�o antes de restaurar o fluxo."); return; } grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto().setValue(columnsDTO.getColuna()[i]); colFilter.add(grupoVisaoCamposNegocioDTO); } } i++; } } } this.restoreVisaoEdit(document, request, response, dinamicViewsDTO.getIdVisaoEdit(), colFilter); } public void restoreVisaoEdit(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response, final Integer idVisao, final Collection colFilter) throws Exception { final DinamicViewsService dinamicViewsService = (DinamicViewsService) ServiceLocator.getInstance().getService(DinamicViewsService.class, null); final Collection col = dinamicViewsService.restoreVisao(idVisao, colFilter); final HashMap map = new HashMap(); if (col != null) { for (final Iterator it = col.iterator(); it.hasNext();) { final GrupoVisaoCamposNegocioDTO grupoVisaoCamposNegocioDTO = (GrupoVisaoCamposNegocioDTO) it.next(); final CamposObjetoNegocioDTO camposObjetoNegocioDTO = grupoVisaoCamposNegocioDTO.getCamposObjetoNegocioDto(); map.put(camposObjetoNegocioDTO.getNomeDB(), camposObjetoNegocioDTO.getValue()); if (grupoVisaoCamposNegocioDTO.getTipoNegocio().equalsIgnoreCase(MetaUtil.RELATION)) { if (grupoVisaoCamposNegocioDTO.getTipoLigacao().equalsIgnoreCase(GrupoVisaoCamposNegocioDTO.RELATION_SIMPLE)) { if (camposObjetoNegocioDTO.getReturnLookupDTO() != null) { map.put(camposObjetoNegocioDTO.getNomeDB() + "_label", camposObjetoNegocioDTO.getReturnLookupDTO().getLabel()); } } } } document.executeScript("limparForm(document.formEdit" + idVisao + ")"); this.setValuesFromMap(document, request, map, "document.formEdit" + idVisao); document.executeScript("$('#TABLE_EDIT_" + idVisao + "' ).dialog( 'open' );"); } else { document.alert(UtilI18N.internacionaliza(request, "dinamicview.naofoipossivelrecuperar")); } } public Collection<GrupoVisaoCamposNegocioDTO> findCamposTarefa(final Integer idTarefa) throws Exception { final ExecucaoSolicitacaoService execucaoSolicitacaoService = (ExecucaoSolicitacaoService) ServiceLocator.getInstance().getService(ExecucaoSolicitacaoService.class, null); return execucaoSolicitacaoService.findCamposTarefa(idTarefa); } }