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;
  }