Github user stain commented on a diff in the pull request: https://github.com/apache/incubator-taverna-language/pull/39#discussion_r201984605 --- Diff: taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/components/WorkflowProcess.java --- @@ -0,0 +1,232 @@ +/* + * 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.io.File; +import java.io.IOException; +import java.util.Set; +import java.util.HashSet; +import java.util.Map; +import java.util.HashMap; + + +import org.apache.taverna.scufl2.api.core.Processor; +import org.apache.taverna.scufl2.api.core.DataLink; +import org.apache.taverna.scufl2.api.core.Workflow; + +import org.apache.taverna.scufl2.api.container.WorkflowBundle; + +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 org.apache.taverna.scufl2.api.port.SenderPort; +import org.apache.taverna.scufl2.api.port.ReceiverPort; + +import org.apache.taverna.scufl2.api.io.WorkflowBundleIO; +import org.apache.taverna.scufl2.api.io.WriterException; + +import com.fasterxml.jackson.databind.JsonNode; + +public class WorkflowProcess implements Process { + + private CWLParser cwlParser; + + private Map<String, InputWorkflowPort> workflowInputs; + private Map<String, OutputWorkflowPort> workflowOutputs; + private Map<String, Processor> workflowProcessors; + private Map<String, InputProcessorPort> processorInputs; + private Map<String, OutputProcessorPort> processorOutputs; + private Set<DataLink> dataLinks; + + private Converter converter; + + public WorkflowProcess(JsonNode node) { + cwlParser = new CWLParser(node); + converter = new Converter(); + workflowInputs = new HashMap<>(); + workflowOutputs = new HashMap<>(); + workflowProcessors = new HashMap<>(); + processorInputs = new HashMap<>(); + processorOutputs = new HashMap<>(); + dataLinks = new HashSet<>(); + this.parse(); + this.receiverPorts = new HashSet(workflowInputs.values()); + this.senderPorts = new HashSet(workflowOutputs.values()); + } + + public void parse() { + parseInputs(); + parseOutputs(); + Set<Step> cwlSteps = cwlParser.parseSteps(); + parseProcessors(cwlSteps); + parseDataLinks(cwlSteps); + + Workflow workflow = new Workflow(); + Set<InputWorkflowPort> inputs = new HashSet<>(workflowInputs.values()); + Set<OutputWorkflowPort> outputs = new HashSet<>(workflowOutputs.values()); + Set<Processor> processors = new HashSet<>(workflowProcessors.values()); + + workflow.setInputPorts(inputs); + workflow.setOutputPorts(outputs); + workflow.setProcessors(processors); + workflow.setDataLinks(dataLinks); + +// System.out.println(workflow); +// writeWorkflowToFile(workflow); +// +// System.out.println("DEBUG WORKFLOW"); +// System.out.println(workflow.getInputPorts()); +// System.out.println(workflow.getOutputPorts()); +// System.out.println(workflow.getProcessors()); + + } + + public void writeWorkflowToFile(Workflow workflow) { --- End diff -- This function looks like test code, can you move it to something under src/test?
---