Added method to get leaderboards from the database which aren't in a group

This commit is contained in:
Lennart Hensler
2012-01-26 15:48:00 +01:00
parent 60eb33f4af
commit beda0a5e4d
2 changed files with 25 additions and 2 deletions
@@ -32,4 +32,6 @@ public interface DomainObjectFactory {
Iterable<LeaderboardGroup> getAllLeaderboardGroups();
Iterable<Leaderboard> getLeaderboardsNotInGroup();
}
@@ -212,7 +212,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
@Override
public Iterable<LeaderboardGroup> getAllLeaderboardGroups() {
DBCollection leaderboardGroupCollection = database.getCollection(CollectionNames.LEADERBOARD_GROUPS.name());
ArrayList<LeaderboardGroup> leaderboardGroups = new ArrayList<LeaderboardGroup>();
Set<LeaderboardGroup> leaderboardGroups = new HashSet<LeaderboardGroup>();
try {
for (DBObject o : leaderboardGroupCollection.find()) {
@@ -231,7 +231,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
String name = (String) o.get(FieldNames.LEADERBOARD_GROUP_NAME.name());
String description = (String) o.get(FieldNames.LEADERBOARD_GROUP_DESCRIPTION.name());
ArrayList<Leaderboard> leaderboards = new ArrayList<>();
ArrayList<Leaderboard> leaderboards = new ArrayList<Leaderboard>();
BasicDBList dbLeaderboardIds = (BasicDBList) o.get(FieldNames.LEADERBOARD_GROUP_LEADERBOARDS.name());
for (Object object : dbLeaderboardIds) {
@@ -243,4 +243,25 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
return new LeaderboardGroupImpl(name, description, leaderboards);
}
@Override
public Iterable<Leaderboard> getLeaderboardsNotInGroup() {
DBCollection leaderboardCollection = database.getCollection(CollectionNames.LEADERBOARDS.name());
DBCollection leaderboardGroupCollection = database.getCollection(CollectionNames.LEADERBOARD_GROUPS.name());
Set<Leaderboard> result = new HashSet<Leaderboard>();
try {
for (DBObject o : leaderboardCollection.find()) {
ObjectId leaderboardId = (ObjectId) o.get("_id");
BasicDBObject query = new BasicDBObject(FieldNames.LEADERBOARD_GROUP_LEADERBOARDS.name(), leaderboardId);
if (leaderboardGroupCollection.count(query) == 0) {
result.add(loadLeaderboard(o));
}
}
} catch (Throwable t) {
logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load leaderboards.");
logger.throwing(DomainObjectFactoryImpl.class.getName(), "getAllLeaderboards", t);
}
return result;
}
}