private void addTransitions()

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))));
        }
      }
    }
  }