コード例 #1
0
ファイル: FileOperatorNode.java プロジェクト: sleyzerzon/soar
  /*
   * This represents the set of actions that should be preformed when an
   * operator becomes a high-level operator
   */
  public void firstTimeAdd(OperatorWindow operatorWindow, SoarWorkingMemoryModel swmm)
      throws IOException {
    OperatorNode parent = (OperatorNode) getParent();

    // Create the Folder
    File folder = new File(parent.getFullPathName() + File.separator + name);
    if (!okayToCreate(folder, true)) return;
    if (!folder.mkdir()) throw new IOException();

    // Determine the datamap id
    if (parent instanceof SoarOperatorNode) {
      dataMapId = (parent).getStateIdVertex();
    } else {
      dataMapId = swmm.getTopstate();
    }
    dataMapIdNumber = dataMapId.getValue();

    // Make this node highlevel
    isHighLevel = true;

    // Add the folder
    folderName = folder.getName();
  }
コード例 #2
0
    static Node build(List<Query> clauses) {
      OperatorNode top = new OperatorNode(Conjunction.OR);
      OperatorNode cur = new OperatorNode(Conjunction.AND);
      top.add(cur);

      for (Query query : clauses) {
        if (query instanceof ConjQuery) {
          if (((ConjQuery) query).getConjunction() == ConjQuery.Conjunction.OR) {
            cur = new OperatorNode(Conjunction.AND);
            top.add(cur);
          }
        } else if (query instanceof SubQuery) {
          SubQuery sq = (SubQuery) query;
          Node subTree = build(sq.getSubClauses());
          subTree.setBool(sq.getModifier() != Query.Modifier.MINUS);
          cur.add(subTree);
        } else {
          cur.add(new ThingNode(query));
        }
      }

      return top;
    }