Hide some memebers as private, add getters
[cql-java-moved-to-github.git] / src / main / java / org / z3950 / zing / cql / CQLSortNode.java
1 // $Id: CQLSortNode.java,v 1.2 2008-04-11 12:05:15 mike Exp $
2
3 package org.z3950.zing.cql;
4 import java.util.Properties;
5 import java.util.Vector;
6
7
8 /**
9  * Represents a sort node in a CQL parse-tree.
10  *
11  * @version     $Id: CQLSortNode.java,v 1.2 2008-04-11 12:05:15 mike Exp $
12  */
13 public class CQLSortNode extends CQLNode {
14     /**
15      * The root of a subtree representing the query whose result is to
16      * be sorted.
17      */ 
18     private CQLNode subtree;
19
20     /**
21      * The set of sort keys by which results are to be sorted,
22      * each expressed as an index together with zero or more
23      * modifiers.
24      */ 
25     Vector<ModifierSet> keys;
26
27     public CQLNode getSubtree() {
28         return subtree;
29     }
30
31     public CQLSortNode(CQLNode subtree) {
32         this.subtree = subtree;
33         keys = new Vector<ModifierSet>();
34     }
35
36     public void addSortIndex(ModifierSet key) {
37         keys.add(key);
38     }
39
40     public Vector<ModifierSet> getSortIndexes() {
41         return keys;
42     }
43
44     public String toXCQL(int level, Vector<CQLPrefix> prefixes,
45                          Vector<ModifierSet> sortkeys) {
46         if (sortkeys != null)
47             throw new Error("CQLSortNode.toXCQL() called with sortkeys");
48         return subtree.toXCQL(level, prefixes, keys);
49     }
50
51     public String toCQL() {
52         StringBuffer buf = new StringBuffer(subtree.toCQL());
53
54         if (keys != null) {
55             buf.append(" sortby");
56             for (int i = 0; i < keys.size(); i++) {
57                 ModifierSet key = keys.get(i);
58                 buf.append(" " + key.toCQL());
59             }
60         }
61
62         return buf.toString();
63     }
64
65     public String toPQF(Properties config) throws PQFTranslationException {
66         return "@attr 1=oops \"###\"";
67     }
68
69     public byte[] toType1BER(Properties config)
70         throws PQFTranslationException {
71         // There is no way to represent sorting in a standard Z39.50
72         // Type-1 query, so the best we can do is return the
73         // underlying query and ignore the sort-specification.
74         return subtree.toType1BER(config);
75     }
76 }