diff options
Diffstat (limited to 'petascope/src/petascope/wcs/server/cli/CLI.java')
-rw-r--r-- | petascope/src/petascope/wcs/server/cli/CLI.java | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/petascope/src/petascope/wcs/server/cli/CLI.java b/petascope/src/petascope/wcs/server/cli/CLI.java new file mode 100644 index 0000000..e6312d5 --- /dev/null +++ b/petascope/src/petascope/wcs/server/cli/CLI.java @@ -0,0 +1,179 @@ +package petascope.wcs.server.cli; + +import petascope.wcs.server.core.executeGetCapabilities; +import petascope.wcs.server.exceptions.WCSException; +import petascope.wcs.server.core.convertGetCoverage; +import petascope.wcs.server.core.executeDescribeCoverage; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Properties; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Unmarshaller; +import net.opengis.ows.v_1_0_0.ExceptionReport; +import net.opengis.wcs.v_1_1_0.Capabilities; +import net.opengis.wcs.v_1_1_0.CoverageDescriptions; +import net.opengis.wcs.v_1_1_0.DescribeCoverage; +import net.opengis.wcs.v_1_1_0.GetCapabilities; +import net.opengis.wcs.v_1_1_0.GetCoverage; +//import wcs.server.core.ProcessCoverage; + +/** + * Command Line Interface class, for testing the WCS Server operation + * Converts an WCS XML input file into a WCPS XML input file.<br /> + * Settings are read from the file "input-output.txt", in the current folder. + * + * @author Andrei Aiordachioaie + */ +public class CLI { + + private static final String settingsFile = "input-output.txt"; + private static String inputFile; + private static String outputFile; + private static String metadataSettingsFile; + private static Boolean ok; + private static Boolean printOutput; + private static Boolean printLog = true; + + public static void log(String msg) { + if (printLog) { + System.out.println(msg); + } + } + + public static boolean init() { + ok = true; + printOutput = true; + + Properties set = new Properties(); + try { + set.load(new FileInputStream(settingsFile)); + } catch (IOException ex) { + ex.printStackTrace(); + ok = false; + } + + inputFile = set.getProperty("inputFile"); + outputFile = set.getProperty("outputFile"); + metadataSettingsFile = set.getProperty("metadataSettingsFile"); + printOutput = Boolean.parseBoolean(set.getProperty("printOutputFile")); + printLog = Boolean.parseBoolean(set.getProperty("printLogMessages")); + + return ok; + } + + /** + * Converts a WCS XML input file into a WCPS XML input file + * @param args the command line arguments + */ + public static void main(String[] args) { + if (!init()) { + return; + } + /* + try + { + // read the input XML + log(">>> Reading the input XML file ... "); + JAXBContext context = JAXBContext.newInstance("net.opengis.wcs.v_1_1_0"); + Unmarshaller unmarshaller = context.createUnmarshaller() ; + Object xml = unmarshaller.unmarshal(new FileInputStream(inputFile)); + // Find out which class to execute ... + log(">>> It is a " + xml.getClass().getSimpleName() + " request."); + if (xml instanceof GetCoverage) + { + //Convert the WCS into WCPS + log(">>> Converting to WCPS ... please wait"); + GetCoverage wcs = (GetCoverage) xml; + ProcessCoverage wcps = new convertGetCoverage(wcs, metadataSettingsFile).get(); + // Write the output WCPS request + try { + log(">>> Writing the WCPS XML request"); + javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(wcps.getClass().getPackage().getName()); + javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller(); + marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N + marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + if (printOutput) + marshaller.marshal(wcps, System.out); + marshaller.marshal(wcps, new FileOutputStream(outputFile)); + } catch (javax.xml.bind.JAXBException ex) { + // XXXTODO Handle exception + java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N + ex.printStackTrace(); + } + } + else + if (xml instanceof GetCapabilities) + { + log(">>> Compiling data into XML format for GetCapabilities ... "); + GetCapabilities input = (GetCapabilities) xml; + Capabilities cap = new executeGetCapabilities(input, metadataSettingsFile).get(); + // Write the output file (WCS) + try { + javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cap.getClass().getPackage().getName()); + javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller(); + marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N + marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + if (printOutput) + marshaller.marshal(cap, System.out); + marshaller.marshal(cap, new FileOutputStream(outputFile)); + + } catch (javax.xml.bind.JAXBException ex) { + // XXXTODO Handle exception + java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N + ex.printStackTrace(); + } + } + else + if (xml instanceof DescribeCoverage) + { + log(">>> Querying the WCPS architecture for the details on this coverage ..."); + DescribeCoverage input = (DescribeCoverage) xml; + CoverageDescriptions output = new executeDescribeCoverage(input, metadataSettingsFile).get(); + // Write the output file (WCS) + try { + javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(output.getClass().getPackage().getName()); + javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller(); + marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N + marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + if (printOutput) + marshaller.marshal(output, System.out); + marshaller.marshal(output, new FileOutputStream(outputFile)); + } catch (javax.xml.bind.JAXBException ex) { + // XXXTODO Handle exception + java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N + ex.printStackTrace(); + } + } + else + throw new Exception("ERROR ! Unrecognized request type " + xml.getClass().getSimpleName()); + } + catch (WCSException e) + { + ExceptionReport report = e.getReport(); + try { + javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(report.getClass().getPackage().getName()); + javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller(); + marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N + marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + if (printOutput) + marshaller.marshal(report, System.err); + marshaller.marshal(report, new FileOutputStream(outputFile)); + } catch (javax.xml.bind.JAXBException ex) { + // XXXTODO Handle exception + java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N + ex.printStackTrace(); + } + catch (Exception e2) + { + e2.printStackTrace(); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + log(">>> Done !"); + */ + } +} |