X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=src%2Forg%2Fz3950%2Fzing%2Fcql%2FCQLGenerator.java;h=7cde23e845caa0fbaba4640668a9adcd23557f56;hb=af923f9b50aecdbf896af612e733817f96c4388a;hp=991f60dbc535636273af256a8692d4f9bb6f6ef5;hpb=08b7f3f08d97b9efdd5a3aef7992a359b71910d6;p=cql-java-moved-to-github.git diff --git a/src/org/z3950/zing/cql/CQLGenerator.java b/src/org/z3950/zing/cql/CQLGenerator.java index 991f60d..7cde23e 100644 --- a/src/org/z3950/zing/cql/CQLGenerator.java +++ b/src/org/z3950/zing/cql/CQLGenerator.java @@ -1,4 +1,4 @@ -// $Id: CQLGenerator.java,v 1.3 2002-11-03 16:49:38 mike Exp $ +// $Id: CQLGenerator.java,v 1.7 2007-06-27 22:39:55 mike Exp $ package org.z3950.zing.cql; import java.util.Properties; @@ -18,11 +18,11 @@ import java.io.FileNotFoundException; * the parser of your choice, and check that the XCQL it comes up with * is the same what you got from your initial rendering. *

- * This code is based on the grammar in the Grammar file of + * This code is based on the same grammar as the CQLParser class in * this distribution - there is a generate_x() method * for each grammar element X. * - * @version $Id: CQLGenerator.java,v 1.3 2002-11-03 16:49:38 mike Exp $ + * @version $Id: CQLGenerator.java,v 1.7 2007-06-27 22:39:55 mike Exp $ * @see http://zing.z3950.org/cql/index.html */ @@ -64,7 +64,7 @@ public class CQLGenerator { * [mandatory] A floating-point number between 0.0 and 1.0, * indicating the probability for each search-clause * node that it will be expanded into a full sub-query rather - * than a [ qualifier relation ] term triplet. + * than an [ index relation ] term triplet. *

* *

proxOp
@@ -125,17 +125,18 @@ public class CQLGenerator { * method, or decompiled into CQL using its toCQL * method. */ - public CQLNode generate() throws ParameterMissingException { + public CQLNode generate() throws MissingParameterException { return generate_cql_query(); } - private CQLNode generate_cql_query() throws ParameterMissingException { + private CQLNode generate_cql_query() throws MissingParameterException { if (!maybe("complexQuery")) { return generate_search_clause(); } CQLNode node1 = generate_cql_query(); CQLNode node2 = generate_search_clause(); + // ### should generate prefix-mapping nodes if (maybe("proxOp")) { // ### generate proximity nodes } else { @@ -149,48 +150,48 @@ public class CQLGenerator { return generate_search_clause(); } - private CQLNode generate_search_clause() throws ParameterMissingException { + private CQLNode generate_search_clause() throws MissingParameterException { if (maybe("complexClause")) { return generate_cql_query(); } - // ### Should sometimes generate qualifier/relation-free terms - String qualifier = generate_qualifier(); + // ### Should sometimes generate index/relation-free terms + String index = generate_index(); CQLRelation relation = generate_relation(); String term = generate_term(); - return new CQLTermNode(qualifier, relation, term); + return new CQLTermNode(index, relation, term); } // ### Should probably be more configurable - private String generate_qualifier() { - String qualifier = ""; // shut up compiler warning + private String generate_index() { + String index = ""; // shut up compiler warning if (rnd.nextInt(2) == 0) { switch (rnd.nextInt(3)) { - case 0: qualifier = "dc.author"; break; - case 1: qualifier = "dc.title"; break; - case 2: qualifier = "dc.subject"; break; + case 0: index = "dc.author"; break; + case 1: index = "dc.title"; break; + case 2: index = "dc.subject"; break; } } else { switch (rnd.nextInt(4)) { - case 0: qualifier = "bath.author"; break; - case 1: qualifier = "bath.title"; break; - case 2: qualifier = "bath.subject"; break; - case 3: qualifier = "foo>bar"; break; + case 0: index = "bath.author"; break; + case 1: index = "bath.title"; break; + case 2: index = "bath.subject"; break; + case 3: index = "foo>bar"; break; } } - return qualifier; + return index; } - private CQLRelation generate_relation() throws ParameterMissingException { + private CQLRelation generate_relation() throws MissingParameterException { String base = generate_base_relation(); CQLRelation rel = new CQLRelation(base); // ### should generate modifiers too return rel; } - private String generate_base_relation() throws ParameterMissingException { + private String generate_base_relation() throws MissingParameterException { if (maybe("equalsRelation")) { return "="; } else if (maybe("numericRelation")) { @@ -242,10 +243,10 @@ public class CQLGenerator { return ""; // shut up compiler warning } - boolean maybe(String param) throws ParameterMissingException { + boolean maybe(String param) throws MissingParameterException { String probability = params.getProperty(param); if (probability == null) - throw new ParameterMissingException(param); + throw new MissingParameterException(param); double dice = rnd.nextDouble(); double threshhold = new Double(probability).doubleValue(); @@ -301,8 +302,7 @@ public class CQLGenerator { String configFile = args[0]; InputStream f = new FileInputStream(configFile); if (f == null) - throw new FileNotFoundException("getResourceAsStream(" + - configFile + ")"); + throw new FileNotFoundException(configFile); Properties params = new Properties(); params.load(f);