/** * '$RCSfile: TestQueryAndResults.java,v $' * Copyright: 2004 Regents of the University of California and the * National Center for Ecological Analysis and Synthesis * Purpose: To test the MetaCatURL class by JUnit * Authors: @Rod SPears@ * Release: @release@ * * '$Author: rspears $' * '$Date: 2004-07-26 22:43:45 $' * '$Revision: 1.5 $' * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ //package org.ecoinformatics.ecogrid.ecogridtest; import edu.ucsb.nceas.metacat.*; import junit.framework.TestCase; import java.io.*; import java.util.*; import org.ecoinformatics.ecogrid.metacat.impl.EcogridJavaToMetacatJavaQueryTransformer; //import org.ecoinformatics.ecogrid.metacat.impl.MetacatJavaToEcogridJavaResultsetTransformer; import org.ecoinformatics.ecogrid.metacat.impl.MetacatResultsetParser; import org.ecoinformatics.ecogrid.EcogridResultsetTransformer; import org.ecoinformatics.ecogrid.digir.impl.EcogridJavaToDigirJavaQueryTransformer; import org.ecoinformatics.ecogrid.digir.impl.DigirJavaToEcogridJavaResultsetTransformer; //import org.ecoinformatics.ecogrid.srb.impl.SeekXMLQueryDocSRBParser; //import org.ecoinformatics.ecogrid.srb.impl.SRB2ResultsetType; //import org.ecoinformatics.ecogrid.srb.impl.SrbEcogridQuery; import org.ecoinformatics.ecogrid.QueryType; import org.ecoinformatics.ecogrid.ResultsetType; import org.ecoinformatics.ecogrid.EcogridUtils; import org.w3c.dom.Document; import org.w3c.dom.Node; /** * A JUnit test for testing Query and Resultset Transforms */ public class TestQueryAndResults extends TestCase { private boolean _doTests = true;//@DO.QUERYRESULTS.TESTS@; //MetaCatUtil.setSkipDBAdapterSetup(true); /** * Reads a ecogrid query, transforms it into a metacat query * @param aFileName Name of XML file containing EcoGrid Query */ public boolean checkMetacatQuery(String aFileName) { try { QueryType query = EcogridUtils.readEcogridXMLQuery(aFileName); EcogridJavaToMetacatJavaQueryTransformer ecogrid2MetacatTransformer = new EcogridJavaToMetacatJavaQueryTransformer(); QuerySpecification querySpec = ecogrid2MetacatTransformer.transform(query); System.out.println("\nMetacat------------------------------------------"); System.out.println(querySpec.toString()); System.out.println("-------------------------------------------------"); System.out.println(querySpec.printSQL(true)); System.out.println("-------------------------------------------------"); // Need to create a DOM tree from the QuerySpecification and // compare that to a DOM tree to verify correctness // // do that } catch (Exception e) { System.out.println(e); return false; } return true; } /** * Reads a Metacat resultset, transforms it into a ecogrid resultset * @param aFileName Name of XML file containing Metacat Resultset */ public boolean checkMetacatResultset(String aFileName, String aVerifyFileName) { try { // here we need to read in or construct a hashtable representing // a metacat resultset. Hashtable metacatResultset = null; // ; String metacatResultsetStr = EcogridUtils.readXMLFile2Str(aFileName); System.out.println("\nMetacat's (native) resultset "+aFileName+" --------------------------------"); System.out.println(metacatResultsetStr); System.out.println("-------------------------------------------------"); String saxparser = "org.apache.xerces.parsers.SAXParser"; MetacatResultsetParser parser = new MetacatResultsetParser( new StringReader(metacatResultsetStr), saxparser); ResultsetType resultset = null; try { resultset = parser.getEcogridResult(); } catch (Exception e) { e.printStackTrace(); } if (resultset != null) { System.out.println("\nMetacat's EcoGrid resultset--------------------------------------------"); System.out.println(EcogridResultsetTransformer.toXMLString(resultset)); System.out.println("-------------------------------------------------"); } else { return false; } // The resultset should be turned into a DOM and compared to some // XML file to verify that it is correct. // Create resultset DOM String xmlString = "\n"; xmlString += EcogridResultsetTransformer.toXMLString(resultset); Document dom1 = EcogridUtils.convertXMLStr2DOM(xmlString); // Fix this //Document dom2 = EcogridUtils.readXMLFile2DOM(aVerifyFileName); //return EcogridUtils.compareDOMs(dom1, dom2, 0); } catch (Exception e) { System.out.println(e); e.printStackTrace(); return false; } return true; } /** * Reads a ecogrid query, transforms it into a SRB query * @param aFileName Name of XML file containing SRB query */ /*public boolean checkSRBQuery(String aFileName) { try { QueryType query = EcogridUtils.readEcogridXMLQuery(aFileName); SeekXMLQueryDocSRBParser ecogrid2SRBTransformer = new SeekXMLQueryDocSRBParser(); SrbEcogridQuery srbQuery = ecogrid2SRBTransformer.ParseQueryType(query); //System.out.println("\nSRB------------------------------------------"); //System.out.println(srbQuery.toString()); //System.out.println("-------------------------------------------------"); // Need to create a DOM tree from the SrbEcogridQuery and // compare that to a DOM tree to verify correctness // // do that } catch (Exception e) { System.out.println(e); return false; } return true; }*/ /** * Reads a SRB resultset, transforms it into a ecogrid resultset * @param aFileName Name of XML file containing SRB resultset */ /*public boolean checkSRBResultset(String aFileName, String aVerifyFileName) { try { // here we need to read in or construct a hashtable representing // a SRB resultset. String[] srbResultset = null; // ; SRB2ResultsetType srb2EcogridTransformer = new SRB2ResultsetType(); ResultsetType resultset = srb2EcogridTransformer.transform(srbResultset); if (resultset != null) { System.out.println("\nSRB's EcoGrid resultset--------------------------------------------"); System.out.println(EcogridResultsetTransformer.toXMLString(resultset)); System.out.println("-------------------------------------------------"); } else { return false; } // The resultset should be turned into a DOM and compared to some // XML file to verify that it is correct. // Create resultset DOM String xmlString = "\n"; xmlString += EcogridResultsetTransformer.toXMLString(resultset);; Document dom1 = EcogridUtils.convertXMLStr2DOM(xmlString); // Fix this //Document dom2 = EcogridUtils.readXMLFile2DOM(aVerifyFileName); //return EcogridUtils.compareDOMs(dom1, dom2, 0); } catch (Exception e) { System.out.println(e); return false; } return true; }*/ /** * Reads a ecogrid query, transforms it into a digir query, then * comapres it to a known vaild query to make sure it is the same * @param aFileName Name of XML file containing EcoGrid Query * @param aVerifyFileName Name of XML file containing Digir Query */ public boolean checkDigirQuery(String aFileName, String aVerifyFileName) { try { // Read in Ecogrid Query and transform it to a Digir Query QueryType query = EcogridUtils.readEcogridXMLQuery(aFileName); EcogridJavaToDigirJavaQueryTransformer ecogrid2DigirTransformer = new EcogridJavaToDigirJavaQueryTransformer(); String digirQuery = ecogrid2DigirTransformer.transform(query); System.out.println("\nDigir --------------------------------------------"); System.out.println(digirQuery); System.out.println("--------------------------------------------"); String tmpFileName = "testfiles/query-digir-tmp.xml"; File fin = new File(tmpFileName); FileWriter out = new FileWriter(fin); out.write(digirQuery, 0, digirQuery.length()); out.close(); return EcogridUtils.compareDOMs(aVerifyFileName, tmpFileName); } catch (Exception e) { System.out.println(e); } return false; } /** * Reads a digir resultset, transforms it into a ecogrid resultset, then * comapres it to a known vaild resultset to make sure it is the same * @param aFileName Name of XML file containing EcoGrid Query * @param aVerifyFileName Name of XML file containing Digir Query */ public boolean checkDigirResultset(String aInputFileName, String aVerifyFileName) { try { // Read in Ecogrid Query and transform it to a Digir Query String digirResultsetString = EcogridUtils.readXMLFile2Str(aInputFileName); //System.out.println("\nDigir Resultset --------------------------------------------"); //System.out.println(digirResultsetString); //System.out.println("-------------------------------------------------"); DigirJavaToEcogridJavaResultsetTransformer ecogrid2ResultTransformer = new DigirJavaToEcogridJavaResultsetTransformer(); ResultsetType resultset = ecogrid2ResultTransformer.transform(digirResultsetString); if (resultset != null) { System.out.println("\nDigir's EcoGrid resultset--------------------------------------------"); System.out.println(EcogridResultsetTransformer.toXMLString(resultset)); System.out.println("-------------------------------------------------"); } else { return false; } String tmpFileName = "testfiles/resultset-digir-tmp.xml"; String xmlString = "\n"; xmlString += EcogridResultsetTransformer.toXMLString(resultset);; Document dom1 = EcogridUtils.convertXMLStr2DOM(xmlString); Document dom2 = EcogridUtils.readXMLFile2DOM(aVerifyFileName); return EcogridUtils.compareDOMs(dom1, dom2, 0, false); } catch (Exception e) { System.out.println("***** checkDigirResultset: " + e); } return false; } /** Tests the Metacat Query Parser */ public void testEcogridMetacatParser() { if (_doTests) assertTrue(checkMetacatQuery("testfiles/query-test.xml")); } /** Checks to make sure the Metacat Query Parser fails */ /*public void testEcogridMetacatParserError() { if (_doTests) assertFalse(checkMetacatQuery("testfiles/query-test-err.xml")); }*/ /** Checks to make sure the Metacat Resultset Transform works */ /*public void testEcogridMetacatResultParser() { if (_doTests) assertTrue(checkMetacatResultset("testfiles/metacatresultset-test.xml", "")); }*/ /** Tests the Digir Query Parser */ public void testEcogridDigirQueryParser() { if (_doTests) assertTrue(checkDigirQuery("testfiles/query-digir.xml", "testfiles/digir-query-verify.xml")); } /** Test to make sure the Digir Resultset transforms correctly*/ public void testEcogridDigirResultParser() { if (_doTests) assertTrue(checkDigirResultset("testfiles/digir-resultset.xml", "testfiles/resultset-digir-v2-verify.xml")); } }