mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-28 00:16:46 +00:00
Added loadLeaderboardGroup-Functions to DomainObjectFactory
This commit is contained in:
+5
@@ -6,6 +6,7 @@ import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.persistence.impl.DomainObjectFactoryImpl;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
import com.sap.sailing.mongodb.MongoDBService;
|
||||
@@ -26,5 +27,9 @@ public interface DomainObjectFactory {
|
||||
Iterable<Leaderboard> getAllLeaderboards();
|
||||
|
||||
RaceIdentifier loadRaceIdentifier(DBObject dbObject);
|
||||
|
||||
LeaderboardGroup loadLeaderboardGroup(String name);
|
||||
|
||||
Iterable<LeaderboardGroup> getAllLeaderboardGroups();
|
||||
|
||||
}
|
||||
|
||||
+55
@@ -1,5 +1,6 @@
|
||||
package com.sap.sailing.domain.persistence.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
@@ -10,6 +11,7 @@ import com.mongodb.BasicDBObject;
|
||||
import com.mongodb.DB;
|
||||
import com.mongodb.DBCollection;
|
||||
import com.mongodb.DBObject;
|
||||
import com.mongodb.DBRef;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.SpeedWithBearing;
|
||||
@@ -23,10 +25,12 @@ import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RaceInLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.ScoreCorrection.MaxPointsReason;
|
||||
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
|
||||
import com.sap.sailing.domain.leaderboard.ThresholdBasedResultDiscardingRule;
|
||||
import com.sap.sailing.domain.leaderboard.impl.LeaderboardGroupImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ResultDiscardingRuleImpl;
|
||||
import com.sap.sailing.domain.leaderboard.impl.ScoreCorrectionImpl;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
@@ -117,6 +121,57 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LeaderboardGroup loadLeaderboardGroup(String name) {
|
||||
DBCollection leaderboardGroupCollection = database.getCollection(CollectionNames.LEADERBOARD_GROUPS.name());
|
||||
LeaderboardGroup leaderboardGroup = null;
|
||||
|
||||
try {
|
||||
BasicDBObject query = new BasicDBObject();
|
||||
query.put(FieldNames.LEADERBOARD_GROUP_NAME.name(), name);
|
||||
leaderboardGroup = loadLeaderboardGroup(leaderboardGroupCollection.findOne(query));
|
||||
} catch (Throwable t) {
|
||||
logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load leaderboard group "+name+".");
|
||||
logger.throwing(DomainObjectFactoryImpl.class.getName(), "loadLeaderboardGroup", t);
|
||||
}
|
||||
|
||||
return leaderboardGroup;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<LeaderboardGroup> getAllLeaderboardGroups() {
|
||||
DBCollection leaderboardGroupCollection = database.getCollection(CollectionNames.LEADERBOARD_GROUPS.name());
|
||||
ArrayList<LeaderboardGroup> leaderboardGroups = new ArrayList<LeaderboardGroup>();
|
||||
|
||||
try {
|
||||
for (DBObject o : leaderboardGroupCollection.find()) {
|
||||
leaderboardGroups.add(loadLeaderboardGroup(o));
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load leaderboard groups.");
|
||||
logger.throwing(DomainObjectFactoryImpl.class.getName(), "loadLeaderboardGroup", t);
|
||||
}
|
||||
|
||||
return leaderboardGroups;
|
||||
}
|
||||
|
||||
private LeaderboardGroup loadLeaderboardGroup(DBObject o) {
|
||||
DBCollection leaderboardCollection = database.getCollection(CollectionNames.LEADERBOARDS.name());
|
||||
|
||||
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<>();
|
||||
|
||||
BasicDBList dbLeaderboardRefs = (BasicDBList) o.get(FieldNames.LEADERBOARD_GROUP_LEADERBOARDS.name());
|
||||
for (Object object : dbLeaderboardRefs) {
|
||||
DBRef dbLeaderboardRef = (DBRef) object;
|
||||
DBObject dbLeaderboard = leaderboardCollection.findOne(dbLeaderboardRef);
|
||||
leaderboards.add(loadLeaderboard(dbLeaderboard));
|
||||
}
|
||||
|
||||
return new LeaderboardGroupImpl(name, description, leaderboards);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterable<Leaderboard> getAllLeaderboards() {
|
||||
|
||||
+1
-1
@@ -201,7 +201,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
BasicDBList dbLeaderboardRefs = new BasicDBList();
|
||||
for (Leaderboard leaderboard : leaderboardGroup.getLeaderboards()) {
|
||||
BasicDBObject leaderboardQuery = new BasicDBObject(FieldNames.LEADERBOARD_NAME.name(), leaderboard.getName());
|
||||
DBObject dbLeaderboard = leaderboardCollection.find(leaderboardQuery).getQuery();
|
||||
DBObject dbLeaderboard = leaderboardCollection.findOne(leaderboardQuery);
|
||||
DBRef dbLeaderboardRef = new DBRef(database, dbLeaderboard);
|
||||
dbLeaderboardRefs.add(dbLeaderboardRef);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user