*/
private void _execute() {
// Create column list
String columnList = createColumnList();
ISQLConnection conn = session.getSQLConnection();
StringBuffer insertSQL = new StringBuffer();
insertSQL.append("insert into ").append(table.getQualifiedName());
insertSQL.append(" (").append(columnList).append(") ");
insertSQL.append("VALUES ");
insertSQL.append(" (").append(getQuestionMarks(getColumnCount())).append(")");
PreparedStatement stmt = null;
boolean autoCommit = false;
int rows = 0;
boolean success = false;
try {
DataImportPreferenceBean settings = PreferencesManager.getPreferences();
importer.open();
if (skipHeader)
importer.next();
autoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
if (settings.isUseTruncate()) {
String sql = "DELETE FROM " + table.getQualifiedName();
stmt = conn.prepareStatement(sql);
stmt.execute();
stmt.close();
}
stmt = conn.prepareStatement(insertSQL.toString());
//i18n[ImportDataIntoTableExecutor.importingDataInto=Importing data into {0}]
ProgressBarDialog.getDialog(session.getApplication().getMainFrame(), stringMgr.getString("ImportDataIntoTableExecutor.importingDataInto", table.getSimpleName()), false, null);
int inputLines = importer.getRows();
if (inputLines > 0) {
ProgressBarDialog.setBarMinMax(0, inputLines == -1 ? 5000 : inputLines);
} else {
ProgressBarDialog.setIndeterminate();
}
while (importer.next()) {
rows++;
if (inputLines > 0) {
ProgressBarDialog.incrementBar(1);
}
stmt.clearParameters();
int i = 1;
for (TableColumnInfo column : columns) {
String mapping = getMapping(column);
try {
if (SpecialColumnMapping.SKIP.getVisibleString().equals(mapping)) {
continue;
} else if (SpecialColumnMapping.FIXED_VALUE.getVisibleString().equals(mapping)) {
bindFixedColumn(stmt, i++, column);
} else if (SpecialColumnMapping.AUTO_INCREMENT.getVisibleString().equals(mapping)) {
bindAutoincrementColumn(stmt, i++, column, rows);
} else if (SpecialColumnMapping.NULL.getVisibleString().equals(mapping)) {
stmt.setNull(i++, column.getDataType());
} else {
bindColumn(stmt, i++, column);
}
} catch (UnsupportedFormatException ufe) {
// i18n[ImportDataIntoTableExecutor.wrongFormat=Imported column has not the required format.\nLine is: {0}, column is: {1}]
JOptionPane.showMessageDialog(session.getApplication().getMainFrame(), stringMgr.getString("ImportDataIntoTableExecutor.wrongFormat", new Object[] { rows, i-1 }));
throw ufe;
}
}
stmt.execute();
}
conn.commit();
conn.setAutoCommit(autoCommit);
importer.close();
success = true;
} catch (SQLException sqle) {
//i18n[ImportDataIntoTableExecutor.sqlException=A database error occured while inserting data]
//i18n[ImportDataIntoTableExecutor.error=Error]
JOptionPane.showMessageDialog(session.getApplication().getMainFrame(), stringMgr.getString("ImportDataIntoTableExecutor.sqlException"), stringMgr.getString("ImportDataIntoTableExecutor.error"), JOptionPane.ERROR_MESSAGE);
log.error("Database error", sqle);
} catch (UnsupportedFormatException ufe) {
try {
conn.rollback();
} catch (Exception e) {
log.error("Unexpected exception while attempting to rollback: "
+e.getMessage(), e);
}
log.error("Unsupported format.", ufe);