Split CWL parser and converter
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/881a4096 Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/tree/881a4096 Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/diff/881a4096 Branch: refs/heads/cwlparser Commit: 881a409608e4fd8d6b820b8e9e54f1eb5e3c6d16 Parents: ee6b282 Author: Majdi Haouech <[email protected]> Authored: Mon Jun 11 16:51:06 2018 +0200 Committer: Majdi Haouech <[email protected]> Committed: Mon Jun 11 16:51:06 2018 +0200 ---------------------------------------------------------------------- .../apache/taverna/scufl2/cwl/CWLParser.java | 81 +++++++++++++ .../apache/taverna/scufl2/cwl/Converter.java | 75 ++++++++++++ .../org/apache/taverna/scufl2/cwl/Parser.java | 114 ------------------- 3 files changed, 156 insertions(+), 114 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/881a4096/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLParser.java ---------------------------------------------------------------------- diff --git a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLParser.java b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLParser.java new file mode 100644 index 0000000..a2007ad --- /dev/null +++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/CWLParser.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.taverna.scufl2.cwl; + +import java.util.*; + +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.taverna.scufl2.api.core.Processor; + +import org.apache.taverna.scufl2.api.port.InputWorkflowPort; +import org.apache.taverna.scufl2.api.port.OutputWorkflowPort; +import org.apache.taverna.scufl2.api.port.InputProcessorPort; +import org.apache.taverna.scufl2.api.port.OutputProcessorPort; + +import com.fasterxml.jackson.databind.JsonNode; + +public class CWLParser { + + private JsonNode cwlFile; + private YAMLHelper yamlHelper; + + public CWLParser(JsonNode cwlFile) { + this.cwlFile = cwlFile; + this.yamlHelper = new YAMLHelper(); + } + + public Set<Step> parseSteps() { + return yamlHelper.processSteps(cwlFile); + } + + public Set<PortDetail> parseInputs() { + Map<String, PortDetail> inputs = yamlHelper.processInputDetails(cwlFile); + Map<String, Integer> inputDepths = yamlHelper.processInputDepths(cwlFile); + + if(inputs == null || inputDepths == null) { + return null; + } + Set<PortDetail> result = new HashSet<PortDetail>(); + for(String id: inputs.keySet()) { + PortDetail port = inputs.get(id); + port.setId(id); + int depth = inputDepths.get(id); + port.setDepth(depth); + result.add(port); + } + + return result; + } + + public Set<PortDetail> parseOutputs() { + Map<String, PortDetail> inputs = yamlHelper.processOutputDetails(cwlFile); + + if(inputs == null) { + return null; + } + Set<PortDetail> result = new HashSet<PortDetail>(); + for(String id: inputs.keySet()) { + PortDetail port = inputs.get(id); + result.add(port); + } + + return result; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/881a4096/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java ---------------------------------------------------------------------- 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 new file mode 100644 index 0000000..8be949a --- /dev/null +++ b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Converter.java @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.taverna.scufl2.cwl; + +import java.util.*; + +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.taverna.scufl2.api.core.Processor; + +import org.apache.taverna.scufl2.api.port.InputWorkflowPort; +import org.apache.taverna.scufl2.api.port.OutputWorkflowPort; +import org.apache.taverna.scufl2.api.port.InputProcessorPort; +import org.apache.taverna.scufl2.api.port.OutputProcessorPort; + +import com.fasterxml.jackson.databind.JsonNode; + +public class Converter { + + public Converter() { + + } + + public InputWorkflowPort convertInputWorkflowPort(PortDetail input) { + InputWorkflowPort port = new InputWorkflowPort(); + port.setName(input.getId()); + port.setDepth(input.getDepth()); + + return port; + } + + public OutputWorkflowPort convertOutputWorkflowPort(PortDetail input) { + OutputWorkflowPort port = new OutputWorkflowPort(); + port.setName(input.getId()); + + return port; + } + + public Processor convertStepToProcessor(Step step) { + Processor processor = new Processor(null, step.getId()); + // Convert input ports + Set<InputProcessorPort> processorInputs = new HashSet<>(); + Set<StepInput> inputs = step.getInputs(); + for(StepInput input: inputs) { + InputProcessorPort port = new InputProcessorPort(processor, input.getId()); + processorInputs.add(port); + } + processor.setInputPorts(processorInputs); + // Convert output ports + Set<OutputProcessorPort> processorOutputs = new HashSet<>(); + Set<StepOutput> outputs = step.getOutputs(); + for(StepOutput output: outputs) { + OutputProcessorPort port = new OutputProcessorPort(processor, output.getId()); + processorOutputs.add(port); + } + processor.setOutputPorts(processorOutputs); + + return processor; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-language/blob/881a4096/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Parser.java ---------------------------------------------------------------------- diff --git a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Parser.java b/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Parser.java deleted file mode 100644 index c0ef438..0000000 --- a/taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/Parser.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.taverna.scufl2.cwl; - -import java.util.*; - -import org.apache.taverna.scufl2.api.core.Workflow; -import org.apache.taverna.scufl2.api.core.Processor; - -import org.apache.taverna.scufl2.api.port.InputWorkflowPort; -import org.apache.taverna.scufl2.api.port.OutputWorkflowPort; -import org.apache.taverna.scufl2.api.port.InputProcessorPort; -import org.apache.taverna.scufl2.api.port.OutputProcessorPort; - -import com.fasterxml.jackson.databind.JsonNode; - -public class Parser { - - private JsonNode cwlFile; - private YAMLHelper yamlHelper; - private Workflow workflow; - - public Parser(JsonNode cwlFile) { - this.cwlFile = cwlFile; - this.yamlHelper = new YAMLHelper(); - this.workflow = new Workflow(); - this.workflow.setInputPorts(parseInputs()); - this.workflow.setOutputPorts(parseOutputs()); - } - - public Workflow getWorkflow() { - return this.workflow; - } - - public Set<Step> parseSteps() { - return yamlHelper.processSteps(cwlFile); - } - - public Processor convertStepToProcessor(Step step) { - Processor processor = new Processor(null, step.getId()); - // Convert input ports - Set<InputProcessorPort> processorInputs = new HashSet<>(); - Set<StepInput> inputs = step.getInputs(); - for(StepInput input: inputs) { - InputProcessorPort port = new InputProcessorPort(processor, input.getId()); - processorInputs.add(port); - } - processor.setInputPorts(processorInputs); - // Convert output ports - Set<OutputProcessorPort> processorOutputs = new HashSet<>(); - Set<StepOutput> outputs = step.getOutputs(); - for(StepOutput output: outputs) { - OutputProcessorPort port = new OutputProcessorPort(processor, output.getId()); - processorOutputs.add(port); - } - processor.setOutputPorts(processorOutputs); - - return processor; - } - - public Set<InputWorkflowPort> parseInputs() { - Map<String, PortDetail> inputs = yamlHelper.processInputDetails(cwlFile); - Map<String, Integer> inputDepths = yamlHelper.processInputDepths(cwlFile); - - if(inputs == null || inputDepths == null) { - return null; - } - Set<InputWorkflowPort> result = new HashSet<InputWorkflowPort>(); - for(String id: inputs.keySet()) { - PortDetail detail = inputs.get(id); - int depth = inputDepths.get(id); - InputWorkflowPort port = new InputWorkflowPort(); - port.setName(id); - port.setDepth(depth); - result.add(port); - } - - return result; - } - - public Set<OutputWorkflowPort> parseOutputs() { - Map<String, PortDetail> inputs = yamlHelper.processOutputDetails(cwlFile); - - if(inputs == null) { - return null; - } - Set<OutputWorkflowPort> result = new HashSet<OutputWorkflowPort>(); - for(String id: inputs.keySet()) { - PortDetail detail = inputs.get(id); - OutputWorkflowPort port = new OutputWorkflowPort(); - port.setName(id); - result.add(port); - } - - return result; - } - -}
