protected String[] getRowData(CsvData data, String dataType) { String[] targetValues = new String[targetTable.getColumnCount()]; String[] targetColumnNames = targetTable.getColumnNames(); String[] originalValues = data.getParsedData(dataType); String[] sourceColumnNames = sourceTable.getColumnNames(); if (originalValues != null) { for (int i = 0; i < sourceColumnNames.length && i < originalValues.length; i++) { for (int t = 0; t < targetColumnNames.length; t++) { if (sourceColumnNames[i].equalsIgnoreCase(targetColumnNames[t])) { targetValues[t] = originalValues[i]; break; } } } } return targetValues; }
protected Table postprocessTableFromDatabase(Table table) { if (table != null) { for (int columnIdx = 0; columnIdx < table.getColumnCount(); columnIdx++) { Column column = table.getColumn(columnIdx); if (TypeMap.isTextType(column.getMappedTypeCode()) || TypeMap.isDateTimeType(column.getMappedTypeCode())) { String defaultValue = column.getDefaultValue(); if ((defaultValue != null) && (defaultValue.length() >= 2) && defaultValue.startsWith("'") && defaultValue.endsWith("'")) { defaultValue = defaultValue.substring(1, defaultValue.length() - 1); column.setDefaultValue(defaultValue); } } } } return table; }
switch (dml) { case UPDATE: data = new HashMap<String, String>(dataMetaData.getTable().getColumnCount() * 4); data.putAll(getNewDataAsString(null, dataMetaData, symmetricDialect)); data.putAll(getOldDataAsString(OLD_, dataMetaData, symmetricDialect)); break; case INSERT: data = new HashMap<String, String>(dataMetaData.getTable().getColumnCount() * 4); data.putAll(getNewDataAsString(null, dataMetaData, symmetricDialect)); Map<String, String> map = getNullData(OLD_, dataMetaData); break; case DELETE: data = new HashMap<String, String>(dataMetaData.getTable().getColumnCount() * 4); data.putAll(getOldDataAsString(null, dataMetaData, symmetricDialect)); data.putAll(getOldDataAsString(OLD_, dataMetaData, symmetricDialect));
switch (dml) { case UPDATE: data = new HashMap<String, Object>(dataMetaData.getTable().getColumnCount() * 2); data.putAll(getNewDataAsObject(null, dataMetaData, symmetricDialect, upperCase)); data.putAll(getOldDataAsObject(OLD_, dataMetaData, symmetricDialect, upperCase)); break; case INSERT: data = new HashMap<String, Object>(dataMetaData.getTable().getColumnCount() * 2); data.putAll(getNewDataAsObject(null, dataMetaData, symmetricDialect, upperCase)); Map<String, Object> map = getNullData(OLD_, dataMetaData); break; case DELETE: data = new HashMap<String, Object>(dataMetaData.getTable().getColumnCount() * 2); data.putAll(getOldDataAsObject(null, dataMetaData, symmetricDialect, upperCase)); data.putAll(getOldDataAsObject(OLD_, dataMetaData, symmetricDialect, upperCase));
@Override protected Table readTable(Connection connection, DatabaseMetaDataWrapper metaData, Map<String, Object> values) throws SQLException { Table table = super.readTable(connection, metaData, values); if (table != null) { // PostgreSQL also returns unique indices for non-pk auto-increment // columns which are of the form "[table]_[column]_key" HashMap<String,IIndex> uniquesByName = new HashMap<String,IIndex>(); for (int indexIdx = 0; indexIdx < table.getIndexCount(); indexIdx++) { IIndex index = table.getIndex(indexIdx); if (index.isUnique() && (index.getName() != null)) { uniquesByName.put(index.getName(), index); } } for (int columnIdx = 0; columnIdx < table.getColumnCount(); columnIdx++) { Column column = table.getColumn(columnIdx); if (column.isAutoIncrement() && !column.isPrimaryKey()) { String indexName = table.getName() + "_" + column.getName() + "_key"; if (uniquesByName.containsKey(indexName)) { table.removeIndex((IIndex) uniquesByName.get(indexName)); uniquesByName.remove(indexName); } } } } setPrimaryKeyConstraintName(connection, table); return table; }
if (table.getColumnCount() > 0) { table.addForeignKeys(readForeignKeys(connection, metaData, tableName)); table.addIndices(readIndices(connection, metaData, tableName));
ArrayList<String> changedColumnValueList = new ArrayList<String>(); ArrayList<Column> changedColumnsList = new ArrayList<Column>(); for (int i = 0; i < targetTable.getColumnCount(); i++) { Column column = targetTable.getColumn(i); if (column != null) {
CollectionUtils.copyOfRange(tokens, 1, context.getLastParsedTable().getColumnCount() + 1)); data.putParsedData(CsvData.PK_DATA, CollectionUtils.copyOfRange(tokens, context.getLastParsedTable().getColumnCount() + 1, tokens.length)); data.putParsedData(CsvData.OLD_DATA, parsedOldData); tokens = null;