summaryrefslogtreecommitdiffstats
path: root/petascope/src/petascope/wps/server/WpsServer.java
diff options
context:
space:
mode:
Diffstat (limited to 'petascope/src/petascope/wps/server/WpsServer.java')
-rw-r--r--petascope/src/petascope/wps/server/WpsServer.java126
1 files changed, 126 insertions, 0 deletions
diff --git a/petascope/src/petascope/wps/server/WpsServer.java b/petascope/src/petascope/wps/server/WpsServer.java
new file mode 100644
index 0000000..ccfb8ca
--- /dev/null
+++ b/petascope/src/petascope/wps/server/WpsServer.java
@@ -0,0 +1,126 @@
+/*
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ * For more information please see <http://www.PetaScope.org>
+ * or contact Peter Baumann via <baumann@rasdaman.com>.
+ *
+ * Copyright 2009 Jacobs University Bremen, Peter Baumann.
+ */
+package petascope.wps.server;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
+import java.net.URI;
+import java.net.URISyntaxException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.antlr.runtime.RecognitionException;
+import org.apache.commons.io.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import petascope.wcps.server.core.ProcessCoveragesRequest;
+import petascope.wcs.server.exceptions.InputOutputException;
+
+/**
+ *
+ * @author Michael Owonibi
+ */
+public class WpsServer {
+
+ private static Logger LOG = LoggerFactory.getLogger(WpsServer.class);
+ public String request = null;
+
+ public WpsServer(HttpServletResponse httpResponse, HttpServletRequest httpRequest) throws URISyntaxException, IOException, InputOutputException, RecognitionException {
+
+ if ((httpRequest.getParameter("Request") != null) && httpRequest.getParameter("Request").equalsIgnoreCase("GetCapabilities")) {
+ GetCapabilities(httpResponse);
+ }
+
+ if ((((httpRequest.getParameter("version") != null) && httpRequest.getParameter("version").equalsIgnoreCase("1.0.0")) || ((httpRequest.getParameter("Version") != null) && httpRequest.getParameter("Version").equalsIgnoreCase("1.0.0")))) {
+
+ if ((httpRequest.getParameter("Request") != null) && httpRequest.getParameter("Request").equalsIgnoreCase("DescribeProcess") && (httpRequest.getParameter("identifier") != null) && httpRequest.getParameter("identifier").equalsIgnoreCase("ProcessCoverages")) {
+ DescribeProcess(httpResponse);
+ } else if ((httpRequest.getParameter("Request") != null) && httpRequest.getParameter("Request").equalsIgnoreCase("Execute") && (httpRequest.getParameter("identifier") != null) && httpRequest.getParameter("identifier").equalsIgnoreCase("ProcessCoverages")) {
+
+ String wpsRequest = httpRequest.getParameter("DataInputs");
+ wpsRequest = wpsRequest.substring(1, (wpsRequest.length() - 1));
+ int pos = -1;
+ pos = wpsRequest.indexOf("=");
+ if (wpsRequest.substring(0, pos).equalsIgnoreCase("WcpsAbstractSyntax")) {
+ wpsRequest = wpsRequest.substring(pos + 1, wpsRequest.length());
+
+ wpsRequest = ProcessCoveragesRequest.abstractQueryToXmlQuery(wpsRequest);
+ System.out.println("WPS request is :" + wpsRequest);
+ request = wpsRequest;
+ }
+ }
+ }
+ }
+
+ public void GetCapabilities(HttpServletResponse httpResponse) throws URISyntaxException, IOException, InputOutputException {
+ URI GetCapabilitiesURI = this.getClass().getResource("../templates/GetCapabilities.xml").toURI();
+ String GetCapabilitiesResponse = loadFile(GetCapabilitiesURI);
+ LOG.info("Executing operation GetCapabilities...");
+ System.out.println("GetCapabilities Response is " + GetCapabilitiesResponse);
+ PrintWriter out;
+ try {
+ out = httpResponse.getWriter();
+ httpResponse.setContentType("text/xml; charset=utf-8");
+ out.write(GetCapabilitiesResponse);
+ out.flush();
+ out.close();
+ } catch (IOException e) {
+ throw new InputOutputException(e.getMessage(), e);
+ }
+ }
+
+ public void DescribeProcess(HttpServletResponse httpResponse) throws URISyntaxException, IOException, InputOutputException {
+ URI DesribeProcessURI = this.getClass().getResource("../templates/DescribeProcess.xml").toURI();
+ String DescribeProcessResponse = loadFile(DesribeProcessURI);
+ LOG.info("Executing operation DescribeProcess...");
+ System.out.println("DescribeProcess Document is " + DescribeProcessResponse);
+ PrintWriter out;
+ try {
+ out = httpResponse.getWriter();
+ httpResponse.setContentType("text/xml; charset=utf-8");
+ out.write(DescribeProcessResponse);
+ out.flush();
+ out.close();
+ } catch (IOException e) {
+ throw new InputOutputException(e.getMessage(), e);
+ }
+ }
+
+ private String loadFile(URI fileUri) throws IOException {
+ InputStream is = null;
+ String contents = null;
+ try {
+ LOG.debug("Loading file: " + fileUri);
+ File f = new File(fileUri);
+ is = new FileInputStream(f);
+ contents = IOUtils.toString(is);
+ } finally {
+ try {
+ is.close();
+ } catch (IOException ex) {
+ }
+ }
+ return contents;
+ }
+}