package de.mpicbg.knime.scripting.r.node.generic.converttogeneric;
import org.knime.core.node.BufferedDataTable;
import org.knime.core.node.ExecutionContext;
import org.knime.core.node.InvalidSettingsException;
import org.knime.core.node.port.PortObject;
import org.knime.core.node.port.PortObjectSpec;
import de.mpicbg.knime.scripting.core.ScriptingModelConfig;
import de.mpicbg.knime.scripting.r.AbstractRScriptingNodeModel;
import de.mpicbg.knime.scripting.r.RColumnSupport;
import de.mpicbg.knime.scripting.r.port.RPortObject2;
import de.mpicbg.knime.scripting.r.port.RPortObjectSpec2;
/**
* A generic R node which transforms KNIME tables to generic R objects
*
* @author Antje Janosch
*/
public class ConvertToGenericRModel2 extends AbstractRScriptingNodeModel {
private static final ScriptingModelConfig nodeModelConfig = new ScriptingModelConfig(
createPorts(1, BufferedDataTable.TYPE, BufferedDataTable.class), // 1 data table input
createPorts(1, RPortObject2.TYPE, RPortObject2.class), // 1 generic output
new RColumnSupport(),
false, // no script
false, // no open in R
true); // use chunk settings
/**
* constructor
*/
public ConvertToGenericRModel2() {
super(nodeModelConfig);
}
/**
* {@inheritDoc}
*/
@Override
// note: This is not the usual configure but a more generic one with PortObjectSpec instead of DataTableSpec
protected PortObjectSpec[] configure(final PortObjectSpec[] inSpecs) throws InvalidSettingsException {
return new PortObjectSpec[]{RPortObjectSpec2.INSTANCE};
}
@Override
protected PortObject[] executeImpl(PortObject[] inData, ExecutionContext exec) throws Exception {
super.executeImpl(inData, exec);
return pullOutputFromR(exec);
}
}