Added storeLeaderboardGroup() to MongoObjectFactory

This commit is contained in:
Lennart Hensler
2012-01-26 12:26:56 +01:00
parent 80d047168f
commit ff18a4f4c9
4 changed files with 32 additions and 2 deletions
@@ -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.MongoObjectFactoryImpl;
import com.sap.sailing.domain.tracking.TrackedEvent;
import com.sap.sailing.domain.tracking.TrackedRace;
@@ -41,5 +42,7 @@ public interface MongoObjectFactory {
void renameLeaderboard(String oldName, String newName);
void storeRaceIdentifier(RaceIdentifier raceIdentifier, DBObject dbObject);
void storeLeaderboardGroup(LeaderboardGroup leaderboardGroup);
}
@@ -1,5 +1,5 @@
package com.sap.sailing.domain.persistence.impl;
public enum CollectionNames {
WIND_TRACKS, LEADERBOARDS;
WIND_TRACKS, LEADERBOARDS, LEADERBOARD_GROUPS;
}
@@ -13,6 +13,8 @@ public enum FieldNames {
// leaderboard:
LEADERBOARD_NAME, LEADERBOARD_COLUMNS, LEADERBOARD_COLUMN_NAME, LEADERBOARD_COMPETITOR_DISPLAY_NAMES, LEADERBOARD_IS_MEDAL_RACE_COLUMN,
LEADERBOARD_CARRIED_POINTS, LEADERBOARD_SCORE_CORRECTIONS, LEADERBOARD_DISCARDING_THRESHOLDS, LEADERBOARD_SCORE_CORRECTION_MAX_POINTS_REASON, LEADERBOARD_CORRECTED_SCORE
LEADERBOARD_CARRIED_POINTS, LEADERBOARD_SCORE_CORRECTIONS, LEADERBOARD_DISCARDING_THRESHOLDS, LEADERBOARD_SCORE_CORRECTION_MAX_POINTS_REASON, LEADERBOARD_CORRECTED_SCORE,
// leaderboard group
LEADERBOARD_GROUP_NAME, LEADERBOARD_GROUP_DESCRIPTION, LEADERBOARD_GROUP_LEADERBOARDS
}
@@ -7,6 +7,8 @@ import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.DBRef;
import com.mongodb.DBRefBase;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Event;
import com.sap.sailing.domain.base.RaceDefinition;
@@ -17,6 +19,7 @@ import com.sap.sailing.domain.common.RaceIdentifier;
import com.sap.sailing.domain.common.Speed;
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.leaderboard.RaceInLeaderboard;
import com.sap.sailing.domain.leaderboard.ScoreCorrection.MaxPointsReason;
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
@@ -184,5 +187,27 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
BasicDBObject renameUpdate = new BasicDBObject("$set", new BasicDBObject(FieldNames.LEADERBOARD_NAME.name(), newName));
leaderboardCollection.update(query, renameUpdate);
}
@Override
public void storeLeaderboardGroup(LeaderboardGroup leaderboardGroup) {
DBCollection leaderboardGroupCollection = database.getCollection(CollectionNames.LEADERBOARD_GROUPS.name());
DBCollection leaderboardCollection = database.getCollection(CollectionNames.LEADERBOARDS.name());
BasicDBObject query = new BasicDBObject(FieldNames.LEADERBOARD_GROUP_NAME.name(), leaderboardGroup.getName());
BasicDBObject result = new BasicDBObject();
result.put(FieldNames.LEADERBOARD_GROUP_NAME.name(), leaderboardGroup.getName());
result.put(FieldNames.LEADERBOARD_GROUP_DESCRIPTION.name(), leaderboardGroup.getDescription());
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();
DBRef dbLeaderboardRef = new DBRef(database, dbLeaderboard);
dbLeaderboardRefs.add(dbLeaderboardRef);
}
result.put(FieldNames.LEADERBOARD_GROUP_LEADERBOARDS.name(), dbLeaderboardRefs);
leaderboardGroupCollection.update(query, result, true, false);
}
}