Package com.founder.fix.fixflow.editor.language.json.converter.elements

Source Code of com.founder.fix.fixflow.editor.language.json.converter.elements.ConnectorInstanceElm

package com.founder.fix.fixflow.editor.language.json.converter.elements;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ArrayNode;
import org.codehaus.jackson.node.ObjectNode;
import org.eclipse.bpmn2.FlowElement;
import org.eclipse.bpmn2.impl.ActivityImpl;
import org.eclipse.bpmn2.impl.BaseElementImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.founder.fix.bpmn2extensions.fixflow.ConnectorInstance;
import com.founder.fix.bpmn2extensions.fixflow.ConnectorParameterInputs;
import com.founder.fix.bpmn2extensions.fixflow.ConnectorParameterOutputs;
import com.founder.fix.bpmn2extensions.fixflow.ConnectorParameterOutputsDef;
import com.founder.fix.bpmn2extensions.fixflow.Documentation;
import com.founder.fix.bpmn2extensions.fixflow.Expression;
import com.founder.fix.bpmn2extensions.fixflow.FixFlowFactory;
import com.founder.fix.bpmn2extensions.fixflow.FixFlowPackage;
import com.founder.fix.bpmn2extensions.fixflow.SkipComment;
import com.founder.fix.bpmn2extensions.fixflow.TimeExpression;
import com.founder.fix.bpmn2extensions.fixflow.TimeSkipExpression;
import com.founder.fix.fixflow.core.impl.util.BpmnModelUtil;
import com.founder.fix.fixflow.editor.constants.EditorJsonConstants;
import com.founder.fix.fixflow.editor.constants.StencilConstants;
import com.founder.fix.fixflow.editor.language.json.converter.util.JsonConverterUtil;

public class ConnectorInstanceElm implements EditorJsonConstants, StencilConstants{
 
  private static Logger LOG = LoggerFactory.getLogger(ActivityImpl.class);
 
  public ConnectorInstanceElm(){
   
  }
 
  private ObjectMapper objectMapper = new ObjectMapper();
 
  public ObjectNode convertElementToJson(BaseElementImpl baseElm){
      List<ConnectorInstance> connectorInstances = baseElm.getConnectorInstances();
        if(connectorInstances != null){
          ObjectNode connectorInstanceNode = objectMapper.createObjectNode();
          ArrayNode itemsNode = objectMapper.createArrayNode();
          for(ConnectorInstance connectorInstance: connectorInstances){
            ObjectNode connectorInstanceItemNode = objectMapper.createObjectNode();
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_CONNECTORID, connectorInstance.getConnectorId());
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_PACKAGENAME, connectorInstance.getPackageName());
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_CLASSNAME, connectorInstance.getClassName());
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_CONNECTORINSTANCEID, connectorInstance.getConnectorInstanceId());
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_CONNECTORINSTANCENAME, connectorInstance.getConnectorInstanceName());
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_EVENTTYPE, connectorInstance.getEventType());
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_ERRORHANDLING, connectorInstance.getErrorHandling());
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_ERRORCODE, connectorInstance.getErrorCode());
            connectorInstanceItemNode.put(PROPERTY_CONNECTORINSTANCE_ISTIMEEXECUTE, connectorInstance.isIsTimeExecute());
           
            Documentation documentation = connectorInstance.getDocumentation();
            if(documentation != null){
              ObjectNode documentationItemNode = objectMapper.createObjectNode();
              documentationItemNode.put(PROPERTY_DOCUMENTATION_ID, documentation.getId());
              documentationItemNode.put(PROPERTY_DOCUMENTATION_NAME, documentation.getName());
              documentationItemNode.put(PROPERTY_DOCUMENTATION_VALUE, documentation.getValue());
             
              connectorInstanceItemNode.put(PROPERTY_DOCUMENTATION, documentationItemNode);
            }
           
            List<ConnectorParameterInputs> connectorParameterInputs = connectorInstance.getConnectorParameterInputs();
            if(connectorParameterInputs != null){
                ArrayNode parameterItemsNode = objectMapper.createArrayNode();
                for(ConnectorParameterInputs connectorParameterInput: connectorParameterInputs){
                  ObjectNode connectorParameterInputItemNode = objectMapper.createObjectNode();
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETERINPUTS_ID, connectorParameterInput.getId());
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETERINPUTS_NAME, connectorParameterInput.getName());
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETERINPUTS_DATATYPE, connectorParameterInput.getDataType());
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETERINPUTS_EXPRESSION_ID, connectorParameterInput.getExpression().getId());
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETERINPUTS_EXPRESSION_NAME, connectorParameterInput.getExpression().getName());
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETERINPUTS_EXPRESSION_VALUE, connectorParameterInput.getExpression().getValue());
                 
                  parameterItemsNode.add(connectorParameterInputItemNode);
                }
                connectorInstanceItemNode.put(PROPERTY_CONNECTORPARAMETERINPUTS, parameterItemsNode);
            }
           
            List<ConnectorParameterOutputs> connectorParameterOutputs = connectorInstance.getConnectorParameterOutputs();
            if(connectorParameterOutputs != null){
                ArrayNode parameterItemsNode = objectMapper.createArrayNode();
                for(ConnectorParameterOutputs connectorParameterOutput: connectorParameterOutputs){
                  ObjectNode connectorParameterInputItemNode = objectMapper.createObjectNode();
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTS_VARIABLETARGET, connectorParameterOutput.getVariableTarget());
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTS_EXPRESSION_ID, connectorParameterOutput.getExpression().getId());
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTS_EXPRESSION_NAME, connectorParameterOutput.getExpression().getName());
                  connectorParameterInputItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTS_EXPRESSION_VALUE, connectorParameterOutput.getExpression().getValue());
                 
                  parameterItemsNode.add(connectorParameterInputItemNode);
                }
                connectorInstanceItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTS, parameterItemsNode);
            }
           
            List<ConnectorParameterOutputsDef> connectorParameterOutputsDef = connectorInstance.getConnectorParameterOutputsDef();
            if(connectorParameterOutputsDef != null){
                ArrayNode parameterItemsNode = objectMapper.createArrayNode();
                for(ConnectorParameterOutputsDef cpod: connectorParameterOutputsDef){
                  ObjectNode cpodItemNode = objectMapper.createObjectNode();
                  cpodItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTSDEF_ID, cpod.getId());
                  cpodItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTSDEF_NAME, cpod.getName());
                  cpodItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTSDEF_DATATYPE, cpod.getDataType());
                 
                  parameterItemsNode.add(cpodItemNode);
                }
                connectorInstanceItemNode.put(PROPERTY_CONNECTORPARAMETEROUTPUTSDEF, parameterItemsNode);
            }
           
            SkipComment skipComment = connectorInstance.getSkipComment();
            if(skipComment !=null){
              ObjectNode ItemNode = objectMapper.createObjectNode();
              ItemNode.put(PROPERTY_SKIPCOMMENT_EXPRESSION_ID, skipComment.getExpression().getId());
              ItemNode.put(PROPERTY_SKIPCOMMENT_EXPRESSION_NAME, skipComment.getExpression().getName());
              ItemNode.put(PROPERTY_SKIPCOMMENT_EXPRESSION_VALUE, skipComment.getExpression().getValue());
             
              connectorInstanceItemNode.put(PROPERTY_SKIPCOMMENT, ItemNode);
            }
           
           
            TimeExpression timeExpression = connectorInstance.getTimeExpression();
            if(timeExpression != null){
              ObjectNode ItemNode = objectMapper.createObjectNode();
              ItemNode.put(PROPERTY_TIME_EXPRESSION_ID, timeExpression.getExpression().getId());
              ItemNode.put(PROPERTY_TIME_EXPRESSION_NAME, timeExpression.getExpression().getName());
              ItemNode.put(PROPERTY_TIME_EXPRESSION_VALUE, timeExpression.getExpression().getValue());
              connectorInstanceItemNode.put(PROPERTY_TIME_EXPRESSION, ItemNode);
            }
           
            TimeSkipExpression timeSkipExpression = connectorInstance.getTimeSkipExpression();
            if(timeSkipExpression != null){
              ObjectNode ItemNode = objectMapper.createObjectNode();
              ItemNode.put(PROPERTY_TIME_SKIP_EXPRESSION_ID, timeSkipExpression.getExpression().getId());
              ItemNode.put(PROPERTY_TIME_SKIP_EXPRESSION_NAME, timeSkipExpression.getExpression().getName());
              ItemNode.put(PROPERTY_TIME_SKIP_EXPRESSION_VALUE, timeSkipExpression.getExpression().getValue());
              connectorInstanceItemNode.put(PROPERTY_TIME_SKIP_EXPRESSION, ItemNode);
            }
           
           
            itemsNode.add(connectorInstanceItemNode);
           
          }
          connectorInstanceNode.put("totalCount", itemsNode.size());
          connectorInstanceNode.put("items", itemsNode);
            //propertiesNode.put(PROPERTY_CONNECTORINSTANCE, connectorInstanceNode);
          return connectorInstanceNode;
        }
        return objectMapper.createObjectNode();
  }
 
  public List<ConnectorInstance> convertJsonToElement(JsonNode elementNode) {
    JsonNode connectorInstanceNode = JsonConverterUtil.getProperty(PROPERTY_CONNECTORINSTANCE, elementNode);
    if(connectorInstanceNode !=null){
     
      ObjectMapper objectMapper = new ObjectMapper();

      JsonNode objectConnectorNode = null;
      try {
        objectConnectorNode = objectMapper.readTree(connectorInstanceNode.getTextValue());
      } catch (JsonProcessingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        LOG.debug("ConnectorInstance节点JSON转BPMN模型失败,JsonProcessingException:{}", e.getMessage());
      } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        LOG.debug("ConnectorInstance节点JSON转BPMN模型失败,IOException:{}", e.getMessage());
      }
     
        JsonNode itemsNode = objectConnectorNode.get("items");
         
      if(itemsNode != null) {
       
        List<ConnectorInstance> listActivity = new ArrayList<ConnectorInstance>();
       
        Iterator<JsonNode> connectorInstanceIterator = itemsNode.getElements();
        while (connectorInstanceIterator.hasNext()) {
            JsonNode connectorInstanceItemNode = connectorInstanceIterator.next();
           
            String connectorId = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_CONNECTORID).asText();
            String packageName = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_PACKAGENAME).asText();
            String className = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_CLASSNAME).asText();
            String connectorInstanceId = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_CONNECTORINSTANCEID).asText();
            String connectorInstanceName = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_CONNECTORINSTANCENAME).asText();
            String eventType = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_EVENTTYPE).asText();
            String errorHandling = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_ERRORHANDLING).asText();
            String errorCode = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_ERRORCODE).asText();
            Boolean isTimeExecute = connectorInstanceItemNode.get(PROPERTY_CONNECTORINSTANCE_ISTIMEEXECUTE).asBoolean(false);
           
            ConnectorInstance ConnectorInstance = FixFlowFactory.eINSTANCE.createConnectorInstance();
            ConnectorInstance.setConnectorId(connectorId);
            ConnectorInstance.setPackageName(packageName);
            ConnectorInstance.setClassName(className);
            ConnectorInstance.setConnectorInstanceId(connectorInstanceId);
            ConnectorInstance.setConnectorInstanceName(connectorInstanceName);
            ConnectorInstance.setEventType(eventType);
            ConnectorInstance.setErrorHandling(errorHandling);
            ConnectorInstance.setErrorCode(errorCode);
            ConnectorInstance.setIsTimeExecute(isTimeExecute);
           
            JsonNode documentNode = connectorInstanceItemNode.get(PROPERTY_DOCUMENTATION);
              if(documentNode !=null){
               
                String id = documentNode.get(PROPERTY_DOCUMENTATION_ID).asText();
                String name = documentNode.get(PROPERTY_DOCUMENTATION_NAME).asText();
                String value = documentNode.get(PROPERTY_DOCUMENTATION_VALUE).asText();
               
                Documentation documentationElm = FixFlowFactory.eINSTANCE.createDocumentation();
                documentationElm.setId(id);
                documentationElm.setName(name);
                documentationElm.setValue(value);
               
                ConnectorInstance.setDocumentation(documentationElm);
              }
             
             
              JsonNode connectorParameterInputsNode = connectorInstanceItemNode.get(PROPERTY_CONNECTORPARAMETERINPUTS);
              if(connectorParameterInputsNode !=null){
               
              Iterator<JsonNode> connectorParameterInputsIterator = connectorParameterInputsNode.getElements();
              while (connectorParameterInputsIterator.hasNext()) {
                JsonNode connectorParameterInputsItemNode = connectorParameterInputsIterator.next();
                String id = connectorParameterInputsItemNode.get(PROPERTY_CONNECTORPARAMETERINPUTS_ID).asText();
                  String name = connectorParameterInputsItemNode.get(PROPERTY_CONNECTORPARAMETERINPUTS_NAME).asText();
                  String dataType = connectorParameterInputsItemNode.get(PROPERTY_CONNECTORPARAMETERINPUTS_DATATYPE).asText();
                  String expression_name = connectorParameterInputsItemNode.get(PROPERTY_CONNECTORPARAMETERINPUTS_EXPRESSION_NAME).asText();
                  String expression_value = connectorParameterInputsItemNode.get(PROPERTY_CONNECTORPARAMETERINPUTS_EXPRESSION_VALUE).asText();
               
                ConnectorParameterInputs connectorParameterInputsElm = FixFlowFactory.eINSTANCE.createConnectorParameterInputs();
                connectorParameterInputsElm.setId(id);
                connectorParameterInputsElm.setName(name);
                connectorParameterInputsElm.setDataType(dataType);

                Expression expression = FixFlowFactory.eINSTANCE.createExpression();
                expression.setName(expression_name);
                expression.setValue(expression_value);
                connectorParameterInputsElm.setExpression(expression);
               
                ConnectorInstance.getConnectorParameterInputs().add(connectorParameterInputsElm);
              }
            
              }
             
             
              JsonNode connectorParameterOutputsNode = connectorInstanceItemNode.get(PROPERTY_CONNECTORPARAMETEROUTPUTS);
              if(connectorParameterOutputsNode !=null){
               
              Iterator<JsonNode> connectorParameterOutputsIterator = connectorParameterOutputsNode.getElements();
              while (connectorParameterOutputsIterator.hasNext()) {
                JsonNode connectorParameterOutputsItemNode = connectorParameterOutputsIterator.next();
                String variableTarget = connectorParameterOutputsItemNode.get(PROPERTY_CONNECTORPARAMETEROUTPUTS_VARIABLETARGET).asText();
                  String expression_name = connectorParameterOutputsItemNode.get(PROPERTY_CONNECTORPARAMETEROUTPUTS_EXPRESSION_NAME).asText();
                  String expression_value = connectorParameterOutputsItemNode.get(PROPERTY_CONNECTORPARAMETEROUTPUTS_EXPRESSION_VALUE).asText();
               
                  ConnectorParameterOutputs connectorParameterOutputsElm = FixFlowFactory.eINSTANCE.createConnectorParameterOutputs();
                  connectorParameterOutputsElm.setVariableTarget(variableTarget);

                Expression expression = FixFlowFactory.eINSTANCE.createExpression();
                expression.setName(expression_name);
                expression.setValue(expression_value);
                connectorParameterOutputsElm.setExpression(expression);
               
                ConnectorInstance.getConnectorParameterOutputs().add(connectorParameterOutputsElm);
              }
            
              }
             
             
              JsonNode connectorParameterOutputsDefNode = connectorInstanceItemNode.get(PROPERTY_CONNECTORPARAMETEROUTPUTSDEF);
              if(connectorParameterOutputsDefNode !=null){
               
              Iterator<JsonNode> connectorParameterOutputsDefIterator = connectorParameterOutputsDefNode.getElements();
              while (connectorParameterOutputsDefIterator.hasNext()) {
                JsonNode connectorParameterOutputsDefItemNode = connectorParameterOutputsDefIterator.next();
                String id = connectorParameterOutputsDefItemNode.get(PROPERTY_CONNECTORPARAMETEROUTPUTSDEF_ID).asText();
                  String name = connectorParameterOutputsDefItemNode.get(PROPERTY_CONNECTORPARAMETEROUTPUTSDEF_NAME).asText();
                  String dataType = connectorParameterOutputsDefItemNode.get(PROPERTY_CONNECTORPARAMETEROUTPUTSDEF_DATATYPE).asText();
               
                  ConnectorParameterOutputsDef connectorParameterOutputsDefElm = FixFlowFactory.eINSTANCE.createConnectorParameterOutputsDef();
                  connectorParameterOutputsDefElm.setId(id);
                  connectorParameterOutputsDefElm.setName(name);
                  connectorParameterOutputsDefElm.setDataType(dataType);

                ConnectorInstance.getConnectorParameterOutputsDef().add(connectorParameterOutputsDefElm);
              }
              }
             
             
              JsonNode skipCommentNode = connectorInstanceItemNode.get(PROPERTY_SKIPCOMMENT);
              if(skipCommentNode !=null){
               
                String id = skipCommentNode.get(PROPERTY_SKIPCOMMENT_EXPRESSION_ID).asText();
                String name = skipCommentNode.get(PROPERTY_SKIPCOMMENT_EXPRESSION_NAME).asText();
                String value = skipCommentNode.get(PROPERTY_SKIPCOMMENT_EXPRESSION_VALUE).asText();
               
                Expression expression = FixFlowFactory.eINSTANCE.createExpression();
                expression.setId(id);
                expression.setName(name);
              expression.setValue(value);
             
              SkipComment skipCommentElm = FixFlowFactory.eINSTANCE.createSkipComment();
              skipCommentElm.setExpression(expression);

                ConnectorInstance.setSkipComment(skipCommentElm);
              }
             
             
              JsonNode timeExpressionNode = connectorInstanceItemNode.get(PROPERTY_TIME_EXPRESSION);
              if(timeExpressionNode !=null){
               
                String id = timeExpressionNode.get(PROPERTY_TIME_EXPRESSION_ID).asText();
                String name = timeExpressionNode.get(PROPERTY_TIME_EXPRESSION_NAME).asText();
                String value = timeExpressionNode.get(PROPERTY_TIME_EXPRESSION_VALUE).asText();
               
                Expression expression = FixFlowFactory.eINSTANCE.createExpression();
                expression.setId(id);
                expression.setName(name);
              expression.setValue(value);
             
              TimeExpression timeExpressionElm = FixFlowFactory.eINSTANCE.createTimeExpression();
              timeExpressionElm.setExpression(expression);

                ConnectorInstance.setTimeExpression(timeExpressionElm);
              }
             
             
              JsonNode timeSkipExpressionNode = connectorInstanceItemNode.get(PROPERTY_TIME_SKIP_EXPRESSION);
              if(timeSkipExpressionNode !=null){
               
                String id = timeSkipExpressionNode.get(PROPERTY_TIME_SKIP_EXPRESSION_ID).asText();
                String name = timeSkipExpressionNode.get(PROPERTY_TIME_SKIP_EXPRESSION_NAME).asText();
                String value = timeSkipExpressionNode.get(PROPERTY_TIME_SKIP_EXPRESSION_VALUE).asText();
               
                Expression expression = FixFlowFactory.eINSTANCE.createExpression();
                expression.setId(id);
                expression.setName(name);
              expression.setValue(value);
             
              TimeSkipExpression timeSkipExpressionElm = FixFlowFactory.eINSTANCE.createTimeSkipExpression();
              timeSkipExpressionElm.setExpression(expression);

                ConnectorInstance.setTimeSkipExpression(timeSkipExpressionElm);
              }
             
              //BpmnModelUtil.addExtensionElement(activity, FixFlowPackage.Literals.DOCUMENT_ROOT__CONNECTOR_INSTANCE, ConnectorInstance);
              listActivity.add(ConnectorInstance);
        }
         
        return listActivity;
      }
      }
    return null;
  }
}
TOP

Related Classes of com.founder.fix.fixflow.editor.language.json.converter.elements.ConnectorInstanceElm

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.