From 88e126374ca22686d60fb4a042d4dc73db994dd2 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 16:02:37 +0200 Subject: [PATCH 1/3] drop only those DBs whose names we have in CollectionNames --- .../com/sap/sailing/domain/tractracadapter/RaceRecord.java | 2 +- .../com/sap/sailing/mongodb/test/AbstractMongoDBTest.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java index 9ad81161b33..e80ad48a9cb 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/RaceRecord.java @@ -99,7 +99,7 @@ public class RaceRecord { public String getName() { return name; } - + public String getEventName() { return regattaName; } diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java index a91faa902d3..5a22b5846ef 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java @@ -10,6 +10,7 @@ import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.Mongo; import com.mongodb.MongoException; +import com.sap.sailing.domain.persistence.impl.CollectionNames; import com.sap.sailing.mongodb.MongoDBConfiguration; import com.sap.sailing.mongodb.MongoDBService; @@ -43,8 +44,8 @@ public abstract class AbstractMongoDBTest { } private void dropAllCollections(DB theDB) { - for (String collectionName : theDB.getCollectionNames()) { - DBCollection c = theDB.getCollection(collectionName); + for (CollectionNames collectionName : CollectionNames.values()) { + DBCollection c = theDB.getCollection(collectionName.name()); c.drop(); } } From af44ac39e24daa425c742746265731e16de8f3d6 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 8 Jun 2012 16:30:42 +0200 Subject: [PATCH 2/3] drop wind test collection explicitly --- .../sailing/mongodb/test/AbstractMongoDBTest.java | 2 +- .../test/TestStoringAndRetrievingWindData.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java index 5a22b5846ef..0364434c5c4 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/AbstractMongoDBTest.java @@ -43,7 +43,7 @@ public abstract class AbstractMongoDBTest { assertNotNull(db); } - private void dropAllCollections(DB theDB) { + private void dropAllCollections(DB theDB) throws InterruptedException { for (CollectionNames collectionName : CollectionNames.values()) { DBCollection c = theDB.getCollection(collectionName.name()); c.drop(); diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindData.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindData.java index b24f1020023..1e7b2c9ebaf 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindData.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindData.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertNotNull; import java.net.UnknownHostException; +import org.junit.Before; import org.junit.Test; import com.mongodb.BasicDBObject; @@ -27,6 +28,13 @@ import com.sap.sailing.domain.tracking.impl.WindImpl; public class TestStoringAndRetrievingWindData extends AbstractMongoDBTest { private static final String WIND_TEST_COLLECTION = "wind_test_collection"; + @Before + @Override + public void dropTestDB() throws UnknownHostException, MongoException, InterruptedException { + super.dropTestDB(); + db.getCollection(WIND_TEST_COLLECTION).drop(); + } + @Test public void testDBConnection() throws UnknownHostException, MongoException { DBCollection coll = db.getCollection(WIND_TEST_COLLECTION); @@ -57,8 +65,8 @@ public class TestStoringAndRetrievingWindData extends AbstractMongoDBTest { DBCollection coll = db.getCollection(WIND_TEST_COLLECTION); assertNotNull(coll); DBObject object = coll.findOne(); - assertEquals(object.get("truebearingdeg"), 234.3); - assertEquals(object.get("knotspeed"), 10.7); + assertEquals(234.3, object.get("truebearingdeg")); + assertEquals(10.7, object.get("knotspeed")); } } @@ -74,7 +82,7 @@ public class TestStoringAndRetrievingWindData extends AbstractMongoDBTest { } { - Thread.sleep(1000); // wait until MongoDB has recorded the change and made it visible + Thread.sleep(3000); // wait until MongoDB has recorded the change and made it visible Mongo mongo = newMongo(); assertNotNull(mongo); DB db = mongo.getDB(getDBConfiguration().getDatabaseName()); From b51414086404a6fa31cafb883e799138a20b9850 Mon Sep 17 00:00:00 2001 From: fmittag Date: Fri, 8 Jun 2012 16:33:40 +0200 Subject: [PATCH 3/3] ensured that a tracked race is not created and added to a regatta when the boat classes are not equal --- .../domain/tractracadapter/DomainFactory.java | 2 +- .../impl/DomainFactoryImpl.java | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java index 04b516f61da..a836ea54d98 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/DomainFactory.java @@ -179,7 +179,7 @@ public interface DomainFactory { * if not null, after creating the {@link TrackedRace}, the {@link RaceDefinition} is * {@link DynamicRaceDefinitionSet#addRaceDefinition(RaceDefinition) added} to that object. */ - Pair getOrCreateRaceDefinitionAndTrackedRace(TrackedRegatta trackedRegatta, Race race, + void getOrCreateRaceDefinitionAndTrackedRace(TrackedRegatta trackedRegatta, Race race, Course course, WindStore windStore, long delayToLiveInMillis, long millisecondsOverWhichToAverageWind, DynamicRaceDefinitionSet raceDefinitionSetToUpdate); diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java index 60445834518..366f72cfce4 100644 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/DomainFactoryImpl.java @@ -367,7 +367,7 @@ public class DomainFactoryImpl implements DomainFactory { } @Override - public Pair getOrCreateRaceDefinitionAndTrackedRace(TrackedRegatta trackedRegatta, + public void getOrCreateRaceDefinitionAndTrackedRace(TrackedRegatta trackedRegatta, Race race, Course course, WindStore windStore, long delayToLiveInMillis, long millisecondsOverWhichToAverageWind, DynamicRaceDefinitionSet raceDefinitionSetToUpdate) { synchronized (raceCache) { @@ -377,21 +377,23 @@ public class DomainFactoryImpl implements DomainFactory { logger.info("Creating RaceDefinitionImpl for race "+race.getName()); raceDefinition = new RaceDefinitionImpl(race.getName(), course, competitorsAndDominantBoatClass.getB(), competitorsAndDominantBoatClass.getA(), getRaceID(race)); - // add to domain Event only if boat class matches + // add to existing regatta only if boat class matches if (raceDefinition.getBoatClass() == trackedRegatta.getRegatta().getBoatClass()) { trackedRegatta.getRegatta().addRace(raceDefinition); + + createTrackedRace(trackedRegatta, raceDefinition, windStore, + delayToLiveInMillis, millisecondsOverWhichToAverageWind, raceDefinitionSetToUpdate); + logger.info("Added race "+raceDefinition+" to regatta "+trackedRegatta.getRegatta()); + + synchronized (raceCache) { + raceCache.put(race, raceDefinition); + raceCache.notifyAll(); + } } else { logger.warning("Not adding race "+raceDefinition+" to regatta "+trackedRegatta.getRegatta()+ " because boat class "+raceDefinition.getBoatClass()+" doesn't match regatta's boat class "+ trackedRegatta.getRegatta().getBoatClass()); } - TrackedRace trackedRace = createTrackedRace(trackedRegatta, raceDefinition, windStore, - delayToLiveInMillis, millisecondsOverWhichToAverageWind, raceDefinitionSetToUpdate); - synchronized (raceCache) { - raceCache.put(race, raceDefinition); - raceCache.notifyAll(); - } - return new Pair(raceDefinition, trackedRace); } else { throw new RuntimeException("Race "+race.getName()+" already exists"); }