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