mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-28 08:26:44 +00:00
trying to load persistent wind tracks during construction of TrackedRaceImpl; untested
This commit is contained in:
+5
@@ -1,5 +1,7 @@
|
||||
package com.sap.sailing.domain.persistence;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.mongodb.DBObject;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
@@ -43,4 +45,7 @@ public interface DomainObjectFactory {
|
||||
*/
|
||||
Iterable<Leaderboard> getLeaderboardsNotInGroup();
|
||||
|
||||
Map<? extends WindSource, ? extends WindTrack> loadWindTracks(Event event, RaceDefinition race,
|
||||
long millisecondsOverWhichToAverageWind);
|
||||
|
||||
}
|
||||
|
||||
+34
@@ -1,7 +1,9 @@
|
||||
package com.sap.sailing.domain.persistence.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
@@ -23,8 +25,10 @@ import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.TimePoint;
|
||||
import com.sap.sailing.domain.common.WindSource;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.WindSourceImpl;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RaceInLeaderboard;
|
||||
@@ -264,4 +268,34 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<? extends WindSource, ? extends WindTrack> loadWindTracks(Event event, RaceDefinition race,
|
||||
long millisecondsOverWhichToAverageWind) {
|
||||
Map<WindSource, WindTrack> result = new HashMap<WindSource, WindTrack>();
|
||||
try {
|
||||
BasicDBObject query = new BasicDBObject();
|
||||
query.put(FieldNames.EVENT_NAME.name(), event.getName());
|
||||
query.put(FieldNames.RACE_NAME.name(), race.getName());
|
||||
DBCollection windTracks = database.getCollection(CollectionNames.WIND_TRACKS.name());
|
||||
for (DBObject o : windTracks.find(query)) {
|
||||
Wind wind = loadWind((DBObject) o.get(FieldNames.WIND.name()));
|
||||
WindSourceType windSourceType = WindSourceType.valueOf((String) o.get(FieldNames.WIND_SOURCE_NAME.name()));
|
||||
// TODO bug #374: consider optional additional wind store ID
|
||||
// WindSource windSource = new WindSourceWithAdditionalID(windSourceType, null);
|
||||
WindSource windSource = new WindSourceImpl(windSourceType);
|
||||
WindTrack track = result.get(windSource);
|
||||
if (track == null) {
|
||||
track = new WindTrackImpl(millisecondsOverWhichToAverageWind);
|
||||
result.put(windSource, track);
|
||||
}
|
||||
track.add(wind);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
// something went wrong during DB access; report, then use empty new wind track
|
||||
logger.log(Level.SEVERE, "Error connecting to MongoDB, unable to load recorded wind data. Check MongoDB settings.");
|
||||
logger.throwing(DomainObjectFactoryImpl.class.getName(), "loadWindTrack", t);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
|
||||
@Override
|
||||
public void addWindTrackDumper(TrackedEvent trackedEvent, TrackedRace trackedRace, WindSource windSource) {
|
||||
WindTrack windTrack = trackedRace.getWindTrack(windSource);
|
||||
WindTrack windTrack = trackedRace.getOrCreateWindTrack(windSource);
|
||||
windTrack.addListener(new MongoWindListener(trackedEvent, trackedRace, windSource, this, database));
|
||||
}
|
||||
|
||||
|
||||
+13
@@ -1,6 +1,8 @@
|
||||
package com.sap.sailing.domain.persistence.impl;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.mongodb.DB;
|
||||
import com.mongodb.MongoException;
|
||||
@@ -49,4 +51,15 @@ public class MongoWindStoreImpl extends EmptyWindStore implements MongoWindStore
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<? extends WindSource, ? extends WindTrack> loadWindTracks(TrackedEvent trackedEvent,
|
||||
TrackedRace trackedRace, long millisecondsOverWhichToAverageWind) {
|
||||
Map<? extends WindSource, ? extends WindTrack> result = domainObjectFactory.loadWindTracks(
|
||||
trackedEvent.getEvent(), trackedRace.getRace(), millisecondsOverWhichToAverageWind);
|
||||
for (Entry<? extends WindSource, ? extends WindTrack> e : result.entrySet()) {
|
||||
e.getValue().addListener(new MongoWindListener(trackedEvent, trackedRace, e.getKey(), mongoObjectFactory, db));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user