-// $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.
*
- * @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 getLeftOperand() {
+ return left;
+ }
+
+ private CQLNode right;
/**
* The root of a parse-tree representing the right-hand side.
- */
- public CQLNode right;
+ */
+ public CQLNode getRightOperand() {
+ 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;
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
+ public void traverse(CQLNodeVisitor visitor) {
+ visitor.onBooleanNode(this);
+ left.traverse(visitor);
+ right.traverse(visitor);
+ }
+
+
+ @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() + ")" +
"(" + right.toCQL() + ")");
}
+ @Override
public String toPQF(Properties config) throws PQFTranslationException {
return ("@" + opPQF() +
" " + left.toPQF(config) +
// 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));