private static void writeConfigForTable(BufferedWriter writer, Class<?> clazz) throws SQLException, IOException { String tableName = DatabaseTableConfig.extractTableName(clazz); List<DatabaseFieldConfig> fieldConfigs = new ArrayList<DatabaseFieldConfig>(); // walk up the classes finding the fields try { for (Class<?> working = clazz; working != null; working = working.getSuperclass()) { for (Field field : working.getDeclaredFields()) { DatabaseFieldConfig fieldConfig = DatabaseFieldConfig.fromField(databaseType, tableName, field); if (fieldConfig != null) { fieldConfigs.add(fieldConfig); } } } } catch (Error e) { System.err.println( "Skipping " + clazz + " because we got an error finding its definition: " + e.getMessage()); return; } if (fieldConfigs.isEmpty()) { System.out.println("Skipping " + clazz + " because no annotated fields found"); return; } @SuppressWarnings({"rawtypes", "unchecked"}) DatabaseTableConfig<?> tableConfig = new DatabaseTableConfig(clazz, tableName, fieldConfigs); DatabaseTableConfigLoader.write(writer, tableConfig); writer.append("#################################"); writer.newLine(); System.out.println("Wrote config for " + clazz); }