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) {