Package org.wso2.carbon.bpel.ui

Source Code of org.wso2.carbon.bpel.ui.BpelUIUtil

/*
* Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
*
* 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 org.wso2.carbon.bpel.ui;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.simple.JSONObject;
import org.wso2.carbon.bpel.stub.mgt.types.*;
import org.wso2.carbon.statistics.stub.types.carbon.Metric;
import org.wso2.carbon.utils.xml.XMLPrettyPrinter;

import javax.xml.namespace.QName;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;
import java.util.*;

/**
* Some common UI functionalities, used in org.wso2.carbon.bpel.ui
*/
public class BpelUIUtil {
    private static Log log = LogFactory.getLog("bpel.ui");

    public static String encodeXML(String xmlString) {

        if (xmlString != null && xmlString.length() != 0) {
            log.info(xmlString);
            log.info("     gg");
            // System.out.println(xmlString);
            xmlString = xmlString.replaceAll("<", "&lt;");
            xmlString = xmlString.replaceAll(">", "&gt;");
            xmlString = xmlString.replaceAll("\n", "");
        }
        return xmlString;
    }

    public static String encodeHTML(String aText) {
        final StringBuilder result = new StringBuilder();
        final StringCharacterIterator iterator = new StringCharacterIterator(aText);
        char character = iterator.current();
        while (character != CharacterIterator.DONE) {
            if (character == '<') {
                result.append("&lt;");
            } else if (character == '>') {
                result.append("&gt;");
            } else if (character == '&') {
                result.append("&amp;");
//            } else if (character == '\"') {
//                result.append("&quot;");
//            } else if (character == '\t') {
//                addCharEntity(9, result);
//            } else if (character == '!') {
//                addCharEntity(33, result);
//            } else if (character == '#') {
//                addCharEntity(35, result);
//            } else if (character == '$') {
//                addCharEntity(36, result);
//            } else if (character == '%') {
//                addCharEntity(37, result);
//            } else if (character == '\'') {
//                addCharEntity(39, result);
//            } else if (character == '(') {
//                addCharEntity(40, result);
//            } else if (character == ')') {
//                addCharEntity(41, result);
//            } else if (character == '*') {
//                addCharEntity(42, result);
//            } else if (character == '+') {
//                addCharEntity(43, result);
//            } else if (character == ',') {
//                addCharEntity(44, result);
//            } else if (character == '-') {
//                addCharEntity(45, result);
//            } else if (character == '.') {
//                addCharEntity(46, result);
//            } else if (character == '/') {
//                addCharEntity(47, result);
//            } else if (character == ':') {
//                addCharEntity(58, result);
//            } else if (character == ';') {
//                addCharEntity(59, result);
//            } else if (character == '=') {
//                addCharEntity(61, result);
//            } else if (character == '?') {
//                addCharEntity(63, result);
//            } else if (character == '@') {
//                addCharEntity(64, result);
//            } else if (character == '[') {
//                addCharEntity(91, result);
//            } else if (character == '\\') {
//                addCharEntity(92, result);
//            } else if (character == ']') {
//                addCharEntity(93, result);
//            } else if (character == '^') {
//                addCharEntity(94, result);
//            } else if (character == '_') {
//                addCharEntity(95, result);
//            } else if (character == '`') {
//                addCharEntity(96, result);
//            } else if (character == '{') {
//                addCharEntity(123, result);
//            } else if (character == '|') {
//                addCharEntity(124, result);
//            } else if (character == '}') {
//                addCharEntity(125, result);
//            } else if (character == '~') {
//                addCharEntity(126, result);
            } else {
                //the char is not a special one
                //add it to the result as is
                result.append(character);
            }
            character = iterator.next();
        }
        return result.toString();
    }

    public static String prettyPrint(String rawXML) {
        rawXML = rawXML.replaceAll("\n|\\r|\\f|\\t", "");
        rawXML = rawXML.replaceAll("> +<", "><");
        InputStream xmlIn = new ByteArrayInputStream(rawXML.getBytes());
        XMLPrettyPrinter xmlPrettyPrinter = new XMLPrettyPrinter(xmlIn);
        rawXML = xmlPrettyPrinter.xmlFormat();
//        rawXML = rawXML.replaceAll("\n", "<br>");

        return rawXML;
    }

    public static TreeMap<String, QName> getEndpointRefsMap(ProcessInfoType info) {
        EndpointRef_type0[] endpoints = info.getEndpoints().getEndpointRef();

        TreeMap<String, QName> pLinkServiceMap = new TreeMap<String, QName>();
        for (EndpointRef_type0 ref : endpoints) {
            pLinkServiceMap.put(ref.getPartnerLink(), ref.getService());
        }
        return pLinkServiceMap;
    }

    public static Map<String, EndpointRef_type0> getEndpointReferences(ProcessInfoType info) {
        EndpointRef_type0[] endpoints = info.getEndpoints().getEndpointRef();

        Map<String, EndpointRef_type0> pLinkEprMap = new TreeMap<String, EndpointRef_type0>();
        for (EndpointRef_type0 eprRef : endpoints) {
            pLinkEprMap.put(eprRef.getPartnerLink(), eprRef);
        }

        return pLinkEprMap;
    }

    public static String makeCommaSeparatedListOfPackageVersions(String[] versionArray) {
        if (versionArray == null) {
            return "";
        }

        StringBuilder strBuilder = new StringBuilder();
        for (String version : versionArray) {
            strBuilder.append(version);
            strBuilder.append(", ");
        }

        String finalString = strBuilder.toString();
        return finalString.substring(0, finalString.lastIndexOf(","));
    }

    public static String getUndeployLink(String packageName, int pageNumber) {
        return "package_list.jsp?operation=undeploy&packageName=" + packageName + "&pageNumber=" +
                pageNumber;
    }

    public static String getRetireLink(String pid, String filter, String order, int pageNumber) {
        return "process_list.jsp?operation=retire&processID=" + pid + "&filter=" + filter +
                "&order=" + order + "&pageNumber=" + pageNumber;
    }

    public static String getActivateLink(String pid, String filter, String order, int pageNumber) {
        return "process_list.jsp?operation=activate&processID=" + pid + "&filter=" + filter +
                "&order=" + order + "&pageNumber=" + pageNumber;
    }

    public static QName stringToQName(String pid) {
        int endURI = pid.indexOf('}');
        return new QName(pid.substring(1, endURI), pid.substring(endURI + 1));
    }

    /*private String[] getServiceLocations(ProcessInfoType info) {
        String[] serviceLocations = info.getEndpoints().getEndpointRef()[0].getServiceLocations().getServiceLocation();
        //Removing the processEPR

        return null;
    }*/

    public static String getProcessDefinition(ProcessInfoType info) {
        BpelDefinition definition = info.getDefinitionInfo().getDefinition();
        return definition.getExtraElement().toString();
    }

    public static String getInstanceOperations(InstanceStatus status, String iid) {
        ResourceBundle rsc = ResourceBundle.getBundle("org.wso2.carbon.bpel.ui.i18n.Resources");
        StringBuilder strBuilder = new StringBuilder();
        if (status.equals(InstanceStatus.ACTIVE)) {
            generateActiveActionLinks(strBuilder, rsc, iid);
        } else if (status.equals(InstanceStatus.COMPLETED)) {
            generateCompletedActionLinks(strBuilder, rsc, iid);
        } else if (status.equals(InstanceStatus.SUSPENDED)) {
            generateSuspendedActionLinks(strBuilder, rsc, iid);
        } else if (status.equals(InstanceStatus.TERMINATED)) {
            generateTerminatedActionLinks(strBuilder, rsc, iid);
        } /*else if (status.equals(InstanceStatus.ERROR)) {
            generateErrorActionLinks(strBuilder, rsc, iid);
        }*/ else if (status.equals(InstanceStatus.FAILED)) {
            // For failed instances only delete operation is available.
            generateTerminatedActionLinks(strBuilder, rsc, iid);
        }

        return strBuilder.toString();
    }

    private static void generateActiveActionLinks(StringBuilder strBuilder, ResourceBundle rsc,
                                                  String iid) {
        generateTDStart(strBuilder);
        generateStartTag(strBuilder);
        generateDeleteLink(strBuilder, rsc, iid);
        generateEndTag(strBuilder);
        generateStartTag(strBuilder);
        generateSuspendLink(strBuilder, rsc, iid);
        generateEndTag(strBuilder);
        generateStartTag(strBuilder);
        generateTerminateLink(strBuilder, rsc, iid);
        generateEndTag(strBuilder);
        generateTDEnd(strBuilder);
    }

    private static void generateCompletedActionLinks(StringBuilder strBuilder, ResourceBundle rsc,
                                                     String iid) {
        generateTDStart(strBuilder);
        generateStartTag(strBuilder);
        generateDeleteLink(strBuilder, rsc, iid);
        generateEndTag(strBuilder);
        generateTDEnd(strBuilder);
    }

    private static void generateSuspendedActionLinks(StringBuilder strBuilder, ResourceBundle rsc,
                                                     String iid) {
        generateTDStart(strBuilder);
        generateStartTag(strBuilder);
        generateResumeLink(strBuilder, rsc, iid);
        generateEndTag(strBuilder);
        generateStartTag(strBuilder);
        generateTerminateLink(strBuilder, rsc, iid);
        generateEndTag(strBuilder);
        generateStartTag(strBuilder);
        generateDeleteLink(strBuilder, rsc, iid);
        generateEndTag(strBuilder);
        generateTDEnd(strBuilder);
    }

    private static void generateTerminatedActionLinks(StringBuilder strBuilder, ResourceBundle rsc,
                                                      String iid) {
        generateTDStart(strBuilder);
        generateStartTag(strBuilder);
        generateDeleteLink(strBuilder, rsc, iid);
        generateEndTag(strBuilder);
        generateTDEnd(strBuilder);
    }

//    private static void generateErrorActionLinks(StringBuilder strBuilder, ResourceBundle rsc,
//                                                 String iid) {
//        generateTDStart(strBuilder);
//        generateStartTag(strBuilder);
//        generateTerminateLink(strBuilder, rsc, iid);
//        generateEndTag(strBuilder);
//        generateStartTag(strBuilder);
//        generateDeleteLink(strBuilder, rsc, iid);
//        generateEndTag(strBuilder);
//        generateTDEnd(strBuilder);
//    }

    private static void generateSuspendLink(StringBuilder strBuilder, ResourceBundle rsc,
                                            String iid) {
        generateFirstPartOfTheLink(strBuilder, iid, "suspend");
        strBuilder.append("&operation=suspend'");
        strBuilder.append(" class='bpel-icon-link' style='background-image:url(images/suspend.gif);'>");
        generateOnSuspendEventAttachScript(strBuilder, iid);
        strBuilder.append(rsc.getString("suspend"));
        strBuilder.append("</a>");
    }

    private static void generateResumeLink(StringBuilder strBuilder, ResourceBundle rsc,
                                           String iid) {
        generateFirstPartOfTheLink(strBuilder, iid, "resume");
        strBuilder.append("&operation=resume'");
        strBuilder.append(" class='bpel-icon-link' style='background-image:url(images/resume.gif);'>");
        generateOnResumeEventAttachScript(strBuilder, iid);
        strBuilder.append(rsc.getString("resume"));
        strBuilder.append("</a>");
    }

    private static void generateTerminateLink(StringBuilder strBuilder, ResourceBundle rsc,
                                              String iid) {
        generateFirstPartOfTheLink(strBuilder, iid, "terminate");
        strBuilder.append("&operation=terminate'");
        strBuilder.append(" class='bpel-icon-link' style='background-image:url(images/terminate.gif);'>");
        generateOnTerminateEventAttachScript(strBuilder, iid);
        strBuilder.append(rsc.getString("terminate"));
        strBuilder.append("</a>");
    }

    private static void generateDeleteLink(StringBuilder strBuilder, ResourceBundle rsc,
                                           String iid) {
        generateFirstPartOfTheLink(strBuilder, iid, "delete");
        strBuilder.append("&operation=delete'");
        strBuilder.append(" class='bpel-icon-link' style='background-image:url(images/delete.gif);'>");
        generateOnDeleteEventAttachScript(strBuilder, iid);
        strBuilder.append(rsc.getString("delete"));
        strBuilder.append("</a>");
    }

    private static void generateOnDeleteEventAttachScript(StringBuilder strBuilder, String id) {
        strBuilder.append("<script type='text/javascript'>(function(){jQuery('#instancedelete");
        strBuilder.append(id);
        strBuilder.append("').click(BPEL.instance.onDelete);})();</script>");
    }

    private static void generateOnResumeEventAttachScript(StringBuilder strBuilder, String id) {
        strBuilder.append("<script type='text/javascript'>(function(){jQuery('#instanceresume");
        strBuilder.append(id);
        strBuilder.append("').click(BPEL.instance.onResume);})();</script>");
    }

    private static void generateOnSuspendEventAttachScript(StringBuilder strBuilder, String id) {
        strBuilder.append("<script type='text/javascript'>(function(){jQuery('#instancesuspend");
        strBuilder.append(id);
        strBuilder.append("').click(BPEL.instance.onSuspend);})();</script>");
    }

    private static void generateOnTerminateEventAttachScript(StringBuilder strBuilder, String id) {
        strBuilder.append("<script type='text/javascript'>(function(){jQuery('#instanceterminate");
        strBuilder.append(id);
        strBuilder.append("').click(BPEL.instance.onTerminate);})();</script>");
    }



    private static void generateFirstPartOfTheLink(StringBuilder strBuilder, String iid,
                                                   String operation) {
        strBuilder.append("<a id='instance");
        strBuilder.append(operation);
        strBuilder.append(iid);
        strBuilder.append("' href='list_instances.jsp?iid=");
        strBuilder.append(iid);
    }

    private static void generateStartTag(StringBuilder strBuilder) {
        //strBuilder.append("<td style='border-right:0px;border-left:0px;'>");
        strBuilder.append("[ ");
    }

    private static void generateEndTag(StringBuilder strBuilder) {
        strBuilder.append(" ] ");
    }

    private static void generateTDEnd(StringBuilder strBuilder) {
        strBuilder.append("</td>");
    }

    private static void generateTDStart(StringBuilder strbuilder) {
        strbuilder.append("<td style=\"white-space: nowrap\">");
    }

    public static void logWarn(String message, Exception e) {
        if (log.isWarnEnabled()) {
            log.warn(message, e);
        }
    }

    public static String generateRetireLinkForProcessInfoPage(String processId) {
        StringBuilder strBuilder = new StringBuilder();
        strBuilder.append("process_info.jsp?Pid=");
        strBuilder.append(processId);
        strBuilder.append("&operation=retire");

        return strBuilder.toString();
    }

    public static String generateActivateLinkForProcessInfoPage(String processId) {
        StringBuilder strBuilder = new StringBuilder();
        strBuilder.append("process_info.jsp?Pid=");
        strBuilder.append(processId);
        strBuilder.append("&operation=activate");

        return strBuilder.toString();
    }

    public static int getTotalInstance(ProcessInfoType processInfo) {
        int totalInstances = 0;
        for (Instances_type0 processInstance : processInfo.getInstanceSummary().getInstances()) {
            totalInstances += processInstance.getCount();
        }

        return totalInstances;
    }
   

    public static String getInstanceFilterURL(String processId) {
        StringBuilder strBuilder = new StringBuilder();
        strBuilder.append("list_instances.jsp?filter=pid=");
        strBuilder.append(processId);
        strBuilder.
            append(" status=active|completed|suspended|terminated|failed|error&order=-last-active");

        return strBuilder.toString();
    }

    /**
     * Create instance summary JSON object from process instances array.
     * @param processInstances process instance array
     * @return instance summary object
     */
    public static JSONObject createInstanceSummaryJSONObject(Instances_type0[] processInstances) {
        JSONObject summary = new JSONObject();
        int totalInstances  = 0;
        for (Instances_type0 processInstance : processInstances) {
            String state = processInstance.getState().getValue();
            if (state.equals(BPELUIConstant.INSTANCE_STATE_ACTIVE)) {
                summary.put(BPELUIConstant.INSTANCE_STATE_ACTIVE, processInstance.getCount());
            } else if (state.equals(BPELUIConstant.INSTANCE_STATE_COMPLETED)) {
                summary.put(BPELUIConstant.INSTANCE_STATE_COMPLETED, processInstance.getCount());
            } else if (state.equals(BPELUIConstant.INSTANCE_STATE_TERMINATED)) {
                summary.put(BPELUIConstant.INSTANCE_STATE_TERMINATED, processInstance.getCount());
            } else if (state.equals(BPELUIConstant.INSTANCE_STATE_FAILED)) {
                summary.put(BPELUIConstant.INSTANCE_STATE_FAILED, processInstance.getCount());
            } else if (state.equals(BPELUIConstant.INSTANCE_STATE_SUSPENDED)) {
                summary.put(BPELUIConstant.INSTANCE_STATE_SUSPENDED, processInstance.getCount());
            } else {
                log.error("Invalid instance state: " + state);
            }
            totalInstances += processInstance.getCount();
        }
        summary.put(BPELUIConstant.TOTAL_INSTANCES, totalInstances);
        return summary;
    }

    /**
     * Create instance summary JSON object from return value of getInstanceSummary operation
     * of instance management web service.
     * @param globalInstanceSummary instance summary from instance management API(global counts)
     * @return global instance count
     */
    public static JSONObject createInstanceSummaryJSONObject(InstanceSummaryE globalInstanceSummary) {
        JSONObject summary = new JSONObject();

        summary.put(BPELUIConstant.INSTANCE_STATE_ACTIVE, globalInstanceSummary.getActive());
        summary.put(BPELUIConstant.INSTANCE_STATE_COMPLETED, globalInstanceSummary.getCompleted());
        summary.put(BPELUIConstant.INSTANCE_STATE_TERMINATED, globalInstanceSummary.getTerminated());
        summary.put(BPELUIConstant.INSTANCE_STATE_FAILED, globalInstanceSummary.getFailed());
        summary.put(BPELUIConstant.INSTANCE_STATE_SUSPENDED, globalInstanceSummary.getSuspended());

        return summary;
    }

    public static JSONObject getMemoryInfoJSONObject(Metric usedMem, Metric totalMem){
        JSONObject memInfo = new JSONObject();

        memInfo.put("UsedMemoryValue", usedMem.getValue());
        memInfo.put("UsedMemoryUnit", usedMem.getUnit());
        memInfo.put("TotalMemoryValue", totalMem.getValue());
        memInfo.put("TotalMemoryUnit", totalMem.getUnit());

        return memInfo;
    }

    public static String createLongRunningInstanceJSONString(PaginatedInstanceList longRunningInstances) {
        //LinkedHashMap is introduced instead of JSONObject, in-order to keep the order of the instances
        LinkedHashMap<String, JSONObject> longRunning = new LinkedHashMap<String, JSONObject>();
        if (longRunningInstances.isInstanceSpecified()) {
            for (LimitedInstanceInfoType instance : longRunningInstances.getInstance()) {
                JSONObject instanceJson = new JSONObject();
                long instanceLifetimeTillLastActive =
                                (instance.getDateLastActive().getTime().getTime() -
                                instance.getDateStarted().getTime().getTime());
                long instanceLifetimeFromLastActiveToNow =
                                (new Date().getTime() -
                                 instance.getDateLastActive().getTime().getTime());
                instanceJson.put(BPELUIConstant.INSTANCE_LIFETIME_TILL_LASTACTIVE,
                                 instanceLifetimeTillLastActive);
                instanceJson.put(BPELUIConstant.INSTANCE_LIFETIME_FROM_LASTACTIVE_TO_NOW,
                                 instanceLifetimeFromLastActiveToNow);
                longRunning.put(instance.getIid(), instanceJson);
            }
        }
        return JSONObject.toJSONString(longRunning);
    }
}
TOP

Related Classes of org.wso2.carbon.bpel.ui.BpelUIUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.