in seam/src/main/java/com/intellij/seam/pageflow/graph/PageflowDataModel.java [189:239]
private void addTransitions(final PageflowNode<? extends DomElement> sourceNode,
final List<Transition> transitions,
final Map<String, List<PageNode>> allPageNodes,
final Map<String, List<DecisionNode>> allDecisionNodes,
final Map<String, List<EndStateNode>> allEndStates,
final Map<String, List<ProcessStateNode>> allProcessStates) {
for (Transition transition : transitions) {
final String targetNodeName = transition.getTo().getStringValue();
if (StringUtil.isEmptyOrSpaces(targetNodeName)) continue;
final List<PageNode> targetPageNodes = allPageNodes.get(targetNodeName);
if (targetPageNodes != null) {
for (PageNode targetNode : targetPageNodes) {
addTransition(new PageflowBasicEdge(sourceNode, targetNode, transition.createStableCopy(), (targetPageNodes.size() > 1 ||
allDecisionNodes.containsKey(targetNodeName) ||
allEndStates.containsKey(targetNodeName) ||
allProcessStates.containsKey(targetNodeName) )));
}
}
final List<DecisionNode> targetDecisionNodes = allDecisionNodes.get(targetNodeName);
if (targetDecisionNodes != null) {
for (DecisionNode targetNode : targetDecisionNodes) {
addTransition(new PageflowBasicEdge(sourceNode, targetNode, transition.createStableCopy(), (targetDecisionNodes.size() > 1 ||
allPageNodes.containsKey(targetNodeName) ||
allEndStates.containsKey(targetNodeName) ||
allProcessStates.containsKey(targetNodeName))));
}
}
final List<EndStateNode> targetEndStateNodes = allEndStates.get(targetNodeName);
if (targetEndStateNodes != null) {
for (EndStateNode targetNode : targetEndStateNodes) {
addTransition(new PageflowBasicEdge(sourceNode, targetNode, transition.createStableCopy(), (targetEndStateNodes.size() > 1 ||
allPageNodes.containsKey(targetNodeName) ||
allDecisionNodes.containsKey(targetNodeName) ||
allProcessStates.containsKey(targetNodeName))));
}
}
final List<ProcessStateNode> targetProcessStateNodes = allProcessStates.get(targetNodeName);
if (targetProcessStateNodes != null) {
for (ProcessStateNode targetNode : targetProcessStateNodes) {
addTransition(new PageflowBasicEdge(sourceNode, targetNode, transition.createStableCopy(), (targetProcessStateNodes.size() > 1 ||
allPageNodes.containsKey(targetNodeName) ||
allDecisionNodes.containsKey(targetNodeName) ||
allEndStates.containsKey(targetNodeName))));
}
}
}
}