Search in sources :

Example 1 with PortID

use of org.knime.core.node.workflow.capture.WorkflowSegment.PortID in project knime-core by knime.

the class WorkflowPortObjectSpec method saveInputs.

private static void saveInputs(final ModelContentWO model, final List<Input> inputs, final List<String> inputIDs) {
    model.addInt("num_inputs", inputs.size());
    for (int i = 0; i < inputs.size(); i++) {
        Input input = inputs.get(i);
        Config inputConf = model.addConfig("input_" + i);
        if (input.getType().isPresent()) {
            Config type = inputConf.addConfig("type");
            savePortType(type, input.getType().get());
        }
        Optional<DataTableSpec> optionalSpec = input.getSpec();
        if (optionalSpec.isPresent()) {
            Config spec = inputConf.addConfig("spec");
            saveSpec(spec, input.getSpec().get());
        }
        Set<PortID> connectedPorts = input.getConnectedPorts();
        Config portsConf = inputConf.addConfig("connected_ports");
        portsConf.addInt("num_ports", connectedPorts.size());
        int j = 0;
        for (PortID pid : connectedPorts) {
            Config portConf = portsConf.addConfig("port_" + j);
            savePortID(portConf, pid);
            j++;
        }
        inputConf.addString("id", inputIDs.get(i));
    }
}
Also used : Input(org.knime.core.node.workflow.capture.WorkflowSegment.Input) DataTableSpec(org.knime.core.data.DataTableSpec) Config(org.knime.core.node.config.Config) PortID(org.knime.core.node.workflow.capture.WorkflowSegment.PortID)

Example 2 with PortID

use of org.knime.core.node.workflow.capture.WorkflowSegment.PortID in project knime-core by knime.

the class WorkflowPortObjectSpec method loadInputs.

private static Pair<List<Input>, List<String>> loadInputs(final ModelContentRO model) throws InvalidSettingsException {
    int size = model.getInt("num_inputs");
    List<Input> inputs = new ArrayList<>(size);
    List<String> inputIDs = new ArrayList<>(size);
    for (int i = 0; i < size; i++) {
        Config inputConf = model.getConfig("input_" + i);
        Set<PortID> connectedPorts = new HashSet<>();
        Config portsConf = inputConf.getConfig("connected_ports");
        for (int j = 0; j < portsConf.getInt("num_ports"); j++) {
            connectedPorts.add(loadPortID(portsConf.getConfig("port_" + j)));
        }
        Input input = new Input(inputConf.containsKey("type") ? loadPortType(inputConf.getConfig("type")) : null, inputConf.containsKey("spec") ? loadTableSpec(inputConf.getConfig("spec")) : null, connectedPorts);
        inputs.add(input);
        inputIDs.add(inputConf.getString("id"));
    }
    return Pair.create(inputs, inputIDs);
}
Also used : Input(org.knime.core.node.workflow.capture.WorkflowSegment.Input) Config(org.knime.core.node.config.Config) ArrayList(java.util.ArrayList) PortID(org.knime.core.node.workflow.capture.WorkflowSegment.PortID) HashSet(java.util.HashSet)

Example 3 with PortID

use of org.knime.core.node.workflow.capture.WorkflowSegment.PortID in project knime-core by knime.

the class WorkflowCaptureOperation method getOutputs.

/**
 * Returns the outputs of the (to be) captured sub-workflow, i.e. the same ports {@link #capture()} with a
 * subsequent {@link WorkflowSegment#getConnectedOutputs()} would return.
 *
 * @return the outputs of the (to be) captured workflow fragment
 */
public List<Output> getOutputs() {
    List<Output> res = new ArrayList<>();
    for (int i = 0; i < m_endNode.getNrInPorts(); i++) {
        ConnectionContainer cc = m_wfm.getIncomingConnectionFor(m_endNode.getID(), i);
        PortID connectPort = null;
        PortType type = null;
        DataTableSpec spec = null;
        if (cc != null) {
            connectPort = new PortID(NodeIDSuffix.create(m_wfm.getID(), cc.getSource()), cc.getSourcePort());
            NodeOutPort outPort = m_wfm.getNodeContainer(cc.getSource()).getOutPort(cc.getSourcePort());
            type = outPort.getPortType();
            spec = castToDTSpecOrNull(outPort.getPortObjectSpec());
        }
        res.add(new Output(type, spec, connectPort));
    }
    return res;
}
Also used : DataTableSpec(org.knime.core.data.DataTableSpec) Output(org.knime.core.node.workflow.capture.WorkflowSegment.Output) ArrayList(java.util.ArrayList) PortID(org.knime.core.node.workflow.capture.WorkflowSegment.PortID) PortType(org.knime.core.node.port.PortType)

Example 4 with PortID

use of org.knime.core.node.workflow.capture.WorkflowSegment.PortID in project knime-core by knime.

the class WorkflowCaptureOperation method getInputs.

/**
 * Returns the input of the (to be) captured sub-workflow, i.e. the same ports {@link #capture()} with a
 * subsequent {@link WorkflowSegment#getConnectedInputs()} would return.
 *
 * @return the inputs of the (to be) captured workflow fragment
 */
public List<Input> getInputs() {
    List<Input> res = new ArrayList<>();
    for (int i = 0; i < m_startNode.getNrOutPorts(); i++) {
        Set<PortID> connections = m_wfm.getOutgoingConnectionsFor(m_startNode.getID(), i).stream().map(cc -> {
            return new PortID(NodeIDSuffix.create(m_wfm.getID(), cc.getDest()), cc.getDestPort());
        }).collect(Collectors.toSet());
        NodeOutPort outPort = m_startNode.getOutPort(i);
        res.add(new Input(outPort.getPortType(), castToDTSpecOrNull(outPort.getPortObjectSpec()), connections));
    }
    return res;
}
Also used : WorkflowSegment(org.knime.core.node.workflow.capture.WorkflowSegment) Arrays(java.util.Arrays) DataTableSpec(org.knime.core.data.DataTableSpec) CanceledExecutionException(org.knime.core.node.CanceledExecutionException) HashMap(java.util.HashMap) ArrayUtils(org.apache.commons.lang3.ArrayUtils) NodeIDSuffix(org.knime.core.node.workflow.NodeID.NodeIDSuffix) ConnectionType(org.knime.core.node.workflow.ConnectionContainer.ConnectionType) ArrayList(java.util.ArrayList) Pair(org.knime.core.util.Pair) HashSet(java.util.HashSet) PortID(org.knime.core.node.workflow.capture.WorkflowSegment.PortID) NodeLogger(org.knime.core.node.NodeLogger) Map(java.util.Map) PortObjectInNodeModel(org.knime.core.node.exec.dataexchange.in.PortObjectInNodeModel) PortType(org.knime.core.node.port.PortType) Output(org.knime.core.node.workflow.capture.WorkflowSegment.Output) Input(org.knime.core.node.workflow.capture.WorkflowSegment.Input) Set(java.util.Set) PortObjectSpec(org.knime.core.node.port.PortObjectSpec) IOException(java.io.IOException) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) PortObjectRepository(org.knime.core.node.exec.dataexchange.PortObjectRepository) List(java.util.List) Optional(java.util.Optional) CollapseIntoMetaNodeResult(org.knime.core.node.workflow.action.CollapseIntoMetaNodeResult) CheckUtils(org.knime.core.node.util.CheckUtils) PortObject(org.knime.core.node.port.PortObject) FlowVirtualScopeContext(org.knime.core.node.workflow.virtual.parchunk.FlowVirtualScopeContext) Input(org.knime.core.node.workflow.capture.WorkflowSegment.Input) ArrayList(java.util.ArrayList) PortID(org.knime.core.node.workflow.capture.WorkflowSegment.PortID)

Example 5 with PortID

use of org.knime.core.node.workflow.capture.WorkflowSegment.PortID in project knime-core by knime.

the class WorkflowPortObjectSpec method loadOutputs.

private static Pair<List<Output>, List<String>> loadOutputs(final ModelContentRO model) throws InvalidSettingsException {
    int size = model.getInt("num_outputs");
    List<Output> outputs = new ArrayList<>(size);
    List<String> outputIDs = new ArrayList<>(size);
    for (int i = 0; i < size; i++) {
        Config outputConf = model.getConfig("output_" + i);
        PortID connectedPort = null;
        if (outputConf.containsKey("connected_port")) {
            connectedPort = loadPortID(outputConf.getConfig("connected_port"));
        }
        Output output = new Output(outputConf.containsKey("type") ? loadPortType(outputConf.getConfig("type")) : null, outputConf.containsKey("spec") ? loadTableSpec(outputConf.getConfig("spec")) : null, connectedPort);
        outputs.add(output);
        outputIDs.add(outputConf.getString("id"));
    }
    return Pair.create(outputs, outputIDs);
}
Also used : Config(org.knime.core.node.config.Config) Output(org.knime.core.node.workflow.capture.WorkflowSegment.Output) ArrayList(java.util.ArrayList) PortID(org.knime.core.node.workflow.capture.WorkflowSegment.PortID)

Aggregations

PortID (org.knime.core.node.workflow.capture.WorkflowSegment.PortID)6 ArrayList (java.util.ArrayList)4 DataTableSpec (org.knime.core.data.DataTableSpec)4 Config (org.knime.core.node.config.Config)4 Output (org.knime.core.node.workflow.capture.WorkflowSegment.Output)4 Input (org.knime.core.node.workflow.capture.WorkflowSegment.Input)3 HashSet (java.util.HashSet)2 PortType (org.knime.core.node.port.PortType)2 IOException (java.io.IOException)1 Arrays (java.util.Arrays)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Set (java.util.Set)1 UUID (java.util.UUID)1 Collectors (java.util.stream.Collectors)1 ArrayUtils (org.apache.commons.lang3.ArrayUtils)1 CanceledExecutionException (org.knime.core.node.CanceledExecutionException)1 NodeLogger (org.knime.core.node.NodeLogger)1