Add the support of complex data for a specific WPS

Project: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/commit/e7cb22cc
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/tree/e7cb22cc
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/diff/e7cb22cc

Branch: refs/heads/taverna2
Commit: e7cb22cc128a60a37041194144481d70b17aa190
Parents: acda22a
Author: edikaradumi <[email protected]>
Authored: Wed Jul 20 23:46:26 2016 +0100
Committer: edikaradumi <[email protected]>
Committed: Wed Jul 20 23:46:26 2016 +0100

----------------------------------------------------------------------
 .../ui/serviceprovider/GisServiceProvider.java  | 41 +++++++----------
 .../org/apache/taverna/gis/GisActivity.java     | 47 +++++++++++++++++++-
 2 files changed, 62 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/e7cb22cc/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java
----------------------------------------------------------------------
diff --git 
a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java
 
b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java
index a241b00..24e8604 100644
--- 
a/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java
+++ 
b/apache-taverna-plugin-gis-activity-ui/src/main/java/org/apache/taverna/gis/ui/serviceprovider/GisServiceProvider.java
@@ -1,6 +1,5 @@
 package org.apache.taverna.gis.ui.serviceprovider;
 
-import java.io.IOException;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -8,15 +7,12 @@ import java.util.List;
 
 import javax.swing.Icon;
 
-import org.n52.wps.client.WPSClientSession;
+import org.apache.taverna.gis.client.*;
+import org.apache.taverna.gis.client.impl.TypeDescriptor;
 
-import net.opengis.wps.x100.InputDescriptionType;
-import net.opengis.wps.x100.OutputDescriptionType;
-import net.opengis.wps.x100.ProcessDescriptionType;
 import 
net.sf.taverna.t2.servicedescriptions.AbstractConfigurableServiceProvider;
 import net.sf.taverna.t2.servicedescriptions.ConfigurableServiceProvider;
 import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider;
 import 
net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean;
 import 
net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean;
 
@@ -51,28 +47,23 @@ public class GisServiceProvider extends 
AbstractConfigurableServiceProvider<GisS
                // TODO: Optional: set description (Set a better description
                
service.setDescription(getConfiguration().getProcessIdentifier());
 
-               // TODO: Exctract in a separate method 
                // Get input ports
                
-               WPSClientSession wpsClient = WPSClientSession.getInstance();
-
-        ProcessDescriptionType processDescription;
+               IGisClient gisServiceClient = 
GisClientFactory.getInstance().getGisClient(getConfiguration().getOgcServiceUri().toASCIIString());
+                
                try {
-                       processDescription = wpsClient
-                               
.getProcessDescription(getConfiguration().getOgcServiceUri().toString(), 
getConfiguration().getProcessIdentifier());
-               
-                       InputDescriptionType[] inputList = 
processDescription.getDataInputs()
-                       .getInputArray();
+                       
+                       List<TypeDescriptor> inputList = 
gisServiceClient.getTaverna2InputPorts(getConfiguration().getProcessIdentifier());
 
                List<ActivityInputPortDefinitionBean> inputPortDefinitions = 
new ArrayList<ActivityInputPortDefinitionBean>();
 
-               for (InputDescriptionType input : inputList) {
+               for (TypeDescriptor input : inputList) {
                        ActivityInputPortDefinitionBean newInputPort = new 
ActivityInputPortDefinitionBean();
-                       
newInputPort.setName(input.getIdentifier().getStringValue());
-                       newInputPort.setDepth(0);
-                       newInputPort.setAllowsLiteralValues(true);
+                       newInputPort.setName(input.getName());
+                       newInputPort.setDepth(input.getDepth());
+                       
newInputPort.setAllowsLiteralValues(input.isAllowLiteralValues());
                        newInputPort.setHandledReferenceSchemes(null);
-                       newInputPort.setTranslatedElementType(String.class);
+                       
newInputPort.setTranslatedElementType(input.getTranslatedElementType());
                        
                        inputPortDefinitions.add(newInputPort);
                        
@@ -83,14 +74,14 @@ public class GisServiceProvider extends 
AbstractConfigurableServiceProvider<GisS
                
                // Get output ports
                
-               OutputDescriptionType[] outputList = 
processDescription.getProcessOutputs().getOutputArray();
+               List<TypeDescriptor> outputList = 
gisServiceClient.getTaverna2OutputPorts(getConfiguration().getProcessIdentifier());
                List<ActivityOutputPortDefinitionBean> outputPortDefinitions = 
new ArrayList<ActivityOutputPortDefinitionBean>();
                
-               for( OutputDescriptionType output : outputList )
+               for( TypeDescriptor output : outputList )
                {
                        ActivityOutputPortDefinitionBean newOutputPort = new 
ActivityOutputPortDefinitionBean();
-                       
newOutputPort.setName(output.getIdentifier().getStringValue());
-                       newOutputPort.setDepth(0);
+                       newOutputPort.setName(output.getName());
+                       newOutputPort.setDepth(output.getDepth());
                        
                        outputPortDefinitions.add(newOutputPort);
                        
@@ -98,7 +89,7 @@ public class GisServiceProvider extends 
AbstractConfigurableServiceProvider<GisS
                
                service.setOutputPortDefinitions(outputPortDefinitions);
                
-               } catch (IOException e) {
+               } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-gis/blob/e7cb22cc/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java
----------------------------------------------------------------------
diff --git 
a/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java
 
b/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java
index a6bc792..b0ad827 100644
--- 
a/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java
+++ 
b/apache-taverna-plugin-gis-activity/src/main/java/org/apache/taverna/gis/GisActivity.java
@@ -59,6 +59,21 @@ public class GisActivity extends 
AbstractAsynchronousActivity<GisActivityConfigu
                // Add input ports
                for(ActivityInputPortDefinitionBean inputPort : 
configBean.getInputPortDefinitions())
                {
+                       if (inputPort.getName()=="polygon")
+                       {
+                               addInput("polygon_schema",0,true, null, null);
+                               addInput("polygon_encoding",0,true, null, null);
+                               addInput("polygon_mimetype",0,true, null, null);
+                               
+                       }
+                       
+                       if (inputPort.getName()=="line")
+                       {
+                               addInput("line_schema",0,true, null, null);
+                               addInput("line_encoding",0,true, null, null);
+                               addInput("line_mimetype",0,true, null, null);
+                       }
+                       
                        
addInput(inputPort.getName(),inputPort.getDepth(),inputPort.getAllowsLiteralValues(),inputPort.getHandledReferenceSchemes(),
 inputPort.getTranslatedElementType());
                }
                
@@ -66,6 +81,14 @@ public class GisActivity extends 
AbstractAsynchronousActivity<GisActivityConfigu
                for(ActivityOutputPortDefinitionBean outputPort : 
configBean.getOutputPortDefinitions())
                {
                        addOutput(outputPort.getName(),outputPort.getDepth());
+                       
+                       if (outputPort.getName()=="result")
+                       {
+                               addOutput("result_schema",0);
+                               addOutput("result_encoding",0);
+                               addOutput("result_mimetype",0);
+                       }
+                       
                }
                
        }
@@ -94,7 +117,21 @@ public class GisActivity extends 
AbstractAsynchronousActivity<GisActivityConfigu
 
                                        for (ActivityInputPortDefinitionBean 
activityInputPort : configBean.getInputPortDefinitions()) {
                                                String portValue = (String) 
referenceService.renderIdentifier(inputs.get(activityInputPort.getName()), 
String.class, context);
-                                               
executeBuilder.addLiteralData(activityInputPort.getName(), portValue);
+                                               
+                                               if 
(activityInputPort.getName().equals("polygon") || 
activityInputPort.getName().equals("line"))
+                                               {
+                                                       String schema = 
"application/wkt";
+                                                       String encoding = null;
+                                                       String mimeType = 
"application/wkt";
+                                                       
+                                                       
executeBuilder.addComplexData(activityInputPort.getName(),
+                                                                       
portValue, schema, encoding, mimeType);
+                                                       
+                                               }else
+                                               {
+                                                       
executeBuilder.addLiteralData(activityInputPort.getName(), portValue);
+                                               }
+                                               
                                        }
                                
                                        ExecuteDocument execute = 
executeBuilder.getExecute();
@@ -132,6 +169,14 @@ public class GisActivity extends 
AbstractAsynchronousActivity<GisActivityConfigu
 
                                                                
outputs.put(output.getIdentifier().getStringValue(), simpleRef);
                                                        }
+                                       else
+                                       {
+                                       
+                                               simpleRef = 
referenceService.register(data.getComplexData().toString(), 0, true, context);
+                                               
+                                               
outputs.put(output.getIdentifier().getStringValue(), simpleRef);
+                                               
+                                       }
                                        
                                                }
                                    

Reply via email to