public Set processSteps()

in taverna-scufl2-cwl/src/main/java/org/apache/taverna/scufl2/cwl/YAMLHelper.java [115:165]


    public Set<Step> processSteps(JsonNode file) {
        Set<Step> result = new HashSet<>();

        if(file == null || !file.has(STEPS)) {
            return result;
        }

        JsonNode steps = file.get(STEPS);
        if(steps.isArray()) {
            for (JsonNode stepNode : steps) {
                Step step = new Step();
                String id = stepNode.get(ID).asText();

                JsonNode runNode = stepNode.get(RUN);
                Process run = ProcessFactory.createProcess(runNode);
                run.parse();  // Recursively parse nested process
                Set<InputPort> inputs = processStepInput(stepNode.get(INPUTS));
                Set<OutputPort> outputs = processStepOutput(stepNode.get(OUTPUTS));
                step.setId(id);
                step.setRun(run);
                step.setInputs(inputs);
                step.setOutputs(outputs);

                result.add(step);
            }
        } else if(steps.isObject()) {
            Iterator<Entry<String, JsonNode>> iterator = steps.fields();
            while(iterator.hasNext()) {
                Entry<String, JsonNode> entry = iterator.next();
                Step step = new Step();

                String id = entry.getKey();
                JsonNode value = entry.getValue();
                if(value.has(RUN)) {
                    JsonNode runNode = value.get(RUN);
                    Process run = ProcessFactory.createProcess(runNode);
                    run.parse();
                    step.setRun(run);
                }
                Set<InputPort> inputs = processStepInput(value.get(INPUTS));
                Set<OutputPort> outputs = processStepOutput(value.get(OUTPUTS));
                step.setId(id);
                step.setInputs(inputs);
                step.setOutputs(outputs);

                result.add(step);
            }
        }

        return result;
    }