parse workflow step input/output params

Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/commit/87c6b74c
Tree: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/87c6b74c
Diff: 
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/87c6b74c

Branch: refs/heads/cwl
Commit: 87c6b74cd395dfbfa36ae46f4979f1bfad3841ba
Parents: 3a3ee83
Author: Stian Soiland-Reyes <[email protected]>
Authored: Fri May 20 19:17:06 2016 +0200
Committer: Stian Soiland-Reyes <[email protected]>
Committed: Fri May 20 19:17:06 2016 +0200

----------------------------------------------------------------------
 .../apache/taverna/scufl2/cwl/CwlReader.java    | 57 +++++++++++++++++++-
 1 file changed, 56 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/87c6b74c/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java
----------------------------------------------------------------------
diff --git 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java
index f092a4b..afc0185 100644
--- 
a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java
+++ 
b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CwlReader.java
@@ -19,20 +19,26 @@ import org.apache.taverna.scufl2.api.core.Workflow;
 import org.apache.taverna.scufl2.api.io.ReaderException;
 import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
 import org.apache.taverna.scufl2.api.io.WorkflowBundleReader;
+import org.apache.taverna.scufl2.api.port.InputProcessorPort;
 import org.apache.taverna.scufl2.api.port.InputWorkflowPort;
+import org.apache.taverna.scufl2.api.port.OutputProcessorPort;
 import org.apache.taverna.scufl2.api.port.OutputWorkflowPort;
 import org.apache.taverna.scufl2.cwl.workflow.CWLInputParameter;
 import org.apache.taverna.scufl2.cwl.workflow.CWLWorkflow;
 import org.apache.taverna.scufl2.cwl.workflow.CWLWorkflowOutputParameter;
 import org.apache.taverna.scufl2.cwl.workflow.CWLWorkflowStep;
+import org.apache.taverna.scufl2.cwl.workflow.CWLWorkflowStepInput;
+import org.apache.taverna.scufl2.cwl.workflow.CWLWorkflowStepOutput;
 
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.databind.JsonMappingException;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
 
 public class CwlReader implements WorkflowBundleReader  {
 
+       private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
        private static final WorkflowBundleIO WF_IO = new WorkflowBundleIO();
        public static final String MEDIA_TYPE = 
"text/vnd.commonwf.workflow+yaml";
 
@@ -111,7 +117,8 @@ public class CwlReader implements WorkflowBundleReader  {
                        for (CWLWorkflowStep step : src.steps) {
                                Processor p = new Processor();
                                p.setParent(dest);
-                               parseWorkflowStep(step, p);                     
        
+                               parseWorkflowStep(step, p);                     
                
+
                        }
                }
                
@@ -121,6 +128,54 @@ public class CwlReader implements WorkflowBundleReader  {
                if (step.id != null && ! 
Named.INVALID_NAME.matcher(step.id).matches()) {
                        p.setName(step.id);
                }               
+               // TODO step.run
+               
+               if (step.in != null) { 
+                       for (CWLWorkflowStepInput s : step.in) {
+                               InputProcessorPort inp = new 
InputProcessorPort();
+                               inp.setParent(p);
+                               parseWorkflowStepInput(s, inp);
+                       }
+               }
+               if (step.out != null) { 
+                       for (JsonNode s : step.out) {
+                               OutputProcessorPort outp = new 
OutputProcessorPort();
+                               outp.setParent(p);
+                               parseWorkflowStepOutput(s, outp);
+                       }
+               }
+               
+               // TODO: Check compatibility
+               //step.requirements
+               
+               
+               // TODO: Annotations
+               //step.label;
+               //step.description;
+               //step.hints;
+
+               // TODO: Iteration strategy     
+               //step.scatter;
+               
+               // TODO: Handle run
+               // TODO: Handle nested workflows
+               //step.run;
+       }
+
+       private void parseWorkflowStepOutput(JsonNode s, OutputProcessorPort 
outp) {
+               if (s.isTextual() && ! 
Named.INVALID_NAME.matcher(s.asText()).matches()) { 
+                       outp.setName(s.asText());
+               }
+               CWLWorkflowStepOutput out = OBJECT_MAPPER.convertValue(s, 
CWLWorkflowStepOutput.class);
+               if (out.id != null && ! 
Named.INVALID_NAME.matcher(out.id).matches()) {
+                       outp.setName(out.id);
+               }
+               
+       }
+
+       private void parseWorkflowStepInput(CWLWorkflowStepInput s, 
InputProcessorPort inp) {
+               // TODO Auto-generated method stub
+               
        }
 
        private void parseOutputPort(CWLWorkflowOutputParameter out, 
OutputWorkflowPort p) {

Reply via email to