Search in sources :

Example 16 with Node

use of org.knime.core.node.Node in project knime-core by knime.

the class TableSorterTest method setUp.

/**
 * @throws java.lang.Exception
 */
@Before
public void setUp() throws Exception {
    NodeFactory<NodeModel> dummyFactory = (NodeFactory) new VirtualParallelizedChunkPortObjectInNodeFactory(new PortType[0]);
    m_exec = new ExecutionContext(new DefaultNodeProgressMonitor(), new Node(dummyFactory), SingleNodeContainer.MemoryPolicy.CacheOnDisc, new HashMap<Integer, ContainerTable>());
}
Also used : NodeModel(org.knime.core.node.NodeModel) ExecutionContext(org.knime.core.node.ExecutionContext) VirtualParallelizedChunkPortObjectInNodeFactory(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeFactory) NodeFactory(org.knime.core.node.NodeFactory) HashMap(java.util.HashMap) VirtualParallelizedChunkPortObjectInNodeFactory(org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeFactory) DefaultNodeProgressMonitor(org.knime.core.node.DefaultNodeProgressMonitor) Node(org.knime.core.node.Node) PortType(org.knime.core.node.port.PortType) Before(org.junit.Before)

Example 17 with Node

use of org.knime.core.node.Node in project knime-core by knime.

the class FileNativeNodeContainerPersistor method preLoadNodeContainer.

/**
 * {@inheritDoc}
 */
@Override
public void preLoadNodeContainer(final WorkflowPersistor parentPersistor, final NodeSettingsRO parentSettings, final LoadResult result) throws InvalidSettingsException, IOException {
    super.preLoadNodeContainer(parentPersistor, parentSettings, result);
    m_parentPersistor = parentPersistor;
    NodeSettingsRO settings = getNodeSettings();
    String error;
    NodeAndBundleInformation nodeInfo;
    try {
        nodeInfo = loadNodeFactoryInfo(parentSettings, settings);
    } catch (InvalidSettingsException e) {
        setDirtyAfterLoad();
        throw e;
    }
    NodeSettingsRO additionalFactorySettings;
    try {
        additionalFactorySettings = loadAdditionalFactorySettings(settings);
    } catch (Exception e) {
        error = "Unable to load additional factory settings for \"" + nodeInfo + "\"";
        setDirtyAfterLoad();
        throw new InvalidSettingsException(error, e);
    }
    NodeFactory<NodeModel> nodeFactory;
    try {
        nodeFactory = loadNodeFactory(nodeInfo.getFactoryClass());
    } catch (Exception e) {
        // setDirtyAfterLoad(); // don't set dirty, missing node placeholder will be used instead
        throw new NodeFactoryUnknownException(nodeInfo, additionalFactorySettings, e);
    }
    try {
        if (additionalFactorySettings != null) {
            nodeFactory.loadAdditionalFactorySettings(additionalFactorySettings);
        }
    } catch (Exception e) {
        error = "Unable to load additional factory settings into node factory (node \"" + nodeInfo + "\")";
        getLogger().error(error);
        throw new NodeFactoryUnknownException(error, nodeInfo, additionalFactorySettings, e);
    }
    m_nodeAndBundleInformation = nodeInfo;
    m_node = new Node(nodeFactory);
}
Also used : NodeAndBundleInformation(org.knime.core.node.NodeAndBundleInformation) NodeModel(org.knime.core.node.NodeModel) NodeFactoryUnknownException(org.knime.core.node.workflow.WorkflowPersistor.NodeFactoryUnknownException) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) Node(org.knime.core.node.Node) NodeSettingsRO(org.knime.core.node.NodeSettingsRO) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) CanceledExecutionException(org.knime.core.node.CanceledExecutionException) NodeFactoryUnknownException(org.knime.core.node.workflow.WorkflowPersistor.NodeFactoryUnknownException) IOException(java.io.IOException)

Example 18 with Node

use of org.knime.core.node.Node in project knime-core by knime.

the class FileWorkflowPersistor method fixDestPortIfNecessary.

/**
 * Fixes destination port index if necessary. For v1.x flows, e.g., the indices of model and data ports were
 * swapped. Subclasses will overwrite this method (e.g. to enable loading flows, which did not have the mandatory
 * flow variable port object).
 *
 * @param destPersistor The persistor of the destination node.
 * @param c The connection template to be fixed.
 */
void fixDestPortIfNecessary(final NodeContainerPersistor destPersistor, final ConnectionContainerTemplate c) {
    if (getLoadVersion().isOlderThan(LoadVersion.V220)) {
        if (destPersistor instanceof FileNativeNodeContainerPersistor) {
            FileNativeNodeContainerPersistor pers = (FileNativeNodeContainerPersistor) destPersistor;
            // only test if the node is not missing (missing node placeholder)
            if (pers.getNode() != null && pers.shouldFixModelPortOrder()) {
                Node node = pers.getNode();
                int modelPortCount = 0;
                // first port is flow variable input port
                for (int i = 1; i < node.getNrInPorts(); i++) {
                    PortType portType = node.getInputType(i);
                    if (!portType.getPortObjectClass().isAssignableFrom(BufferedDataTable.class) && // ports in legacy workflows (not connected anyway)
                    !portType.isOptional()) {
                        modelPortCount += 1;
                    }
                }
                if (modelPortCount == node.getNrInPorts()) {
                    return;
                }
                int destPort = c.getDestPort();
                if (destPort < modelPortCount) {
                    // c represent data connection
                    c.setDestPort(destPort + modelPortCount);
                } else {
                    // c represents model connection
                    c.setDestPort(destPort - modelPortCount);
                }
            }
            // correct port index only for ordinary nodes (no new flow
            // variable ports on metanodes)
            int index = c.getDestPort();
            c.setDestPort(index + 1);
        }
    } else if (getLoadVersion().isOlderThan(LoadVersion.V220)) {
        // v2.1 and before did not have flow variable ports (index 0)
        if (destPersistor instanceof FileSingleNodeContainerPersistor) {
            // correct port index only for ordinary nodes (no new flow
            // variable ports on metanodes)
            int index = c.getDestPort();
            c.setDestPort(index + 1);
        }
    }
}
Also used : Node(org.knime.core.node.Node) PortType(org.knime.core.node.port.PortType)

Aggregations

Node (org.knime.core.node.Node)18 NodeFactory (org.knime.core.node.NodeFactory)11 PortType (org.knime.core.node.port.PortType)11 HashMap (java.util.HashMap)10 NodeModel (org.knime.core.node.NodeModel)10 VirtualParallelizedChunkPortObjectInNodeFactory (org.knime.core.node.workflow.virtual.parchunk.VirtualParallelizedChunkPortObjectInNodeFactory)9 IOException (java.io.IOException)7 CanceledExecutionException (org.knime.core.node.CanceledExecutionException)7 InvalidSettingsException (org.knime.core.node.InvalidSettingsException)7 DialogNode (org.knime.core.node.dialog.DialogNode)7 MetaNodeDialogNode (org.knime.core.node.dialog.MetaNodeDialogNode)7 NodeSettingsRO (org.knime.core.node.NodeSettingsRO)6 InputNode (org.knime.core.node.dialog.InputNode)6 OutputNode (org.knime.core.node.dialog.OutputNode)6 InteractiveNode (org.knime.core.node.interactive.InteractiveNode)6 CredentialsNode (org.knime.core.node.workflow.CredentialsStore.CredentialsNode)6 QuickFormInputNode (org.knime.core.quickform.in.QuickFormInputNode)6 ArrayList (java.util.ArrayList)5 File (java.io.File)4 FileOutputStream (java.io.FileOutputStream)4