コード例 #1
0
ファイル: Solver.java プロジェクト: acwest-cc/droolsjbpm
  /** Ends subSolvers data collection. */
  protected void end() {
    if (subSolver != null && subSolver.subSolver == null) {
      if (type == OperatorDescrType.AND) {
        if (possibilityLists.isEmpty()) {
          possibilityLists.add(new HashSet<VerifierComponent>());
        }

        List<Set<VerifierComponent>> newPossibilities = new ArrayList<Set<VerifierComponent>>();

        List<Set<VerifierComponent>> sets = subSolver.getPossibilityLists();
        for (Set<VerifierComponent> possibilityList : possibilityLists) {

          for (Set<VerifierComponent> set : sets) {
            Set<VerifierComponent> newSet = new HashSet<VerifierComponent>();
            newSet.addAll(possibilityList);
            newSet.addAll(set);
            newPossibilities.add(newSet);
          }
        }
        possibilityLists = newPossibilities;

      } else if (type == OperatorDescrType.OR) {

        possibilityLists.addAll(subSolver.getPossibilityLists());
      }

      subSolver = null;

    } else if (subSolver != null && subSolver.subSolver != null) {

      subSolver.end();
    }
  }