Skip to content

Commit

Permalink
Some slight optimizations.
Browse files Browse the repository at this point in the history
  • Loading branch information
chenson42 committed Jun 4, 2010
1 parent f93747b commit 021d691
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 39 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
Expand Down Expand Up @@ -1072,7 +1071,7 @@ public Object[] getObjectValues(BinaryEncoding encoding, String[] values,
}
if (value != null) {
if (type == Types.DATE && !isDateOverrideToTimestamp()) {
objectValue = new Date(getTime(value, TIMESTAMP_PATTERNS));
objectValue = getDate(value, TIMESTAMP_PATTERNS);
} else if (type == Types.TIMESTAMP
|| (type == Types.DATE && isDateOverrideToTimestamp())) {
objectValue = new Timestamp(getTime(value, TIMESTAMP_PATTERNS));
Expand Down Expand Up @@ -1114,15 +1113,19 @@ public Object[] getObjectValues(BinaryEncoding encoding, String[] values,

return list.toArray();
}

private long getTime(String value, String[] pattern) {
final private java.util.Date getDate(String value, String[] pattern) {
try {
return DateUtils.parseDate(value, pattern).getTime();
return DateUtils.parseDate(value, pattern);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}

final private long getTime(String value, String[] pattern) {
return getDate(value, pattern).getTime();
}

public long insertWithGeneratedKey(final String sql, final SequenceIdentifier sequenceId,
final PreparedStatementCallback<Object> callback) {
return insertWithGeneratedKey(jdbcTemplate, sql, sequenceId, callback);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,12 @@ public String getTableName() {
return tableName;
}

public boolean isIgnoreThisTable() {
final public boolean isIgnoreThisTable() {
return table == null;
}

public int insert(IDataLoaderContext ctx, String[] columnValues) {
StatementBuilder st = getStatementBuilder(ctx, DmlType.INSERT);
StatementBuilder st = getStatementBuilder(ctx, DmlType.INSERT, columnNames);
return execute(ctx, st, columnValues);
}

Expand All @@ -137,7 +137,7 @@ public int update(IDataLoaderContext ctx, String[] columnValues, String[] keyVal
}
}
if (changedColumnNameList.size() > 0) {
st = createStatementBuilder(ctx, DmlType.UPDATE, changedColumnNameList
st = getStatementBuilder(ctx, DmlType.UPDATE, changedColumnNameList
.toArray(new String[changedColumnNameList.size()]));
columnValues = (String[]) changedColumnValueList
.toArray(new String[changedColumnValueList.size()]);
Expand All @@ -153,7 +153,7 @@ public int update(IDataLoaderContext ctx, String[] columnValues, String[] keyVal

}

protected boolean doesColumnNeedUpdated(IDataLoaderContext ctx, int columnIndex, Column column,
final private boolean doesColumnNeedUpdated(IDataLoaderContext ctx, int columnIndex, Column column,
String[] keyValues, String[] columnValues) {
boolean needsUpdated = true;
if (oldData != null) {
Expand Down Expand Up @@ -185,12 +185,12 @@ protected String getKeyValue(IDataLoaderContext ctx, Column column, String[] key
}

public int delete(IDataLoaderContext ctx, String[] keyValues) {
StatementBuilder st = getStatementBuilder(ctx, DmlType.DELETE);
StatementBuilder st = getStatementBuilder(ctx, DmlType.DELETE, columnNames);
return execute(ctx, st, keyValues);
}

public int count(IDataLoaderContext ctx, String[] keyValues) {
StatementBuilder st = getStatementBuilder(ctx, DmlType.COUNT);
StatementBuilder st = getStatementBuilder(ctx, DmlType.COUNT, columnNames);
Object[] objectValues = dbDialect.getObjectValues(ctx.getBinaryEncoding(), keyValues,
st.getKeys());
if (columnFilters != null) {
Expand All @@ -202,37 +202,35 @@ public int count(IDataLoaderContext ctx, String[] keyValues) {
return jdbcTemplate.queryForInt(st.getSql(), objectValues, st.getTypes());
}

private StatementBuilder getStatementBuilder(IDataLoaderContext ctx, DmlType type) {
final private StatementBuilder getStatementBuilder(IDataLoaderContext ctx, DmlType type,
String[] statementColumnNames) {
StatementBuilder st = statementMap.get(type);
if (st == null) {
st = createStatementBuilder(ctx, type, columnNames);
statementMap.put(type, st);
}
return st;
}
String[] preFilteredColumnNames = statementColumnNames;
if (columnFilters != null) {
for (IColumnFilter columnFilter : columnFilters) {
statementColumnNames = columnFilter.filterColumnsNames(ctx, type, getTable(),
statementColumnNames);
}
}

private StatementBuilder createStatementBuilder(IDataLoaderContext ctx, DmlType type,
String[] statementColumnNames) {
String[] preFilteredColumnNames = statementColumnNames;
if (columnFilters != null) {
for (IColumnFilter columnFilter : columnFilters) {
statementColumnNames = columnFilter.filterColumnsNames(ctx, type, getTable(),
statementColumnNames);
String tableName = table.getName();
if (!StringUtils.isBlank(schema)) {
tableName = schema + "." + tableName;
}
}
if (!StringUtils.isBlank(catalog)) {
tableName = catalog + "." + tableName;
}
st = new StatementBuilder(type, tableName, getColumnMetaData(keyNames),
getColumnMetaData(statementColumnNames),
getColumnMetaData(preFilteredColumnNames), dbDialect
.isDateOverrideToTimestamp(), dbDialect.getIdentifierQuoteString());

String tableName = table.getName();
if (!StringUtils.isBlank(schema)) {
tableName = schema + "." + tableName;
}
if (!StringUtils.isBlank(catalog)) {
tableName = catalog + "." + tableName;
if (type != DmlType.UPDATE) {
statementMap.put(type, st);
}
}
return new StatementBuilder(type, tableName, getColumnMetaData(keyNames),
getColumnMetaData(statementColumnNames),
getColumnMetaData(preFilteredColumnNames),
dbDialect.isDateOverrideToTimestamp(),
dbDialect.getIdentifierQuoteString());
return st;
}

public Object[] getObjectValues(IDataLoaderContext ctx, String[] values) {
Expand All @@ -243,7 +241,7 @@ public Object[] getObjectKeyValues(IDataLoaderContext ctx, String[] values) {
return dbDialect.getObjectValues(ctx.getBinaryEncoding(), values, getColumnMetaData(keyNames));
}

private int execute(IDataLoaderContext ctx, StatementBuilder st, String[] values) {
final private int execute(IDataLoaderContext ctx, StatementBuilder st, String[] values) {
Object[] objectValues = dbDialect.getObjectValues(ctx.getBinaryEncoding(), values, st
.getMetaData(true));
if (columnFilters != null) {
Expand All @@ -270,12 +268,12 @@ public void setOldData(String[] oldData) {
this.oldData = oldData;
}

private void clear() {
final private void clear() {
statementMap.clear();
oldData = null;
}

private Column[] getColumnMetaData(String[] names) {
final private Column[] getColumnMetaData(String[] names) {
Column[] columns = new Column[names.length];
for (int i = 0; i < names.length; i++) {
columns[i] = allMetaData.get(names[i].trim().toUpperCase());
Expand Down

0 comments on commit 021d691

Please sign in to comment.