Skip to content

Commit

Permalink
bug in my refactor of table template
Browse files Browse the repository at this point in the history
  • Loading branch information
chenson42 committed May 27, 2010
1 parent d259c43 commit 94da42c
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 15 deletions.
Expand Up @@ -48,16 +48,13 @@ public enum DmlType {

protected Column[] columns;

protected Column[] columnKeyMetaData;

protected Column[] noKeyColumnPlusKeyMetaData;

protected int[] keyIndexesToRemoveOnUpdate;
protected Column[] preFilteredColumns;

public StatementBuilder(DmlType type, String tableName, Column[] keys, Column[] columns,
boolean isDateOverrideToTimestamp, String identifierQuoteString) {
Column[] preFilteredColumns, boolean isDateOverrideToTimestamp, String identifierQuoteString) {
this.keys = keys;
this.columns = columns;
this.preFilteredColumns = preFilteredColumns;
quote = identifierQuoteString == null ? "" : identifierQuoteString;
if (type == DmlType.INSERT) {
sql = buildInsertSql(tableName, columns);
Expand Down Expand Up @@ -235,15 +232,19 @@ public Column[] getColumns() {
return columns;
}

public Column[] getColumnKeyMetaData() {
return (Column[]) ArrayUtils.addAll(columns, keys);
public Column[] getColumnKeyMetaData(boolean prefiltered) {
if (prefiltered) {
return (Column[]) ArrayUtils.addAll(preFilteredColumns, keys);
} else {
return (Column[]) ArrayUtils.addAll(columns, keys);
}
}

public Column[] getMetaData() {
public Column[] getMetaData(boolean prefiltered) {
switch (dmlType) {
case UPDATE:
case UPDATE_NO_KEYS:
return getColumnKeyMetaData();
return getColumnKeyMetaData(prefiltered);
case INSERT:
return getColumns();
case DELETE:
Expand All @@ -256,4 +257,7 @@ public Column[] getKeys() {
return keys;
}

public Column[] getPreFilteredColumns() {
return preFilteredColumns;
}
}
Expand Up @@ -212,11 +212,12 @@ private StatementBuilder getStatementBuilder(IDataLoaderContext ctx, DmlType typ
}

private StatementBuilder createStatementBuilder(IDataLoaderContext ctx, DmlType type,
String[] filteredColumnNames) {
String[] statementColumnNames) {
String[] preFilteredColumnNames = statementColumnNames;
if (columnFilters != null) {
for (IColumnFilter columnFilter : columnFilters) {
filteredColumnNames = columnFilter.filterColumnsNames(ctx, type, getTable(),
filteredColumnNames);
statementColumnNames = columnFilter.filterColumnsNames(ctx, type, getTable(),
statementColumnNames);
}
}

Expand All @@ -228,7 +229,9 @@ private StatementBuilder createStatementBuilder(IDataLoaderContext ctx, DmlType
tableName = catalog + "." + tableName;
}
return new StatementBuilder(type, tableName, getColumnMetaData(keyNames),
getColumnMetaData(filteredColumnNames), dbDialect.isDateOverrideToTimestamp(),
getColumnMetaData(statementColumnNames),
getColumnMetaData(preFilteredColumnNames),
dbDialect.isDateOverrideToTimestamp(),
dbDialect.getIdentifierQuoteString());
}

Expand All @@ -242,7 +245,7 @@ public Object[] getObjectKeyValues(IDataLoaderContext ctx, String[] values) {

private int execute(IDataLoaderContext ctx, StatementBuilder st, String[] values) {
Object[] objectValues = dbDialect.getObjectValues(ctx.getBinaryEncoding(), values, st
.getMetaData());
.getMetaData(true));
if (columnFilters != null) {
for (IColumnFilter columnFilter : columnFilters) {
objectValues = columnFilter.filterColumnsValues(ctx, st.getDmlType(), getTable(),
Expand Down

0 comments on commit 94da42c

Please sign in to comment.