public static synchronized Stack<Evolution> listDatabaseEvolutions(String dbName, String moduleKey) {
Stack<Evolution> evolutions = new Stack<>();
evolutions.add(new Evolution("", 0, "", "", false));
Connection connection = null;
try {
connection = EvolutionQuery.getNewConnection(dbName);
if (isEvolutionsTableExist(connection)) {
checkAndUpdateEvolutionsForMultiModuleSupport(dbName, connection);
ResultSet databaseEvolutions = EvolutionQuery.getEvolutions(connection, moduleKey);
while (databaseEvolutions.next()) {
Evolution evolution = new Evolution(moduleKey, databaseEvolutions.getInt(1), databaseEvolutions.getString(3),
databaseEvolutions.getString(4), false);
evolutions.add(evolution);
}
} else {
EvolutionQuery.createTable(dbName);
}
} catch (SQLException e) {
Logger.error(e, "SQL error while checking play evolutions");
} finally {
EvolutionQuery.closeConnection(connection);
}
Collections.sort(evolutions);
return evolutions;
}