Java tutorial
/* * Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los trminos * de la licencia "GNU General Public License" publicada por la Fundacin "Free Software Foundation". * Este programa se distribuye con la esperanza de que pueda ser til, pero SIN NINGUNA GARANTIA; * vea la licencia "GNU General Public License" para obtener mas informacin. */ package ips1ap101.lib.core.util; import com.sun.rave.web.ui.appbase.AbstractPageBean; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.io.StringWriter; import java.net.MalformedURLException; import java.net.URL; import ips1ap101.lib.base.app.constant.URX; import ips1ap101.lib.base.bundle.BundleWebui; import ips1ap101.lib.base.constant.CPP; import ips1ap101.lib.base.util.ImageInfo; import ips1ap101.lib.core.app.Bitacora; import ips1ap101.lib.core.app.ListaParametros; import ips1ap101.lib.core.constant.Global; import ips1ap101.lib.core.enumeration.EnumOpcionAbrirVentana; import ips1ap101.lib.core.web.app.PaginaBasica; import ips1ap101.lib.core.web.app.ThreadContext; import org.apache.commons.lang.StringUtils; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException; /** * @author Jorge Campins */ public class JS { public static final String FILE_PREFIX = "file://"; public static final String HTTP_PREFIX = "http://"; public static final String HTTPS_PREFIX = "https://"; public static final String JSP_SUFFIX = ".jsp"; public static String getAlertScript(String key) { String script = ""; script += "alert('" + BundleWebui.getString(key) + "');"; script += "return false;"; return script; } public static String getGoBackJavaScript() { String script = ""; script += "if(history.length>1){history.back()}"; script += "return false;"; return script; } public static String getRefreshJavaScript() { String script = ""; script += "history.go();"; script += "return false;"; return script; } public static String getCloseWindowJavaScript() { return getCloseWindowJavaScript(null, null, null); } public static String getCloseWindowJavaScript(String button) { return getCloseWindowJavaScript(null, null, button); } public static String getCloseWindowJavaScript(String field, String value) { return getCloseWindowJavaScript(field, value, null); } public static String getCloseWindowJavaScript(String field, String value, String button) { VelocityContext context = new VelocityContext(); context.put("field", StringUtils.trimToNull(field)); context.put("value", StringUtils.trimToNull(value)); context.put("button", StringUtils.trimToNull(button)); return merge("js-close-window", context); } public static String getConfirmDialogJavaScript(String table, String alertMessage, String confirmMessage) { VelocityContext context = new VelocityContext(); context.put("table", StringUtils.trimToNull(table)); context.put("alertMessage", StringUtils.trimToNull(alertMessage)); context.put("confirmMessage", StringUtils.trimToNull(confirmMessage)); return merge("js-confirm-dialog", context); } public static String getConfirmDialogJavaScript(String confirmMessage, boolean blur) { VelocityContext context = new VelocityContext(); context.put("confirmMessage", StringUtils.trimToNull(confirmMessage)); context.put("blur", blur ? "blur" : null); return merge("js-confirm-discard", context); } public static String getOpenSearchWindowJavaScript(String url, long domain, EnumOpcionAbrirVentana option, String field, String button, ListaParametros rpl, String window) { if (rpl == null) { rpl = new ListaParametros(); } rpl.addParametro(CPP.ID_OPCION_CAMPO_RETORNO, Integer.valueOf(option.intValue())); rpl.addParametro(CPP.ID_CAMPO_ACCION_RETORNO, field); rpl.addParametro(CPP.ID_BOTON_ACCION_RETORNO, button); rpl.addParametro(CPP.ID_DOMINIO_RETORNO, domain); return getOpenWindowJavaScript(url, rpl.toString(), window); } public static String getOpenSearchWindowJavaScript(String url, long domain, String column, String field, String button, ListaParametros rpl, String window) { if (rpl == null) { rpl = new ListaParametros(); } rpl.addParametro(CPP.ID_OPCION_CAMPO_RETORNO, column); rpl.addParametro(CPP.ID_CAMPO_ACCION_RETORNO, field); rpl.addParametro(CPP.ID_BOTON_ACCION_RETORNO, button); rpl.addParametro(CPP.ID_DOMINIO_RETORNO, domain); return getOpenWindowJavaScript(url, rpl.toString(), window); } // public static String getOpenWindowJavaScript(String url) { // return getOpenWindowJavaScript(url, null); // } // public static String getOpenWindowJavaScript(String url, String rpl) { String window = getTargetWindowName(url); return getOpenWindowJavaScript(url, rpl, window); } public static String getOpenWindowJavaScript(String url, String rpl, String window) { String session = Global.PARAMETRO_CONDICION_SESION + "=" + Global.SESION_REINICIADA; return getOpenWindowJavaScript(url, rpl, window, session); } public static String getOpenWindowJavaScript(String url, String rpl, String window, String session) { if (url == null) { return null; } if (StringUtils.isNotBlank(rpl)) { AbstractPageBean paginaActual = ThreadContext.getPaginaActual(); if (paginaActual instanceof PaginaBasica) { String opcionCampoRetorno = null; String dominioRetorno = null; String[] tokens = StringUtils.split(rpl, "?&"); for (String token : tokens) { if (token != null) { if (token.startsWith(CPP.ID_OPCION_CAMPO_RETORNO + "=")) { opcionCampoRetorno = StringUtils.substringAfter(token, "="); } if (token.startsWith(CPP.ID_DOMINIO_RETORNO + "=")) { dominioRetorno = StringUtils.substringAfter(token, "="); } } } if (opcionCampoRetorno != null) { PaginaBasica paginaBasica = (PaginaBasica) paginaActual; paginaBasica.getContextoSesion().setValorRetorno(opcionCampoRetorno, dominioRetorno, null); } } } String ventana = StringUtils.isBlank(window) ? Global.DEFAULT_WINDOW_NAME : window; VelocityContext context = new VelocityContext(); context.put("url", StringUtils.trimToNull(url)); context.put("rpl", StringUtils.trimToNull(rpl)); context.put("window", StringUtils.trimToNull(ventana)); context.put("sesion", StringUtils.trimToNull(session)); return merge("js-open-window", context); } public static String getOpenFileWindowJavaScript(String spec) { Bitacora.trace(JS.class, "getOpenFileWindowJavaScript", spec); VelocityContext context = new VelocityContext(); context.put("url", StringUtils.trimToNull(spec)); context.put("msg", "Recurso no disponible"); /* TODO: obtener de una tabla de mensajes */ if (StringUtils.isNotBlank(spec)) { RandomAccessFile input; try { URL url = new URL(spec); // throws MalformedURLException File file = new File(Utils.getAttachedFileName(url)); if (file.exists()) { input = new RandomAccessFile(file, "r"); // throws FileNotFoundException ImageInfo imageInfo = new ImageInfo(); imageInfo.setInput(input); // input can be InputStream or RandomAccessFile imageInfo.setDetermineImageNumber(false); // default is false imageInfo.setCollectComments(false); // default is false if (imageInfo.check()) { context.put("imageInfo", imageInfo); } input.close(); // throws IOException } } catch (MalformedURLException ex) { Bitacora.logFatal(ex); } catch (FileNotFoundException ex) { Bitacora.logFatal(ex); } catch (IOException ex) { Bitacora.logFatal(ex); } } return merge("js-open-window", context); } public static String getOnClickJavaScript() { return merge("js-on-input"); } public static String getOnDblClickJavaScript() { return merge("js-on-input"); } public static String getOnKeyPressJavaScript() { return merge("js-on-input"); } public static String getOnLoadJavaScript() { return merge("js-on-load"); } public static String getOnUnloadJavaScript() { return merge("js-on-unload"); } public static String getOnClickRowSelectorJavaScript(String value) { VelocityContext context = new VelocityContext(); context.put("value", StringUtils.trimToNull(value)); return merge("js-on-click-row-selector", context); } public static String getTargetWindowName(String url) { String uri = getURI(url); if (uri == null) { return null; } String targetWindow = null; int i = uri.indexOf(JSP_SUFFIX, 1); if (i > 1) { targetWindow = uri.substring(0, i + JSP_SUFFIX.length()); targetWindow = URX.getTargetWindowName(targetWindow); } if (targetWindow == null) { i = uri.indexOf("/", 1); if (i > 1) { targetWindow = uri.substring(1, i); } } if (targetWindow != null) { targetWindow = targetWindow.replace("-", "_").replace("/", "_").replace(".", "_"); } return targetWindow; } private static String getURI(String url) { String uri = null; if (url != null && (url.startsWith(HTTP_PREFIX) || url.startsWith(HTTPS_PREFIX)) && url.endsWith(JSP_SUFFIX)) { int i = url.startsWith(HTTP_PREFIX) ? HTTP_PREFIX.length() : HTTPS_PREFIX.length(); int j = url.indexOf("/", i); if (j > i) { uri = url.substring(j); } } return uri; } private static String merge(String name) { return merge(name, null); } private static String merge(String name, VelocityContext context) { String script = null; if (VelocityEngineer.init()) { try { Template template = Velocity.getTemplate(name + "." + "vm"); if (context == null) { context = new VelocityContext(); } StringWriter writer = new StringWriter(); template.merge(context, writer); script = StringUtils.trimToNull(writer.toString()); } catch (ResourceNotFoundException | ParseErrorException | MethodInvocationException ex) { // ex.printStackTrace(); } } return script; } }