public static RepositoryComponentSetting getSetting(Item item, ERepositoryObjectType type) { if (item == null) { return null; } boolean subItem = (type == ERepositoryObjectType.METADATA_CON_TABLE); for (RepositoryComponentSetting setting : getSettings()) { Class<Item>[] classes = setting.getClasses(); if (classes != null) { for (Class<Item> clazz : classes) { if (clazz.isAssignableFrom(item.getClass())) { if (clazz.isAssignableFrom(DatabaseConnectionItem.class)) { // for db EDatabaseTypeName[] dbTypes = setting.getDbTypes(); if (dbTypes != null) { for (EDatabaseTypeName dbType : dbTypes) { DatabaseConnectionItem dbItem = (DatabaseConnectionItem) item; DatabaseConnection dbConnection = (DatabaseConnection) dbItem.getConnection(); // use the display name as the database type if (dbType.getDisplayName().equals(dbConnection.getDatabaseType())) { if (!subItem) { return setting; } if (subItem && setting.withSchema()) { return setting; } } } } } else { return setting; } } } } } return null; }