Java tutorial
/* * CTS2 based Terminology Server and Terminology Browser * Copyright (C) 2014 FH Dortmund: Peter Haas, Robert Muetzner * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package de.fhdo.helper; import org.apache.commons.codec.binary.Base64; import org.zkoss.util.resource.Labels; import org.zkoss.zk.ui.Execution; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.util.Clients; import types.termserver.fhdo.de.CodeSystemConcept; import types.termserver.fhdo.de.CodeSystemEntityVersion; /** * * @author Becker */ public class SendBackHelper { private static org.apache.log4j.Logger logger = de.fhdo.logging.Logger4j.getInstance().getLogger(); public static void sendBack(CodeSystemEntityVersion csev) { if (csev == null) return; logger.debug("sendBack-postMethod:"); //String javaScript = "window.top.postMessage('test', '\\*')"; // Aus sicherheitsgruenden sollte * ersetzt werden durch die domain des TS. Auf der empfngerseite kann dann String javaScript = "window.top.postMessage('" + createStringFromCSEV(csev) + "', '\\*')"; // Aus sicherheitsgruenden sollte * ersetzt werden durch die domain des TS. Auf der empfngerseite kann dann logger.debug(javaScript); Clients.evalJavaScript(javaScript); } private static String createStringFromCSEV(CodeSystemEntityVersion csev) { String s = ""; CodeSystemConcept csc = csev.getCodeSystemConcepts().get(0); s = "code=" + csc.getCode(); s += ";"; s += "versionId=" + csev.getVersionId(); s += ";"; if (csc.getTerm() != null && csc.getTerm().length() > 0) { s += "term=" + formatString(csc.getTerm()); s += ";"; } if (csc.getDescription() != null && csc.getDescription().length() > 0) { s += "description=" + formatString(csc.getDescription()); } if (s.endsWith(";")) s = s.substring(0, s.length() - 1); //if (value == SENDBACK_NAME) // r = Labels.getLabel("common.name"); // if (value == SENDBACK_DESCRIPTION) // r = Labels.getLabel("common.description"); // if (value == SENDBACK_CODE) // r = Labels.getLabel("common.code"); // // if (value == SENDBACK_NAME_DESCRIPTION) // r = Labels.getLabel("common.name") + " & " + Labels.getLabel("common.description"); // if (value == SENDBACK_NAME_CODE) // r = Labels.getLabel("common.name") + " & " + Labels.getLabel("common.code"); // if (value == SENDBACK_DESCRIPTION_CODE) // r = Labels.getLabel("common.description") + " & " + Labels.getLabel("common.code"); // if (value == SENDBACK_NAME_DESCRIPTION_CODE) // r = Labels.getLabel("common.name") + " & " + Labels.getLabel("common.description") + " & " + Labels.getLabel("common.code"); return s; } private static String formatString(String s) { if (s == null || s.length() == 0) return ""; return Base64.encodeBase64String(s.getBytes()); } // private boolean active; // // public static Integer SENDBACK_NAME = 1, // SENDBACK_DESCRIPTION = 2, // SENDBACK_CODE = 4, // SENDBACK_NAME_DESCRIPTION = 3, // SENDBACK_NAME_CODE = 5, // SENDBACK_DESCRIPTION_CODE = 6, // SENDBACK_NAME_DESCRIPTION_CODE = 7; // // public SendBackHelper(){ // initialize(); // } // // // /** // * Check if sendback should be active or not. // * Required Parameters: // * - sbContent + length ==6 (sbContent=123456) // * - at least one type > 0 // */ // public void initialize() // { // logger.debug("SendBackHelper - Initialize()"); // active = false; // String qureyString = Executions.getCurrent().getDesktop().getQueryString(); // if(qureyString == null || qureyString.indexOf("sbContent") == -1) // return; // // int startIndex = qureyString.indexOf("sbContent") + "sbContent".length() + 1; // String sbContent = qureyString.substring(startIndex, startIndex + 6); // // logger.debug("SendBackHelper - Initialize() - sbContent == " + sbContent); // String sendBackApplicationName = ParameterHelper.getString("sbAppName"); // // // Pruefe ob Sendback genutzt werden soll // if (sbContent != null && sbContent.length() == 6){ // try{ // SessionHelper.setValue("typeDV", Integer.valueOf(sbContent.substring(0, 1))); // SessionHelper.setValue("typeCS", Integer.valueOf(sbContent.substring(1, 2))); // SessionHelper.setValue("typeCSV", Integer.valueOf(sbContent.substring(2, 3))); // SessionHelper.setValue("typeVS", Integer.valueOf(sbContent.substring(3, 4))); // SessionHelper.setValue("typeVSV", Integer.valueOf(sbContent.substring(4, 5))); // SessionHelper.setValue("typeCSEV", Integer.valueOf(sbContent.substring(5, 6))); // SessionHelper.setValue("sendBackApplicationName", sendBackApplicationName); // if((Integer)SessionHelper.getValue("typeDV") > 0 || (Integer)SessionHelper.getValue("typeCS") > 0 || // (Integer)SessionHelper.getValue("typeCSV") > 0 || (Integer)SessionHelper.getValue("typeVS") > 0 || // (Integer)SessionHelper.getValue("typeVSV") > 0 || (Integer)SessionHelper.getValue("typeCSEV") > 0){ // active = true; // } // else { // active = false; // } // } catch (Exception e){ // e.printStackTrace(); // active = false; // } // } // } // // public void sendBack(String text){ // logger.debug("sendBack-postMethod:"); // String javaScript = "window.top.postMessage('"+ text + "', '\\*')"; // Aus sicherheitsgruenden sollte * ersetzt werden durch die domain des TS. Auf der empfngerseite kann dann // logger.debug(javaScript); // Clients.evalJavaScript(javaScript); // } // // public String getSendBackApplicationName() // { // String s = (String) SessionHelper.getValue("sendBackApplicationName"); // // if (s != null) // return s; // return ""; // } // // public String getSendBackMethodName() // { // String s = (String) SessionHelper.getValue("sendBackMethodName"); // if (s != null) // return s; // return ""; // } // // public Integer getSendBackTypeDV() // { // if ((Integer) SessionHelper.getValue("typeDV") != null) // return (Integer) SessionHelper.getValue("typeDV"); // return -1; // } // // public Integer getSendBackTypeCS() // { // if ((Integer) SessionHelper.getValue("typeCS") != null) // return (Integer) SessionHelper.getValue("typeCS"); // return -1; // } // // public Integer getSendBackTypeCSV() // { // if ((Integer) SessionHelper.getValue("typeCSV") != null) // return (Integer) SessionHelper.getValue("typeCSV"); // return -1; // } // // public Integer getSendBackTypeVS() // { // if ((Integer) SessionHelper.getValue("typeVS") != null) // return (Integer) SessionHelper.getValue("typeVS"); // return -1; // } // // public Integer getSendBackTypeVSV() // { // if ((Integer) SessionHelper.getValue("typeVSV") != null) // return (Integer) SessionHelper.getValue("typeVSV"); // return -1; // } // // public Integer getSendBackTypeCSEV() // { // if ((Integer) SessionHelper.getValue("typeCSEV") != null) // return (Integer) SessionHelper.getValue("typeCSEV"); // return -1; // } // // public String getSendBackTypeByInteger(Integer value) // { // String r = "No return type"; // // if (value == SENDBACK_NAME) // r = Labels.getLabel("common.name"); // if (value == SENDBACK_DESCRIPTION) // r = Labels.getLabel("common.description"); // if (value == SENDBACK_CODE) // r = Labels.getLabel("common.code"); // // if (value == SENDBACK_NAME_DESCRIPTION) // r = Labels.getLabel("common.name") + " & " + Labels.getLabel("common.description"); // if (value == SENDBACK_NAME_CODE) // r = Labels.getLabel("common.name") + " & " + Labels.getLabel("common.code"); // if (value == SENDBACK_DESCRIPTION_CODE) // r = Labels.getLabel("common.description") + " & " + Labels.getLabel("common.code"); // if (value == SENDBACK_NAME_DESCRIPTION_CODE) // r = Labels.getLabel("common.name") + " & " + Labels.getLabel("common.description") + " & " + Labels.getLabel("common.code"); // // return r; // } // // public boolean isActive() { // return active; // } // // public void setActive(boolean aActive) { // active = aActive; // } // // // public static void callJavaScript(Object data){ //// ScriptEngineManager manager = new ScriptEngineManager(); //// ScriptEngine engine = manager.getEngineByName("JavaScript"); //// //// // JavaScript code in a String ////// String script = "function hello(name) { print('Hello, ' + name); }"; //// String script = "top.postMessage('"+ "test" + "', '*')"; //// try { //// Bindings bindings = new SimpleBindings(); //// bindings.put("csev", data); //// //// // evaluate script with bindings //// engine.eval(script, bindings); //// //// // // javax.script.Invocable is an optional interface. //// // // Check whether your script engine implements or not! //// // // Note that the JavaScript engine implements Invocable interface. //// // Invocable inv = (Invocable) engine; //// // //// // inv.invokeFunction("hello", "Scripting!!" ); //// // inv.invokeFunction("hello", "Scripting!!" ); //// } catch (ScriptException ex) { //// Logger.getLogger(SendBackHelper.class.getName()).log(Level.SEVERE, null, ex); //// } //// } // // public static SendBackHelper getInstance() { //// org.zkoss.zk.ui.Session session = Sessions.getCurrent(); //// logger.debug("SendBackHelper - session == " + session.toString()); // Execution exe = Executions.getCurrent(); //// logger.debug("SendBackHelper - d.getExe() Id == " + exe.getDesktop().getId()); //// logger.debug("SendBackHelper - Execution.getD Id == " + Executions.getCurrent().getDesktop().getId()); // // SendBackHelper sbHelper = (SendBackHelper) exe.getAttribute("SendBackHelper"); // if(sbHelper == null){ // Executions.getCurrent().getDesktop().getQueryString(); // // sbHelper = new SendBackHelper(); // exe.setAttribute("SendBackHelper", sbHelper); // } // // return sbHelper; // } }