mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-23 22:19:13 +00:00
fix for bug 1242 by escaping race column names as well as fleet names
This commit is contained in:
+8
-7
@@ -353,10 +353,10 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
DBObject carriedPoints = (DBObject) dbLeaderboard.get(FieldNames.LEADERBOARD_CARRIED_POINTS.name());
|
||||
if (carriedPoints != null) {
|
||||
needsMigration = true;
|
||||
for (String competitorName : carriedPoints.keySet()) {
|
||||
Double carriedPointsForCompetitor = ((Number) carriedPoints.get(competitorName)).doubleValue();
|
||||
for (String escapedCompetitorName : carriedPoints.keySet()) {
|
||||
Double carriedPointsForCompetitor = ((Number) carriedPoints.get(escapedCompetitorName)).doubleValue();
|
||||
if (carriedPointsForCompetitor != null) {
|
||||
correctionsToUpdate.setCarriedPointsByName(MongoUtils.unescapeDollarAndDot(competitorName), carriedPointsForCompetitor);
|
||||
correctionsToUpdate.setCarriedPointsByName(MongoUtils.unescapeDollarAndDot(escapedCompetitorName), carriedPointsForCompetitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -382,12 +382,12 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
scoreCorrectionToUpdate.setComment((String) dbScoreCorrection.get(FieldNames.LEADERBOARD_SCORE_CORRECTION_COMMENT.name()));
|
||||
dbScoreCorrection.removeField(FieldNames.LEADERBOARD_SCORE_CORRECTION_COMMENT.name());
|
||||
}
|
||||
for (String raceName : dbScoreCorrection.keySet()) {
|
||||
for (String escapedRaceColumnName : dbScoreCorrection.keySet()) {
|
||||
// deprecated style: a DBObject per race where the keys are the escaped competitor names
|
||||
// new style: a BasicDBList per race where each entry is a DBObject with COMPETITOR_ID and
|
||||
// LEADERBOARD_SCORE_CORRECTION_MAX_POINTS_REASON and LEADERBOARD_CORRECTED_SCORE fields each
|
||||
DBObject dbScoreCorrectionForRace = (DBObject) dbScoreCorrection.get(raceName);
|
||||
final RaceColumn raceColumn = correctionsToUpdate.getLeaderboard().getRaceColumnByName(raceName);
|
||||
DBObject dbScoreCorrectionForRace = (DBObject) dbScoreCorrection.get(escapedRaceColumnName);
|
||||
final RaceColumn raceColumn = correctionsToUpdate.getLeaderboard().getRaceColumnByName(MongoUtils.unescapeDollarAndDot(escapedRaceColumnName));
|
||||
if (dbScoreCorrectionForRace instanceof BasicDBList) {
|
||||
for (Object o : (BasicDBList) dbScoreCorrectionForRace) {
|
||||
DBObject dbScoreCorrectionForCompetitorInRace = (DBObject) o;
|
||||
@@ -465,7 +465,8 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
}
|
||||
DBObject raceIdentifiersPerFleet = (DBObject) dbRaceColumn.get(FieldNames.RACE_IDENTIFIERS.name());
|
||||
if (raceIdentifiersPerFleet != null) {
|
||||
for (String fleetName : raceIdentifiersPerFleet.keySet()) {
|
||||
for (String escapedFleetName : raceIdentifiersPerFleet.keySet()) {
|
||||
String fleetName = MongoUtils.unescapeDollarAndDot(escapedFleetName);
|
||||
result.put(fleetName, loadRaceIdentifier((DBObject) raceIdentifiersPerFleet.get(fleetName)));
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -120,7 +120,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
if (raceIdentifier != null) {
|
||||
DBObject raceIdentifierForFleet = new BasicDBObject();
|
||||
storeRaceIdentifier(raceIdentifierForFleet, raceIdentifier);
|
||||
raceIdentifiersPerFleet.put(fleet.getName(), raceIdentifierForFleet);
|
||||
raceIdentifiersPerFleet.put(MongoUtils.escapeDollarAndDot(fleet.getName()), raceIdentifierForFleet);
|
||||
}
|
||||
}
|
||||
dbObject.put(FieldNames.RACE_IDENTIFIERS.name(), raceIdentifiersPerFleet);
|
||||
@@ -145,7 +145,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
BasicDBObject query = new BasicDBObject(FieldNames.LEADERBOARD_NAME.name(), leaderboard.getName());
|
||||
BasicDBObject dbLeaderboard = new BasicDBObject();
|
||||
dbLeaderboard.put(FieldNames.LEADERBOARD_NAME.name(), leaderboard.getName());
|
||||
if(leaderboard.getDisplayName() != null) {
|
||||
if (leaderboard.getDisplayName() != null) {
|
||||
dbLeaderboard.put(FieldNames.LEADERBOARD_DISPLAY_NAME.name(), leaderboard.getDisplayName());
|
||||
}
|
||||
BasicDBList dbSuppressedCompetitorIds = new BasicDBList();
|
||||
@@ -264,7 +264,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
if (!dbCorrectionForRace.isEmpty()) {
|
||||
// using the column name as the key for the score corrections requires re-writing the score corrections
|
||||
// of a meta-leaderboard if the name of one of its leaderboards changes
|
||||
dbScoreCorrections.put(raceColumn.getName(), dbCorrectionForRace);
|
||||
dbScoreCorrections.put(MongoUtils.escapeDollarAndDot(raceColumn.getName()), dbCorrectionForRace);
|
||||
}
|
||||
}
|
||||
final TimePoint timePointOfLastCorrectionsValidity = scoreCorrection.getTimePointOfLastCorrectionsValidity();
|
||||
|
||||
Reference in New Issue
Block a user