summaryrefslogtreecommitdiffstats
path: root/petascope/src/petascope/wcs/server/cli/CLI.java
diff options
context:
space:
mode:
Diffstat (limited to 'petascope/src/petascope/wcs/server/cli/CLI.java')
-rw-r--r--petascope/src/petascope/wcs/server/cli/CLI.java179
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 !");
+ */
+ }
+}