/* * This file is part of PetaScope. * * PetaScope is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * PetaScope 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with PetaScope. If not, see . * * For more information please see * or contact Peter Baumann via . * * Copyright 2009 Jacobs University Bremen, Peter Baumann. */ package wcps.server.cli; import wcps.server.core.CachedMetadataSource; import wcps.server.core.DbMetadataSource; import wcps.server.core.ProcessCoveragesRequest; import wcps.server.core.WCPS; import java.io.File; import java.io.FileInputStream; import java.util.Properties; /** * This is a small application around the WCPS core. It takes XML requests as files and runs them * through WCPS. The resulting radaman queries are displayed, but not executed. This is very useful * for testing whether your metadata is valid. */ public class xml { private static WCPS wcps; public static void main(String[] args) { if (args.length < 1) { System.err.println("WCPS CLI: no input files"); System.err.println("\nWCPS CLI Usage: java wcps.server.cli.xml input.xml"); System.err.println("Where input.xml contains a ProcessCoverages Request "); System.exit(1); args = new String[1]; args[0] = "old_testing/testcases/1.test.xml"; } if (args.length > 1) { System.err.println("WCPS: no input files"); System.exit(1); } String pcSchemaFileName = "xml" + File.separator + "ogc" + File.separator + "wcps" + File.separator + "1.0.0" + File.separator + "wcpsProcessCoverages.xsd"; File pcSchemaFile = new File(pcSchemaFileName); if (!pcSchemaFile.exists()) { System.err.println("WCPS: could not find the WCPS ProcessCoverage schema (" + pcSchemaFileName + ")"); System.exit(1); } DbMetadataSource metadataSource = null; try { Properties dbParams = new Properties(); dbParams.load(new FileInputStream("dbparams.properties")); metadataSource = new DbMetadataSource(dbParams.getProperty("metadata_driver"), dbParams.getProperty("metadata_url"), dbParams.getProperty("metadata_user"), dbParams.getProperty("metadata_pass"), false); wcps = new WCPS(pcSchemaFile, new CachedMetadataSource(metadataSource)); } catch (Exception e) { System.err.println("WCPS: could not initialize WCPS:"); e.printStackTrace(System.err); System.exit(1); } for (int i = 0; i < args.length; i++) { File fileIn = null; try { fileIn = new File(args[i]); } catch (Exception fnfe) { System.err.println("WCPS: " + args[i] + ": no such file or directory" + fnfe); System.exit(1); } boolean ok = processCoverage(fileIn, i); if (!ok) { System.err.println("WCPS: " + args[i] + " failed"); System.exit(1); } } metadataSource.close(); System.exit(0); } private static boolean processCoverage(File in, int i) { try { ProcessCoveragesRequest r = wcps.pcPrepare("http://kahlua.eecs.jacobs-university.de:7001", "RASSERVICE", in); System.err.println("Request " + i); System.out.println(r.getRasqlQuery()); /* Iterator results = r.execute().iterator(); int j = 0; while( results.hasNext() ) { String outFileName = "WCPS-" + i + "-" + j++; FileOutputStream out = new FileOutputStream( outFileName ); out.write( results.next() ); out.close(); System.out.println( "WCPS: " + outFileName + " written" ); }*/ } catch (Exception e) { System.err.println("WCPS: request " + i + " failed with the following exception:"); e.printStackTrace(System.err); } return true; } }