Convert ports inside steps while converting parent processes
- Cleanup some unused imports
diff --git a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java
index 6bfe77d..5cfd9ce 100644
--- a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java
+++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java
@@ -196,10 +196,40 @@
}
public Processor convertCommandLineTool(CommandLineTool command) {
- return new Processor(null, command.getBaseCommand());
+ Processor processor = new Processor(null, command.getBaseCommand());
+
+ processor.setInputPorts(convertInputProcessPorts(command.getInputPorts()));
+ processor.setOutputPorts(convertOutputProcessPorts(command.getOutputPorts()));
+
+ return processor;
}
public Processor convertReference(Reference reference) {
- return new Processor(null, reference.getSource());
+ Processor processor = new Processor(null, reference.getSource());
+
+ processor.setInputPorts(convertInputProcessPorts(reference.getInputPorts()));
+ processor.setOutputPorts(convertOutputProcessPorts(reference.getOutputPorts()));
+
+ return processor;
+ }
+
+ public Set<InputProcessorPort> convertInputProcessPorts(Set<InputPort> inputPorts) {
+ Set<InputProcessorPort> processorInputPorts = new HashSet<>();
+
+ for(InputPort port: inputPorts) {
+ processorInputPorts.add(new InputProcessorPort(null, port.getName()));
+ }
+
+ return processorInputPorts;
+ }
+
+ public Set<OutputProcessorPort> convertOutputProcessPorts(Set<OutputPort> outputPorts) {
+ Set<OutputProcessorPort> processorOutputPorts = new HashSet<>();
+
+ for(OutputPort port: outputPorts) {
+ processorOutputPorts.add(new OutputProcessorPort(null, port.getName()));
+ }
+
+ return processorOutputPorts;
}
}
\ No newline at end of file
diff --git a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java
index 9f61758..a8e6607 100644
--- a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java
+++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java
@@ -101,6 +101,8 @@
for(Step step: cwlSteps) {
Process process = step.getRun();
+ process.setInputPorts(step.getInputs());
+ process.setOutputPorts(step.getOutputs());
result.add(process);
}
diff --git a/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestConverting.java b/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestConverting.java
index b17cc88..2b34a3c 100644
--- a/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestConverting.java
+++ b/taverna-scufl2-cwl/src/test/java/org/apache/taverna/scufl2/cwl/TestConverting.java
@@ -19,13 +19,7 @@
package org.apache.taverna.scufl2.cwl;
-import java.io.File;
-import java.io.IOException;
-import java.util.Set;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.HashMap;
-
+import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
@@ -35,17 +29,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper;
-import com.fasterxml.jackson.core.JsonProcessingException;
-
-import org.apache.taverna.scufl2.api.core.Workflow;
-
-import org.apache.taverna.scufl2.api.port.InputWorkflowPort;
-import org.apache.taverna.scufl2.api.port.OutputWorkflowPort;
-
-import org.apache.taverna.scufl2.api.io.WorkflowBundleIO;
-import org.apache.taverna.scufl2.api.io.WriterException;
-
import org.apache.taverna.scufl2.api.container.WorkflowBundle;
+import org.apache.taverna.scufl2.api.core.Workflow;
+import org.apache.taverna.scufl2.api.core.Processor;
public class TestConverting {
private static final String HELLO_WORLD_CWL = "/hello_world.cwl";
@@ -65,7 +51,7 @@
@Test
public void testWorkflowBundleWithOneWorkflow() {
- JsonNode cwlFile = loadYamlFile(HELLO_WORLD_CWL);
+ this.cwlFile = loadYamlFile(HELLO_WORLD_CWL);
WorkflowProcess workflow = (WorkflowProcess) ProcessFactory.createProcess(cwlFile);
Converter converter = new Converter();
@@ -76,7 +62,7 @@
@Test
public void testWorkflowBundleWithMultipleWorkflows() {
- JsonNode cwlFile = loadYamlFile(WORKFLOW_WITH_WORKFLOW);
+ this.cwlFile = loadYamlFile(WORKFLOW_WITH_WORKFLOW);
WorkflowProcess workflow = (WorkflowProcess) ProcessFactory.createProcess(cwlFile);
Converter converter = new Converter();
@@ -85,4 +71,20 @@
assertEquals(workflowBundle.getWorkflows().size(), 2);
}
+ @Test
+ public void testConvertWorkflowProcessToWorkflow() {
+ this.cwlFile = loadYamlFile(HELLO_WORLD_CWL);
+
+ WorkflowProcess workflowProcess = (WorkflowProcess) ProcessFactory.createProcess(cwlFile);
+ WorkflowBundle bundle = new WorkflowBundle();
+ Converter converter = new Converter();
+ Workflow workflow = converter.convertWorkflowProcess(workflowProcess, bundle);
+ assertEquals(1, workflow.getProcessors().size());
+ assertEquals(1, workflow.getInputPorts().size());
+ assertEquals(1, workflow.getOutputPorts().size());
+
+ Processor processor = workflow.getProcessors().iterator().next();
+ assertEquals(1, processor.getInputPorts().size());
+ assertEquals(0, processor.getOutputPorts().size());
+ }
}