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:44 UTC
[48/50] incubator-taverna-language git commit: Parse input/output wf
ports and step names
Parse input/output wf ports and step names
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/a3428b2d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/a3428b2d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/a3428b2d
Branch: refs/heads/cwl
Commit: a3428b2d22184136a467c4a9c2d62bdb2dcfd342
Parents: 6766411
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri May 20 19:02:06 2016 +0200
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri May 20 19:02:06 2016 +0200
----------------------------------------------------------------------
.../apache/taverna/scufl2/cwl/CwlReader.java | 87 ++++++++++++++++++--
1 file changed, 81 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/a3428b2d/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 8d41ccd..f092a4b 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
@@ -12,12 +12,19 @@ import java.util.Collections;
import java.util.Set;
import java.util.UUID;
+import org.apache.taverna.scufl2.api.common.Named;
import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.core.Processor;
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.InputWorkflowPort;
+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 com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
@@ -27,7 +34,7 @@ import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
public class CwlReader implements WorkflowBundleReader {
private static final WorkflowBundleIO WF_IO = new WorkflowBundleIO();
- private static final String MEDIA_TYPE = "text/x-common-workflow-language+yaml";
+ public static final String MEDIA_TYPE = "text/vnd.commonwf.workflow+yaml";
@Override
public Set<String> getMediaTypes() {
@@ -56,16 +63,84 @@ public class CwlReader implements WorkflowBundleReader {
private WorkflowBundle readBundle(InputStream inputStream, URI base) throws JsonParseException, JsonMappingException, IOException {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
- CWLWorkflow user = mapper.readValue(inputStream, CWLWorkflow.class);
- System.out.println(user.id);
-
+ CWLWorkflow cwlWf = mapper.readValue(inputStream, CWLWorkflow.class);
WorkflowBundle wfb = WF_IO.createBundle();
- Workflow wf = wfb.getMainWorkflow();
- wf.setName("Hello");
+
+ parseWorkflow(cwlWf, wfb.getMainWorkflow());
return wfb;
}
+ private void parseWorkflow(CWLWorkflow src, Workflow dest) {
+ if (src.id != null) {
+ // TODO: Make id absolute
+ dest.setIdentifier(URI.create(src.id));
+ // TODO: Generate local name from ID, if possible
+ //dest.setName(src.id);
+ }
+
+ // TODO: Check compatibility and store as annotations
+ //src.cwlVersion;
+ //src.requirements;
+ //src.klass;
+
+ // TODO: Store as annotations
+ //src.label;
+ //src.description;
+ //src.hints;
+
+
+ if (src.inputs != null) {
+ for (CWLInputParameter input : src.inputs) {
+ InputWorkflowPort p = new InputWorkflowPort();
+ p.setParent(dest);
+ parseInputPort(input, p);
+
+ }
+ }
+ if (src.outputs != null) {
+ for (CWLWorkflowOutputParameter out : src.outputs) {
+ OutputWorkflowPort p = new OutputWorkflowPort();
+ p.setParent(dest);
+ parseOutputPort(out, p);
+
+ }
+ }
+
+ if (src.steps != null) {
+ for (CWLWorkflowStep step : src.steps) {
+ Processor p = new Processor();
+ p.setParent(dest);
+ parseWorkflowStep(step, p);
+ }
+ }
+
+ }
+
+ private void parseWorkflowStep(CWLWorkflowStep step, Processor p) {
+ if (step.id != null && ! Named.INVALID_NAME.matcher(step.id).matches()) {
+ p.setName(step.id);
+ }
+ }
+
+ private void parseOutputPort(CWLWorkflowOutputParameter out, OutputWorkflowPort p) {
+ if (out.id != null && ! Named.INVALID_NAME.matcher(out.id).matches()) {
+ p.setName(out.id);
+ }
+
+ }
+
+ private void parseInputPort(CWLInputParameter input, InputWorkflowPort p) {
+ if (input.id != null && ! Named.INVALID_NAME.matcher(input.id).matches()) {
+ p.setName(input.id);
+ }
+ // TODO: Depth from input.type Array
+ // TODO: if (input.defaultValue
+ //input.
+
+
+ }
+
@Override
public String guessMediaTypeForSignature(byte[] firstBytes) {
String s = new String(firstBytes, StandardCharsets.ISO_8859_1);