From beda0a5e4d44c1bbad110516a6abbd4a729b478a Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Thu, 26 Jan 2012 15:48:00 +0100 Subject: [PATCH] Added method to get leaderboards from the database which aren't in a group --- .../persistence/DomainObjectFactory.java | 2 ++ .../impl/DomainObjectFactoryImpl.java | 25 +++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java index 9841970faa6..b0540dec3c5 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/DomainObjectFactory.java @@ -31,5 +31,7 @@ public interface DomainObjectFactory { LeaderboardGroup loadLeaderboardGroup(String name); Iterable getAllLeaderboardGroups(); + + Iterable getLeaderboardsNotInGroup(); } diff --git a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java index 5298eccefc2..af3fd309dc5 100755 --- a/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java +++ b/java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java @@ -212,7 +212,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { @Override public Iterable getAllLeaderboardGroups() { DBCollection leaderboardGroupCollection = database.getCollection(CollectionNames.LEADERBOARD_GROUPS.name()); - ArrayList leaderboardGroups = new ArrayList(); + Set leaderboardGroups = new HashSet(); 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 leaderboards = new ArrayList<>(); + ArrayList leaderboards = new ArrayList(); BasicDBList dbLeaderboardIds = (BasicDBList) o.get(FieldNames.LEADERBOARD_GROUP_LEADERBOARDS.name()); for (Object object : dbLeaderboardIds) { @@ -242,5 +242,26 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory { return new LeaderboardGroupImpl(name, description, leaderboards); } + + @Override + public Iterable getLeaderboardsNotInGroup() { + DBCollection leaderboardCollection = database.getCollection(CollectionNames.LEADERBOARDS.name()); + DBCollection leaderboardGroupCollection = database.getCollection(CollectionNames.LEADERBOARD_GROUPS.name()); + + Set result = new HashSet(); + 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; + } }