mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-08 13:20:57 +00:00
Merge remote-tracking branch 'origin/master' into newhome
This commit is contained in:
commit
1c9b03d479
5 files changed
+129
-38
No files matched your search
+54
-9
@@ -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,20 +385,29 @@ 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) {
|
||||
if (!isAutoZoomInProgress() && !map.getBounds().equals(currentMapBounds)) {
|
||||
int newZoomLevel = map.getZoom();
|
||||
if (!isAutoZoomInProgress() && (newZoomLevel != currentZoomLevel)) {
|
||||
// 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()) {
|
||||
for (CompetitorInfoOverlay infoOverlay : competitorInfoOverlays.values()) {
|
||||
infoOverlay.removeCanvasPositionAndRotationTransition();
|
||||
}
|
||||
}
|
||||
int newZoomLevel = map.getZoom();
|
||||
if ((streamletOverlay != null) && !map.getBounds().equals(currentMapBounds)) {
|
||||
streamletOverlay.onBoundsChanged(newZoomLevel != currentZoomLevel);
|
||||
}
|
||||
@@ -1184,22 +1197,56 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
}
|
||||
}
|
||||
|
||||
private int getZoomLevel(LatLngBounds bounds) {
|
||||
int GLOBE_PXSIZE = 256; // a constant in Google's map projection
|
||||
int MAX_ZOOM = 30; // currently max-zoom is 24, but Google may extend it
|
||||
double LOG2 = Math.log(2.0);
|
||||
double deltaLng = bounds.getNorthEast().getLongitude() - bounds.getSouthWest().getLongitude();
|
||||
double deltaLat = bounds.getNorthEast().getLatitude() - bounds.getSouthWest().getLatitude();
|
||||
if ((deltaLng == 0) && (deltaLat == 0)) {
|
||||
return MAX_ZOOM;
|
||||
}
|
||||
if (deltaLng < 0) {
|
||||
deltaLng += 360;
|
||||
}
|
||||
int zoomLng = (int) Math.floor(Math.log(map.getDiv().getClientWidth() * 360 / deltaLng / GLOBE_PXSIZE) / LOG2);
|
||||
if (deltaLat < 0) {
|
||||
deltaLat += 360;
|
||||
}
|
||||
int zoomLat = (int) Math.floor(Math.log(map.getDiv().getClientHeight() * 180 / deltaLat / GLOBE_PXSIZE) / LOG2);
|
||||
return Math.min(zoomLat, zoomLng);
|
||||
}
|
||||
|
||||
private void zoomMapToNewBounds(Bounds newBounds) {
|
||||
if (newBounds != null) {
|
||||
Bounds currentMapBounds = BoundsUtil.getAsBounds(map.getBounds());
|
||||
if (!currentMapBounds.contains(newBounds) || graticuleAreaRation(currentMapBounds, newBounds) > 10) {
|
||||
if (!currentMapBounds.contains(newBounds) || graticuleAreaRatio(currentMapBounds, newBounds) > 10) {
|
||||
// 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.fitBounds(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private double graticuleAreaRation(Bounds containing, Bounds contained) {
|
||||
private double graticuleAreaRatio(Bounds containing, Bounds contained) {
|
||||
assert containing.contains(contained);
|
||||
double containingAreaRatio = getGraticuleArea(containing) / getGraticuleArea(contained);
|
||||
return containingAreaRatio;
|
||||
@@ -1838,7 +1885,6 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
}
|
||||
|
||||
public static class TailsBoundsCalculator extends LatLngBoundsCalculatorForSelected {
|
||||
|
||||
@Override
|
||||
public Bounds calculateNewBounds(RaceMap racemap) {
|
||||
Bounds newBounds = null;
|
||||
@@ -1865,7 +1911,6 @@ public class RaceMap extends AbsolutePanel implements TimeListener, CompetitorSe
|
||||
}
|
||||
return newBounds;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class CourseMarksBoundsCalculator implements LatLngBoundsCalculator {
|
||||
|
||||
+53
-22
@@ -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);
|
||||
|
||||
|
||||
+10
-5
@@ -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
|
||||
|
||||
+2
-1
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,16 @@
|
||||
<h2 class="articleHeadline">Analyzing Races, Leaderboards</h2>
|
||||
|
||||
<div class="innerContent">
|
||||
<h2 class="articleSubheadline">July 2014</h2>
|
||||
<h2 class="articleSubheadline">August 2014</h2>
|
||||
|
||||
<ul class="bulletList">
|
||||
<li>When using the auto-zoom feature from the map settings, boats and wind streamlets will now
|
||||
continue to move smoothly as long as the map only needs panning.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2 class="articleSubheadline">July 2014</h2>
|
||||
|
||||
<ul class="bulletList">
|
||||
<li>The advantage line now uses the wind at the position in the middle of the leg that the
|
||||
|
||||
Reference in new issue
Block a user