Move some code around, simplify
[cql-java-moved-to-github.git] / src / main / java / org / z3950 / zing / cql / CQLBooleanNode.java
index ec0608c..902e6b5 100644 (file)
@@ -1,9 +1,8 @@
 // $Id: CQLBooleanNode.java,v 1.18 2007-07-03 16:03:00 mike Exp $
 
 package org.z3950.zing.cql;
+import java.util.List;
 import java.util.Properties;
-import java.util.Vector;
-
 
 /**
  * Represents a boolean node in a CQL parse-tree.
@@ -11,20 +10,32 @@ import java.util.Vector;
  * @version    $Id: CQLBooleanNode.java,v 1.18 2007-07-03 16:03:00 mike Exp $
  */
 public abstract class CQLBooleanNode extends CQLNode {
+
+    private CQLNode left;
+
     /**
      * The root of a parse-tree representing the left-hand side.
-     */ 
-    public CQLNode left;
+     */
+    public CQLNode getLeft() {
+        return left;
+    }
+
+    private CQLNode right;
 
     /**
      * The root of a parse-tree representing the right-hand side.
-     */ 
-    public CQLNode right;
+     */
+    public CQLNode getRight() {
+        return right;
+    }
 
+    ModifierSet ms;
     /**
      * The set of modifiers that are applied to this boolean.
      */
-    public ModifierSet ms;
+    public List<Modifier> getModifiers() {
+        return ms.getModifiers();
+    }
 
     protected CQLBooleanNode(CQLNode left, CQLNode right, ModifierSet ms) {
        this.left = left;
@@ -32,21 +43,23 @@ public abstract class CQLBooleanNode extends CQLNode {
        this.ms = ms;
     }
 
-    public String toXCQL(int level, Vector<CQLPrefix> prefixes,
-                        Vector<ModifierSet> sortkeys) {
-       return (indent(level) + "<triple>\n" +
-               renderPrefixes(level+1, prefixes) +
-               ms.toXCQL(level+1, "boolean") +
-               indent(level+1) + "<leftOperand>\n" +
-               left.toXCQL(level+2) +
-               indent(level+1) + "</leftOperand>\n" +
-               indent(level+1) + "<rightOperand>\n" +
-               right.toXCQL(level+2) +
-               indent(level+1) + "</rightOperand>\n" +
-               renderSortKeys(level+1, sortkeys) +
-               indent(level) + "</triple>\n");
+    @Override
+    void toXCQLInternal(XCQLBuilder b, int level,
+        List<CQLPrefix> prefixes, List<ModifierSet> sortkeys) {
+       b.indent(level).append("<triple>\n");
+        renderPrefixes(b, level + 1, prefixes);
+        ms.toXCQLInternal(b, level + 1, "boolean", "value");
+        b.indent(level + 1).append("<leftOperand>\n");
+        left.toXCQLInternal(b, level + 2);
+        b.indent(level + 1).append("</leftOperand>\n");
+        b.indent(level + 1).append("<rightOperand>\n");
+        right.toXCQLInternal(b, level + 2);
+        b.indent(level + 1).append("</rightOperand>\n");
+        renderSortKeys(b, level + 1, sortkeys);
+        b.indent(level).append("</triple>\n");
     }
 
+    @Override
     public String toCQL() {
        // ### We don't always need parens around the operands
        return ("(" + left.toCQL() + ")" +
@@ -54,6 +67,7 @@ public abstract class CQLBooleanNode extends CQLNode {
                "(" + right.toCQL() + ")");
     }
 
+    @Override
     public String toPQF(Properties config) throws PQFTranslationException {
        return ("@" + opPQF() +
                " " + left.toPQF(config) +
@@ -63,6 +77,7 @@ public abstract class CQLBooleanNode extends CQLNode {
     // represents the operation for PQF: overridden for CQLProxNode
     String opPQF() { return ms.getBase(); }
 
+    @Override
     public byte[] toType1BER(Properties config) throws PQFTranslationException {
         System.out.println("in CQLBooleanNode.toType1BER(): PQF=" +
                           toPQF(config));