kimi
2020-05-27 c007f0ca1785db093d48f4846cda82fe8e955765
src/main/java/com/highdatas/mdm/service/impl/ModelEditorServiceImpl.java
@@ -1,9 +1,13 @@
package com.highdatas.mdm.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.highdatas.mdm.pojo.Result;
import com.highdatas.mdm.service.ModelEditorService;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.DbUtils;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.engine.ActivitiException;
@@ -15,10 +19,10 @@
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.MultiValueMap;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Map;
/**
 * @author kimi
@@ -46,33 +50,47 @@
        Model model = repositoryService.getModel(modelId);
        if (model != null) {
            try {
                if (StringUtils.isNotEmpty(model.getMetaInfo())) {
                    modelNode = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
                } else {
                    modelNode = objectMapper.createObjectNode();
                    modelNode.put(MODEL_NAME, model.getName());
                }
                modelNode.put(MODEL_ID, model.getId());
                byte[] modelEditorSource = repositoryService.getModelEditorSource(model.getId());
                String s = new String(modelEditorSource, "utf-8");
                ObjectNode editorJsonNode = (ObjectNode) objectMapper.readTree(s);
                modelNode.put("model", editorJsonNode);
            } catch (Exception e) {
                LOGGER.error("Error creating model JSON", e);
                throw new ActivitiException("Error creating model JSON", e);
        if (model != null) try {
            if (StringUtils.isNotEmpty(model.getMetaInfo())) {
                modelNode = (ObjectNode) objectMapper.readTree(model.getMetaInfo());
            } else {
                modelNode = objectMapper.createObjectNode();
                modelNode.put(MODEL_NAME, model.getName());
            }
        }else {
            modelNode.put(MODEL_ID, model.getId());
            byte[] modelEditorSource = repositoryService.getModelEditorSource(model.getId());
            String s = new String(modelEditorSource, "utf-8");
            JSONObject editorJsonNode = JSONObject.parseObject(s);
            JSONArray childShapes = editorJsonNode.getJSONArray("childShapes");
            for (Object childShape : childShapes) {
                JSONObject nextJsonNode = (JSONObject) childShape;
                JSONObject stencil = nextJsonNode.getJSONObject("stencil");
                String nodeType = stencil.getString(Constant.ID);
                if (!nodeType.equalsIgnoreCase("SequenceFlow")) {
                    continue;
                }
                JSONObject properties = nextJsonNode.getJSONObject("properties");
                String etlCondition = properties.getString("conditionsequenceflow");
                etlCondition = etlCondition.replace("&&", "++");
                properties.put("conditionsequenceflow", etlCondition);
            }
            JsonNode jsonNode = objectMapper.readTree(editorJsonNode.toJSONString());
            modelNode.put("model", jsonNode);
        } catch (Exception e) {
            LOGGER.error("Error creating model JSON", e);
            throw new ActivitiException("Error creating model JSON", e);
        }
        else {
        }
        return modelNode;
    }
    @Override
    public Result saveModel(String modelId, MultiValueMap<String, String> values) {
    public Result saveModel(String modelId, Map<String, String> values) {
        return null;
    }