mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-02 18:33:54 +00:00
refactored Mongo DB connector: new Activator which encapsulates DB connection
This commit is contained in:
1 parent
68aaec81df
commit
2a12d45fc0
17 files changed
+162
-123
No files matched your search
+7
@@ -0,0 +1,7 @@
|
||||
package com.sap.sailing.domain.swisstimingadapter;
|
||||
|
||||
import com.sap.sailing.domain.swisstimingadapter.impl.DomainFactoryImpl;
|
||||
|
||||
public interface DomainFactory {
|
||||
final static DomainFactory INSTANCE = new DomainFactoryImpl();
|
||||
}
|
||||
+1
-1
@@ -8,7 +8,7 @@ public interface SwissTimingFactory {
|
||||
|
||||
SwissTimingMessageParser createMessageParser();
|
||||
|
||||
SailMasterConnector createSailMasterConnector(String host, int port);
|
||||
SailMasterConnector createSailMasterConnector(String hostname, int port);
|
||||
|
||||
SwissTimingConfiguration createSwissTimingConfiguration(String name, String hostname, int port);
|
||||
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package com.sap.sailing.domain.swisstimingadapter.impl;
|
||||
|
||||
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
|
||||
|
||||
public class DomainFactoryImpl implements DomainFactory {
|
||||
|
||||
}
|
||||
+1
-2
@@ -26,8 +26,7 @@ public class SwissTimingFactoryImpl implements SwissTimingFactory {
|
||||
|
||||
@Override
|
||||
public SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, WindStore windStore) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
return new SwissTimingRaceTrackerImpl(raceID, hostname, port, this);
|
||||
}
|
||||
|
||||
}
|
||||
+12
-4
@@ -2,10 +2,13 @@ package com.sap.sailing.domain.swisstimingadapter.impl;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingRaceTracker;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedEvent;
|
||||
import com.sap.sailing.domain.tracking.RaceHandle;
|
||||
@@ -13,18 +16,23 @@ import com.sap.sailing.domain.tracking.WindStore;
|
||||
import com.sap.sailing.util.Util.Triple;
|
||||
|
||||
public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker {
|
||||
protected SwissTimingRaceTrackerImpl(String raceID, String hostname, int port) {
|
||||
// TODO implement SwissTimingRaceTrackerImpl constructor
|
||||
private final SailMasterConnector connector;
|
||||
private final Set<RaceDefinition> races;
|
||||
|
||||
protected SwissTimingRaceTrackerImpl(String raceID, String hostname, int port, SwissTimingFactory factory) {
|
||||
connector = factory.createSailMasterConnector(hostname, port);
|
||||
races = new HashSet<RaceDefinition>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() throws MalformedURLException, IOException, InterruptedException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
connector.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<RaceDefinition> getRaces() {
|
||||
// races = connector.getRaces();
|
||||
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
+1
-1
@@ -113,5 +113,5 @@ public interface SailingService extends RemoteService {
|
||||
void storeSwissTimingConfiguration(String a, String hostname, int port);
|
||||
|
||||
void trackWithSwissTiming(SwissTimingRaceRecordDAO rr, String hostname, int port, boolean trackWind,
|
||||
boolean correctWindByDeclination);
|
||||
boolean correctWindByDeclination) throws Exception;
|
||||
}
|
||||
+15
-3
@@ -1029,8 +1029,20 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
|
||||
@Override
|
||||
public void trackWithSwissTiming(SwissTimingRaceRecordDAO rr, String hostname, int port, boolean trackWind,
|
||||
boolean correctWindByDeclination) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
final boolean correctWindByDeclination) throws Exception {
|
||||
final RaceHandle raceHandle = getService().addSwissTimingRace(rr.ID, hostname, port,
|
||||
MongoWindStoreFactory.INSTANCE.getMongoWindStore(mongoObjectFactory, domainObjectFactory),
|
||||
TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS);
|
||||
if (trackWind) {
|
||||
new Thread("Wind tracking starter for race "+rr.ID+"/"+rr.description) {
|
||||
public void run() {
|
||||
try {
|
||||
startTrackingWind(raceHandle, correctWindByDeclination, TIMEOUT_FOR_RECEIVING_RACE_DEFINITION_IN_MILLISECONDS);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -9,7 +9,7 @@ import org.junit.Before;
|
||||
import com.mongodb.DB;
|
||||
import com.mongodb.Mongo;
|
||||
import com.mongodb.MongoException;
|
||||
import com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl;
|
||||
import com.sap.sailing.mongodb.impl.Activator;
|
||||
|
||||
public abstract class AbstractMongoDBTest implements MongoDBTest {
|
||||
protected Mongo mongo;
|
||||
@@ -17,7 +17,7 @@ public abstract class AbstractMongoDBTest implements MongoDBTest {
|
||||
|
||||
protected Mongo newMongo() throws UnknownHostException, MongoException {
|
||||
return new Mongo(System.getProperty("mongo.host", "127.0.0.1"),
|
||||
((MongoWindStoreFactoryImpl) MongoWindStoreFactoryImpl.getDefaultInstance()).getDefaultPort());
|
||||
Activator.getDefaultInstance().getDefaultPort());
|
||||
}
|
||||
|
||||
@Before
|
||||
|
||||
+3
-3
@@ -3,20 +3,20 @@ package com.sap.sailing.mongodb.test;
|
||||
import com.mongodb.DBCollection;
|
||||
import com.mongodb.DBObject;
|
||||
import com.sap.sailing.domain.base.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.mongodb.impl.Activator;
|
||||
import com.sap.sailing.mongodb.impl.FieldNames;
|
||||
import com.sap.sailing.mongodb.impl.MongoObjectFactoryImpl;
|
||||
import com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl;
|
||||
|
||||
/**
|
||||
* Reverses the wind directions of <em>all</em> wind records stored in the MongoDB that is obtained using
|
||||
* {@link MongoWindStoreFactoryImpl#getDB()}.
|
||||
* {@link Activator#getDB()}.
|
||||
*
|
||||
* @author Axel Uhl (d043530)
|
||||
*
|
||||
*/
|
||||
public class ConvertWindData extends AbstractMongoDBTest {
|
||||
public static void main(String[] args) {
|
||||
MongoObjectFactoryImpl mof = new MongoObjectFactoryImpl(MongoWindStoreFactoryImpl.getDefaultInstance().getDB());
|
||||
MongoObjectFactoryImpl mof = new MongoObjectFactoryImpl(Activator.getDefaultInstance().getDB());
|
||||
DBCollection windTracksCollection = mof.getWindTrackCollection();
|
||||
for (DBObject dbo : windTracksCollection.find()) {
|
||||
windTracksCollection.remove(dbo);
|
||||
|
||||
+2
-2
@@ -32,9 +32,9 @@ import com.sap.sailing.domain.tracking.impl.WindImpl;
|
||||
import com.sap.sailing.domain.tractracadapter.DomainFactory;
|
||||
import com.sap.sailing.domain.tractracadapter.Receiver;
|
||||
import com.sap.sailing.domain.tractracadapter.ReceiverType;
|
||||
import com.sap.sailing.mongodb.impl.Activator;
|
||||
import com.sap.sailing.mongodb.impl.DomainObjectFactoryImpl;
|
||||
import com.sap.sailing.mongodb.impl.MongoObjectFactoryImpl;
|
||||
import com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl;
|
||||
|
||||
public class TestStoringAndRetrievingWindTracksTest extends AbstractTracTracLiveTest implements MongoDBTest {
|
||||
|
||||
@@ -47,7 +47,7 @@ public class TestStoringAndRetrievingWindTracksTest extends AbstractTracTracLive
|
||||
|
||||
private Mongo newMongo() throws UnknownHostException, MongoException {
|
||||
return new Mongo(System.getProperty("mongo.host", "127.0.0.1"),
|
||||
((MongoWindStoreFactoryImpl) MongoWindStoreFactoryImpl.getDefaultInstance()).getDefaultPort());
|
||||
Activator.getDefaultInstance().getDefaultPort());
|
||||
}
|
||||
|
||||
@Before
|
||||
|
||||
@@ -13,4 +13,4 @@ Require-Bundle: com.mongodb.driver;bundle-version="2.6.2",
|
||||
Export-Package: com.sap.sailing.mongodb,
|
||||
com.sap.sailing.mongodb.impl;x-friends:="com.sap.sailing.mongodb.test"
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Bundle-Activator: com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl
|
||||
Bundle-Activator: com.sap.sailing.mongodb.impl.Activator
|
||||
@@ -7,8 +7,8 @@ import com.sap.sailing.domain.swisstimingadapter.SwissTimingConfiguration;
|
||||
import com.sap.sailing.domain.tracking.WindSource;
|
||||
import com.sap.sailing.domain.tracking.WindTrack;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracConfiguration;
|
||||
import com.sap.sailing.mongodb.impl.Activator;
|
||||
import com.sap.sailing.mongodb.impl.DomainObjectFactoryImpl;
|
||||
import com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl;
|
||||
|
||||
/**
|
||||
* Offers methods to load domain objects from a Mongo DB
|
||||
@@ -17,7 +17,7 @@ import com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl;
|
||||
*
|
||||
*/
|
||||
public interface DomainObjectFactory {
|
||||
DomainObjectFactory INSTANCE = new DomainObjectFactoryImpl(MongoWindStoreFactoryImpl.getDefaultInstance().getDB());
|
||||
DomainObjectFactory INSTANCE = new DomainObjectFactoryImpl(Activator.getDefaultInstance().getDB());
|
||||
|
||||
WindTrack loadWindTrack(Event event, RaceDefinition race, WindSource windSource, long millisecondsOverWhichToAverage);
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ import com.sap.sailing.domain.tracking.TrackedEvent;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.domain.tracking.WindSource;
|
||||
import com.sap.sailing.domain.tractracadapter.TracTracConfiguration;
|
||||
import com.sap.sailing.mongodb.impl.Activator;
|
||||
import com.sap.sailing.mongodb.impl.MongoObjectFactoryImpl;
|
||||
import com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl;
|
||||
|
||||
/**
|
||||
* Offers methods to construct {@link DBObject MongoDB objects} from domain objects.
|
||||
@@ -19,7 +19,7 @@ import com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl;
|
||||
*
|
||||
*/
|
||||
public interface MongoObjectFactory {
|
||||
MongoObjectFactory INSTANCE = new MongoObjectFactoryImpl(MongoWindStoreFactoryImpl.getDefaultInstance().getDB());
|
||||
MongoObjectFactory INSTANCE = new MongoObjectFactoryImpl(Activator.getDefaultInstance().getDB());
|
||||
|
||||
/**
|
||||
* Registers for changes of the wind coming from <code>windSource</code> on the <code>trackedRace</code>. Each
|
||||
|
||||
+2
-11
@@ -2,14 +2,12 @@ package com.sap.sailing.mongodb;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import com.mongodb.DB;
|
||||
import com.mongodb.MongoException;
|
||||
import com.sap.sailing.mongodb.impl.Activator;
|
||||
import com.sap.sailing.mongodb.impl.MongoWindStoreFactoryImpl;
|
||||
|
||||
public interface MongoWindStoreFactory {
|
||||
MongoWindStoreFactory INSTANCE = MongoWindStoreFactoryImpl.getDefaultInstance();
|
||||
|
||||
String DEFAULT_DB_NAME = "winddb";
|
||||
MongoWindStoreFactory INSTANCE = new MongoWindStoreFactoryImpl(Activator.getDefaultInstance().getDB());
|
||||
|
||||
/**
|
||||
* Gets the default Mongo store based on the properties mongo.hostname[=localhost], mongo.port[=27017]
|
||||
@@ -17,11 +15,4 @@ public interface MongoWindStoreFactory {
|
||||
*/
|
||||
MongoWindStore getMongoWindStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) throws UnknownHostException, MongoException;
|
||||
|
||||
/**
|
||||
* Obtains a DB instance based on the default settings which can be provided by
|
||||
* system properties and/or OSGi bundle properties, respectively. See also
|
||||
* {@link #getMongoWindStore(MongoObjectFactory, DomainObjectFactory)}.
|
||||
*/
|
||||
DB getDB();
|
||||
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package com.sap.sailing.mongodb.impl;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
import com.mongodb.DB;
|
||||
import com.mongodb.Mongo;
|
||||
import com.sap.sailing.util.Util.Pair;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
private static final Logger logger = Logger.getLogger(Activator.class.getName());
|
||||
private static final String MONGO_PORT = "mongo.port";
|
||||
|
||||
private static final String MONGO_HOSTNAME = "mongo.host";
|
||||
|
||||
private static final String MONGO_DB_NAME = "mongo.dbName";
|
||||
|
||||
String DEFAULT_DB_NAME = "winddb";
|
||||
|
||||
private static Activator defaultInstance;
|
||||
|
||||
private String defaultHostName;
|
||||
private int defaultPort;
|
||||
private String defaultDatabaseName;
|
||||
private final Map<Pair<String, Integer>, Mongo> mongos;
|
||||
|
||||
public Activator() {
|
||||
defaultHostName = System.getProperty(MONGO_HOSTNAME, "127.0.0.1");
|
||||
defaultPort = Integer.valueOf(System.getProperty(MONGO_PORT, "27017"));
|
||||
defaultDatabaseName = System.getProperty(MONGO_DB_NAME, DEFAULT_DB_NAME);
|
||||
mongos = new HashMap<Pair<String, Integer>, Mongo>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(BundleContext context) throws Exception {
|
||||
defaultInstance = this;
|
||||
defaultDatabaseName = context.getProperty(MONGO_DB_NAME);
|
||||
if (defaultDatabaseName == null) {
|
||||
defaultDatabaseName = DEFAULT_DB_NAME;
|
||||
} else {
|
||||
logger.log(Level.INFO, "found mongo.dbName="+defaultDatabaseName);
|
||||
}
|
||||
defaultHostName = context.getProperty(MONGO_HOSTNAME);
|
||||
if (defaultHostName == null) {
|
||||
defaultHostName = "127.0.0.1";
|
||||
} else {
|
||||
logger.log(Level.INFO, "found "+MONGO_HOSTNAME+"="+defaultHostName);
|
||||
}
|
||||
defaultPort = context.getProperty(MONGO_PORT) != null ? Integer.valueOf(context.getProperty(MONGO_PORT)) : 27017;
|
||||
logger.log(Level.INFO, "Using port "+defaultPort+" as default for Mongo wind stores");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public DB getDB() {
|
||||
try {
|
||||
return getDB(defaultHostName, defaultPort, defaultDatabaseName);
|
||||
} catch (UnknownHostException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized DB getDB(String hostname, int port, String dbName) throws UnknownHostException {
|
||||
Pair<String, Integer> key = new Pair<String, Integer>(hostname, port);
|
||||
Mongo mongo = mongos.get(key);
|
||||
if (mongo == null) {
|
||||
mongo = new Mongo(hostname, port);
|
||||
mongos.put(key, mongo);
|
||||
}
|
||||
return mongo.getDB(dbName);
|
||||
}
|
||||
|
||||
public static Activator getDefaultInstance() {
|
||||
if (defaultInstance == null) {
|
||||
defaultInstance = new Activator();
|
||||
}
|
||||
return defaultInstance;
|
||||
}
|
||||
|
||||
public Integer getDefaultPort() {
|
||||
return defaultPort;
|
||||
}
|
||||
|
||||
}
|
||||
+7
-86
@@ -1,107 +1,28 @@
|
||||
package com.sap.sailing.mongodb.impl;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.osgi.framework.BundleActivator;
|
||||
import org.osgi.framework.BundleContext;
|
||||
|
||||
import com.mongodb.DB;
|
||||
import com.mongodb.Mongo;
|
||||
import com.mongodb.MongoException;
|
||||
import com.sap.sailing.mongodb.DomainObjectFactory;
|
||||
import com.sap.sailing.mongodb.MongoObjectFactory;
|
||||
import com.sap.sailing.mongodb.MongoWindStore;
|
||||
import com.sap.sailing.mongodb.MongoWindStoreFactory;
|
||||
import com.sap.sailing.util.Util.Pair;
|
||||
|
||||
public class MongoWindStoreFactoryImpl implements MongoWindStoreFactory, BundleActivator {
|
||||
private static final String MONGO_PORT = "mongo.port";
|
||||
|
||||
private static final String MONGO_HOSTNAME = "mongo.host";
|
||||
|
||||
private static final String MONGO_DB_NAME = "mongo.dbName";
|
||||
|
||||
private static final Logger logger = Logger.getLogger(MongoWindStoreFactoryImpl.class.getName());
|
||||
public class MongoWindStoreFactoryImpl implements MongoWindStoreFactory {
|
||||
private final DB db;
|
||||
|
||||
private static MongoWindStoreFactory defaultInstance;
|
||||
|
||||
private String defaultHostName;
|
||||
private int defaultPort;
|
||||
private String defaultDatabaseName;
|
||||
private final Map<Pair<String, Integer>, Mongo> mongos;
|
||||
|
||||
public MongoWindStoreFactoryImpl() {
|
||||
defaultHostName = System.getProperty(MONGO_HOSTNAME, "127.0.0.1");
|
||||
defaultPort = Integer.valueOf(System.getProperty(MONGO_PORT, "27017"));
|
||||
defaultDatabaseName = System.getProperty(MONGO_DB_NAME, DEFAULT_DB_NAME);
|
||||
mongos = new HashMap<Pair<String, Integer>, Mongo>();
|
||||
public MongoWindStoreFactoryImpl(DB db) {
|
||||
this.db = db;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MongoWindStore getMongoWindStore(MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) throws UnknownHostException, MongoException {
|
||||
return getMongoWindStore(defaultHostName, defaultPort, defaultDatabaseName, mongoObjectFactory, domainObjectFactory);
|
||||
return new MongoWindStoreImpl(db, mongoObjectFactory, domainObjectFactory);
|
||||
}
|
||||
|
||||
private MongoWindStore getMongoWindStore(String hostname, int port, String dbName,
|
||||
MongoObjectFactory mongoObjectFactory, DomainObjectFactory domainObjectFactory) throws UnknownHostException, MongoException {
|
||||
return new MongoWindStoreImpl(getDB(hostname, port, dbName), mongoObjectFactory, domainObjectFactory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DB getDB() {
|
||||
try {
|
||||
return getDB(defaultHostName, defaultPort, defaultDatabaseName);
|
||||
} catch (UnknownHostException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized DB getDB(String hostname, int port, String dbName) throws UnknownHostException {
|
||||
Pair<String, Integer> key = new Pair<String, Integer>(hostname, port);
|
||||
Mongo mongo = mongos.get(key);
|
||||
if (mongo == null) {
|
||||
mongo = new Mongo(hostname, port);
|
||||
mongos.put(key, mongo);
|
||||
}
|
||||
return mongo.getDB(dbName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(BundleContext context) throws Exception {
|
||||
defaultInstance = this;
|
||||
defaultDatabaseName = context.getProperty(MONGO_DB_NAME);
|
||||
if (defaultDatabaseName == null) {
|
||||
defaultDatabaseName = DEFAULT_DB_NAME;
|
||||
} else {
|
||||
logger.log(Level.INFO, "found mongo.dbName="+defaultDatabaseName);
|
||||
}
|
||||
defaultHostName = context.getProperty(MONGO_HOSTNAME);
|
||||
if (defaultHostName == null) {
|
||||
defaultHostName = "127.0.0.1";
|
||||
} else {
|
||||
logger.log(Level.INFO, "found "+MONGO_HOSTNAME+"="+defaultHostName);
|
||||
}
|
||||
defaultPort = context.getProperty(MONGO_PORT) != null ? Integer.valueOf(context.getProperty(MONGO_PORT)) : 27017;
|
||||
logger.log(Level.INFO, "Using port "+defaultPort+" as default for Mongo wind stores");
|
||||
}
|
||||
|
||||
public static MongoWindStoreFactory getDefaultInstance() {
|
||||
if (defaultInstance == null) {
|
||||
defaultInstance = new MongoWindStoreFactoryImpl();
|
||||
}
|
||||
return defaultInstance;
|
||||
}
|
||||
|
||||
public Integer getDefaultPort() {
|
||||
return defaultPort;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop(BundleContext context) throws Exception {
|
||||
public static MongoWindStoreFactory getInstance(DB db) {
|
||||
return new MongoWindStoreFactoryImpl(db);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -221,11 +221,11 @@ public class RacingEventServiceImpl implements RacingEventService {
|
||||
|
||||
@Override
|
||||
public synchronized RaceHandle addSwissTimingRace(String raceID, String hostname, int port, WindStore windStore, long timeoutInMilliseconds) {
|
||||
Pair<String, Integer> key = new Pair<String, Integer>(hostname, port);
|
||||
Triple<String, String, Integer> key = new Triple<String, String, Integer>(raceID, hostname, port);
|
||||
RaceTracker tracker = raceTrackersByID.get(key);
|
||||
if (tracker == null) {
|
||||
tracker = getSwissTimingFactory().createRaceTracker(raceID, hostname, port, windStore);
|
||||
raceTrackersByID.put(key, tracker);
|
||||
raceTrackersByID.put(tracker.getID(), tracker);
|
||||
Set<RaceTracker> trackers = raceTrackersByEvent.get(tracker.getEvent());
|
||||
if (trackers == null) {
|
||||
trackers = new HashSet<RaceTracker>();
|
||||
@@ -266,7 +266,7 @@ public class RacingEventServiceImpl implements RacingEventService {
|
||||
RaceTracker tracker = raceTrackersByID.get(key);
|
||||
if (tracker == null) {
|
||||
tracker = getDomainFactory().createRaceTracker(paramURL, liveURI, storedURI, windStore);
|
||||
raceTrackersByID.put(key, tracker);
|
||||
raceTrackersByID.put(tracker.getID(), tracker);
|
||||
Set<RaceTracker> trackers = raceTrackersByEvent.get(tracker.getEvent());
|
||||
if (trackers == null) {
|
||||
trackers = new HashSet<RaceTracker>();
|
||||
|
||||
Reference in new issue
Block a user