You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2016/05/26 13:43:46 UTC

[50/50] incubator-taverna-language git commit: parse workflow step input/output params

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 <st...@apache.org>
Authored: Fri May 20 19:17:06 2016 +0200
Committer: Stian Soiland-Reyes <st...@apache.org>
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) {