use of org.kie.workbench.common.stunner.bpmn.definition.IntermediateCompensationEventThrowing in project kie-wb-common by kiegroup.
the class ProcessCompensationRefProvider method getSelectorData.
@Override
@SuppressWarnings("unchecked")
public SelectorData getSelectorData(FormRenderingContext context) {
final Diagram diagram = sessionManager.getCurrentSession().getCanvasHandler().getDiagram();
final String rootUUID = diagram.getMetadata().getCanvasRootUUID();
final Node<?, ? extends Edge> selectedNode = getSelectedNode(diagram, sessionManager.getCurrentSession());
final Map<Object, String> values = new TreeMap<>(SafeComparator.TO_STRING_COMPARATOR);
if (selectedNode != null) {
Node<?, ? extends Edge> currentNode = selectedNode;
final List<Node> compensableNodes = new ArrayList<>();
Node<?, ? extends Edge> parentNode;
int levels = 0;
do {
parentNode = GraphUtils.getParent(currentNode).asNode();
compensableNodes.addAll(getCompensableNodes(parentNode));
if (rootUUID.equals(parentNode.getUUID())) {
levels = 2;
} else if (isSubProcess(parentNode)) {
currentNode = parentNode;
levels++;
} else if (isLane(parentNode)) {
currentNode = parentNode;
}
} while (levels < 2);
compensableNodes.stream().map(node -> buildPair(node.getUUID(), (BPMNDefinition) (((View) node.getContent()).getDefinition()))).forEach(pair -> values.put(pair.getK1(), pair.getK2()));
ActivityRef currentActivityRef = null;
if (isEndCompensationEvent(selectedNode)) {
currentActivityRef = ((EndCompensationEvent) ((View) selectedNode.getContent()).getDefinition()).getExecutionSet().getActivityRef();
} else if (isIntermediateCompensationEventThrowing(selectedNode)) {
currentActivityRef = ((IntermediateCompensationEventThrowing) ((View) selectedNode.getContent()).getDefinition()).getExecutionSet().getActivityRef();
}
if (currentActivityRef != null && !isEmpty(currentActivityRef.getValue()) && !values.containsKey(currentActivityRef.getValue())) {
Node configured = diagram.getGraph().getNode(currentActivityRef.getValue());
if (configured != null) {
Pair<Object, String> pair = buildPair(configured.getUUID(), (BPMNDefinition) ((View) configured.getContent()).getDefinition());
values.put(pair.getK1(), pair.getK2());
}
}
}
return new SelectorData(values, null);
}
Aggregations