use Race instead of raceID as construction argument for SwissTimingRaceTrackerImpl; formatting changes

Conflicts:

	java/com.sap.sailing.domain.swisstimingadapter.persistence/src/com/sap/sailing/domain/swisstimingadapter/persistence/impl/SwissTimingAdapterPersistenceImpl.java
	java/com.sap.sailing.domain.swisstimingadapter.test/src/com/sap/sailing/domain/swisstimingadapter/test/ScriptedStoreAndForwardTest.java
This commit is contained in:
Axel Uhl
2011-11-14 20:58:45 +01:00
parent 16d6035991
commit 66aa964c80
7 changed files with 25 additions and 20 deletions
@@ -31,18 +31,14 @@ public class SwissTimingAdapterPersistenceImpl implements SwissTimingAdapterPers
public SwissTimingAdapterPersistenceImpl(DB db, SwissTimingFactory swissTimingFactory) {
super();
this.database = db;
this.swissTimingFactory = swissTimingFactory;
init();
}
private void init()
{
private void init() {
DBCollection rawMessages = database.getCollection(CollectionNames.RAW_MESSAGES.name());
rawMessages.ensureIndex(new BasicDBObject().append(FieldNames.MESSAGE_SEQUENCE_NUMBER.name(), 1));
// ensure the required indexes for the collection of race specific messages
DBCollection racesMessageCollection = database.getCollection(CollectionNames.RACES_MESSAGES.name());
@@ -8,7 +8,7 @@ import com.sap.sailing.domain.swisstimingadapter.impl.DomainFactoryImpl;
public interface DomainFactory {
final static DomainFactory INSTANCE = new DomainFactoryImpl();
Event getOrCreateEvent(String raceID);
Event getOrCreateEvent(Race race);
Nationality getOrCreateNationality(String nationalityName);
@@ -41,7 +41,7 @@ public interface SwissTimingFactory {
SwissTimingConfiguration createSwissTimingConfiguration(String name, String hostname, int port);
SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, WindStore windStore, RaceSpecificMessageLoader messageLoader, TrackedEventRegistry trackedEventRegistry) throws InterruptedException, UnknownHostException, IOException, ParseException;
SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, WindStore windStore, RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory, TrackedEventRegistry trackedEventRegistry) throws InterruptedException, UnknownHostException, IOException, ParseException;
Race createRace(String raceId, String description, TimePoint startTime);
@@ -17,6 +17,7 @@ import com.sap.sailing.domain.base.impl.NationalityImpl;
import com.sap.sailing.domain.base.impl.PersonImpl;
import com.sap.sailing.domain.base.impl.TeamImpl;
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
import com.sap.sailing.domain.swisstimingadapter.Race;
public class DomainFactoryImpl implements DomainFactory {
private final Map<String, Event> raceIDToEventCache;
@@ -30,11 +31,11 @@ public class DomainFactoryImpl implements DomainFactory {
}
@Override
public Event getOrCreateEvent(String raceID) {
Event result = raceIDToEventCache.get(raceID);
public Event getOrCreateEvent(Race race) {
Event result = raceIDToEventCache.get(race.getRaceID());
if (result == null) {
result = new EventImpl(raceID, null);
raceIDToEventCache.put(raceID, result);
result = new EventImpl(race.getDescription(), null);
raceIDToEventCache.put(race.getRaceID(), result);
}
return result;
}
@@ -8,6 +8,7 @@ import java.util.HashMap;
import java.util.Map;
import com.sap.sailing.domain.base.TimePoint;
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
import com.sap.sailing.domain.swisstimingadapter.Race;
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
import com.sap.sailing.domain.swisstimingadapter.SailMasterConnector;
@@ -55,9 +56,9 @@ public class SwissTimingFactoryImpl implements SwissTimingFactory {
@Override
public SwissTimingRaceTracker createRaceTracker(String raceID, String hostname, int port, WindStore windStore,
RaceSpecificMessageLoader messageLoader, TrackedEventRegistry trackedEventRegistry)
RaceSpecificMessageLoader messageLoader, DomainFactory domainFactory, TrackedEventRegistry trackedEventRegistry)
throws InterruptedException, UnknownHostException, IOException, ParseException {
return new SwissTimingRaceTrackerImpl(raceID, hostname, port, this, messageLoader, trackedEventRegistry);
return new SwissTimingRaceTrackerImpl(raceID, hostname, port, domainFactory, this, messageLoader, trackedEventRegistry);
}
@Override
@@ -16,6 +16,7 @@ import com.sap.sailing.domain.base.TimePoint;
import com.sap.sailing.domain.base.impl.BoatClassImpl;
import com.sap.sailing.domain.base.impl.EventImpl;
import com.sap.sailing.domain.swisstimingadapter.Course;
import com.sap.sailing.domain.swisstimingadapter.DomainFactory;
import com.sap.sailing.domain.swisstimingadapter.Fix;
import com.sap.sailing.domain.swisstimingadapter.Race;
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
@@ -35,17 +36,19 @@ public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailM
private final SailMasterConnector connector;
private final String raceID;
private final RaceSpecificMessageLoader messageLoader;
private final DomainFactory domainFactory;
private final TrackedEventRegistry trackedEventRegistry;
private RaceDefinition race;
private Course course;
private StartList startList;
protected SwissTimingRaceTrackerImpl(String raceID, String hostname, int port, SwissTimingFactory factory,
RaceSpecificMessageLoader messageLoader, TrackedEventRegistry trackedEventRegistry)
protected SwissTimingRaceTrackerImpl(String raceID, String hostname, int port, DomainFactory domainFactory,
SwissTimingFactory factory, RaceSpecificMessageLoader messageLoader, TrackedEventRegistry trackedEventRegistry)
throws InterruptedException, UnknownHostException, IOException, ParseException {
this.connector = factory.getOrCreateSailMasterConnector(hostname, port, messageLoader);
this.trackedEventRegistry = trackedEventRegistry;
this.domainFactory = domainFactory;
this.raceID = raceID;
this.messageLoader = messageLoader;
connector.addSailMasterListener(raceID, this);
@@ -128,7 +131,7 @@ public class SwissTimingRaceTrackerImpl implements SwissTimingRaceTracker, SailM
assert course != null;
// now we can create the RaceDefinition and most other things
Race race = messageLoader.getRace(raceID);
Event event = new EventImpl(race.getDescription(), new BoatClassImpl("Unknown"));
Event event = domainFactory.getOrCreateEvent(race);
// TODO continue here by creating the Waypoint/ControlPoint objects, then the CourseImpl, the CompetitorImpl objects and then the RaceDefinition; afterwards, also create the tracking counterparts such as the TrackedRaceImpl and TrackedEventImpl
}
@@ -61,7 +61,9 @@ public class RacingEventServiceImpl implements RacingEventService {
*/
private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private final DomainFactory domainFactory;
private final DomainFactory tractracDomainFactory;
private final com.sap.sailing.domain.swisstimingadapter.DomainFactory swissTimingDomainFactory;
private final WindTrackerFactory windTrackerFactory;
@@ -100,10 +102,11 @@ public class RacingEventServiceImpl implements RacingEventService {
private final Map<Event, DynamicTrackedEvent> eventTrackingCache;
public RacingEventServiceImpl() {
domainFactory = DomainFactory.INSTANCE;
tractracDomainFactory = DomainFactory.INSTANCE;
domainObjectFactory = DomainObjectFactory.INSTANCE;
mongoObjectFactory = MongoObjectFactory.INSTANCE;
swissTimingFactory = SwissTimingFactory.INSTANCE;
swissTimingDomainFactory = com.sap.sailing.domain.swisstimingadapter.DomainFactory.INSTANCE;
swissTimingAdapterPersistence = SwissTimingAdapterPersistence.INSTANCE;
windTrackerFactory = ExpeditionWindTrackerFactory.getInstance();
eventsByName = new HashMap<String, Event>();
@@ -180,7 +183,7 @@ public class RacingEventServiceImpl implements RacingEventService {
}
private DomainFactory getDomainFactory() {
return domainFactory;
return tractracDomainFactory;
}
@Override
@@ -233,7 +236,8 @@ public class RacingEventServiceImpl implements RacingEventService {
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, swissTimingAdapterPersistence, this);
tracker = getSwissTimingFactory().createRaceTracker(raceID, hostname, port, windStore,
swissTimingAdapterPersistence, swissTimingDomainFactory, this);
raceTrackersByID.put(tracker.getID(), tracker);
Set<RaceTracker> trackers = raceTrackersByEvent.get(tracker.getEvent());
if (trackers == null) {