All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.activiti.engine.test.impl.logger.DebugInfoExecutionTree Maven / Gradle / Ivy

There is a newer version: 3.0.Beta
Show newest version
/* 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.activiti.engine.test.impl.logger;

import org.slf4j.Logger;

import java.util.ArrayList;
import java.util.List;

/**

 */
public class DebugInfoExecutionTree {

  protected DebugInfoExecutionTreeNode processInstance;

  public DebugInfoExecutionTreeNode getProcessInstance() {
    return processInstance;
  }

  public void setProcessInstance(DebugInfoExecutionTreeNode processInstance) {
    this.processInstance = processInstance;
  }

  public static class DebugInfoExecutionTreeNode {

    protected String id;
    protected String processDefinitionId;
    protected String activityId;
    protected String activityName;
    protected DebugInfoExecutionTreeNode parentNode;
    protected List childNodes = new ArrayList();

    /* See http://stackoverflow.com/questions/4965335/how-to-print-binary-tree-diagram */
    public void print(Logger logger) {
      logger.info("");
      logger.info(id);
      for (DebugInfoExecutionTreeNode childNode : childNodes) {
        childNode.print(logger, "", true);
      }
      logger.info("");
    }

    protected void print(Logger logger, String prefix, boolean isTail) {
      logger.info(prefix + (isTail ? "└── " : "├── ") + getCurrentFlowElementInfo());
      for (int i = 0; i < childNodes.size() - 1; i++) {
        childNodes.get(i).print(logger, prefix + (isTail ? "    " : "│   "), false);
      }
      if (childNodes.size() > 0) {
        childNodes.get(childNodes.size() - 1).print(logger, prefix + (isTail ? "    " : "│   "), true);
      }
    }

    protected String getCurrentFlowElementInfo() {
      StringBuilder strb = new StringBuilder(30);
      strb.append(id);

      if (activityId != null || activityName != null) {
        strb.append(" in flow element ");

        if (activityId != null) {
          strb.append("'").append(activityId).append("'");
        }

        if (activityName != null) {
          strb.append(" with name ").append(activityName);
        }

      }

      return strb.toString();
    }

    public String getId() {
      return id;
    }

    public void setId(String id) {
      this.id = id;
    }

    public String getProcessDefinitionId() {
      return processDefinitionId;
    }

    public void setProcessDefinitionId(String processDefinitionId) {
      this.processDefinitionId = processDefinitionId;
    }

    public String getActivityId() {
      return activityId;
    }

    public void setActivityId(String activityId) {
      this.activityId = activityId;
    }

    public String getActivityName() {
      return activityName;
    }

    public void setActivityName(String activityName) {
      this.activityName = activityName;
    }

    public DebugInfoExecutionTreeNode getParentNode() {
      return parentNode;
    }

    public void setParentNode(DebugInfoExecutionTreeNode parentNode) {
      this.parentNode = parentNode;
    }

    public List getChildNodes() {
      return childNodes;
    }

    public void setChildNodes(List childNodes) {
      this.childNodes = childNodes;
    }

  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy