diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/route/AbstractDataRouter.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/route/AbstractDataRouter.java index 70e61b23a7..ff0987c4b1 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/route/AbstractDataRouter.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/route/AbstractDataRouter.java @@ -21,7 +21,6 @@ package org.jumpmind.symmetric.route; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -35,6 +34,7 @@ import org.jumpmind.symmetric.model.DataMetaData; import org.jumpmind.symmetric.model.Node; import org.jumpmind.symmetric.model.OutgoingBatch; +import org.jumpmind.util.LinkedCaseInsensitiveMap; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,23 +55,23 @@ protected Map getDataMap(DataMetaData dataMetaData, ISymmetricDi DataEventType dml = dataMetaData.getData().getDataEventType(); switch (dml) { case UPDATE: - data = new HashMap(dataMetaData.getTable().getColumnCount() * 4); + data = new LinkedCaseInsensitiveMap(dataMetaData.getTable().getColumnCount() * 4); data.putAll(getNewDataAsString(null, dataMetaData, symmetricDialect)); data.putAll(getOldDataAsString(OLD_, dataMetaData, symmetricDialect)); break; case INSERT: - data = new HashMap(dataMetaData.getTable().getColumnCount() * 4); + data = new LinkedCaseInsensitiveMap(dataMetaData.getTable().getColumnCount() * 4); data.putAll(getNewDataAsString(null, dataMetaData, symmetricDialect)); Map map = getNullData(OLD_, dataMetaData); data.putAll(map); break; case DELETE: - data = new HashMap(dataMetaData.getTable().getColumnCount() * 4); + data = new LinkedCaseInsensitiveMap(dataMetaData.getTable().getColumnCount() * 4); data.putAll(getOldDataAsString(null, dataMetaData, symmetricDialect)); data.putAll(getOldDataAsString(OLD_, dataMetaData, symmetricDialect)); break; default: - data = new HashMap(1); + data = new LinkedCaseInsensitiveMap(1); break; } @@ -97,7 +97,7 @@ protected Map getOldDataAsString(String prefix, DataMetaData dat protected Map getDataAsString(String prefix, DataMetaData dataMetaData, ISymmetricDialect symmetricDialect, String[] rowData) { String[] columns = dataMetaData.getTriggerHistory().getParsedColumnNames(); - Map map = new HashMap(columns.length * 2); + Map map = new LinkedCaseInsensitiveMap(columns.length * 2); if (rowData != null) { testColumnNamesMatchValues(dataMetaData, symmetricDialect, columns, rowData); for (int i = 0; i < columns.length; i++) { @@ -113,7 +113,7 @@ protected Map getDataAsString(String prefix, DataMetaData dataMe protected Map getPkDataAsString(DataMetaData dataMetaData, ISymmetricDialect symmetricDialect) { String[] columns = dataMetaData.getTriggerHistory().getParsedPkColumnNames(); String[] rowData = dataMetaData.getData().toParsedPkData(); - Map map = new HashMap(columns.length); + Map map = new LinkedCaseInsensitiveMap(columns.length); if (rowData != null) { testColumnNamesMatchValues(dataMetaData, symmetricDialect, columns, rowData); for (int i = 0; i < columns.length; i++) { @@ -130,18 +130,18 @@ protected Map getDataObjectMap(DataMetaData dataMetaData, DataEventType dml = dataMetaData.getData().getDataEventType(); switch (dml) { case UPDATE: - data = new HashMap(dataMetaData.getTable().getColumnCount() * 2); + data = new LinkedCaseInsensitiveMap(dataMetaData.getTable().getColumnCount() * 2); data.putAll(getNewDataAsObject(null, dataMetaData, symmetricDialect, upperCase)); data.putAll(getOldDataAsObject(OLD_, dataMetaData, symmetricDialect, upperCase)); break; case INSERT: - data = new HashMap(dataMetaData.getTable().getColumnCount() * 2); + data = new LinkedCaseInsensitiveMap(dataMetaData.getTable().getColumnCount() * 2); data.putAll(getNewDataAsObject(null, dataMetaData, symmetricDialect, upperCase)); Map map = getNullData(OLD_, dataMetaData); data.putAll(map); break; case DELETE: - data = new HashMap(dataMetaData.getTable().getColumnCount() * 2); + data = new LinkedCaseInsensitiveMap(dataMetaData.getTable().getColumnCount() * 2); data.putAll(getOldDataAsObject(null, dataMetaData, symmetricDialect, upperCase)); data.putAll(getOldDataAsObject(OLD_, dataMetaData, symmetricDialect, upperCase)); if (data.size() == 0) { @@ -158,7 +158,7 @@ protected Map getDataObjectMap(DataMetaData dataMetaData, if (StringUtils.isNotBlank(dataMetaData.getData().getExternalData())) { if (data == null) { - data = new HashMap(1); + data = new LinkedCaseInsensitiveMap(1); } data.put("EXTERNAL_DATA", dataMetaData.getData().getExternalData()); } else if (data != null) { @@ -181,7 +181,7 @@ protected Map getOldDataAsObject(String prefix, DataMetaData dat protected Map getNullData(String prefix, DataMetaData dataMetaData) { String[] columnNames = dataMetaData.getTriggerHistory().getParsedColumnNames(); - Map data = new HashMap(columnNames.length * 2); + Map data = new LinkedCaseInsensitiveMap(columnNames.length * 2); for (String columnName : columnNames) { columnName = prefix != null ? prefix + columnName : columnName; data.put(columnName, null); @@ -193,7 +193,7 @@ protected Map getNullData(String prefix, DataMetaData dataMetaDat protected Map getDataAsObject(String prefix, DataMetaData dataMetaData, ISymmetricDialect symmetricDialect, String[] rowData, boolean upperCase) { if (rowData != null) { - Map data = new HashMap(rowData.length); + Map data = new LinkedCaseInsensitiveMap(rowData.length); String[] columnNames = dataMetaData.getTriggerHistory().getParsedColumnNames(); Object[] objects = symmetricDialect.getPlatform().getObjectValues( symmetricDialect.getBinaryEncoding(), dataMetaData.getTable(), columnNames, @@ -233,7 +233,7 @@ protected Map getPkDataAsObject(DataMetaData dataMetaData, ISymmetricDialect symmetricDialect) { String[] rowData = dataMetaData.getData().toParsedPkData(); if (rowData != null) { - Map data = new HashMap(rowData.length); + Map data = new LinkedCaseInsensitiveMap(rowData.length); String[] columnNames = dataMetaData.getTriggerHistory().getParsedColumnNames(); Object[] objects = symmetricDialect.getPlatform().getObjectValues( symmetricDialect.getBinaryEncoding(), dataMetaData.getTable(), columnNames,