Merge remote-tracking branch 'origin/master'

This commit is contained in:
fmittag committed 2014-08-07 16:45:36 +02:00
commit b607d3e8de
4 files changed
+94 -31

No files matched your search

@@ -34,6 +34,8 @@ import com.google.gwt.maps.client.events.click.ClickMapEvent;
import com.google.gwt.maps.client.events.click.ClickMapHandler;
import com.google.gwt.maps.client.events.dragend.DragEndMapEvent;
import com.google.gwt.maps.client.events.dragend.DragEndMapHandler;
import com.google.gwt.maps.client.events.idle.IdleMapEvent;
import com.google.gwt.maps.client.events.idle.IdleMapHandler;
import com.google.gwt.maps.client.events.mouseout.MouseOutMapEvent;
import com.google.gwt.maps.client.events.mouseout.MouseOutMapHandler;
import com.google.gwt.maps.client.events.mouseover.MouseOverMapEvent;
@@ -279,6 +281,8 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
private LatLngBounds currentMapBounds;
private int currentZoomLevel;
private boolean autoZooming = false;
private LatLngBounds newLatLngBounds;
private WindStreamletsRaceboardOverlay streamletOverlay;
private final boolean showViewStreamlets;
@@ -381,6 +385,15 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
settings.getZoomSettings().setTypesToConsiderOnZoom(emptyList);
}
});
map.addIdleHandler(new IdleMapHandler() {
@Override
public void onEvent(IdleMapEvent event) {
if (autoZooming) {
map.panTo(newLatLngBounds.getCenter());
autoZooming = false;
}
}
});
map.addBoundsChangeHandler(new BoundsChangeMapHandler() {
@Override
public void onEvent(BoundsChangeMapEvent event) {
@@ -1211,9 +1224,22 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
// only change bounds if the new bounds don't fit into the current map zoom
List<ZoomTypes> oldZoomSettings = settings.getZoomSettings().getTypesToConsiderOnZoom();
setAutoZoomInProgress(true);
LatLngBounds newLatLngBounds = BoundsUtil.getAsLatLngBounds(newBounds);
map.panTo(newLatLngBounds.getCenter());
map.setZoom(getZoomLevel(newLatLngBounds));
newLatLngBounds = BoundsUtil.getAsLatLngBounds(newBounds);
int newZoomLevel = getZoomLevel(newLatLngBounds);
if (newZoomLevel != map.getZoom()) {
// remove the canvas animations for boats
for (BoatOverlay boatOverlay : RaceMap.this.getBoatOverlays().values()) {
boatOverlay.removeCanvasPositionAndRotationTransition();
}
// remove the canvas animations for the info overlays of the selected boats
for(CompetitorInfoOverlay infoOverlay: competitorInfoOverlays.values()) {
infoOverlay.removeCanvasPositionAndRotationTransition();
}
autoZooming = true;
map.setZoom(newZoomLevel);
} else {
map.panTo(newLatLngBounds.getCenter());
}
settings.getZoomSettings().setTypesToConsiderOnZoom(oldZoomSettings);
setAutoZoomInProgress(false);
}
@@ -63,12 +63,16 @@ import com.sap.sailing.domain.common.MasterDataImportObjectCreationCount;
import com.sap.sailing.domain.common.MaxPointsReason;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.SpeedWithBearing;
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.DataImportProgressImpl;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.common.impl.WindSourceWithAdditionalID;
import com.sap.sailing.domain.common.media.MediaTrack;
import com.sap.sailing.domain.leaderboard.FlexibleLeaderboard;
import com.sap.sailing.domain.leaderboard.Leaderboard;
@@ -92,8 +96,10 @@ import com.sap.sailing.domain.racelog.impl.CompetitorResultsImpl;
import com.sap.sailing.domain.racelog.impl.RaceLogEventAuthorImpl;
import com.sap.sailing.domain.racelog.impl.RaceLogEventFactoryImpl;
import com.sap.sailing.domain.racelog.tracking.EmptyGPSFixStore;
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.Wind;
import com.sap.sailing.domain.tracking.WindTrack;
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
import com.sap.sailing.domain.tracking.impl.WindImpl;
import com.sap.sailing.mongodb.MongoDBConfiguration;
@@ -120,6 +126,8 @@ public class MasterDataImportTest {
private final TimePoint eventStartDate = new MillisecondsTimePoint(new Date());
private final TimePoint eventEndDate = new MillisecondsTimePoint(new Date());
private final UUID raceId = UUID.randomUUID();
/**
* Log Events created when running test. Will be removed from db at teardown
@@ -216,7 +224,7 @@ public class MasterDataImportTest {
boat2);
competitors.add(competitorToSuppress);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
raceColumn.setTrackedRace(testFleet1, trackedRace);
@@ -306,8 +314,8 @@ public class MasterDataImportTest {
Assert.assertNotNull(raceColumnOnTarget);
Assert.assertNull(raceColumnOnTarget.getTrackedRace(raceColumnOnTarget.getFleetByName(testFleet1Name)));
raceColumnOnTarget.setTrackedRace(raceColumnOnTarget.getFleets().iterator().next(), new DummyTrackedRace(
competitors, regattaOnTarget, null));
raceColumnOnTarget.setTrackedRace(raceColumnOnTarget.getFleets().iterator().next(), new DummyTrackedRace(raceId,
competitors, regattaOnTarget, null, sourceService.getWindStore()));
Assert.assertTrue(leaderboardOnTarget.getScoreCorrection().hasCorrectionFor(raceColumnOnTarget));
Competitor competitorOnTarget = domainFactory.getExistingCompetitorById(competitorUUID);
@@ -315,7 +323,7 @@ public class MasterDataImportTest {
competitorsCreatedOnTarget.add(competitorOnTarget);
Fleet fleet1OnTarget = raceColumnOnTarget.getFleetByName(testFleet1.getName());
TrackedRace trackedRaceForTarget = new DummyTrackedRace(competitorsCreatedOnTarget, regattaOnTarget, null);
TrackedRace trackedRaceForTarget = new DummyTrackedRace(raceId, competitorsCreatedOnTarget, regattaOnTarget, null, sourceService.getWindStore());
raceColumnOnTarget.setTrackedRace(fleet1OnTarget, trackedRaceForTarget);
@@ -425,7 +433,7 @@ public class MasterDataImportTest {
CompetitorImpl competitor2 = new CompetitorImpl(competitor2UUID, "Froderik", Color.RED, team2, boat2);
competitors.add(competitor2);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
raceColumn.setTrackedRace(testFleet1, trackedRace);
@@ -497,7 +505,7 @@ public class MasterDataImportTest {
competitorsCreatedOnTarget.add(competitorOnTarget);
Fleet fleet1OnTarget = raceColumnOnTarget.getFleetByName(testFleet1.getName());
TrackedRace trackedRaceForTarget = new DummyTrackedRace(competitorsCreatedOnTarget, regattaOnTarget, null);
TrackedRace trackedRaceForTarget = new DummyTrackedRace(raceId, competitorsCreatedOnTarget, regattaOnTarget, null, sourceService.getWindStore());
raceColumnOnTarget.setTrackedRace(fleet1OnTarget, trackedRaceForTarget);
@@ -570,11 +578,20 @@ public class MasterDataImportTest {
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", Color.RED, team, boat);
competitors.add(competitor);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
DynamicTrackedRegatta trackedRegatta = sourceService.getOrCreateTrackedRegatta(regatta);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, trackedRegatta, sourceService.getWindStore());
regatta.addRace(trackedRace.getRace()); // make sure the competitor is serialized together with the regatta
raceColumn.setTrackedRace(testFleet1, trackedRace);
WindSource windSource = new WindSourceWithAdditionalID(WindSourceType.EXPEDITION, "Igtimi1");
WindTrack windTrackOnSource = trackedRace.getOrCreateWindTrack(windSource);
Position p = new DegreePosition(54, 30);
TimePoint at = new MillisecondsTimePoint(20000);
SpeedWithBearing windSpeedWithBearing = new KnotSpeedWithBearingImpl(20, new DegreeBearingImpl(12));
windTrackOnSource.add(new WindImpl(p, at, windSpeedWithBearing));
// Serialize
List<String> groupNamesToExport = new ArrayList<String>();
groupNamesToExport.add(group.getName());
@@ -628,11 +645,25 @@ public class MasterDataImportTest {
competitorsCreatedOnTarget.add(competitorOnTarget);
Fleet fleet1OnTarget = raceColumnOnTarget.getFleetByName(testFleet1.getName());
TrackedRace trackedRaceForTarget = new DummyTrackedRace(competitorsCreatedOnTarget, regattaOnTarget, null);
DynamicTrackedRegatta trackedRegattaForTarget = destService.getOrCreateTrackedRegatta(regattaOnTarget);
TrackedRace trackedRaceForTarget = new DummyTrackedRace(raceId, competitorsCreatedOnTarget, regattaOnTarget, trackedRegattaForTarget, sourceService.getWindStore());
raceColumnOnTarget.setTrackedRace(fleet1OnTarget, trackedRaceForTarget);
// TODO Somehow have check if wind was really imported. DummyTrackedRace not sufficient
WindTrack windTrackOnDest = trackedRaceForTarget.getOrCreateWindTrack(windSource);
windTrackOnDest.lockForRead();
try {
Iterable<Wind> fixes = windTrackOnDest.getFixes();
Assert.assertNotNull(fixes);
Iterator<Wind> iterator = fixes.iterator();
Assert.assertTrue(iterator.hasNext());
Wind firstWindFix = iterator.next();
Assert.assertNotNull(firstWindFix);
Assert.assertFalse(iterator.hasNext());
} finally {
windTrackOnDest.unlockAfterRead();
}
}
@@ -702,7 +733,7 @@ public class MasterDataImportTest {
"Froderik", Color.RED, team2, boat2);
competitors.add(competitor2);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
raceColumn.setTrackedRace(testFleet1, trackedRace);
@@ -779,7 +810,7 @@ public class MasterDataImportTest {
competitorsCreatedOnTarget.add(competitorOnTarget);
Fleet fleet1OnTarget = raceColumnOnTarget.getFleetByName(testFleet1.getName());
TrackedRace trackedRaceForTarget = new DummyTrackedRace(competitorsCreatedOnTarget, regattaOnTarget, null);
TrackedRace trackedRaceForTarget = new DummyTrackedRace(raceId, competitorsCreatedOnTarget, regattaOnTarget, null, sourceService.getWindStore());
raceColumnOnTarget.setTrackedRace(fleet1OnTarget, trackedRaceForTarget);
@@ -858,7 +889,7 @@ public class MasterDataImportTest {
boat2);
competitors.add(competitorToSuppress);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
raceColumn.setTrackedRace(testFleet1, trackedRace);
@@ -1056,7 +1087,7 @@ public class MasterDataImportTest {
boat2);
competitors.add(competitorToSuppress);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
raceColumn.setTrackedRace(testFleet1, trackedRace);
@@ -1149,7 +1180,7 @@ public class MasterDataImportTest {
Leaderboard leaderboardToOverride = destService.addRegattaLeaderboard(
regattaToOverride.getRegattaIdentifier(), "testDisplayNameNotToOverride", discardRule);
TrackedRace trackedRace2 = new DummyTrackedRace(competitorsToOverride, regattaToOverride, null);
TrackedRace trackedRace2 = new DummyTrackedRace(raceId, competitorsToOverride, regattaToOverride, null, sourceService.getWindStore());
RaceColumn columnToOverride = leaderboardToOverride.getRaceColumns().iterator().next();
columnToOverride.setTrackedRace(testFleet1ToOverride, trackedRace2);
identifierOfRegattaTrackedRace = regattaToOverride
@@ -1345,7 +1376,7 @@ public class MasterDataImportTest {
boat2);
competitors.add(competitorToSuppress);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
raceColumn.setTrackedRace(testFleet1, trackedRace);
@@ -1478,7 +1509,7 @@ public class MasterDataImportTest {
boat2);
competitors.add(competitorToSuppress);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
raceColumn.setTrackedRace(testFleet1, trackedRace);
sourceService.setRegattaForRace(regatta, "dummy");
@@ -1686,7 +1717,7 @@ public class MasterDataImportTest {
competitors.add(competitorToSuppress);
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
raceColumn.setTrackedRace(testFleet1, trackedRace);
@@ -1911,7 +1942,7 @@ public class MasterDataImportTest {
CompetitorImpl competitorToSuppress = new CompetitorImpl(competitorToSuppressUUID, "Merkel", Color.RED, team2,
boat2);
competitors.add(competitorToSuppress);
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta, null);
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
leaderboard.addRace(trackedRace, raceColumnName, false);
RaceColumn raceColumnOnLeaderboard = leaderboard.getRaceColumnByName(raceColumnName);
@@ -2001,8 +2032,8 @@ public class MasterDataImportTest {
series, true, new LowPoint(), courseAreaUUID, /* useStartTimeInference */true);
raceColumnOnTarget.setTrackedRace(defaultFleetOnTarget,
new DummyTrackedRace(
competitors, regattaOnTarget, null));
new DummyTrackedRace(raceId,
competitors, regattaOnTarget, null, sourceService.getWindStore()));
Assert.assertTrue(leaderboardOnTarget.getScoreCorrection().hasCorrectionFor(raceColumnOnTarget));
Competitor competitorOnTarget = domainFactory.getExistingCompetitorById(competitorUUID);
@@ -2010,7 +2041,7 @@ public class MasterDataImportTest {
competitorsCreatedOnTarget.add(competitorOnTarget);
Assert.assertEquals(defaultFleetOnTarget, leaderboardOnTarget.getFleet(null));
TrackedRace trackedRaceForTarget = new DummyTrackedRace(competitorsCreatedOnTarget, regattaOnTarget, null);
TrackedRace trackedRaceForTarget = new DummyTrackedRace(raceId, competitorsCreatedOnTarget, regattaOnTarget, null, sourceService.getWindStore());
raceColumnOnTarget.setTrackedRace(defaultFleetOnTarget, trackedRaceForTarget);
@@ -55,20 +55,25 @@ public class DummyTrackedRace extends TrackedRaceWithWindEssentials {
private static final long serialVersionUID = -11522605089325440L;
private Regatta regatta;
public DummyTrackedRace(final Iterable<? extends Competitor> competitors, final Regatta regatta, final TrackedRegatta trackedRegatta) {
public DummyTrackedRace(final Serializable raceId, final Iterable<? extends Competitor> competitors, final Regatta regatta, final TrackedRegatta trackedRegatta, final WindStore windStore) {
this(competitors, regatta, trackedRegatta, new RaceDefinitionImpl("DummyRace", new CourseImpl("Dummy Course", Collections.<Waypoint>emptyList()),
regatta.getBoatClass(), competitors));
regatta.getBoatClass(), competitors, raceId), windStore);
}
public DummyTrackedRace(final Iterable<? extends Competitor> competitors, final Regatta regatta, final TrackedRegatta trackedRegatta,
RaceDefinition race) {
super(race, trackedRegatta, EmptyWindStore.INSTANCE, -1);
RaceDefinition race, WindStore windStore) {
super(race, trackedRegatta, windStore, -1);
this.regatta = regatta;
}
public DummyTrackedRace(final Iterable<? extends Competitor> competitors, final Regatta regatta, final TrackedRegatta trackedRegatta,
RaceDefinition race) {
this(competitors, regatta, trackedRegatta, race, EmptyWindStore.INSTANCE);
}
public DummyTrackedRace(final String raceName, final Serializable raceId) {
super(new RaceDefinitionImpl(raceName, new CourseImpl("Dummy Course", Collections.<Waypoint> emptyList()),
/* boatClass */ null, new HashSet<Competitor>()), null, EmptyWindStore.INSTANCE, -1);
/* boatClass */ null, new HashSet<Competitor>(), raceId), null, EmptyWindStore.INSTANCE, -1);
}
@Override
@@ -38,6 +38,7 @@ import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.TrackedRegatta;
import com.sap.sailing.domain.tracking.Wind;
import com.sap.sailing.domain.tracking.WindTrack;
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.RacingEventServiceOperation;
import com.sap.sailing.server.masterdata.DummyTrackedRace;
@@ -280,7 +281,7 @@ public class ImportMasterDataOperation extends
Iterator<? extends Fleet> fleetIterator = fleets.iterator();
if (fleetIterator.hasNext()) {
fleet = fleetIterator.next();
DummyTrackedRace dummy = new DummyTrackedRace(leaderboard.getAllCompetitors(), regatta, null);
DummyTrackedRace dummy = new DummyTrackedRace(UUID.randomUUID(), leaderboard.getAllCompetitors(), regatta, null, EmptyWindStore.INSTANCE);
raceColumn.setTrackedRace(fleet, dummy);
}
}