package br.com.centralit.citcorpore.ajaxForms; import java.util.Collection; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 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.ScriptsDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.bean.VersaoDTO; import br.com.centralit.citcorpore.negocio.ScriptsService; import br.com.centralit.citcorpore.negocio.VersaoService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.WebUtil; import br.com.centralit.citcorpore.versao.Versao; import br.com.citframework.dto.Usuario; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; @SuppressWarnings("rawtypes") public class Scripts extends AjaxFormAction { public void delete(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ScriptsDTO scripts = (ScriptsDTO) document.getBean(); ScriptsService scriptsService = (ScriptsService) ServiceLocator.getInstance().getService(ScriptsService.class, WebUtil.getUsuarioSistema(request)); if (scripts.getIdScript().intValue() > 0) { scriptsService.deletarScript(scripts, document); } HTMLForm form = document.getForm("form"); form.clear(); } public void executar(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ScriptsDTO script = (ScriptsDTO) document.getBean(); Usuario usuario = WebUtil.getUsuarioSistema(request); ScriptsService scriptsService = (ScriptsService) ServiceLocator.getInstance().getService(ScriptsService.class, usuario); VersaoService versaoService = (VersaoService) ServiceLocator.getInstance().getService(VersaoService.class, usuario); String mensagem = UtilI18N.internacionaliza(request, "scripts.usuario") + ": " + usuario.getNomeUsuario(); mensagem += " " + UtilI18N.internacionaliza(request, "scripts.datahora") + ": " + UtilDatas.getDataHoraAtual(); mensagem += " " + UtilI18N.internacionaliza(request, "scripts.resultado") + ": "; if (ScriptsDTO.TIPO_UPDATE.equals(script.getTipo())) { String retorno = scriptsService.executarScriptUpdate(script); if (retorno == null || retorno.isEmpty()) { mensagem += UtilI18N.internacionaliza(request, "scripts.scriptExecutadoComSucesso"); } else { retorno = retorno.replaceAll("'", "`"); retorno = retorno.replaceAll("\"", "`"); mensagem += "\n" + retorno; } script = (ScriptsDTO) scriptsService.restore(script); } else if (ScriptsDTO.TIPO_CONSULTA.equals(script.getTipo())) { List<String[]> retorno = null; boolean houveErro = false; try { retorno = scriptsService.executarScriptConsulta(script); } catch (Exception e) { houveErro = true; mensagem += e.getLocalizedMessage(); mensagem = mensagem.replaceAll("'", "`"); mensagem = mensagem.replaceAll("\"", "`"); } if (!houveErro) { // retorno = null; // RETIRAR!!! String upgrade = request.getParameter("upgrade"); if ((retorno == null || retorno.isEmpty()) && !"sim".equals(upgrade)) { mensagem += UtilI18N.internacionaliza(request, "scripts.consultaNaoRetornouNenhumRegistro"); } else { mensagem += UtilI18N.internacionaliza(request, "scripts.consultaSucesso"); StringBuilder stringBuilder = new StringBuilder(); if ("sim".equals(upgrade)) { Collection<VersaoDTO> versoesComErrosScripts = versaoService.versoesComErrosScripts(); String resultadoVerificacaoPermissoes = scriptsService.verificaPermissoesUsuarioBanco(request); stringBuilder.append(" <table width='100%'>"); stringBuilder.append(" <tr>"); stringBuilder.append(" <td>"); stringBuilder.append(" <fieldset>"); stringBuilder.append(" <div style='float: left; width: 40%;'>"); stringBuilder.append(" <button id='btnExecutar' class='light img_icon has_text' onclick='validaAtualizacao();' type='button'>"); stringBuilder.append(" <img style='padding-left: 5px;' src='/citsmart/template_new/images/icons/small/grey/checkmark.png'>"); stringBuilder.append(" <span style='color: #444;'>" + UtilI18N.internacionaliza(request, "citcorpore.comum.validarAtualizacao") + "</span>"); stringBuilder.append(" </button>"); stringBuilder.append(" </div>"); stringBuilder.append(" <div style='float: left; width: 40%;'>"); if (versoesComErrosScripts != null && !versoesComErrosScripts.isEmpty()) { stringBuilder.append(" <label>" + UtilI18N.internacionaliza(request, "citcorpore.comum.baixeDocumentoScriptVersao") + ":</label>"); stringBuilder.append(" <select id='comboDownload' onchange='if(this.value != \"\")downloadDocumento(this)'>"); stringBuilder.append(" <option value=''>").append(UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")).append("</option>"); for (VersaoDTO versao : versoesComErrosScripts) { stringBuilder.append(" <option value='" + CITCorporeUtil.CAMINHO_SCRIPTS + versao.getNomeFisicoArquivo() + "'>").append(versao.getNomeVersao()) .append("</option>"); } stringBuilder.append(" </select>"); } stringBuilder.append(" </div>"); stringBuilder.append(" </fieldset>"); stringBuilder.append(" </td>"); stringBuilder.append(" </tr>"); if (resultadoVerificacaoPermissoes != null && !resultadoVerificacaoPermissoes.trim().equalsIgnoreCase("sucesso")) { stringBuilder.append("<tr>"); stringBuilder.append(" <td>"); stringBuilder.append(" <div style='float: left; width: 100%; color: red;' id='divResultadoVerificacaoPermissoes'>"); stringBuilder.append(resultadoVerificacaoPermissoes); stringBuilder.append(" </div>"); stringBuilder.append(" </td>"); stringBuilder.append("</tr>"); } stringBuilder.append(" </table>"); } StringBuilder stringBuilderTable = new StringBuilder(); if (retorno != null) { for (int i = 0; i < retorno.size(); i++) { if (i == 0) { if ("sim".equals(upgrade)) { stringBuilderTable.append("<table style='color : red;' width='100%'>"); stringBuilderTable.append(" <tr>"); stringBuilderTable.append(" <td>" + UtilI18N.internacionaliza(request, "citcorpore.comum.inconsistenciasDuranteExecucaoScripts") + ".</td>"); stringBuilderTable.append(" </tr>"); stringBuilderTable.append(" <tr>"); stringBuilderTable.append(" <td>" + UtilI18N.internacionaliza(request, "citcorpore.comum.antesDeValidarContateSuporte") + "</td>"); stringBuilderTable.append(" </tr>"); stringBuilderTable.append("</table>"); } stringBuilderTable.append("<table class='tableLess'>"); stringBuilderTable.append("<tr class='th'>"); } else { stringBuilderTable.append("<tr>"); } for (String coluna : retorno.get(i)) { if (i == 0){ stringBuilderTable.append("<th>").append(coluna).append("</th>"); }else{ stringBuilderTable.append("<td>").append(coluna).append("</td>"); } } stringBuilderTable.append("</tr>"); } } document.getTableById("headerResultadoConsulta").setInnerHTML(stringBuilder.toString()); document.getTableById("contentResultadoConsulta").setInnerHTML(stringBuilderTable.toString()); document.executeScript("$('#POPUP_RESULTADO_CONSULTA').dialog('open');"); if ("sim".equals(upgrade)) { document.executeScript("$('#POPUP_RESULTADO_CONSULTA').parent().children().children('.ui-dialog-titlebar-close').hide();"); document.executeScript("$('#POPUP_RESULTADO_CONSULTA').dialog('option', 'title', '" + UtilI18N.internacionaliza(request, "citcorpore.comum.citsmartAtualizadoParaVersao") + " " + Versao.getVersao() + "');"); } } } } document.executeScript("JANELA_AGUARDE_MENU.hide();"); if (script.getHistorico() != null && !script.getHistorico().isEmpty()) { mensagem = mensagem + "\n\n##################################\n\n" + script.getHistorico(); } script.setHistorico(mensagem); if (script.getIdScript() != null) { scriptsService.update(script); } HTMLForm form = document.getForm("form"); form.setValues(script); } @Override public Class getBeanClass() { return ScriptsDTO.class; } @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { document.focusInFirstActivateField(null); HTMLSelect comboTipo = (HTMLSelect) document.getSelectById("tipo"); comboTipo.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); comboTipo.addOption(ScriptsDTO.TIPO_UPDATE, UtilI18N.internacionaliza(request, "scripts.tipo.update")); comboTipo.addOption(ScriptsDTO.TIPO_CONSULTA, UtilI18N.internacionaliza(request, "scripts.tipo.consulta")); String upgrade = request.getParameter("upgrade"); if ("sim".equalsIgnoreCase(upgrade)) { HTMLForm form = document.getForm("form"); form.clear(); StringBuilder sql = new StringBuilder(); sql.append("SELECT scripts.descricao, "); sql.append(" scripts.sqlquery, "); sql.append(" versao.nomeversao "); sql.append("FROM scripts "); sql.append(" INNER JOIN versao "); sql.append(" ON scripts.idversao = versao.idversao "); sql.append("WHERE scripts.idversao IS NOT NULL "); sql.append(" AND scripts.descricao LIKE 'ERRO%' "); ScriptsDTO scriptsDTO = new ScriptsDTO(); scriptsDTO.setSqlQuery(sql.toString()); scriptsDTO.setTipo(ScriptsDTO.TIPO_CONSULTA); document.setBean(scriptsDTO); executar(document, request, response); document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.validacaoDeAtualizacaoNecessaria")); } } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ScriptsDTO script = (ScriptsDTO) document.getBean(); ScriptsService scriptsService = (ScriptsService) ServiceLocator.getInstance().getService(ScriptsService.class, WebUtil.getUsuarioSistema(request)); script = (ScriptsDTO) scriptsService.restore(script); HTMLForm form = document.getForm("form"); form.clear(); form.setValues(script); if (script.getNome().startsWith("deploy_versao_")) { document.executeScript("document.getElementById('nome').readOnly = true"); } else { document.executeScript("document.getElementById('nome').readOnly = false"); } document.executeScript("descricaoOuQueryAlterada = false;"); } public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ScriptsDTO script = (ScriptsDTO) document.getBean(); ScriptsService scriptsService = (ScriptsService) ServiceLocator.getInstance().getService(ScriptsService.class, null); if (scriptsService.temScriptsAtivos(script)) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.registroJaCadastrado")); return; } if (script.getIdScript() == null || script.getIdScript() == 0) { script.setDataInicio(UtilDatas.getDataAtual()); scriptsService.create(script); document.alert(UtilI18N.internacionaliza(request, "MSG05")); } else { scriptsService.update(script); document.alert(UtilI18N.internacionaliza(request, "MSG06")); } HTMLForm form = document.getForm("form"); form.clear(); form.setValues(script); document.executeScript("descricaoOuQueryAlterada = false;"); } public void validaAtualizacao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ScriptsService scriptsService = (ScriptsService) ServiceLocator.getInstance().getService(ScriptsService.class, null); VersaoService versaoService = (VersaoService) ServiceLocator.getInstance().getService(VersaoService.class, null); StringBuilder mensagem = new StringBuilder(); String resultadoVerificacaoPermissoes = scriptsService.verificaPermissoesUsuarioBanco(request); if (resultadoVerificacaoPermissoes != null && !"sucesso".equalsIgnoreCase(resultadoVerificacaoPermissoes.trim())) { mensagem.append(resultadoVerificacaoPermissoes + "<br><br>"); } List<ScriptsDTO> scriptsComFaltaPermissao = scriptsService.pesquisaScriptsComFaltaPermissao(); if (scriptsComFaltaPermissao != null && !scriptsComFaltaPermissao.isEmpty()) { mensagem.append(UtilI18N.internacionaliza(request, "citcorpore.comum.seguintesScriptsNaoExecutados") + ":<br>  <b>"); for (ScriptsDTO script : scriptsComFaltaPermissao) { mensagem.append(script.getSqlQuery()).append(";<br>  "); } mensagem.append("</b>"); } if (!mensagem.toString().isEmpty()) { document.getElementById("divPopupVerificacaoPermissoes").setInnerHTML(mensagem.toString()); document.executeScript("$('#POPUP_MENSAGEM_FALTA_PERMISSAO').dialog('open');"); } else { scriptsService.marcaErrosScriptsComoCorrigidos(); UsuarioDTO usuario = WebUtil.getUsuario(request); versaoService.validaVersoes(usuario); document.executeScript("encaminhaParaIndex()"); document.executeScript("$('#POPUP_RESULTADO_CONSULTA').dialog('close');"); } } }