use of org.kie.workbench.common.stunner.core.graph.processing.traverse.tree.TreeWalkTraverseProcessorImpl in project kie-wb-common by kiegroup.
the class BPMN2JsonParser method initialize.
/*
****************************************************************
* Custom Stunner logic
****************************************************************
*/
@SuppressWarnings("unchecked")
private void initialize(final ContextualParser.Context parsingContext) {
Graph graph = diagram.getGraph();
final Map<String, EdgeParser> edgeParsers = new HashMap<>();
new ChildrenTraverseProcessorImpl(new TreeWalkTraverseProcessorImpl()).traverse(graph, new AbstractChildrenTraverseCallback<Node<View, Edge>, Edge<Child, Node>>() {
final Stack<NodeParser> parsers = new Stack<NodeParser>();
NodeParser currentParser = null;
@Override
public void startGraphTraversal(Graph<DefinitionSet, Node<View, Edge>> graph) {
super.startGraphTraversal(graph);
}
@Override
public boolean startNodeTraversal(final List<Node<View, Edge>> parents, final Node<View, Edge> node) {
super.startNodeTraversal(parents, node);
onNodeTraversal(node);
return true;
}
@Override
public void startNodeTraversal(final Node<View, Edge> node) {
super.startNodeTraversal(node);
onNodeTraversal(node);
}
private void onNodeTraversal(final Node node) {
NodeParser p = new NodeParser("", node);
if (null != currentParser) {
parsers.peek().addChild(p);
} else {
BPMN2JsonParser.this.rootParser = p;
}
currentParser = p;
List<Edge> outEdges = node.getOutEdges();
if (null != outEdges && !outEdges.isEmpty()) {
for (Edge edge : outEdges) {
// Only add the edges with view connector types into the resulting structure to generate the bpmn definition.
if (edge.getContent() instanceof ViewConnector && !edgeParsers.containsKey(edge.getUUID())) {
edgeParsers.put(edge.getUUID(), new EdgeParser("", (Edge) edge));
}
}
}
}
@Override
public void startEdgeTraversal(Edge<Child, Node> edge) {
super.startEdgeTraversal(edge);
parsers.push(currentParser);
}
@Override
public void endEdgeTraversal(Edge<Child, Node> edge) {
super.endEdgeTraversal(edge);
currentParser = parsers.pop();
}
@Override
public void endGraphTraversal() {
super.endGraphTraversal();
}
});
// In oryx format, all edges are added into the main BPMNDiagram node.
if (null != rootParser && !edgeParsers.isEmpty()) {
for (EdgeParser edgeParser : edgeParsers.values()) {
rootParser.addChild(edgeParser);
}
}
// Initialize all the element parsers added in the tree.
BPMN2JsonParser.this.rootParser.initialize(parsingContext);
System.out.println("End of children and view traverse");
}
use of org.kie.workbench.common.stunner.core.graph.processing.traverse.tree.TreeWalkTraverseProcessorImpl in project kie-wb-common by kiegroup.
the class CaseManagementCanvasCommandFactoryTest method setup.
@Before
public void setup() {
when(childrenTraverseProcessorInstances.get()).thenReturn(new ChildrenTraverseProcessorImpl(new TreeWalkTraverseProcessorImpl()));
when(viewTraverseProcessorInstances.get()).thenReturn(new ViewTraverseProcessorImpl(new TreeWalkTraverseProcessorImpl()));
this.factory = new CaseManagementCanvasCommandFactory(childrenTraverseProcessorInstances, null);
}
use of org.kie.workbench.common.stunner.core.graph.processing.traverse.tree.TreeWalkTraverseProcessorImpl in project kie-wb-common by kiegroup.
the class GraphValidatorImplTest method setup.
@Before
@SuppressWarnings("unchecked")
public void setup() throws Exception {
this.graphTestHandler = new TestingGraphMockHandler();
when(graphTestHandler.definitionSetRegistry.getDefinitionSetById(eq(DEF_SET_ID))).thenReturn(defSetBean);
when(graphTestHandler.ruleAdapter.getRuleSet(eq(defSetBean))).thenReturn(graphTestHandler.ruleSet);
this.tested = new GraphValidatorImpl(graphTestHandler.definitionManager, graphTestHandler.ruleManager, new TreeWalkTraverseProcessorImpl());
}
use of org.kie.workbench.common.stunner.core.graph.processing.traverse.tree.TreeWalkTraverseProcessorImpl in project kie-wb-common by kiegroup.
the class CanvasHighlightVisitor method prepareVisit.
@SuppressWarnings("unchecked")
private void prepareVisit(final Command command) {
final Graph graph = canvasHandler.getDiagram().getGraph();
final TreeWalkTraverseProcessor treeWalkTraverseProcessor = new TreeWalkTraverseProcessorImpl().useStartNodePredicate(this::isStartNode);
new ViewTraverseProcessorImpl(treeWalkTraverseProcessor).traverse(graph, new ContentTraverseCallback<View<?>, Node<View, Edge>, Edge<View<?>, Node>>() {
@Override
public void startGraphTraversal(final Graph<DefinitionSet, Node<View, Edge>> graph) {
}
@Override
public void startEdgeTraversal(final Edge<View<?>, Node> edge) {
addShape(edge.getUUID());
}
@Override
public void endEdgeTraversal(final Edge<View<?>, Node> edge) {
}
@Override
public void startNodeTraversal(final Node<View, Edge> node) {
addShape(node.getUUID());
}
@Override
public void endNodeTraversal(final Node<View, Edge> node) {
}
@Override
public void endGraphTraversal() {
command.execute();
}
private void addShape(final String uuid) {
final Shape shape = canvasHandler.getCanvas().getShape(uuid);
if (null != shape) {
shapes.add(shape);
}
}
});
}
use of org.kie.workbench.common.stunner.core.graph.processing.traverse.tree.TreeWalkTraverseProcessorImpl in project kie-wb-common by kiegroup.
the class GraphBoundsIndexerImplTest method setup.
@Before
public void setup() {
this.graphTestHandlerParent = new TestingGraphMockHandler();
graphInstanceParent = TestingGraphInstanceBuilder.newGraph2(graphTestHandlerParent);
ChildrenTraverseProcessor childrenTraverseProcessor = new ChildrenTraverseProcessorImpl(new TreeWalkTraverseProcessorImpl());
graphBoundsIndexerImpl = new GraphBoundsIndexerImpl(childrenTraverseProcessor);
graphBoundsIndexerImpl.build(graphInstanceParent.graph);
}
Aggregations