Search in sources :

Example 6 with PortObjectInput

use of org.knime.core.node.streamable.PortObjectInput in project knime-core by knime.

the class FilterApplyRowSplitterNodeModel method createStreamableOperator.

/**
 * {@inheritDoc}
 */
@Override
public StreamableOperator createStreamableOperator(final PartitionInfo partitionInfo, final PortObjectSpec[] inSpecs) throws InvalidSettingsException {
    return new StreamableOperator() {

        @Override
        public void runFinal(final PortInput[] inputs, final PortOutput[] outputs, final ExecutionContext exec) throws Exception {
            final DataTableRowInput in = (DataTableRowInput) inputs[0];
            final RowOutput out1 = (RowOutput) outputs[0];
            final RowOutput out2 = (RowOutput) outputs[1];
            PortObjectInput portObjectInput = (PortObjectInput) inputs[1];
            DataTableSpec filterSpec = portObjectInput == null ? in.getDataTableSpec() : ((FilterDefinitionHandlerPortObject) portObjectInput.getPortObject()).getSpec();
            FilterApplyRowSplitterNodeModel.this.execute(in, out1, out2, filterSpec, exec, -1);
        }
    };
}
Also used : BufferedDataTableRowOutput(org.knime.core.node.streamable.BufferedDataTableRowOutput) RowOutput(org.knime.core.node.streamable.RowOutput) DataTableSpec(org.knime.core.data.DataTableSpec) ExecutionContext(org.knime.core.node.ExecutionContext) StreamableOperator(org.knime.core.node.streamable.StreamableOperator) DataTableRowInput(org.knime.core.node.streamable.DataTableRowInput) PortObjectInput(org.knime.core.node.streamable.PortObjectInput)

Example 7 with PortObjectInput

use of org.knime.core.node.streamable.PortObjectInput in project knime-core by knime.

the class RuleEngineFilterNodeModel method createStreamableOperator.

/**
 * {@inheritDoc}
 */
@Override
public StreamableOperator createStreamableOperator(final PartitionInfo partitionInfo, final PortObjectSpec[] inSpecs) throws InvalidSettingsException {
    final DataTableSpec spec = (DataTableSpec) inSpecs[0];
    try {
        parseRules(spec, RuleNodeSettings.RuleFilter);
    } catch (final ParseException e) {
        throw new InvalidSettingsException(e);
    }
    return new StreamableOperator() {

        private SimpleStreamableOperatorInternals m_internals;

        /**
         * {@inheritDoc}
         */
        @Override
        public void loadInternals(final StreamableOperatorInternals internals) {
            m_internals = (SimpleStreamableOperatorInternals) internals;
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public void runIntermediate(final PortInput[] inputs, final ExecutionContext exec) throws Exception {
            // count number of rows
            long count = 0;
            if (inputs[0] instanceof RowInput) {
                final RowInput rowInput = (RowInput) inputs[0];
                while (rowInput.poll() != null) {
                    count++;
                }
            } else if (inputs[0] instanceof PortObjectInput) {
                final PortObjectInput portObjectInput = (PortObjectInput) inputs[0];
                count += ((BufferedDataTable) portObjectInput.getPortObject()).size();
            }
            m_internals.getConfig().addLong(CFG_ROW_COUNT, count);
        }

        /**
         * {@inheritDoc}
         */
        @Override
        public StreamableOperatorInternals saveInternals() {
            return m_internals;
        }

        @Override
        public void runFinal(final PortInput[] inputs, final PortOutput[] outputs, final ExecutionContext exec) throws Exception {
            long rowCount = -1L;
            if (m_internals.getConfig().containsKey(CFG_ROW_COUNT)) {
                rowCount = m_internals.getConfig().getLong(CFG_ROW_COUNT);
            }
            RowOutput[] rowOutputs = (outputs instanceof RowOutput[]) ? (RowOutput[]) outputs : outputs.length > 1 ? new RowOutput[] { (RowOutput) outputs[0], (RowOutput) outputs[1] } : new RowOutput[] { (RowOutput) outputs[0] };
            execute((RowInput) inputs[0], rowOutputs, rowCount, exec);
        }
    };
}
Also used : DataTableSpec(org.knime.core.data.DataTableSpec) SimpleStreamableOperatorInternals(org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals) StreamableOperator(org.knime.core.node.streamable.StreamableOperator) StreamableOperatorInternals(org.knime.core.node.streamable.StreamableOperatorInternals) SimpleStreamableOperatorInternals(org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals) DataTableRowInput(org.knime.core.node.streamable.DataTableRowInput) RowInput(org.knime.core.node.streamable.RowInput) PortObjectInput(org.knime.core.node.streamable.PortObjectInput) BufferedDataTableRowOutput(org.knime.core.node.streamable.BufferedDataTableRowOutput) RowOutput(org.knime.core.node.streamable.RowOutput) ExecutionContext(org.knime.core.node.ExecutionContext) InvalidSettingsException(org.knime.core.node.InvalidSettingsException) BufferedDataTable(org.knime.core.node.BufferedDataTable) ParseException(java.text.ParseException)

Example 8 with PortObjectInput

use of org.knime.core.node.streamable.PortObjectInput in project knime-core by knime.

the class PMMLRuleSetPredictorNodeModel method createStreamableOperator.

/**
 * {@inheritDoc}
 */
@Override
public StreamableOperator createStreamableOperator(final PartitionInfo partitionInfo, final PortObjectSpec[] inSpecs) throws InvalidSettingsException {
    final DataTableSpec preSpec = (DataTableSpec) inSpecs[DATA_INDEX];
    return new StreamableOperator() {

        /**
         * {@inheritDoc}
         */
        @Override
        public void runFinal(final PortInput[] inputs, final PortOutput[] outputs, final ExecutionContext exec) throws Exception {
            final PortObjectInput modelPort = (PortObjectInput) inputs[MODEL_INDEX];
            final ColumnRearranger rearranger = createRearranger((PMMLPortObject) modelPort.getPortObject(), preSpec, m_doReplaceColumn.getBooleanValue(), m_doReplaceColumn.getBooleanValue() ? m_replaceColumn.getStringValue() : DataTableSpec.getUniqueColumnName(preSpec, m_outputColumn.getStringValue()), m_addConfidence.getBooleanValue(), m_confidenceColumn.getStringValue(), /*no validation column*/
            -1, /* no statistics computed, so concurrent processing is allowed*/
            true);
            final DataTableSpec tableSpec = rearranger.createSpec();
            if (m_doReplaceColumn.getBooleanValue()) {
                DataColumnSpec[] columns = new DataColumnSpec[preSpec.getNumColumns()];
                for (int i = columns.length; i-- > 0; ) {
                    columns[i] = preSpec.getColumnSpec(i);
                }
                int columnIndex = preSpec.findColumnIndex(m_replaceColumn.getStringValue());
                if (m_addConfidence.getBooleanValue()) {
                    // Move confidence to the end
                    rearranger.move(columnIndex, tableSpec.getNumColumns());
                    // Move the result to its place
                    rearranger.move(tableSpec.getNumColumns() - 2, columnIndex);
                }
            }
            final StreamableFunction function = rearranger.createStreamableFunction(DATA_INDEX, 0);
            function.runFinal(inputs, outputs, exec);
        }
    };
}
Also used : DataTableSpec(org.knime.core.data.DataTableSpec) ExecutionContext(org.knime.core.node.ExecutionContext) ColumnRearranger(org.knime.core.data.container.ColumnRearranger) DataColumnSpec(org.knime.core.data.DataColumnSpec) StreamableOperator(org.knime.core.node.streamable.StreamableOperator) StreamableFunction(org.knime.core.node.streamable.StreamableFunction) PortObjectInput(org.knime.core.node.streamable.PortObjectInput)

Aggregations

ExecutionContext (org.knime.core.node.ExecutionContext)8 PortObjectInput (org.knime.core.node.streamable.PortObjectInput)8 StreamableOperator (org.knime.core.node.streamable.StreamableOperator)8 DataTableSpec (org.knime.core.data.DataTableSpec)5 DataTableRowInput (org.knime.core.node.streamable.DataTableRowInput)5 BufferedDataTableRowOutput (org.knime.core.node.streamable.BufferedDataTableRowOutput)4 RowOutput (org.knime.core.node.streamable.RowOutput)4 ColumnRearranger (org.knime.core.data.container.ColumnRearranger)3 RowInput (org.knime.core.node.streamable.RowInput)3 ParseException (java.text.ParseException)2 BufferedDataTable (org.knime.core.node.BufferedDataTable)2 InvalidSettingsException (org.knime.core.node.InvalidSettingsException)2 PMMLPortObject (org.knime.core.node.port.pmml.PMMLPortObject)2 PortObjectOutput (org.knime.core.node.streamable.PortObjectOutput)2 StreamableOperatorInternals (org.knime.core.node.streamable.StreamableOperatorInternals)2 SimpleStreamableOperatorInternals (org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals)2 MutableLong (org.apache.commons.lang3.mutable.MutableLong)1 RowAppenderRowOutput (org.knime.base.node.rules.engine.RowAppenderRowOutput)1 Rule (org.knime.base.node.rules.engine.Rule)1 VariableProvider (org.knime.base.node.rules.engine.VariableProvider)1