use of org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals 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);
}
};
}
use of org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals in project knime-core by knime.
the class RuleEngineNodeModel method createMergeOperator.
/**
* {@inheritDoc}
*/
@Override
public MergeOperator createMergeOperator() {
return new MergeOperator() {
/**
* {@inheritDoc}
*/
@Override
public StreamableOperatorInternals mergeIntermediate(final StreamableOperatorInternals[] operators) {
// sum up the row counts if necessary
long count = 0;
for (int i = 0; i < operators.length; i++) {
SimpleStreamableOperatorInternals simpleInternals = (SimpleStreamableOperatorInternals) operators[i];
CheckUtils.checkState(simpleInternals.getConfig().containsKey(CFG_ROW_COUNT), "Config for key " + CFG_ROW_COUNT + " isn't set.");
try {
count += simpleInternals.getConfig().getLong(CFG_ROW_COUNT);
} catch (InvalidSettingsException e) {
// should not happen since we checked already
throw new RuntimeException(e);
}
}
SimpleStreamableOperatorInternals res = new SimpleStreamableOperatorInternals();
if (count > 0) {
res.getConfig().addLong(CFG_ROW_COUNT, count);
}
return res;
}
@Override
public StreamableOperatorInternals mergeFinal(final StreamableOperatorInternals[] operators) {
// nothing to do here
return null;
}
};
}
use of org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals in project knime-core by knime.
the class JavaRowSplitterNodeModel method saveLong.
private static SimpleStreamableOperatorInternals saveLong(final long rowCount) {
SimpleStreamableOperatorInternals internals = new SimpleStreamableOperatorInternals();
internals.getConfig().addLong(SIMPLE_STREAMABLE_ROWCOUNT_KEY, rowCount);
return internals;
}
use of org.knime.core.node.streamable.simple.SimpleStreamableOperatorInternals in project knime-core by knime.
the class AbstractConditionalStreamingNodeModel method createStreamableOperator.
/**
* {@inheritDoc}
*/
@Override
public StreamableOperator createStreamableOperator(final PartitionInfo partitionInfo, final PortObjectSpec[] inSpecs) throws InvalidSettingsException {
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;
RowInput rowInput = (RowInput) inputs[0];
while (rowInput.poll() != null) {
count++;
}
m_internals.getConfig().addLong(CFG_ROW_COUNT, count);
}
@Override
public void runFinal(final PortInput[] inputs, final PortOutput[] outputs, final ExecutionContext exec) throws Exception {
long rowCount = -1;
if (m_internals.getConfig().containsKey(CFG_ROW_COUNT)) {
rowCount = m_internals.getConfig().getLong(CFG_ROW_COUNT);
}
StreamableFunction func = createColumnRearranger((DataTableSpec) inSpecs[0], rowCount).createStreamableFunction();
func.runFinal(inputs, outputs, exec);
}
/**
* {@inheritDoc}
*/
@Override
public StreamableOperatorInternals saveInternals() {
return m_internals;
}
};
}
Aggregations