Search in sources :

Example 1 with BufferedDataTableRowOutput

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

the class RuleEngineFilter2PortsNodeModel method execute.

/**
 * {@inheritDoc}
 */
@Override
protected BufferedDataTable[] execute(final BufferedDataTable[] inData, final ExecutionContext exec) throws Exception {
    BufferedDataTable ruleTable = inData[RuleEngine2PortsNodeModel.RULE_PORT];
    BufferedDataTable dataTable = inData[RuleEngine2PortsNodeModel.DATA_PORT];
    // m_rulesList.clear();
    // m_rulesList.addAll(RuleEngineVariable2PortsNodeModel.rules(ruleTable, m_settings, RuleNodeSettings.RuleFilter));
    // final List<Rule> rules = parseRules(dataTable.getDataTableSpec(), RuleNodeSettings.RuleFilter);
    final BufferedDataContainer first = exec.createDataContainer(dataTable.getDataTableSpec(), true);
    final int nrOutPorts = getNrOutPorts();
    final RowAppender second = nrOutPorts > 1 ? exec.createDataContainer(dataTable.getDataTableSpec(), true) : new RowAppender() {

        @Override
        public void addRowToTable(final DataRow row) {
        // do nothing
        }
    };
    // final RowAppender[] containers = new RowAppender[]{first, second};
    // final int matchIndex = m_includeOnMatch ? 0 : 1;
    // final int otherIndex = 1 - matchIndex;
    // 
    final BufferedDataTable[] ret = new BufferedDataTable[nrOutPorts];
    // try {
    // final MutableLong rowIdx = new MutableLong();
    // final long rows = inData[DATA_PORT].size();
    // final VariableProvider provider = new VariableProvider() {
    // @Override
    // public Object readVariable(final String name, final Class<?> type) {
    // return RuleEngineFilter2PortsNodeModel.this.readVariable(name, type);
    // }
    // 
    // @Override
    // @Deprecated
    // public int getRowCount() {
    // throw new UnsupportedOperationException();
    // }
    // 
    // @Override
    // public long getRowCountLong() {
    // return rows;
    // }
    // 
    // @Override
    // @Deprecated
    // public int getRowIndex() {
    // throw new UnsupportedOperationException();
    // }
    // 
    // @Override
    // public long getRowIndexLong() {
    // return rowIdx.longValue();
    // }
    // };
    // for (DataRow row : inData[DATA_PORT]) {
    // rowIdx.increment();
    // exec.setProgress(rowIdx.longValue() / (double)rows, "Adding row " + rowIdx.longValue() + " of " + rows);
    // exec.checkCanceled();
    // boolean wasMatch = false;
    // for (final Rule r : rules) {
    // if (r.getCondition().matches(row, provider).getOutcome() == MatchState.matchedAndStop) {
    // //                        r.getSideEffect().perform(row, provider);
    // DataValue value = r.getOutcome().getComputedResult(row, provider);
    // if (value instanceof BooleanValue) {
    // final BooleanValue bv = (BooleanValue)value;
    // containers[bv.getBooleanValue() ? matchIndex : otherIndex].addRowToTable(row);
    // } else {
    // containers[matchIndex].addRowToTable(row);
    // }
    // wasMatch = true;
    // break;
    // }
    // }
    // if (!wasMatch) {
    // containers[otherIndex].addRowToTable(row);
    // }
    // }
    // } finally {
    // first.close();
    // ret[0] = first.getTable();
    // if (second instanceof BufferedDataContainer) {
    // BufferedDataContainer container = (BufferedDataContainer)second;
    // container.close();
    // ret[1] = container.getTable();
    // }
    // }
    final PortOutput[] outputs = new PortOutput[] { new BufferedDataTableRowOutput(first), new RowAppenderRowOutput(second) };
    final StreamableOperator streamableOperator = createStreamableOperator(new PartitionInfo(0, 1), new DataTableSpec[] { inData[0].getSpec(), inData[1].getSpec() });
    final PortInput[] inputs = new PortInput[] { new DataTableRowInput(dataTable), new DataTableRowInput(ruleTable) };
    final SimpleStreamableOperatorInternals internals = new SimpleStreamableOperatorInternals();
    internals.getConfig().addLong(CFG_ROW_COUNT, dataTable.size());
    streamableOperator.loadInternals(internals);
    streamableOperator.runFinal(inputs, outputs, exec);
    ret[0] = first.getTable();
    if (ret.length > 1) {
        ret[1] = ((BufferedDataContainer) second).getTable();
    }
    return ret;
}
Also used : SimpleStreamableOperatorInternals(org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals) BufferedDataContainer(org.knime.core.node.BufferedDataContainer) StreamableOperator(org.knime.core.node.streamable.StreamableOperator) PortOutput(org.knime.core.node.streamable.PortOutput) DataRow(org.knime.core.data.DataRow) RowAppender(org.knime.core.data.container.RowAppender) BufferedDataTable(org.knime.core.node.BufferedDataTable) RowAppenderRowOutput(org.knime.base.node.rules.engine.RowAppenderRowOutput) DataTableRowInput(org.knime.core.node.streamable.DataTableRowInput) PartitionInfo(org.knime.core.node.streamable.PartitionInfo) BufferedDataTableRowOutput(org.knime.core.node.streamable.BufferedDataTableRowOutput) PortInput(org.knime.core.node.streamable.PortInput)

Example 2 with BufferedDataTableRowOutput

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

the class RuleEngineFilterNodeModel method execute.

/**
 * {@inheritDoc}
 */
@Override
protected BufferedDataTable[] execute(final BufferedDataTable[] inData, final ExecutionContext exec) throws Exception {
    RowInput input = new DataTableRowInput(inData[0]);
    final BufferedDataContainer first = exec.createDataContainer(inData[0].getDataTableSpec(), true);
    final int nrOutPorts = getNrOutPorts();
    final BufferedDataContainer second = exec.createDataContainer(inData[0].getDataTableSpec(), true);
    BufferedDataTableRowOutput[] outputs = new BufferedDataTableRowOutput[] { new BufferedDataTableRowOutput(first), new BufferedDataTableRowOutput(second) };
    execute(input, outputs, inData[0].size(), exec);
    return nrOutPorts == 2 ? new BufferedDataTable[] { outputs[0].getDataTable(), outputs[1].getDataTable() } : new BufferedDataTable[] { outputs[0].getDataTable() };
}
Also used : BufferedDataContainer(org.knime.core.node.BufferedDataContainer) DataTableRowInput(org.knime.core.node.streamable.DataTableRowInput) DataTableRowInput(org.knime.core.node.streamable.DataTableRowInput) RowInput(org.knime.core.node.streamable.RowInput) BufferedDataTableRowOutput(org.knime.core.node.streamable.BufferedDataTableRowOutput)

Example 3 with BufferedDataTableRowOutput

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

the class SampleDataNodeModel method execute.

/**
 * {@inheritDoc}
 */
@Override
protected BufferedDataTable[] execute(final BufferedDataTable[] data, final ExecutionContext exec) throws Exception {
    DataTableSpec[] outSpecs = configure(new DataTableSpec[2]);
    DataTableSpec dataSpec = outSpecs[0];
    DataTableSpec clusterSpec = outSpecs[1];
    BufferedDataTableRowOutput dataOut = new BufferedDataTableRowOutput(exec.createDataContainer(dataSpec));
    BufferedDataTableRowOutput clusterOut = new BufferedDataTableRowOutput(exec.createDataContainer(clusterSpec));
    run(dataSpec, dataOut, clusterSpec, clusterOut, exec);
    return new BufferedDataTable[] { dataOut.getDataTable(), clusterOut.getDataTable() };
}
Also used : DataTableSpec(org.knime.core.data.DataTableSpec) BufferedDataTable(org.knime.core.node.BufferedDataTable) BufferedDataTableRowOutput(org.knime.core.node.streamable.BufferedDataTableRowOutput)

Example 4 with BufferedDataTableRowOutput

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

the class UngroupOperation method compute.

/**
 * @param exec the execution context
 * @return the table with the ungrouped collections
 * @throws Exception the thrown exception
 */
public BufferedDataTable compute(final ExecutionContext exec) throws Exception {
    final BufferedDataContainer dc = exec.createDataContainer(m_newSpec);
    if (m_table.size() == 0) {
        dc.close();
        return dc.getTable();
    }
    DataTableRowInput in = new DataTableRowInput(m_table);
    BufferedDataTableRowOutput out = new BufferedDataTableRowOutput(dc);
    compute(in, out, exec, m_table.size());
    in.close();
    out.close();
    return out.getDataTable();
}
Also used : BufferedDataContainer(org.knime.core.node.BufferedDataContainer) DataTableRowInput(org.knime.core.node.streamable.DataTableRowInput) BufferedDataTableRowOutput(org.knime.core.node.streamable.BufferedDataTableRowOutput)

Example 5 with BufferedDataTableRowOutput

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

the class FilterApplyNodeModel method execute.

/**
 * {@inheritDoc}
 */
@Override
protected PortObject[] execute(final PortObject[] inObjects, final ExecutionContext exec) throws Exception {
    exec.setProgress(0);
    PortObject portObject = inObjects[1];
    DataTableSpec filterSpec = portObject == null ? ((BufferedDataTable) inObjects[0]).getDataTableSpec() : ((FilterDefinitionHandlerPortObject) portObject).getSpec();
    final BufferedDataTableRowOutput out = new BufferedDataTableRowOutput(exec.createDataContainer(((BufferedDataTable) inObjects[0]).getDataTableSpec()));
    execute(new DataTableRowInput((BufferedDataTable) inObjects[0]), out, filterSpec, exec, ((BufferedDataTable) inObjects[0]).size());
    return new BufferedDataTable[] { out.getDataTable() };
}
Also used : DataTableSpec(org.knime.core.data.DataTableSpec) BufferedDataTable(org.knime.core.node.BufferedDataTable) DataTableRowInput(org.knime.core.node.streamable.DataTableRowInput) FilterDefinitionHandlerPortObject(org.knime.core.node.port.viewproperty.FilterDefinitionHandlerPortObject) PortObject(org.knime.core.node.port.PortObject) BufferedDataTableRowOutput(org.knime.core.node.streamable.BufferedDataTableRowOutput)

Aggregations

BufferedDataTableRowOutput (org.knime.core.node.streamable.BufferedDataTableRowOutput)18 DataTableRowInput (org.knime.core.node.streamable.DataTableRowInput)14 BufferedDataTable (org.knime.core.node.BufferedDataTable)13 DataTableSpec (org.knime.core.data.DataTableSpec)9 BufferedDataContainer (org.knime.core.node.BufferedDataContainer)8 RowInput (org.knime.core.node.streamable.RowInput)6 ColumnRearranger (org.knime.core.data.container.ColumnRearranger)4 RowOutput (org.knime.core.node.streamable.RowOutput)4 DataRow (org.knime.core.data.DataRow)3 DataCell (org.knime.core.data.DataCell)2 RowKey (org.knime.core.data.RowKey)2 PortObject (org.knime.core.node.port.PortObject)2 FilterDefinitionHandlerPortObject (org.knime.core.node.port.viewproperty.FilterDefinitionHandlerPortObject)2 PartitionInfo (org.knime.core.node.streamable.PartitionInfo)2 PortInput (org.knime.core.node.streamable.PortInput)2 PortOutput (org.knime.core.node.streamable.PortOutput)2 StreamableOperator (org.knime.core.node.streamable.StreamableOperator)2 SimpleStreamableOperatorInternals (org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals)2 File (java.io.File)1 IOException (java.io.IOException)1