DbLoader createLoader(final DbImportParameters parameters, DbAdapter adapter, Connection connection,
DbLoaderDelegate loaderDelegate) throws InstantiationException, IllegalAccessException,
ClassNotFoundException {
final NamePatternMatcher nameFilter = new NamePatternMatcher(logger, parameters.getIncludeTables(),
parameters.getExcludeTables());
String meangfulPkExclude = parameters.getMeaningfulPkTables() != null ? null : "*";
final NamePatternMatcher meaningfulPkFilter = new NamePatternMatcher(logger,
parameters.getMeaningfulPkTables(), meangfulPkExclude);
DbLoader loader = new DbLoader(connection, adapter, loaderDelegate) {
@Override
public boolean includeTableName(String tableName) {
return nameFilter.isIncluded(tableName);
}
@Override
protected EntityMergeSupport createEntityMerger(DataMap map) {
EntityMergeSupport emSupport = new EntityMergeSupport(map, namingStrategy, true) {
@Override
protected boolean removePK(DbEntity dbEntity) {
return !meaningfulPkFilter.isIncluded(dbEntity.getName());
}
};
emSupport.setUsePrimitives(parameters.isUsePrimitives());
return emSupport;