X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Forg%2Fz3950%2Fzing%2Fcql%2FCQLNode.java;h=4eb80234cddd7dde7dbb0a12ff3b91e6517a94d9;hb=08b7f3f08d97b9efdd5a3aef7992a359b71910d6;hp=326743255bd9e61ce54e86526015d7067eddf6b9;hpb=70be8275aabe87c909bf11148bb279c3e1380bb2;p=cql-java-moved-to-github.git diff --git a/src/org/z3950/zing/cql/CQLNode.java b/src/org/z3950/zing/cql/CQLNode.java index 3267432..4eb8023 100644 --- a/src/org/z3950/zing/cql/CQLNode.java +++ b/src/org/z3950/zing/cql/CQLNode.java @@ -1,61 +1,30 @@ -// $Id: CQLNode.java,v 1.7 2002-10-30 09:19:26 mike Exp $ +// $Id: CQLNode.java,v 1.9 2002-10-31 22:22:01 mike Exp $ package org.z3950.zing.cql; /** * Represents a node in a CQL parse-tree. - * ### + * ## * - * @version $Id: CQLNode.java,v 1.7 2002-10-30 09:19:26 mike Exp $ + * @version $Id: CQLNode.java,v 1.9 2002-10-31 22:22:01 mike Exp $ */ public abstract class CQLNode { abstract String toXCQL(int level); abstract String toCQL(); - protected String indent(int level) { - String x = ""; - while (level-- > 0) { - x += " "; - } - return x; - } - - // XML Quote -- - // s/&/&/g; - // s//>/g; - // This is hideously inefficient, but I just don't see a better - // way using the standard JAVA library. - // - protected String xq(String str) { - str = replace(str, "&", "&"); - str = replace(str, "<", "<"); - str = replace(str, ">", ">"); - return str; - } - - // I can't _believe_ I have to write this by hand in 2002 ... - protected static String replace(String str, String from, String to) { - StringBuffer sb = new StringBuffer(); - int ix; // index of next `from' - int offset = 0; // index of previous `from' + length(from) - - while ((ix = str.indexOf(from, offset)) != -1) { - sb.append(str.substring(offset, ix)); - sb.append(to); - offset = ix + from.length(); - } - - // End of string: append last bit and we're done - sb.append(str.substring(offset)); - return sb.toString(); - } + // Utility-function abbreviations for the use of subclasses + protected static String indent(int level) { return Utils.indent(level); } + protected static String xq(String str) { return Utils.xq(str); } // Test harness public static void main (String[] args) { - CQLNode n1 = new CQLTermNode("dc.author", "=", "kernighan"); - CQLNode n2 = new CQLTermNode("dc.title", "all", "elements style"); + CQLNode n1 = new CQLTermNode("dc.author", + new CQLRelation("="), + "kernighan"); + CQLNode n2 = new CQLTermNode("dc.title", + new CQLRelation("all"), + "elements style"); CQLNode root = new CQLAndNode(n1, n2); System.out.println(root.toXCQL(0)); }