From 416e091f2487aab69f49f32386515491ba3156d2 Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Tue, 21 Jun 2011 02:45:14 +0200 Subject: [PATCH 1/3] Fixed sorting for last races, fixed leaderboard empty values, added new icons for gains and losses --- .../sailing/connector/provider.py | 6 ++- .../sailing.web/sailing/web/browser/core.py | 9 ++-- .../sailing/web/browser/functions.py | 39 ++++++++++++------ .../web/browser/moderator-static/app.js | 8 +--- .../browser/moderator-static/arrow-gain.png | Bin 201 -> 172 bytes .../browser/moderator-static/arrow-loss.png | Bin 205 -> 177 bytes .../web/browser/moderator-static/flags/de.png | Bin 2831 -> 398 bytes .../web/browser/templates/java-connector.pt | 3 +- .../web/browser/templates/leaderboard-live.pt | 10 ++--- 9 files changed, 44 insertions(+), 31 deletions(-) diff --git a/python/src/sailing.connector/sailing/connector/provider.py b/python/src/sailing.connector/sailing/connector/provider.py index d70bcc63ed8..0ea8fe7f4c4 100644 --- a/python/src/sailing.connector/sailing/connector/provider.py +++ b/python/src/sailing.connector/sailing/connector/provider.py @@ -43,7 +43,9 @@ class LiveDataReceiver(threading.Thread): # make it possible to pause listener if self.paused is True: - time.sleep(1) + print >>sys.stderr, '#', + sys.stderr.flush() + time.sleep(5) continue conf = URIConfigurator(self.host, self.port) @@ -62,7 +64,7 @@ class LiveDataReceiver(threading.Thread): else: conf.setParameters(dict(eventname=self.eventname, racename=self.racename, sinceupdate=self.updatecount)) - conf.setLogging(True) + conf.setLogging(False) try: # need to lock because other threads could overwrite information diff --git a/python/src/sailing.web/sailing/web/browser/core.py b/python/src/sailing.web/sailing/web/browser/core.py index c7a9c92e46e..c52c8098205 100644 --- a/python/src/sailing.web/sailing/web/browser/core.py +++ b/python/src/sailing.web/sailing/web/browser/core.py @@ -231,13 +231,16 @@ class BaseView(object): if name[0] == 'ETASEC': val = '%.f:%d' % (int(value) / 60, int(value)-( (int(value)/60)*60 )) if len(val.split(':')[-1]) == 1: - val = '%s0' % val + val = '0%s' % val + + if val == '00:0': + val = '0:0' if name[0] == 'GLP': if value > 0: - val = '%s' % value + val = '%s' % value elif value < 0: - val = '%s' % abs(value) + val = '%s' % abs(value) else: val = '0' return val diff --git a/python/src/sailing.web/sailing/web/browser/functions.py b/python/src/sailing.web/sailing/web/browser/functions.py index e9d1aae7d56..a2bef900c98 100644 --- a/python/src/sailing.web/sailing/web/browser/functions.py +++ b/python/src/sailing.web/sailing/web/browser/functions.py @@ -180,6 +180,12 @@ def configureListener(context, request): view.session['listener-started'] = True view.session.save() + elif request.POST.get('emergency-reload', None): + state = reloadData(context, request) + if state is True: + return view.yieldMessage('Data refreshed! Can take a while until listener threads recover. Make sure to also reload running Leaderboards!') + return view.yieldMessage('Could not refresh data - this should NEVER happen :-)') + elif request.POST.get('disconnect-server', None): # disconnect does not stop listeners but just disconnects the # session of the user from server @@ -696,21 +702,28 @@ def reloadData(context, request): # drops all data in database and reload all running listeners view = core.BaseView(context, request) - event = view.currentEvent() - if event: + # pause all listener threads + for listener in threaded_listener.values(): + if listener.paused == False: + listener.paused = True - # pause all listener threads - for listener in threaded_listener.values(): - if listener.paused == False: - listener.paused = True + # give threads time to pause + time.sleep(10) - # remove competitors matching the event - model.CompetitorImpl.removeAllBy(event=event.name) + # drop DB with all data in it + from sailing.db.monitoring import dropDB + dropDB() - # reload event data completely - configurator = view.listenerConf() - configurator.setContext(config.MODERATOR) - configurator.setCommand(config.LIST_EVENTS) - provider.eventConfiguration(configurator) + # reload event data completely + configurator = view.listenerConf() + configurator.setContext(config.MODERATOR) + configurator.setCommand(config.LIST_EVENTS) + provider.eventConfiguration(configurator) + # start threads again + for listener in threaded_listener.values(): + if listener.paused == True: + listener.paused = False + + return True diff --git a/python/src/sailing.web/sailing/web/browser/moderator-static/app.js b/python/src/sailing.web/sailing/web/browser/moderator-static/app.js index 19750ad02ac..dea442714c9 100644 --- a/python/src/sailing.web/sailing/web/browser/moderator-static/app.js +++ b/python/src/sailing.web/sailing/web/browser/moderator-static/app.js @@ -108,14 +108,13 @@ function sortBy(param, element) { } function yieldValue(element, newvalue, ignore_zeros, alternate_value) { - if (element.html() != newvalue) { if (ignore_zeros == true && (newvalue == '0' || newvalue == 0)) { // show alternate value if (alternate_value != undefined && alternate_value != '' && alternate_value != 'None') { element.html(alternate_value); } else { - element.html(' '); + element.html('—'); } return; } @@ -132,11 +131,6 @@ function yieldValue(element, newvalue, ignore_zeros, alternate_value) { else element.html(newvalue); - } else { - if (alternate_value != undefined && alternate_value != '' && alternate_value != 'None') { - element.html(alternate_value); - } - } } /** diff --git a/python/src/sailing.web/sailing/web/browser/moderator-static/arrow-gain.png b/python/src/sailing.web/sailing/web/browser/moderator-static/arrow-gain.png index fe9bcff7da37d8b83756fb6497a5acc14e755f72..1d0d57157aaeb2c0493da25f2598ae68002a4681 100644 GIT binary patch delta 141 zcmX@fxQ0=&Gr-TCmrII^fq{Y7)59eQNOOWP2OE%lFp*7QqM}B!pQnpsNX4zBU;qEx zGb^4s;=qzHXHQti0;Q74E{zqMQ;x0TP}wNnv3S82ja^DJm|`{LUEViorW{(tz{azH qt93?!hC|qn>74ycJDeIAm>HUKR2`laJuv~=z~JfX=d#Wzp$P!904?zV delta 171 zcmZ3(c#=`EGr-TCmrII^fq{Y7)59eQNDF{42OE%-|NK93qM}B9wx^3@NX4zBKmY&R zGpjam&VMqc^pJYv4-Pxio*gj^S1JTOUOMg+FKW6cC6vk#pe#LM7uON3jI4adjd~Xr z#JB9(Ali|-q2n~;N420m4SI>3TmG_mHg@oA$W%MYuxU}@m4<~$49ZJyN-7*+(0{BR V5nt4>31~for>mdKI;RB2CIC8HJ@5bk diff --git a/python/src/sailing.web/sailing/web/browser/moderator-static/arrow-loss.png b/python/src/sailing.web/sailing/web/browser/moderator-static/arrow-loss.png index aba1e973718147103720dbe4585c234e885717a1..c76f0deef0430204b399335ddf784dba3ab86c9a 100644 GIT binary patch delta 146 zcmX@hxRFt@Gr-TCmrII^fq{Y7)59eQNOOWP2OE%lFp*7QqM}Adu&0Y-NX4zBJ!(3C z<~K4VFg@aCxpId^v*_^R4{8F|4I+EllG1g!4std8U=Gv;1XKgFHVCc_xC#^LNUmv+XL3MM3s^~RU@ue&pds5d;g%WqHa}IsktuK5$l>zi01D0l1`Yj zY=(GjEg1}*aO540m-3+Pqh`GN`rbrZcA_w*&^nS}3_aGO)yg)dy_SyqXLYpS>AUqjV{G|yhq<0;nps*=z7?mmLwpBW1MKDL sY;(=&#;M1& literal 2831 zcmV+q3-I)bP)EX>4Tx0C?J+Q)g6D=@vcr-tj1^HV42lZa2jn55j)S9!ipu-pd!uXCy!YnK{> z2n?1;Gf_2w45>mM5#WQz#Kz&|EGkvK~TfD`~gdX7S-06<0ofSs5oQvjd@0AR~wV&ec% zEdXFAf9BHwfSvf6djSAjlpz%XppgI|6J>}*0BAb^tj|`8MF3bZ02F3R#5n-iEdVe{ zS7t~6u(trf&JYW-00;~KFj0twDF6g}0AR=?BX|IWnE(_<@>e|ZE3OddDgXd@nX){& zBsoQaTL>+22Uk}v9w^R97b_GtVFF>AKrX_0nHe&HG!NkO%m4tOkrff(gY*4(&JM25 z&Nhy=4qq+mzXtyzVq)X|<DpKGaQJ>aJVl|9x!Kv}EM4F8AGNmGkLXs)P zCDQ+7;@>R$13uq10I+I40eg`xs9j?N_Dd%aSaiVR_W%I$yKlkNCzL=651DUOSSq$Ed=-((3YAKgCY2j1FI1_jrmEhm z3sv(~%T$l4UQ>OpMpZLYTc&xiMv2YpRx)mRPGut5K^*>%BIv?Wdil zy+ylO`+*KY$4Vz$Cr4+G&IO(4Q`uA9rwXSQO+7mGt}d!;r5mBUM0dY#r|y`ZzFvTy zOmC;&dA;ZQ9DOhSRQ+xGr}ak+SO&8UBnI0I&KNw!HF0k|9WTe*@liuv!$3o&VU=N* z;e?U7(LAHoMvX=fjA_PP<0Rv4#%;!P6gpNq-kQ#w?mvCS^p@!_XIRe=&)75LwiC-K#A%&Vo6|>U7iYP1 zgY$@siA#dZE|)$on;XX6$i3uBboFsv;d;{botv|p!tJQrukJSPY3_&IpUgC$DV|v~ zbI`-cL*P;6(LW2Hl`w1HtbR{JPl0E(=OZs;FOgTR*RZ#xcdGYc?-xGyK60PqKI1$$ z-ZI`wBrnsy*W_HW0Wrec-#cqqYFCLW#$!oKa ztOZ#u3bsO~=u}!L*D43HXJuDrzs-rtIhL!QE6wf9v&!3$H=OUE|LqdO65*1zrG`sa zEge|qy{u|EvOIBl+X~|q1uKSD2CO`|inc0k)laMKSC_7Sy(W51Yk^+D%7VeQ0c-0E zRSM;Wee2xU?Ojh;FInHUVfu!h8$K0@imnvf7nc=(*eKk1(e4|2y!JHg)!SRV_x(P}zS~s+RZZ1q)n)rh`?L2yu8FGY z_?G)^U9C=SaqY(g(gXbmBM!FLxzyDi(mhmCkJc;eM-ImyzW$x>cP$Mz4ONYt#^NJz zM0w=t_X*$k9t}F$c8q(h;Rn+nb{%IOFKR-X@|s4QQ=0o*Vq3aT%s$c9>fU<%N829{ zoHRUHc}nwC$!Xf@g42^{^3RN&m7RTlF8SPG+oHC6=VQ*_Y7cMkx)5~X(nbG^=R3SR z&Rp`ibn>#>OB6F(@)2{oV%K?xm;_x?s~noduI3P8=g1L-SoYA z@fQEq)t)&$-M#aAZ}-Lb_1_lVesU-M&da;mcPH+xyidGe^g!)F*+boj)jwPQ+}Q8j ze`>&Yp!3n(NB0JWgU|kv^^Xrj1&^7J%Z3ex>z+71IXU7#a{cN2r$f(V&nBK1{-XZN zt``^}my^G3e5L*B!0Q>W+s4Ai9=^$VGcjKDR{QP2cieX!@1x%j zPvm?ce<=TG`LXp=(5L&88IzO$1Ou4!{O>iCf&c&j32;bRa{vGf6951U69E94oEQKA z00(qQO+^RW1`-J>FA5gs1^@s6T}ebiR4C7#k+BiPKnwzxJ6ZYnU)!f2zZ(z^JT3qe zk?cr-_TIKh)ZJx!W+Ke?;+5)stopping listener it will trigger two methods: If you select a race
Handling   -     +     +    
diff --git a/python/src/sailing.web/sailing/web/browser/templates/leaderboard-live.pt b/python/src/sailing.web/sailing/web/browser/templates/leaderboard-live.pt index d3ffcd85d4d..6e301c2b380 100644 --- a/python/src/sailing.web/sailing/web/browser/templates/leaderboard-live.pt +++ b/python/src/sailing.web/sailing/web/browser/templates/leaderboard-live.pt @@ -73,7 +73,7 @@ -
+
@@ -117,7 +117,7 @@ ${racebundles[int(request.params.get('r', 0))].index(bundle)+1+(int(request.params.get('r', 0))*3)} - +
@@ -148,7 +148,7 @@ - + @@ -172,7 +172,7 @@ M${markid-1} F - +
    @@ -196,7 +196,7 @@ - + From fb9270a2bbc3ccd58ad49ff3a90beb4463be0514 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 21 Jun 2011 03:29:09 +0200 Subject: [PATCH 2/3] fixed issue with multiple TracTrac Event objects having equal IDs if they represent the same regatta This caused only RaceDefinition object to be associated only with the single remaining instance of Event in the map which was supposed to hold several TracTrac events (one per tracker) with multiple associated RaceDefinition objects. --- .../domain/test/ReceiveTrackingDataTest.java | 4 +- .../domain/tractracadapter/DomainFactory.java | 37 ++++++++++--------- .../impl/DomainFactoryImpl.java | 31 +++++++++++----- .../impl/RaceCourseReceiver.java | 6 ++- .../tractracadapter/impl/RaceTrackerImpl.java | 2 +- .../TestStoringAndRetrievingWindTracks.java | 2 +- 6 files changed, 50 insertions(+), 32 deletions(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReceiveTrackingDataTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReceiveTrackingDataTest.java index 4689bde19e8..56d7591dfc6 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReceiveTrackingDataTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/ReceiveTrackingDataTest.java @@ -90,12 +90,12 @@ public class ReceiveTrackingDataTest extends AbstractTracTracLiveTest { public void raceRemoved(TrackedRace trackedRace) { } }); - for (Receiver receiver : domainFactory.getUpdateReceivers(trackedEvent, getEvent(), EmptyWindStore.INSTANCE)) { + for (Receiver receiver : domainFactory.getUpdateReceivers(trackedEvent, getEvent(), EmptyWindStore.INSTANCE, this)) { for (TypeController raceListener : receiver.getTypeControllers()) { listeners.add(raceListener); } } - addListenersForStoredDataAndStartController(domainFactory.getUpdateReceivers(trackedEvent, getEvent(), EmptyWindStore.INSTANCE)); + addListenersForStoredDataAndStartController(domainFactory.getUpdateReceivers(trackedEvent, getEvent(), EmptyWindStore.INSTANCE, this)); } @Test 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 f4e232b2603..a36f1f78c50 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 @@ -114,23 +114,22 @@ public interface DomainFactory { BoatClass getBoatClass(CompetitorClass competitorClass); /** - * For each race listed by the tractracEvent, produces - * {@link TypeController listeners} that, when - * {@link DataController#add(TypeController) registered} with the - * controller, create a {@link RaceDefinition} with the {@link Course} - * defined in proper order, and - * {@link com.sap.sailing.domain.base.Event#addRace(RaceDefinition) add} it - * to the event. Other listeners of those returned will listen - * for raw position and aggregated position data and update the - * {@link TrackedEvent}'s content accordingly. + * For each race listed by the tractracEvent, produces {@link TypeController listeners} that, when + * {@link DataController#add(TypeController) registered} with the controller, create a {@link RaceDefinition} with + * the {@link Course} defined in proper order, and {@link com.sap.sailing.domain.base.Event#addRace(RaceDefinition) + * add} it to the event. Other listeners of those returned will listen for raw position and aggregated + * position data and update the {@link TrackedEvent}'s content accordingly. * * @param trackedEvent * must have been created before through - * {@link #getOrCreateTrackedEvent(com.sap.sailing.domain.base.Event)} because - * otherwise the link to the {@link Event} can't be established - * @param windStore TODO + * {@link #getOrCreateTrackedEvent(com.sap.sailing.domain.base.Event)} because otherwise the link to the + * {@link Event} can't be established + * @param tokenToRetrieveAssociatedRace + * used in {@link #getRace} to retrieve the {@link RaceDefinition} received by the + * {@link RaceCourseReceiver} created by this call */ - Iterable getUpdateReceivers(DynamicTrackedEvent trackedEvent, Event tractracEvent, WindStore windStore); + Iterable getUpdateReceivers(DynamicTrackedEvent trackedEvent, Event tractracEvent, WindStore windStore, + Object tokenToRetrieveAssociatedRace); RaceDefinition createRaceDefinition(Race race, Course course); @@ -145,17 +144,19 @@ public interface DomainFactory { MarkPassing createMarkPassing(com.tractrac.clientmodule.Competitor competitor, Waypoint passed, TimePoint time); - Iterable getUpdateReceivers(DynamicTrackedEvent trackedEvent, Event tractracEvent, WindStore windStore, ReceiverType... types); + Iterable getUpdateReceivers(DynamicTrackedEvent trackedEvent, Event tractracEvent, WindStore windStore, + Object tokenToRetrieveAssociatedRace, ReceiverType... types); - DynamicTrackedRace trackRace(TrackedEvent trackedEvent, RaceDefinition raceDefinition, - WindStore windStore, long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed, Event tractracEvent); + DynamicTrackedRace trackRace(TrackedEvent trackedEvent, RaceDefinition raceDefinition, WindStore windStore, + long millisecondsOverWhichToAverageWind, long millisecondsOverWhichToAverageSpeed, Event tractracEvent, + Object tokenToRetrieveAssociatedRace); /** - * Non-blocking call that returns null if the {@link RaceDefinition} for the TracTrac Event + * Non-blocking call that returns null if the {@link RaceDefinition} for the token * hasn't been created yet, e.g., because the course definition hasn't been received yet or the listener * for receiving course information hasn't been registered (yet). */ - RaceDefinition getRace(Event tractracEvent); + RaceDefinition getRace(Object tokenToRetrieveAssociatedRace); JSONService parseJSONURL(URL jsonURL) throws IOException, ParseException, org.json.simple.parser.ParseException; 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 23518380c88..e21b8a130eb 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 @@ -105,7 +105,12 @@ public class DomainFactoryImpl implements DomainFactory { private final Map, com.sap.sailing.domain.base.Event> eventCache = new HashMap, com.sap.sailing.domain.base.Event>(); - private final Map tractracEventToRaceDefinitionMap = new HashMap(); + /** + * Keyed by an object that the client that started the {@link RaceCourseReceiver} which then provided the + * {@link RaceDefinition} has provided to retrieve the {@link RaceDefinition} again using + * {@link #getRace}. + */ + private final Map tractracEventToRaceDefinitionMap = new HashMap(); private final Map raceCache = new HashMap(); @@ -321,13 +326,15 @@ public class DomainFactoryImpl implements DomainFactory { } @Override - public Iterable getUpdateReceivers(DynamicTrackedEvent trackedEvent, com.tractrac.clientmodule.Event tractracEvent, WindStore windStore, ReceiverType... types) { + public Iterable getUpdateReceivers(DynamicTrackedEvent trackedEvent, com.tractrac.clientmodule.Event tractracEvent, + WindStore windStore, Object tokenToRetrieveAssociatedRace, ReceiverType... types) { Collection result = new ArrayList(); for (ReceiverType type : types) { switch (type) { case RACECOURSE: result.add(new RaceCourseReceiver( - this, trackedEvent, tractracEvent, windStore, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed)); + this, trackedEvent, tractracEvent, windStore, + tokenToRetrieveAssociatedRace, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed)); break; case MARKPOSITIONS: result.add(new MarkPositionReceiver( @@ -352,8 +359,8 @@ public class DomainFactoryImpl implements DomainFactory { @Override public Iterable getUpdateReceivers(DynamicTrackedEvent trackedEvent, - com.tractrac.clientmodule.Event tractracEvent, WindStore windStore) { - return getUpdateReceivers(trackedEvent, tractracEvent, windStore, ReceiverType.RACECOURSE, + com.tractrac.clientmodule.Event tractracEvent, WindStore windStore, Object tokenToRetrieveAssociatedRace) { + return getUpdateReceivers(trackedEvent, tractracEvent, windStore, tokenToRetrieveAssociatedRace, ReceiverType.RACECOURSE, ReceiverType.MARKPASSINGS, ReceiverType.MARKPOSITIONS, ReceiverType.RACESTARTFINISH, ReceiverType.RAWPOSITIONS); } @@ -445,18 +452,24 @@ public class DomainFactoryImpl implements DomainFactory { } @Override - public RaceDefinition getRace(com.tractrac.clientmodule.Event tractracEvent) { - return tractracEventToRaceDefinitionMap.get(tractracEvent); + public RaceDefinition getRace(Object tokenToRetrieveAssociatedRace) { + return tractracEventToRaceDefinitionMap.get(tokenToRetrieveAssociatedRace); } @Override public DynamicTrackedRace trackRace(TrackedEvent trackedEvent, RaceDefinition raceDefinition, WindStore windStore, long millisecondsOverWhichToAverageWind, - long millisecondsOverWhichToAverageSpeed, com.tractrac.clientmodule.Event tractracEvent) { + long millisecondsOverWhichToAverageSpeed, com.tractrac.clientmodule.Event tractracEvent, Object tokenToRetrieveAssociatedRace) { logger.log(Level.INFO, "Creating DynamicTrackedRaceImpl for RaceDefinition "+raceDefinition.getName()); DynamicTrackedRaceImpl result = new DynamicTrackedRaceImpl(trackedEvent, raceDefinition, windStore, millisecondsOverWhichToAverageWind, millisecondsOverWhichToAverageSpeed); - tractracEventToRaceDefinitionMap.put(tractracEvent, raceDefinition); + if (!tractracEventToRaceDefinitionMap.containsKey(tokenToRetrieveAssociatedRace)) { + tractracEventToRaceDefinitionMap.put(tokenToRetrieveAssociatedRace, raceDefinition); + } else { + logger.severe("There is already something ("+tokenToRetrieveAssociatedRace+") tracking "+ + tractracEventToRaceDefinitionMap.get(tokenToRetrieveAssociatedRace)+" while trying to start tracking for race "+ + raceDefinition); + } return result; } diff --git a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java index fc15b9e23fa..87766983745 100755 --- a/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java +++ b/java/com.sap.sailing.domain.tractracadapter/src/com/sap/sailing/domain/tractracadapter/impl/RaceCourseReceiver.java @@ -40,9 +40,11 @@ public class RaceCourseReceiver extends AbstractReceiverWithQueue(); Set typeControllers = new HashSet(); - for (Receiver receiver : domainFactory.getUpdateReceivers(trackedEvent, tractracEvent, windStore)) { + for (Receiver receiver : domainFactory.getUpdateReceivers(trackedEvent, tractracEvent, windStore, this)) { receivers.add(receiver); for (TypeController typeController : receiver.getTypeControllers()) { typeControllers.add(typeController); diff --git a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracks.java b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracks.java index 3dc22159d0e..516e4b67ee0 100755 --- a/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracks.java +++ b/java/com.sap.sailing.mongodb.test/src/com/sap/sailing/mongodb/test/TestStoringAndRetrievingWindTracks.java @@ -69,7 +69,7 @@ public class TestStoringAndRetrievingWindTracks extends AbstractTracTracLiveTest RaceDefinition race = domainFactory.getRaceDefinition(getEvent().getRaceList().iterator().next()); DynamicTrackedRace trackedRace = domainFactory.trackRace(trackedEvent, race, /* millisecondsOverWhichToAverageWind */ EmptyWindStore.INSTANCE, /* millisecondsOverWhichToAverageSpeed */ - 30000, 10000, getEvent()); + 30000, 10000, getEvent(), this); WindSource windSource = WindSource.WEB; MongoObjectFactory.INSTANCE.addWindTrackDumper(trackedEvent, trackedRace, windSource, db); WindTrack windTrack = trackedRace.getWindTrack(windSource); From 530c8095603e8d628e63d63576c505759aef5b43 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Tue, 21 Jun 2011 03:32:34 +0200 Subject: [PATCH 3/3] adjusted test case to modified signatures --- .../src/com/sap/sailing/domain/test/CourseUpdateTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CourseUpdateTest.java b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CourseUpdateTest.java index a0defac30e2..d34a6f12612 100755 --- a/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CourseUpdateTest.java +++ b/java/com.sap.sailing.domain.test/src/com/sap/sailing/domain/test/CourseUpdateTest.java @@ -69,7 +69,7 @@ public class CourseUpdateTest extends AbstractTracTracLiveTest { domainEvent = domainFactory.createEvent(getEvent()); trackedEvent = domainFactory.getOrCreateTrackedEvent(domainEvent); receivers.add(new RaceCourseReceiver(domainFactory, trackedEvent, getEvent(), /* millisecondsOverWhichToAverageWind */ - EmptyWindStore.INSTANCE, + EmptyWindStore.INSTANCE, this, 30000, /* millisecondsOverWhichToAverageSpeed */30000) { @Override protected void handleEvent(Triple event) {