toXCQL() refactored as layer over new underlyingToXCQL()
[cql-java-moved-to-github.git] / src / org / z3950 / zing / cql / ModifierSet.java
index ee185a3..7b6991a 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: ModifierSet.java,v 1.10 2007-06-27 22:14:03 mike Exp $
+// $Id: ModifierSet.java,v 1.13 2007-07-03 13:30:18 mike Exp $
 
 package org.z3950.zing.cql;
 import java.util.Vector;
@@ -15,7 +15,7 @@ import java.lang.StringBuffer;
  * zero or more <I>type</I> <I>comparison</I> <I>value</I> pairs,
  * where type, comparison and value are all strings.
  *
- * @version $Id: ModifierSet.java,v 1.10 2007-06-27 22:14:03 mike Exp $
+ * @version $Id: ModifierSet.java,v 1.13 2007-07-03 13:30:18 mike Exp $
  */
 public class ModifierSet {
     String base;
@@ -37,16 +37,24 @@ public class ModifierSet {
     }
 
     /**
-     * Adds a modifier of the specified <TT>type</TT>, <TT>comparison</TT> and
-     * <TT>value</TT> to a ModifierSet.
+     * Adds a modifier of the specified <TT>type</TT>,
+     * <TT>comparison</TT> and <TT>value</TT> to a ModifierSet.
      */
     public void addModifier(String type, String comparison, String value) {
-       // ### Need to have comparison passed in
        Modifier modifier = new Modifier(type, comparison, value);
        modifiers.add(modifier);
     }
 
     /**
+     * Adds a modifier of the specified <TT>type</TT>, but with no
+     * <TT>comparison</TT> and <TT>value</TT>, to a ModifierSet.
+     */
+    public void addModifier(String type) {
+       Modifier modifier = new Modifier(type);
+       modifiers.add(modifier);
+    }
+
+    /**
      * Returns the value of the modifier in the specified ModifierSet
      * that corresponds to the specified type.
      */
@@ -70,14 +78,24 @@ public class ModifierSet {
     }
 
     public String toXCQL(int level, String topLevelElement) {
+       return underlyingToXCQL(level, topLevelElement, "value");
+    }
+
+    public String sortKeyToXCQL(int level) {
+       return underlyingToXCQL(level, "key", "index");
+    }
+
+    private String underlyingToXCQL(int level, String topLevelElement,
+                                   String valueElement) {
        StringBuffer buf = new StringBuffer();
        buf.append(Utils.indent(level) + "<" + topLevelElement + ">\n");
        buf.append(Utils.indent(level+1) +
-                  "<value>" + Utils.xq(base) + "</value>\n");
+                  "<" + valueElement + ">" + Utils.xq(base) +
+                  "</" + valueElement + ">\n");
        if (modifiers.size() > 0) {
            buf.append(Utils.indent(level+1) + "<modifiers>\n");
            for (int i = 0; i < modifiers.size(); i++) {
-               buf.append(modifiers.get(i).toXCQL(level+2, "relation"));
+               buf.append(modifiers.get(i).toXCQL(level+2, "comparison"));
            }
            buf.append(Utils.indent(level+1) + "</modifiers>\n");
        }