use of org.knime.core.node.port.database.tablecreator.DBKey in project knime-core by knime.
the class KeyElement method loadSettingsFrom.
/**
* {@inheritDoc}
*/
@Override
protected void loadSettingsFrom(final NodeSettingsRO settings) {
try {
final String name = settings.getString(CFG_KEY_NAME);
// Load all columns
final NodeSettingsRO cfg = settings.getNodeSettings(CFG_KEY_COLUMNS);
final Set<DBColumn> dbColumns = new LinkedHashSet<>();
for (String settingsKey : cfg.keySet()) {
final String colName = cfg.getString(settingsKey);
DBColumn col = new DBColumn(colName, "", false);
dbColumns.add(col);
}
final boolean primaryKey = settings.getBoolean(CFG_KEY_PRIMARY);
m_key = new DBKey(name, dbColumns, primaryKey);
} catch (InvalidSettingsException ex) {
// Do nothing if no settings are found
}
}
use of org.knime.core.node.port.database.tablecreator.DBKey in project knime-core by knime.
the class DBTableCreatorNodeModel method configure.
/**
* {@inheritDoc}
*/
@Override
protected PortObjectSpec[] configure(final PortObjectSpec[] inSpecs) throws InvalidSettingsException {
if (inSpecs[0] == null && !(inSpecs[0] instanceof DatabaseConnectionPortObjectSpec)) {
throw new InvalidSettingsException("No valid database connection available.");
}
final DatabaseConnectionPortObjectSpec dbSpec = (DatabaseConnectionPortObjectSpec) inSpecs[0];
m_config.setTableSpec((DataTableSpec) inSpecs[1]);
final boolean isColumnsEmpty = m_config.getColumns().isEmpty();
if (m_config.getTableSpec() != null && (m_config.useDynamicSettings() || isColumnsEmpty)) {
m_config.loadColumnSettingsFromTableSpec(m_config.getTableSpec());
m_config.updateKeysWithDynamicSettings();
}
if (m_config.getTableSpec() == null && m_config.useDynamicSettings()) {
throw new InvalidSettingsException("Dynamic settings enabled but no input table available.");
}
if (isColumnsEmpty) {
throw new InvalidSettingsException("At least one column must be defined.");
}
final DatabaseConnectionSettings conn = dbSpec.getConnectionSettings(getCredentialsProvider());
final DBTableCreator tableCreator = conn.getUtility().getTableCreator(m_config.getSchema(), getTableName(), m_config.isTempTable());
final List<DBColumn> columns = m_config.getColumns();
final List<DBKey> keys = m_config.getKeys();
try {
tableCreator.validateSettings(m_config.ifNotExists(), columns.toArray(new DBColumn[columns.size()]), keys.toArray(new DBKey[keys.size()]), m_config.getAdditionalOptions());
} catch (Exception e) {
throw new InvalidSettingsException(e.getMessage());
}
pushFlowVariables(tableCreator.getSchema(), tableCreator.getTableName());
return new PortObjectSpec[] { dbSpec };
}
use of org.knime.core.node.port.database.tablecreator.DBKey in project knime-core by knime.
the class DBTableCreatorNodeModel method execute.
/**
* {@inheritDoc}
*/
@Override
protected PortObject[] execute(final PortObject[] inData, final ExecutionContext exec) throws Exception {
exec.setMessage("Creating table");
final DatabaseConnectionPortObject dbConn = (DatabaseConnectionPortObject) inData[0];
final DatabaseConnectionSettings conn = dbConn.getConnectionSettings(getCredentialsProvider());
final DBTableCreator tableCreator = conn.getUtility().getTableCreator(m_config.getSchema(), getTableName(), m_config.isTempTable());
final List<DBColumn> columns = m_config.getColumns();
final List<DBKey> keys = m_config.getKeys();
tableCreator.createTable(conn, getCredentialsProvider(), m_config.ifNotExists(), columns.toArray(new DBColumn[columns.size()]), keys.toArray(new DBKey[keys.size()]), m_config.getAdditionalOptions());
pushFlowVariables(tableCreator.getSchema(), tableCreator.getTableName());
final String warning = tableCreator.getWarning();
if (!StringUtils.isBlank(warning)) {
setWarningMessage(warning);
}
return new PortObject[] { dbConn };
}
Aggregations