package de.mpicbg.knime.scripting.r.node.generic.converttotable;
import org.knime.core.data.DataTableSpec;
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;
/**
* Model: A generic R node which pulls a an R data frame and returns it as KNIME table
*
* @author Holger Brandl, Antje Janosch
*/
public class ConvertToTableNodeModel2 extends AbstractRScriptingNodeModel {
public static final ScriptingModelConfig nodeModelConfig = new ScriptingModelConfig(
createPorts(1, RPortObject2.TYPE, RPortObject2.class), // 1 generic input
createPorts(1, BufferedDataTable.TYPE, BufferedDataTable.class), // 1 KNIME table output
new RColumnSupport(),
true, // use script
true, // provide open in R
true); // use chunks
public static final String GENERIC_TOTABLE_DFT = "rOut <- iris";
/**
* constructor
*/
public ConvertToTableNodeModel2() {
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 {
super.configure(inSpecs);
return new PortObjectSpec[]{(DataTableSpec) null};
}
@Override
protected PortObject[] executeImpl(PortObject[] inData, ExecutionContext exec) throws Exception {
super.executeImpl(inData, exec);
runScript(exec);
return pullOutputFromR(exec);
}
@Override
public String getDefaultScript(String defaultScString) {
return super.getDefaultScript(GENERIC_TOTABLE_DFT);
}
}