kimi
2020-03-31 74472c9d22dddcb41383794caf0011043b20f817
src/main/java/com/highdatas/mdm/process/canvas/ProcessDiagramGenerator.java
@@ -212,59 +212,63 @@
            processDiagramCanvas.drawActivityMarkers((int)graphicInfo.getX(), (int)graphicInfo.getY(), (int)graphicInfo.getWidth(), (int)graphicInfo.getHeight(), multiInstanceSequential, multiInstanceParallel, collapsed);
        }
            if (highLightedActivities.contains(flowNode.getId())) {
            if (highLightedActivities != null && highLightedActivities.contains(flowNode.getId())) {
                processDiagramCanvas.drawHighLight((int)graphicInfo.getX(), (int)graphicInfo.getY(), (int)graphicInfo.getWidth(), (int)graphicInfo.getHeight());
            }
        }
        for (SequenceFlow sequenceFlow : flowNode.getOutgoingFlows()) {
          boolean highLighted = highLightedFlows.contains(sequenceFlow.getId());
          String defaultFlow = null;
          if (flowNode instanceof Activity)
            defaultFlow = ((Activity)flowNode).getDefaultFlow();
          else if (flowNode instanceof Gateway) {
            defaultFlow = ((Gateway)flowNode).getDefaultFlow();
          }
            boolean highLighted = false;
            if (highLightedFlows != null) {
                highLighted = highLightedFlows.contains(sequenceFlow.getId());
            }
          boolean isDefault = false;
          if ((defaultFlow != null) && (defaultFlow.equalsIgnoreCase(sequenceFlow.getId()))) {
            isDefault = true;
          }
          boolean drawConditionalIndicator = (sequenceFlow.getConditionExpression() != null) && (!(flowNode instanceof Gateway));
              String defaultFlow = null;
              if (flowNode instanceof Activity)
                defaultFlow = ((Activity)flowNode).getDefaultFlow();
              else if (flowNode instanceof Gateway) {
                defaultFlow = ((Gateway)flowNode).getDefaultFlow();
              }
          String sourceRef = sequenceFlow.getSourceRef();
          String targetRef = sequenceFlow.getTargetRef();
          FlowElement sourceElement = bpmnModel.getFlowElement(sourceRef);
          FlowElement targetElement = bpmnModel.getFlowElement(targetRef);
          List graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(sequenceFlow.getId());
          if ((graphicInfoList != null) && (graphicInfoList.size() > 0)) {
            graphicInfoList = connectionPerfectionizer(processDiagramCanvas, bpmnModel, sourceElement, targetElement, graphicInfoList);
            int[] xPoints = new int[graphicInfoList.size()];
            int[] yPoints = new int[graphicInfoList.size()];
              boolean isDefault = false;
              if ((defaultFlow != null) && (defaultFlow.equalsIgnoreCase(sequenceFlow.getId()))) {
                isDefault = true;
              }
              boolean drawConditionalIndicator = (sequenceFlow.getConditionExpression() != null) && (!(flowNode instanceof Gateway));
            for (int i = 1; i < graphicInfoList.size(); ++i) {
              GraphicInfo graphicInfo = (GraphicInfo)graphicInfoList.get(i);
              GraphicInfo previousGraphicInfo = (GraphicInfo)graphicInfoList.get(i - 1);
              String sourceRef = sequenceFlow.getSourceRef();
              String targetRef = sequenceFlow.getTargetRef();
              FlowElement sourceElement = bpmnModel.getFlowElement(sourceRef);
              FlowElement targetElement = bpmnModel.getFlowElement(targetRef);
              List graphicInfoList = bpmnModel.getFlowLocationGraphicInfo(sequenceFlow.getId());
              if ((graphicInfoList != null) && (graphicInfoList.size() > 0)) {
                graphicInfoList = connectionPerfectionizer(processDiagramCanvas, bpmnModel, sourceElement, targetElement, graphicInfoList);
                int[] xPoints = new int[graphicInfoList.size()];
                int[] yPoints = new int[graphicInfoList.size()];
              if (i == 1) {
                xPoints[0] = (int)previousGraphicInfo.getX();
                yPoints[0] = (int)previousGraphicInfo.getY();
              }
              xPoints[i] = (int)graphicInfo.getX();
              yPoints[i] = (int)graphicInfo.getY();
            }
                for (int i = 1; i < graphicInfoList.size(); ++i) {
                  GraphicInfo graphicInfo = (GraphicInfo)graphicInfoList.get(i);
                  GraphicInfo previousGraphicInfo = (GraphicInfo)graphicInfoList.get(i - 1);
            processDiagramCanvas.drawSequenceflow(xPoints, yPoints, drawConditionalIndicator, isDefault, highLighted, scaleFactor);
                  if (i == 1) {
                    xPoints[0] = (int)previousGraphicInfo.getX();
                    yPoints[0] = (int)previousGraphicInfo.getY();
                  }
                  xPoints[i] = (int)graphicInfo.getX();
                  yPoints[i] = (int)graphicInfo.getY();
                }
            GraphicInfo labelGraphicInfo = bpmnModel.getLabelGraphicInfo(sequenceFlow.getId());
            if (labelGraphicInfo != null) {
              processDiagramCanvas.drawLabel(sequenceFlow.getName(), labelGraphicInfo, false);
            }
            else {
               GraphicInfo lineCenter = getLineCenter(graphicInfoList);
               processDiagramCanvas.drawLabel(sequenceFlow.getName(), lineCenter, false);
         }
                processDiagramCanvas.drawSequenceflow(xPoints, yPoints, drawConditionalIndicator, isDefault, highLighted, scaleFactor);
                GraphicInfo labelGraphicInfo = bpmnModel.getLabelGraphicInfo(sequenceFlow.getId());
                if (labelGraphicInfo != null) {
                  processDiagramCanvas.drawLabel(sequenceFlow.getName(), labelGraphicInfo, false);
                }
                else {
                    GraphicInfo lineCenter = getLineCenter(graphicInfoList);
                    processDiagramCanvas.drawLabel(sequenceFlow.getName(), lineCenter, false);
                }
          }
    }