Index: src/org/ecoinformatics/seek/datasource/darwincore/DarwinCoreDataSource.java
===================================================================
RCS file: /cvs/kepler/src/org/ecoinformatics/seek/datasource/darwincore/DarwinCoreDataSource.java,v
retrieving revision 1.16
diff -u -r1.16 DarwinCoreDataSource.java
--- src/org/ecoinformatics/seek/datasource/darwincore/DarwinCoreDataSource.java 17 Nov 2004 20:29:21 -0000 1.16
+++ src/org/ecoinformatics/seek/datasource/darwincore/DarwinCoreDataSource.java 9 Dec 2004 21:05:44 -0000
@@ -1191,20 +1191,20 @@
for (Enumeration e = table.getFields().elements(); e.hasMoreElements();)
{
DSTableFieldIFace field = (DSTableFieldIFace)e.nextElement();
- queryBuf.append(" /" + field.getName() + "");
+ queryBuf.append(" /" + field.getName() + "");
}
} else
{
- queryBuf.append(" /Species");
- queryBuf.append(" /ScientificName");
- queryBuf.append(" /Collector");
- queryBuf.append(" /YearCollected");
- queryBuf.append(" /InstitutionCode");
- queryBuf.append(" /CollectionCode");
- queryBuf.append(" /CatalogNumber");
- queryBuf.append(" /CatalogNumberText");
- queryBuf.append(" /DecimalLatitude");
- queryBuf.append(" /DecimalLongitude");
+ queryBuf.append(" /Species");
+ queryBuf.append(" /ScientificName");
+ queryBuf.append(" /Collector");
+ queryBuf.append(" /YearCollected");
+ queryBuf.append(" /InstitutionCode");
+ queryBuf.append(" /CollectionCode");
+ queryBuf.append(" /CatalogNumber");
+ queryBuf.append(" /CatalogNumberText");
+ queryBuf.append(" /DecimalLatitude");
+ queryBuf.append(" /DecimalLongitude");
}
queryBuf.append(" " + searchStr +"");
queryBuf.append("");
@@ -1221,6 +1221,7 @@
inx = providerStr.lastIndexOf('=');
String resource = providerStr.substring(inx+1, providerStr.length()).replaceAll("%20", " ");
//System.out.println(queryBuf.toString());
+
StringReader strReader = new StringReader(queryBuf.toString());
EcogridQueryParser parser = new EcogridQueryParser(strReader);
parser.parseXML();
Index: src/org/ecoinformatics/seek/ecogrid/SearchQueryGenerator.java
===================================================================
RCS file: /cvs/kepler/src/org/ecoinformatics/seek/ecogrid/SearchQueryGenerator.java,v
retrieving revision 1.6
diff -u -r1.6 SearchQueryGenerator.java
--- src/org/ecoinformatics/seek/ecogrid/SearchQueryGenerator.java 11 Oct 2004 23:46:12 -0000 1.6
+++ src/org/ecoinformatics/seek/ecogrid/SearchQueryGenerator.java 9 Dec 2004 21:05:44 -0000
@@ -33,24 +33,15 @@
package org.ecoinformatics.seek.ecogrid;
import java.util.Hashtable;
-import java.util.Vector;
import javax.xml.transform.TransformerException;
import org.apache.axis.types.URI;
-import org.apache.xpath.XPathAPI;
-import org.ecoinformatics.ecogrid.ANDType;
-import org.ecoinformatics.ecogrid.ConditionType;
-import org.ecoinformatics.ecogrid.LimitedXPathExpression;
-import org.ecoinformatics.ecogrid.ORType;
-import org.ecoinformatics.ecogrid.OperatorType;
+import org.ecoinformatics.ecogrid.EcogridQueryParser;
import org.ecoinformatics.ecogrid.QueryType;
-import org.ecoinformatics.ecogrid.QueryType_namespace;
import org.ecoinformatics.seek.ecogrid.exception.InvalidEcogridQueryException;
import org.ecoinformatics.util.Config;
import org.ecoinformatics.util.DebugPrinter;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -63,24 +54,13 @@
public class SearchQueryGenerator
{
- private String queryId = null;
- private Hashtable replacementMap = null;
- private QueryType query = new QueryType();
- private DebugPrinter dbg = DebugPrinter.getInstance();
- private Vector returnFieldList = new Vector();
+ private String _queryId = null;
+ private Hashtable _replacementMap = null;
+ private QueryType _query = new QueryType();
+ private DebugPrinter _dbg = DebugPrinter.getInstance();
private final static String QUERYPATH = "//ecogridService/queryList/query[@queryId='";
- private final static String NAMESPACE = "namespace";
- private final static String RETURNFIELD = "returnField";
- private final static String TITLE = "title";
- private final static String AND = "AND";
- private final static String OR = "OR";
private final static String CONDITION = "condition";
- private final static String SYSTEM = "system";
- private final static String OPERATOR = "operator";
- private final static String CONCEPT = "concept";
- private static final int NAMESPACEARRAYLENGTH = 1;
- private static final int TITLEEARRAYLENGTH = 1;
/**
* Constructor of SearchQueryGenerator
@@ -91,12 +71,13 @@
* For example, if key is "#value#", and value is "soil". This means any
* element and attribute in xml has value "#value#" will be replaced by soil
*/
- public SearchQueryGenerator(String queryId, Hashtable replacementMap)
+ public SearchQueryGenerator(String queryId,
+ Hashtable replacementMap)
throws InvalidEcogridQueryException
{
- this.queryId = queryId;
- this.replacementMap = replacementMap;
+ _queryId = queryId;
+ _replacementMap = replacementMap;
try
{
generateQuery();
@@ -113,9 +94,48 @@
*/
public QueryType getQuery()
{
- return this.query;
+ return _query;
}//getQuery
+ /**
+ * Recursively walks the tree looking for Condition values inorder to subsitute in the search value
+ * @param aNode the parent node
+ * @param aIsChildCond indicates whether the current parent node is a Condition node
+ */
+ private void mapInValue(Node aNode, boolean aIsChildCond)
+ {
+ NodeList childList = aNode.getChildNodes();
+ if ( childList == null)
+ {
+ return;
+ }
+
+ // go through every child element
+ int length = childList.getLength();
+ for (int i=0; i