Project: talenddataquality
Issue TDQ-6384: Refactor the magic class DBConnectionFillerImpl 
In DBConnectionFillerImpl.java, take fillSchemaToCatalog() method as an example: {code:java} fillSchemaToCatalog(Connection dbConn, DatabaseMetaData dbJDBCMetadata, Catalog catalog, List schemaFilter) {code} Currently every type of database will call this method, in it's body, there are many if/else to adapt database types. such as {code:java} if(dbJDBCMetadata instanceof SybaseDatabaseMetaData) if (!(MetadataConnectionUtils.isPostgresql(dbJDBCMetadata) || MetadataConnectionUtils .isSybase(dbJDBCMetadata))) { if (MetadataConnectionUtils.isMssql(dbJDBCMetadata) && dbJDBCMetadata.getDatabaseMajorVersion() > 8 && dbJDBCMetadata.getDriverMajorVersion() > 1) { {code} This is really bad code design, we need a better class hierarchy design pattern for this to meet all database type's needs.
Story points: 13