56c212fc66c1595bb29bc17f518222b09a038cdb
[cql-java-moved-to-github.git] / src / org / z3950 / zing / cql / CQLBooleanNode.java
1 // $Id: CQLBooleanNode.java,v 1.6 2002-10-31 22:22:01 mike Exp $
2
3 package org.z3950.zing.cql;
4
5
6 /**
7  * Represents a boolean node in a CQL parse-tree.
8  * ##
9  *
10  * @version     $Id: CQLBooleanNode.java,v 1.6 2002-10-31 22:22:01 mike Exp $
11  */
12 public abstract class CQLBooleanNode extends CQLNode {
13     protected CQLNode left;
14     protected CQLNode right;
15
16     abstract String op();
17
18     String toXCQL(int level) {
19         return (indent(level) + "<triple>\n" +
20                 booleanXQL(level+1) +
21                 left.toXCQL(level+1) +
22                 right.toXCQL(level+1) +
23                 indent(level) + "</triple>\n");
24     }
25
26     String booleanXQL(int level) {
27         return(indent(level) + "<boolean>\n" +
28                indent(level+1) + "<value>" + op() + "</value>\n" +
29                indent(level) + "</boolean>\n");
30     }
31
32     String toCQL() {
33         // ### We don't always need parens around the operands
34         return "(" + left.toCQL() + ") " + op() + " (" + right.toCQL() + ")";
35     }
36 }