Merge branch 'master' into bug4350

This commit is contained in:
Kai Boernert committed 2017-12-18 09:23:09 +01:00
commit b179924471
11 files changed
+1171 -23

No files matched your search

@@ -25,7 +25,8 @@ Require-Bundle: com.sap.sailing.domain,
com.sap.sailing.udpconnector,
com.googlecode.mgwt;bundle-version="2.0.0";resolution:=optional,
com.sap.sse.gwt.adminconsole,
org.apache.commons.math;bundle-version="2.1.0"
org.apache.commons.math;bundle-version="2.1.0",
com.sap.sse.security.ui
Bundle-ActivationPolicy: lazy
Import-Package: com.sap.sse.util,
javax.servlet;version="3.1.0",
@@ -217,9 +217,23 @@ public class RaceOfCompetitorWithContext implements HasRaceOfCompetitorContext {
private int getNumberOf(ManeuverType maneuverType) {
TrackedRace trackedRace = getTrackedRace();
int number = 0;
for (Maneuver maneuver : trackedRace.getManeuvers(getCompetitor(), trackedRace.getStartOfRace(), trackedRace.getEndOfTracking(), false)) {
if (maneuver.getType() == maneuverType) {
number++;
if (trackedRace != null && trackedRace.getStartOfRace() != null) {
final TimePoint end;
final TimePoint endOfTracking = trackedRace.getEndOfTracking();
if (trackedRace.getEndOfRace() != null) {
end = trackedRace.getEndOfRace();
} else {
final TimePoint now = MillisecondsTimePoint.now();
if (endOfTracking != null && endOfTracking.before(now)) {
end = endOfTracking;
} else {
end = now;
}
}
for (Maneuver maneuver : trackedRace.getManeuvers(getCompetitor(), trackedRace.getStartOfRace(), end, false)) {
if (maneuver.getType() == maneuverType) {
number++;
}
}
}
return number;
@@ -0,0 +1,983 @@
//stored-uri:datafiles/66ccec10-b77d-0132-26ea-60a44ce903c3.mtb
StartReplay:1
// Input from params_static:
// Input from event_parameters:
DefaultPanel:
ReCalcDirAndSpeed:1
CompMarkerUUID:2dee0384-2c45-11e4-a9f6-14dae9614d7b
CodanIsSponsor:0
DefaultTailLength:60
EnableResults:1
ResultsLayout:[{"key":"Order","header":"#","description":"Position","printable":true,"align":"right","collapsible":false},{"key":"Name","header":"Name","description":"Competitor's name","printable":true,"align":"left","collapsible":false},{"key":"ShortName","header":"Short Name","description":"Competitor's short name","printable":true,"align":"left","collapsible":true},{"key":"LegTime","header":"Leg","description":"Leg time","printable":false,"align":"right","collapsible":true},{"key":"LegPosition","header":"#","description":"Leg position","printable":false,"align":"right","collapsible":true},{"key":"Time","header":"Total","description":"Total time","printable":true,"align":"right","collapsible":false},{"key":"After","header":"Total Δ","description":"Total Δ","printable":true,"align":"right","collapsible":false}]
PerformanceTableLayout:[{"key":"Pos","header":"Pos"},{"key":"Name","header":"Name"},{"key":"Short","header":"Short"},{"key":"Country","header":"Country"},{"key":"After","header":"After"},{"key":"Leg pos","header":"Leg pos"},{"key":"Leg time","header":"Leg time"},{"key":"SOG","header":"SOG"},{"key":"VMG","header":"VMG"},{"key":"Top speed","header":"Top Speed"},{"key":"Distance","header":"Distance"}]
APzoomChangeTime:2500
disableAutoProduce:0
autoProduce:0
APstartLineShowOfLeg:0.25
APsideOfStartLine:0.30
APstartSwitch:0.8
APwholeLegBehindMarks:0.15
APmarkSwitch:0.13
APmarkZoomBehindMarks:0.10
APmarkZoomInFrontOfMarks:0.20
PopupMarkerUUID:84199024-2c45-11e4-a9f6-14dae9614d7b
ManualUrl:http://www.tractrac.com/files/userguide_sailing.pdf
Marker1UUID:2dee0384-2c45-11e4-a9f6-14dae9614d7b
Marker1Type:RGBMarkerFactory
Marker1Directional:1
Marker1Image:markers/boat_FF0000_big.png
Marker1Length:5
Marker1MinPixelSize:30
Startlocation:25.66219980468759,-33.95794373375933
MaxDiffTime:1200
MaxMetersPerSecond:20
PrecisionMeters:20
ShortAvgTime:180
LongAvgTime:900
TimeZone:2
CompMarkerTimeout:60
FramesPerSecond:8
replayspeedup:5
MatchRaceClock:0
MatchRaceClockNo:3
MatchRaceClockSpacing:300
Minimap:1
MinimapUseLayers:2
Minimapgeorect:25.537683105468773,-33.741288381182635,26.19746406249999,-34.12630292526923
MinimapMarkerUUID:84199024-2c45-11e4-a9f6-14dae9614d7b
Marker4UUID:84199024-2c45-11e4-a9f6-14dae9614d7b
Marker4Type:RGBmarkerFactory
Marker4Directional:1
Marker4Image:markers/boat_FF0000_small.png
MetersPerPixel:18
MetersPerPixelMax:30
MetersPerPixelMin:0.2
isMatchRace:0
DefaultDistanceUnits:meters
weatherEnabled:0
DefaultSpeedUnits:Knots
showRaceClock:1
BackGroundImage:graphics/background.jpg
DisableRotation:0
ControlPointMarkerRadius:13
disableselection:0
disableleaderline:0
StartTimeType:Race
ResultColumn5SpeedIn:Knots
DisableChangeRace:0
DisableLatestRoundings:0
//live-uri:tcp://secondary.traclive.dk:4400
//stored-uri:tcp://secondary.traclive.dk:4401
PopUpRow1Name:
PopUpRow1Type:Name
PopUpRow2Name:Knots
PopUpRow2Type:BoatSpeed
PopUpRow3Name:Ranking
PopUpRow3Type:RowNumber
PopUpRow4Name:Sail
PopUpRow4Type:Ini
PopUpRow5Name:After
PopUpRow5Type:BoatAfter
WindEstimator:0
MapUrl:http://tile.traclive.dk/ttm
ResultColumn1Name:#
ResultColumn1Size:20
ResultColumn1Type:RowNumber
ResultColumn2Name:sail
ResultColumn2Size:60
ResultColumn2Type:Ini
ResultColumn3Name:name
ResultColumn3Size:110
ResultColumn3Type:Name
ResultColumn4Name:after
ResultColumn4Size:45
ResultColumn4Type:BoatAfter
ResultColumn5Name:kts
ResultColumn5Size:40
ResultColumn5Type:BoatSpeed
DisableLeaderboard:0
DisableAnalysis:0
TableFontSize:11
compInitialsFontSize:11
AutoRotate:0
MassStart:0
SegmentFile:segments.php
RaceHandicapSystem:NONE
TeamCompetitionType:NONE
LiveDelaySecs: 10
//-------- AUTO GENERATED PARAMETERS START ----------------
EventID:b07bb320-b10c-0132-0752-60a44ce903c3
EventName:505 Worlds 2015
EventDB:event_20150323_Worlds
EventStartTime:2015-03-22 22:00:00
EventEndTime:2015-04-03 21:00:00
EventType:a1b74ca0-fdd8-11dc-8811-005056c00008
RaceID:66ccec10-b77d-0132-26ea-60a44ce903c3
RaceName:Worlds 7
RaceStartTime:2015-04-02 12:40:00
RaceEndTime:
RaceTrackingStartTime:2015-04-02 12:36:00
RaceTrackingEndTime:2015-04-02 15:10:00
RaceDefaultRouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
RaceHandicapSystem:NONE
Image1UUID:53955ea0-b10f-0132-075b-60a44ce903c3
Image1Type:Logo
Image1Description:banner
Image1Image:pictures/53955ea0-b10f-0132-075b-60a44ce903c3/original_53955ea0-b10f-0132-075b-60a44ce903c3.png
Class1UUID:ac5ab750-b377-0132-1193-60a44ce903c3
Class1Name:5O5
Team1UUID:5f8d2600-b4fc-0132-1da5-60a44ce903c3
Team1Name:0
Team2UUID:94c361d0-b4db-0132-1cde-60a44ce903c3
Team2Name:?
Team3UUID:ac8787b0-b377-0132-11d3-60a44ce903c3
Team3Name:Aaron Ross
Team4UUID:94cd2760-b4db-0132-1ce2-60a44ce903c3
Team4Name:Aeolians
Team4Comp1UUID:94d00ef0-b4db-0132-1ce3-60a44ce903c3
Team5UUID:9589e150-b4db-0132-1d1d-60a44ce903c3
Team5Name:Alamitos Bay Yacht Club
Team5Comp1UUID:958bd200-b4db-0132-1d1e-60a44ce903c3
Team6UUID:ac6fff40-b377-0132-11b9-60a44ce903c3
Team6Name:Albrecht Holm
Team7UUID:ac6d2a40-b377-0132-11b1-60a44ce903c3
Team7Name:Alexander Ham
Team8UUID:951939c0-b4db-0132-1cfa-60a44ce903c3
Team8Name:Algoa Bay Yacht Club
Team8Comp1UUID:951a3330-b4db-0132-1cfb-60a44ce903c3
Team9UUID:ac6c7560-b377-0132-11af-60a44ce903c3
Team9Name:Andrew Arthur
Team10UUID:ac6b0950-b377-0132-11ab-60a44ce903c3
Team10Name:Angela Stenger
Team11UUID:ac6e8e60-b377-0132-11b5-60a44ce903c3
Team11Name:Anthony Parker
Team12UUID:948565c0-b4db-0132-1cca-60a44ce903c3
Team12Name:B&SYC
Team12Comp1UUID:94865d50-b4db-0132-1ccb-60a44ce903c3
Team13UUID:ac61c890-b377-0132-1195-60a44ce903c3
Team13Name:Brett Bowden
Team14UUID:ac861d30-b377-0132-11cf-60a44ce903c3
Team14Name:Bronwen Klaas 
Team15UUID:c5bcd7f0-b377-0132-11de-60a44ce903c3
Team15Name:Bronwen Klaas 
Team16UUID:9470c9c0-b4db-0132-1cc2-60a44ce903c3
Team16Name:BSYC
Team16Comp1UUID:9471bf20-b4db-0132-1cc3-60a44ce903c3
Team17UUID:45679ec0-b6e4-0132-227e-60a44ce903c3
Team17Name:BYC
Team17Comp1UUID:4568fe80-b6e4-0132-227f-60a44ce903c3
Team18UUID:94e4cf90-b4db-0132-1ce6-60a44ce903c3
Team18Name:Emarentia Sailing Club
Team18Comp1UUID:94e60210-b4db-0132-1ce7-60a44ce903c3
Team19UUID:ac7415b0-b377-0132-11c5-60a44ce903c3
Team19Name:Euan Hurter
Team20UUID:ac691ca0-b377-0132-11a5-60a44ce903c3
Team20Name:Georg Mittermayer
Team21UUID:3c5056f0-b5c5-0132-2049-60a44ce903c3
Team21Name:George Lakes Yacht Club
Team21Comp1UUID:3c51d930-b5c5-0132-204a-60a44ce903c3
Team22UUID:ac6ddae0-b377-0132-11b3-60a44ce903c3
Team22Name:Gideon Snyman
Team23UUID:ac83e910-b377-0132-11c9-60a44ce903c3
Team23Name:Grant Ballentyne
Team24UUID:ac84a3d0-b377-0132-11cb-60a44ce903c3
Team24Name:Hans Rogotski
Team25UUID:5f848520-b4fc-0132-1da1-60a44ce903c3
Team25Name:Hellerup
Team26UUID:9491d840-b4db-0132-1cce-60a44ce903c3
Team26Name:HISC
Team26Comp1UUID:949331b0-b4db-0132-1ccf-60a44ce903c3
Team27UUID:ac8b0a60-b377-0132-11d7-60a44ce903c3
Team27Name:Howard Hamlin 
Team28UUID:c5bfb860-b377-0132-11e2-60a44ce903c3
Team28Name:Howard Hamlin 
Team29UUID:467d1590-b6e4-0132-22b9-60a44ce903c3
Team29Name:HS
Team29Comp1UUID:5f853dc0-b4fc-0132-1da2-60a44ce903c3
Team30UUID:460cd720-b6e4-0132-22a6-60a44ce903c3
Team30Name:HYC
Team30Comp1UUID:94c44e80-b4db-0132-1cdf-60a44ce903c3
Team31UUID:ac669050-b377-0132-11a3-60a44ce903c3
Team31Name:Ian Pinnel
Team32UUID:45b19e00-b6e4-0132-2290-60a44ce903c3
Team32Name:Imperial Yacht Club
Team32Comp1UUID:45b290d0-b6e4-0132-2291-60a44ce903c3
Team33UUID:ac70ad50-b377-0132-11bb-60a44ce903c3
Team33Name:James Largier
Team34UUID:ac647920-b377-0132-119d-60a44ce903c3
Team34Name:Jan Saugmann
Team35UUID:ac86d340-b377-0132-11d1-60a44ce903c3
Team35Name:Jay D'Engle 
Team36UUID:c5bdbd80-b377-0132-11e0-60a44ce903c3
Team36Name:Jay D'Engle 
Team37UUID:ac72b370-b377-0132-11c1-60a44ce903c3
Team37Name:Jonathan Ham
Team38UUID:ac6a5be0-b377-0132-11a9-60a44ce903c3
Team38Name:Katharina Menge
Team39UUID:ac720620-b377-0132-11bf-60a44ce903c3
Team39Name:Kevin Foreman
Team40UUID:ac856100-b377-0132-11cd-60a44ce903c3
Team40Name:Kobus Holtzhausen 
Team41UUID:c5bc0100-b377-0132-11dc-60a44ce903c3
Team41Name:Kobus Holtzhausen 
Team42UUID:ac831b90-b377-0132-11c7-60a44ce903c3
Team42Name:Kristina Plattner
Team43UUID:ac6f46b0-b377-0132-11b7-60a44ce903c3
Team43Name:Kyle Klaas
Team44UUID:ac6277f0-b377-0132-1197-60a44ce903c3
Team44Name:Malcolm Higgins
Team45UUID:94eefa70-b4db-0132-1cea-60a44ce903c3
Team45Name:Maties
Team46UUID:ac5951f0-b377-0132-1192-60a44ce903c3
Team46Name:Michale Quirk
Team47UUID:ac884150-b377-0132-11d5-60a44ce903c3
Team47Name:Mike Holt
Team48UUID:95975fe0-b4db-0132-1d21-60a44ce903c3
Team48Name:NHYC 
Team48Comp1UUID:95984f80-b4db-0132-1d22-60a44ce903c3
Team49UUID:94b16cf0-b4db-0132-1cda-60a44ce903c3
Team49Name:Ostsee-Segler-Gemeinschaft
Team50UUID:ac6bbce0-b377-0132-11ad-60a44ce903c3
Team50Name:Peter Funke
Team51UUID:95357460-b4db-0132-1d06-60a44ce903c3
Team51Name:Point Yacht Club
Team51Comp1UUID:95368d50-b4db-0132-1d07-60a44ce903c3
Team52UUID:955fbdc0-b4db-0132-1d11-60a44ce903c3
Team52Name:Point YC 
Team52Comp1UUID:956a8030-b4db-0132-1d12-60a44ce903c3
Team53UUID:947bc310-b4db-0132-1cc6-60a44ce903c3
Team53Name:Port Kembla SC
Team53Comp1UUID:947c7c10-b4db-0132-1cc7-60a44ce903c3
Team54UUID:950350e0-b4db-0132-1cf2-60a44ce903c3
Team54Name:Pretoria Sailing Club
Team54Comp1UUID:95044100-b4db-0132-1cf3-60a44ce903c3
Team55UUID:9575e320-b4db-0132-1d15-60a44ce903c3
Team55Name:Pretoria SC 
Team56UUID:95226ee0-b4db-0132-1cfe-60a44ce903c3
Team56Name:PSC
Team56Comp1UUID:45750710-b6e4-0132-2282-60a44ce903c3
Team56Comp2UUID:2a9a8a70-b689-0132-2213-60a44ce903c3
Team56Comp3UUID:952360a0-b4db-0132-1cff-60a44ce903c3
Team57UUID:957fedb0-b4db-0132-1d19-60a44ce903c3
Team57Name:RCYC 
Team57Comp1UUID:9580e450-b4db-0132-1d1a-60a44ce903c3
Team58UUID:ac7360e0-b377-0132-11c3-60a44ce903c3
Team58Name:Ricky Robinson
Team59UUID:f1a55510-b500-0132-1e66-60a44ce903c3
Team59Name:Rock Sailing Club
Team59Comp1UUID:f1a864c0-b500-0132-1e67-60a44ce903c3
Team60UUID:ac653090-b377-0132-119f-60a44ce903c3
Team60Name:Rodger Deane
Team61UUID:946600a0-b4db-0132-1cbe-60a44ce903c3
Team61Name:Royal Brighton Yacht Club
Team61Comp1UUID:946739e0-b4db-0132-1cbf-60a44ce903c3
Team62UUID:950e5de0-b4db-0132-1cf6-60a44ce903c3
Team62Name:Royal Cape Yacht Club
Team62Comp1UUID:950fd6e0-b4db-0132-1cf7-60a44ce903c3
Team63UUID:952ba070-b4db-0132-1d02-60a44ce903c3
Team63Name:Royal Natal Yacht Club
Team63Comp1UUID:952c9010-b4db-0132-1d03-60a44ce903c3
Team64UUID:9445a600-b4db-0132-1cba-60a44ce903c3
Team64Name:RPEYC
Team64Comp1UUID:944a7e00-b4db-0132-1cbb-60a44ce903c3
Team65UUID:ac6312c0-b377-0132-1199-60a44ce903c3
Team65Name:Sam Cronin
Team66UUID:ac63c0c0-b377-0132-119b-60a44ce903c3
Team66Name:Sandy Higgins 
Team67UUID:c5a0f950-b377-0132-11d9-60a44ce903c3
Team67Name:Sandy Higgins 
Team68UUID:5f647e40-b4fc-0132-1d9d-60a44ce903c3
Team68Name:Santa Cruz Yacht Club
Team68Comp1UUID:5f8e1890-b4fc-0132-1da6-60a44ce903c3
Team68Comp2UUID:5f757d60-b4fc-0132-1d9e-60a44ce903c3
Team69UUID:949b6070-b4db-0132-1cd2-60a44ce903c3
Team69Name:SCLL
Team69Comp1UUID:949c2dc0-b4db-0132-1cd3-60a44ce903c3
Team70UUID:94a5f800-b4db-0132-1cd6-60a44ce903c3
Team70Name:Segel-Club Ville
Team70Comp1UUID:94a6ea50-b4db-0132-1cd7-60a44ce903c3
Team71UUID:459b10a0-b6e4-0132-228b-60a44ce903c3
Team71Name:SGJ
Team71Comp1UUID:94b25480-b4db-0132-1cdb-60a44ce903c3
Team72UUID:3c5a3440-b5c5-0132-204d-60a44ce903c3
Team72Name:Shotley Sailing Club
Team72Comp1UUID:f0941b50-b5ec-0132-20fb-60a44ce903c3
Team73UUID:ac715a70-b377-0132-11bd-60a44ce903c3
Team73Name:Sigi Bailes
Team74UUID:ac69c0c0-b377-0132-11a7-60a44ce903c3
Team74Name:Stefan Bohm
Team75UUID:b8ae7900-b10c-0132-075a-60a44ce903c3
Team75Name:team
Team76UUID:ac65e030-b377-0132-11a1-60a44ce903c3
Team76Name:Terry Scutcher
Team77UUID:453f5410-b6e4-0132-2277-60a44ce903c3
Team77Name:USYC
Team77Comp1UUID:94eff380-b4db-0132-1ceb-60a44ce903c3
Team78UUID:94f918c0-b4db-0132-1cee-60a44ce903c3
Team78Name:Vogelvlei Yacht Club
Team78Comp1UUID:954a24b0-b4db-0132-1d0e-60a44ce903c3
Team78Comp2UUID:94fa1150-b4db-0132-1cef-60a44ce903c3
Team79UUID:953f9670-b4db-0132-1d0a-60a44ce903c3
Team79Name: RCYC
Team79Comp1UUID:95407f70-b4db-0132-1d0b-60a44ce903c3
Comp1UUID:944a7e00-b4db-0132-1cbb-60a44ce903c3
Comp1Name:Quirk / Payne
Comp1NameShort:AUS 9134
Comp1Color:FFFF00
Comp1Nationality:AUS
Comp1Description:Michael Quirk/Luke Payne
Comp1Handicap:1.0000000000
Comp1HandicapDistance:0.00000
Comp1StartTime:2015-04-02 12:40:00
Comp1ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp1RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp2UUID:946739e0-b4db-0132-1cbf-60a44ce903c3
Comp2Name:Bowden / Bath
Comp2NameShort:AUS 9018
Comp2Color:0000FF
Comp2Nationality:AUS
Comp2Description:Brett Bowden/Robert Bath
Comp2Handicap:1.0000000000
Comp2HandicapDistance:0.00000
Comp2StartTime:2015-04-02 12:40:00
Comp2ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp2RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp3UUID:9471bf20-b4db-0132-1cc3-60a44ce903c3
Comp3Name:Higgins / Johnston
Comp3NameShort:AUS 8890
Comp3Color:008000
Comp3Nationality:AUS
Comp3Description:Malcolm Higgins/Nick Johnston
Comp3Handicap:1.0000000000
Comp3HandicapDistance:0.00000
Comp3StartTime:2015-04-02 12:40:00
Comp3ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp3RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp4UUID:947c7c10-b4db-0132-1cc7-60a44ce903c3
Comp4Name:Cronin / Whitbread
Comp4NameShort:AUS 8637
Comp4Color:000000
Comp4Nationality:AUS
Comp4Description:Sam Cronin/Kevin Whitbread
Comp4Handicap:1.0000000000
Comp4HandicapDistance:0.00000
Comp4StartTime:2015-04-02 12:40:00
Comp4ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp4RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp5UUID:94865d50-b4db-0132-1ccb-60a44ce903c3
Comp5Name:Higgins  / Marsh 
Comp5NameShort:AUS 8946
Comp5Color:008000
Comp5Nationality:AUS
Comp5Description:Sandy Higgins /Paul Marsh 
Comp5Handicap:1.0000000000
Comp5HandicapDistance:0.00000
Comp5StartTime:2015-04-02 12:40:00
Comp5ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp5RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp6UUID:949331b0-b4db-0132-1ccf-60a44ce903c3
Comp6Name:Pinnell / Tellen
Comp6NameShort:GBR 9136
Comp6Color:800080
Comp6Nationality:GBR
Comp6Description:Ian Pinnell/Johannes Tellen
Comp6Handicap:1.0000000000
Comp6HandicapDistance:0.00000
Comp6StartTime:2015-04-02 12:40:00
Comp6ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp6RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp7UUID:949c2dc0-b4db-0132-1cd3-60a44ce903c3
Comp7Name:Mittermayer / Barteldt
Comp7NameShort:GER 8988
Comp7Color:800080
Comp7Nationality:GER
Comp7Description:Georg Mittermayer/Dirk Barteldt
Comp7Handicap:1.0000000000
Comp7HandicapDistance:0.00000
Comp7StartTime:2015-04-02 12:40:00
Comp7ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp7RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp8UUID:94a6ea50-b4db-0132-1cd7-60a44ce903c3
Comp8Name:Bohm / Roos
Comp8NameShort:GER 9135
Comp8Color:008000
Comp8Nationality:GER
Comp8Description:Stefan Bohm/Gerald Roos
Comp8Handicap:1.0000000000
Comp8HandicapDistance:0.00000
Comp8StartTime:2015-04-02 12:40:00
Comp8ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp8RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp9UUID:94b25480-b4db-0132-1cdb-60a44ce903c3
Comp9Name:Menge / Wilts
Comp9NameShort:GER 9000
Comp9Color:808000
Comp9Nationality:GER
Comp9Description:Katharina Menge/Enno Wilts
Comp9Handicap:1.0000000000
Comp9HandicapDistance:0.00000
Comp9StartTime:2015-04-02 12:40:00
Comp9ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp9RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp10UUID:94c44e80-b4db-0132-1cdf-60a44ce903c3
Comp10Name:Stenger / Birkner
Comp10NameShort:GER 9043
Comp10Color:008080
Comp10Nationality:GER
Comp10Description:Angela Stenger/Nicola Birkner
Comp10Handicap:1.0000000000
Comp10HandicapDistance:0.00000
Comp10StartTime:2015-04-02 12:40:00
Comp10ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp10RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp11UUID:94d00ef0-b4db-0132-1ce3-60a44ce903c3
Comp11Name:Funke / Funke
Comp11NameShort:RSA 9094
Comp11Color:191970
Comp11Nationality:RSA
Comp11Description:Peter Funke/Thomas Funke
Comp11Handicap:1.0000000000
Comp11HandicapDistance:0.00000
Comp11StartTime:2015-04-02 12:40:00
Comp11ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp11RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp12UUID:94e60210-b4db-0132-1ce7-60a44ce903c3
Comp12Name:Arthur / Anderson
Comp12NameShort:RSA 6266
Comp12Color:FFFF00
Comp12Nationality:RSA
Comp12Description:Andrew Arthur/John Anderson
Comp12Handicap:1.0000000000
Comp12HandicapDistance:0.00000
Comp12StartTime:2015-04-02 12:40:00
Comp12ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp12RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp13UUID:94eff380-b4db-0132-1ceb-60a44ce903c3
Comp13Name:Ham / Ham
Comp13NameShort:RSA 8719
Comp13Color:FF0000
Comp13Nationality:RSA
Comp13Description:Alexander Ham/Warwick Ham
Comp13Handicap:1.0000000000
Comp13HandicapDistance:0.00000
Comp13StartTime:2015-04-02 12:40:00
Comp13ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp13RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp14UUID:94fa1150-b4db-0132-1cef-60a44ce903c3
Comp14Name:Snyman / Ballantyne
Comp14NameShort:RSA 8091
Comp14Color:800000
Comp14Nationality:RSA
Comp14Description:Gideon Snyman/Courtney Ballantyne
Comp14Handicap:1.0000000000
Comp14HandicapDistance:0.00000
Comp14StartTime:2015-04-02 12:40:00
Comp14ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp14RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp15UUID:95044100-b4db-0132-1cf3-60a44ce903c3
Comp15Name:Holm / Fourie
Comp15NameShort:RSA 8707
Comp15Color:191970
Comp15Nationality:RSA
Comp15Description:Albrecht Holm/Marius Fourie
Comp15Handicap:1.0000000000
Comp15HandicapDistance:0.00000
Comp15StartTime:2015-04-02 12:40:00
Comp15ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp15RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp16UUID:950fd6e0-b4db-0132-1cf7-60a44ce903c3
Comp16Name:Largier / Hutton-Squire
Comp16NameShort:RSA 9063
Comp16Color:008080
Comp16Nationality:RSA
Comp16Description:James Largier/Richard Hutton-Squire
Comp16Handicap:1.0000000000
Comp16HandicapDistance:0.00000
Comp16StartTime:2015-04-02 12:40:00
Comp16ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp16RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp17UUID:951a3330-b4db-0132-1cfb-60a44ce903c3
Comp17Name:Bailes / Isaac
Comp17NameShort:RSA 7608
Comp17Color:808000
Comp17Nationality:RSA
Comp17Description:Sigi Bailes/Dudley Isaac
Comp17Handicap:1.0000000000
Comp17HandicapDistance:0.00000
Comp17StartTime:2015-04-02 12:40:00
Comp17ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp17RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp18UUID:952360a0-b4db-0132-1cff-60a44ce903c3
Comp18Name:Ham / Robinson
Comp18NameShort:RSA 8789
Comp18Color:FFFF00
Comp18Nationality:GBR
Comp18Description:Jonathan Ham / Michaela Robinson
Comp18Handicap:1.0000000000
Comp18HandicapDistance:0.00000
Comp18StartTime:2015-04-02 12:40:00
Comp18ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp18RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp19UUID:952c9010-b4db-0132-1d03-60a44ce903c3
Comp19Name:Robinson / Robinson
Comp19NameShort:RSA 8486
Comp19Color:800000
Comp19Nationality:RSA
Comp19Description:Ricky Robinson/Brennan Robinson
Comp19Handicap:1.0000000000
Comp19HandicapDistance:0.00000
Comp19StartTime:2015-04-02 12:40:00
Comp19ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp19RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp20UUID:95368d50-b4db-0132-1d07-60a44ce903c3
Comp20Name:Hurter / May
Comp20NameShort:RSA 8675
Comp20Color:0000FF
Comp20Nationality:RSA
Comp20Description:Euan Hurter/Murray May
Comp20Handicap:1.0000000000
Comp20HandicapDistance:0.00000
Comp20StartTime:2015-04-02 12:40:00
Comp20ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp20RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp21UUID:95407f70-b4db-0132-1d0b-60a44ce903c3
Comp21Name:Plattner / Shelton
Comp21NameShort:RSA 9026
Comp21Color:800080
Comp21Nationality:RSA
Comp21Description:Tina Plattner/David Shelton
Comp21Handicap:1.0000000000
Comp21HandicapDistance:0.00000
Comp21StartTime:2015-04-02 12:40:00
Comp21ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp21RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp22UUID:954a24b0-b4db-0132-1d0e-60a44ce903c3
Comp22Name:Ballantyne / Groenewald
Comp22NameShort:RSA 4437
Comp22Color:FF8C00
Comp22Nationality:RSA
Comp22Description:Grant Ballantyne/Evert Groenewald
Comp22Handicap:1.0000000000
Comp22HandicapDistance:0.00000
Comp22StartTime:2015-04-02 12:40:00
Comp22ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp22RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp23UUID:956a8030-b4db-0132-1d12-60a44ce903c3
Comp23Name:Rogotzki / Roos 
Comp23NameShort:RSA 8584
Comp23Color:FF8C00
Comp23Nationality:RSA
Comp23Description:Hans Rogotzki/Peter Roos 
Comp23Handicap:1.0000000000
Comp23HandicapDistance:0.00000
Comp23StartTime:2015-04-02 12:40:00
Comp23ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp23RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp24UUID:9580e450-b4db-0132-1d1a-60a44ce903c3
Comp24Name:D'Engle  / Nel 
Comp24NameShort:RSA 8520
Comp24Color:00FF00
Comp24Nationality:RSA
Comp24Description:Jay D'Engle /De-Wet Nel 
Comp24Handicap:1.0000000000
Comp24HandicapDistance:0.00000
Comp24StartTime:2015-04-02 12:40:00
Comp24ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp24RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp25UUID:958bd200-b4db-0132-1d1e-60a44ce903c3
Comp25Name:Ross / Waterman
Comp25NameShort:USA 8084
Comp25Color:FF00FF
Comp25Nationality:USA
Comp25Description:Aaron Ross/Rob Waterman
Comp25Handicap:1.0000000000
Comp25HandicapDistance:0.00000
Comp25StartTime:2015-04-02 12:40:00
Comp25ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp25RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp26UUID:95984f80-b4db-0132-1d22-60a44ce903c3
Comp26Name:Hamlin  / Nelson
Comp26NameShort:USA 9153
Comp26Color:800000
Comp26Nationality:USA
Comp26Description:Howard Hamlin / Jeff Nelson
Comp26Handicap:1.0000000000
Comp26HandicapDistance:0.00000
Comp26StartTime:2015-04-02 12:40:00
Comp26ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp26RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp27UUID:5f757d60-b4fc-0132-1d9e-60a44ce903c3
Comp27Name:Holt / Smit
Comp27NameShort:USA 9072
Comp27Color:00FF00
Comp27Nationality:USA
Comp27Description:Mike Holt/Carl Smit
Comp27Handicap:1.0000000000
Comp27HandicapDistance:0.00000
Comp27StartTime:2015-04-02 12:40:00
Comp27ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp27RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp28UUID:5f853dc0-b4fc-0132-1da2-60a44ce903c3
Comp28Name:Saugmann / Karbo
Comp28NameShort:DEN 9118
Comp28Color:008080
Comp28Nationality:DEN
Comp28Description:Jan Saugmann/Jakob Karbo
Comp28Handicap:1.0000000000
Comp28HandicapDistance:0.00000
Comp28StartTime:2015-04-02 12:40:00
Comp28ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp28RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp29UUID:5f8e1890-b4fc-0132-1da6-60a44ce903c3
Comp29Name:Conrads / Haines
Comp29NameShort:USA 9091
Comp29Color:00FF00
Comp29Nationality:USA
Comp29Description:Ted Conrads/Brian Haines
Comp29Handicap:1.0000000000
Comp29HandicapDistance:0.00000
Comp29StartTime:2015-04-02 12:40:00
Comp29ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp29RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp30UUID:f1a864c0-b500-0132-1e67-60a44ce903c3
Comp30Name:Deane / Deane
Comp30NameShort:GBR 9125
Comp30Color:191970
Comp30Nationality:GBR
Comp30Description:Roger Deane/Nigel Deane
Comp30Handicap:1.0000000000
Comp30HandicapDistance:0.00000
Comp30StartTime:2015-04-02 12:40:00
Comp30ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp30RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp31UUID:3c51d930-b5c5-0132-204a-60a44ce903c3
Comp31Name:Parker / Holm
Comp31NameShort:RSA 8948
Comp31Color:FF00FF
Comp31Nationality:RSA
Comp31Description:Anthony Parker / Dietmar Holm
Comp31Handicap:1.0000000000
Comp31HandicapDistance:0.00000
Comp31StartTime:2015-04-02 12:40:00
Comp31ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp31RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp32UUID:f0941b50-b5ec-0132-20fb-60a44ce903c3
Comp32Name:Scutcher / Diebitsch
Comp32NameShort:GBR 9124
Comp32Color:FF0000
Comp32Nationality:GBR
Comp32Description:Terry Scutcher/Christian Diebitsch
Comp32Handicap:1.0000000000
Comp32HandicapDistance:0.00000
Comp32StartTime:2015-04-02 12:40:00
Comp32ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp32RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp33UUID:2a9a8a70-b689-0132-2213-60a44ce903c3
Comp33Name:Klaas  / Tellen
Comp33NameShort:RSA 7822
Comp33Color:000000
Comp33Nationality:RSA
Comp33Description:Bronwen Klaas /Aron Tellen
Comp33Handicap:1.0000000000
Comp33HandicapDistance:0.00000
Comp33StartTime:2015-04-02 12:40:00
Comp33ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp33RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp34UUID:4568fe80-b6e4-0132-227f-60a44ce903c3
Comp34Name:Holtshauzen  / Kirchner
Comp34NameShort:RSA 8121
Comp34Color:0000FF
Comp34Nationality:RSA
Comp34Description:Kobus Holtshauzen /Danie Kirchner
Comp34Handicap:1.0000000000
Comp34HandicapDistance:0.00000
Comp34StartTime:2015-04-02 12:40:00
Comp34ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp34RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp35UUID:45750710-b6e4-0132-2282-60a44ce903c3
Comp35Name:Klaas / Von Gruenewaldt
Comp35NameShort:RSA 8445
Comp35Color:FF8C00
Comp35Nationality:RSA
Comp35Description:Kyle Klaas/Robert Von Gruenewaldt
Comp35Handicap:1.0000000000
Comp35HandicapDistance:0.00000
Comp35StartTime:2015-04-02 12:40:00
Comp35ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp35RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Comp36UUID:45b290d0-b6e4-0132-2291-60a44ce903c3
Comp36Name:Foreman / Van Der Ploeg
Comp36NameShort:RSA 8537
Comp36Color:808000
Comp36Nationality:RSA
Comp36Description:Kevin Foreman/Adam Van Der Ploeg
Comp36Handicap:1.0000000000
Comp36HandicapDistance:0.00000
Comp36StartTime:2015-04-02 12:40:00
Comp36ClassUUID:ac5ab750-b377-0132-1193-60a44ce903c3
Comp36RouteUUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
ControlPoint1UUID:25f25a90-b906-0132-2954-60a44ce903c3
ControlPoint1Name:Windward-F-30
ControlPoint1HasTwoPoints:0
ControlPoint1ShortName:1R
ControlPoint1Mark1Lon:25.694404
ControlPoint1Mark1Lat:-33.957179
ControlPoint1Mark1Static:1
ControlPoint2UUID:26126690-b4de-0132-1d39-60a44ce903c3
ControlPoint2Name:Replacement mark
ControlPoint2HasTwoPoints:0
ControlPoint2ShortName:Re
ControlPoint2Mark1Lon:25.687969
ControlPoint2Mark1Lat:-33.949951
ControlPoint2Mark1Static:0
ControlPoint3UUID:3fe5f360-b52a-0132-1f57-60a44ce903c3
ControlPoint3Name:Leeward gate PreW
ControlPoint3HasTwoPoints:1
ControlPoint3ShortName:3
ControlPoint3Mark1Lon:25.633739
ControlPoint3Mark1Lat:-33.967300
ControlPoint3Mark1Static:0
ControlPoint3Mark2Lon:25.633644
ControlPoint3Mark2Lat:-33.967327
ControlPoint3Mark2Static:0
ControlPoint4UUID:69c13f40-b37c-0132-1211-60a44ce903c3
ControlPoint4Name:Wing
ControlPoint4HasTwoPoints:0
ControlPoint4ShortName:2
ControlPoint4Mark1Lon:25.689110
ControlPoint4Mark1Lat:-33.970020
ControlPoint4Mark1Static:0
ControlPoint5UUID:8f54b350-b767-0132-2455-60a44ce903c3
ControlPoint5Name:3 Worlds 1
ControlPoint5HasTwoPoints:1
ControlPoint5ShortName:3
ControlPoint5Mark1Lon:25.665367
ControlPoint5Mark1Lat:-33.961881
ControlPoint5Mark1Static:1
ControlPoint5Mark2Lon:25.665457
ControlPoint5Mark2Lat:-33.962330
ControlPoint5Mark2Static:1
ControlPoint6UUID:9ca100f0-b68c-0132-2216-60a44ce903c3
ControlPoint6Name:3p
ControlPoint6HasTwoPoints:0
ControlPoint6ShortName:3p
ControlPoint6Mark1Lon:25.683989
ControlPoint6Mark1Lat:-33.954403
ControlPoint6Mark1Static:0
ControlPoint7UUID:ab8077c0-b37c-0132-1218-60a44ce903c3
ControlPoint7Name:Finish
ControlPoint7HasTwoPoints:1
ControlPoint7ShortName:F
ControlPoint7Mark1Lon:25.687019
ControlPoint7Mark1Lat:-33.950874
ControlPoint7Mark1Static:0
ControlPoint7Mark2Lon:25.688251
ControlPoint7Mark2Lat:-33.950226
ControlPoint7Mark2Static:0
ControlPoint8UUID:af1bb4f0-b68c-0132-2219-60a44ce903c3
ControlPoint8Name:3s
ControlPoint8HasTwoPoints:0
ControlPoint8ShortName:3S
ControlPoint8Mark1Lon:25.684313
ControlPoint8Mark1Lat:-33.954788
ControlPoint8Mark1Static:0
ControlPoint9UUID:b10792d0-b5e2-0132-20f9-60a44ce903c3
ControlPoint9Name:Fin R2
ControlPoint9HasTwoPoints:1
ControlPoint9ShortName:Fi
ControlPoint9Mark1Lon:25.724152
ControlPoint9Mark1Lat:-34.001356
ControlPoint9Mark1Static:1
ControlPoint9Mark2Lon:25.723793
ControlPoint9Mark2Lat:-34.001524
ControlPoint9Mark2Static:1
ControlPoint10UUID:cf64f6d0-b4dd-0132-1d2c-60a44ce903c3
ControlPoint10Name:Start
ControlPoint10HasTwoPoints:1
ControlPoint10ShortName:St
ControlPoint10Mark1Lon:25.686090
ControlPoint10Mark1Lat:-33.950943
ControlPoint10Mark1Static:0
ControlPoint10Mark2Lon:25.687042
ControlPoint10Mark2Lat:-33.950867
ControlPoint10Mark2Static:0
ControlPoint11UUID:d742d1b0-b68c-0132-221c-60a44ce903c3
ControlPoint11Name:Leeward gate Worlds
ControlPoint11HasTwoPoints:1
ControlPoint11ShortName:3
ControlPoint11DataSheet:P1.UUID=af1bb4f0-b68c-0132-2219-60a44ce903c3###BREAKLINE###P2.UUID=9ca100f0-b68c-0132-2216-60a44ce903c3###BREAKLINE###
ControlPoint11Mark1Lon:25.684313
ControlPoint11Mark1Lat:-33.954788
ControlPoint11Mark1Static:0
ControlPoint11Mark2Lon:25.683989
ControlPoint11Mark2Lat:-33.954403
ControlPoint11Mark2Static:0
ControlPoint12UUID:e6879b90-b4dd-0132-1d30-60a44ce903c3
ControlPoint12Name:Windward
ControlPoint12HasTwoPoints:0
ControlPoint12ShortName:1
ControlPoint12Mark1Lon:25.668341
ControlPoint12Mark1Lat:-33.968086
ControlPoint12Mark1Static:0
ControlPoint13UUID:f6f60d80-b4dd-0132-1d33-60a44ce903c3
ControlPoint13Name:Spreader
ControlPoint13HasTwoPoints:0
ControlPoint13ShortName:1a
ControlPoint13Mark1Lon:25.669888
ControlPoint13Mark1Lat:-33.968563
ControlPoint13Mark1Static:0
SegmentFile:segments.php
Route1UUID:66ccabb0-b77d-0132-26e9-60a44ce903c3
Route1Description:Worlds 7
Route1Length:0
Route1ControlPoint1UUID:cf64f6d0-b4dd-0132-1d2c-60a44ce903c3
Route1ControlPoint2UUID:e6879b90-b4dd-0132-1d30-60a44ce903c3
Route1ControlPoint3UUID:f6f60d80-b4dd-0132-1d33-60a44ce903c3
Route1ControlPoint4UUID:d742d1b0-b68c-0132-221c-60a44ce903c3
Route1ControlPoint5UUID:e6879b90-b4dd-0132-1d30-60a44ce903c3
Route1ControlPoint6UUID:f6f60d80-b4dd-0132-1d33-60a44ce903c3
Route1ControlPoint7UUID:69c13f40-b37c-0132-1211-60a44ce903c3
Route1ControlPoint8UUID:d742d1b0-b68c-0132-221c-60a44ce903c3
Route1ControlPoint9UUID:e6879b90-b4dd-0132-1d30-60a44ce903c3
Route1ControlPoint10UUID:f6f60d80-b4dd-0132-1d33-60a44ce903c3
Route1ControlPoint11UUID:d742d1b0-b68c-0132-221c-60a44ce903c3
Route1ControlPoint12UUID:ab8077c0-b37c-0132-1218-60a44ce903c3
//-------- AUTO GENERATED PARAMETERS END ------------------
@@ -15,6 +15,9 @@ import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
public abstract class AbstractManeuverDetectionTestCase extends OnlineTracTracBasedTest {
/**
* A date parser for UTC+2 in format MM/dd/yyyy-HH:mm:ss.
*/
protected SimpleDateFormat dateFormat;
protected static final int TACK_TOLERANCE = 7000;
protected static final int JIBE_TOLERANCE = 7000;
@@ -0,0 +1,70 @@
package com.sap.sailing.domain.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import java.util.Arrays;
import java.util.Collections;
import java.util.UUID;
import org.junit.Before;
import org.junit.Test;
import com.sap.sailing.domain.base.CourseArea;
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
import com.sap.sailing.domain.common.sensordata.BravoExtendedSensorDataMetadata;
import com.sap.sailing.domain.common.tracking.impl.BravoExtendedFixImpl;
import com.sap.sailing.domain.common.tracking.impl.DoubleVectorFixImpl;
import com.sap.sailing.domain.tracking.DynamicBravoFixTrack;
import com.sap.sailing.domain.tracking.impl.BravoFixTrackImpl;
import com.sap.sse.common.impl.MillisecondsTimePoint;
public class BravoFixTrackAverageRideHeightTest {
private DynamicBravoFixTrack<CourseArea> track;
@Before
public void setUp() {
track = new BravoFixTrackImpl<>(new CourseAreaImpl("Test", UUID.randomUUID()),
"test", /* hasExtendedFixes */ true);
track.add(createFix(10l, /* rideHeightPort */ 0.6, /* rideHeightStarboard */ 0.6, /* heel */ 10., /* pitch */ 5.));
track.add(createFix(20l, /* rideHeightPort */ 0.6, /* rideHeightStarboard */ 0.6, /* heel */ 10., /* pitch */ 5.));
track.add(createFix(30l, /* rideHeightPort */ 0.6, /* rideHeightStarboard */ 0.6, /* heel */ 10., /* pitch */ 5.));
}
@Test
public void testAverageRideHeightCachingForEmptyInterval() {
assertNull(track.getAverageRideHeight(t(11l), t(19l)));
}
@Test
public void testAverageRideHeightCachingForNonEmptyInterval() {
assertEquals(0.6, track.getAverageRideHeight(t(11l), t(21l)).getMeters(), 0.00001); // make sure that the cached "null" result doesn't offend surrounding calculations
assertEquals(0.6, track.getAverageRideHeight(t(9l), t(21l)).getMeters(), 0.00001); // also when the first fix is included
assertEquals(0.6, track.getAverageRideHeight(t(9l), t(31l)).getMeters(), 0.00001); // ensure that results are still correct when cache intervals are "added"
}
@Test
public void testAverageRideHeightCachingForNonEmptyIntervalAfterHavingCachedEmptyIntervalResult() {
testAverageRideHeightCachingForEmptyInterval();
assertEquals(0.6, track.getAverageRideHeight(t(11l), t(21l)).getMeters(), 0.00001); // make sure that the cached "null" result doesn't offend surrounding calculations
assertEquals(0.6, track.getAverageRideHeight(t(9l), t(21l)).getMeters(), 0.00001); // also when the first fix is included
assertEquals(0.6, track.getAverageRideHeight(t(9l), t(31l)).getMeters(), 0.00001); // ensure that results are still correct when cache intervals are "added"
}
private BravoExtendedFixImpl createFix(long timePointAsMillis, Double rideHeightPort, Double rideHeightStarboard, Double heel, Double pitch) {
final Double[] fixData = new Double[Collections.max(Arrays.asList(
BravoExtendedSensorDataMetadata.HEEL.getColumnIndex()+1,
BravoExtendedSensorDataMetadata.PITCH.getColumnIndex()+1,
BravoExtendedSensorDataMetadata.RIDE_HEIGHT_PORT_HULL.getColumnIndex()+1,
BravoExtendedSensorDataMetadata.RIDE_HEIGHT_STBD_HULL.getColumnIndex()+1))];
fixData[BravoExtendedSensorDataMetadata.HEEL.getColumnIndex()] = heel;
fixData[BravoExtendedSensorDataMetadata.PITCH.getColumnIndex()] = pitch;
fixData[BravoExtendedSensorDataMetadata.RIDE_HEIGHT_PORT_HULL.getColumnIndex()] = rideHeightPort;
fixData[BravoExtendedSensorDataMetadata.RIDE_HEIGHT_STBD_HULL.getColumnIndex()] = rideHeightStarboard;
return new BravoExtendedFixImpl(new DoubleVectorFixImpl(t(timePointAsMillis), fixData));
}
private MillisecondsTimePoint t(long timePointAsMillis) {
return new MillisecondsTimePoint(timePointAsMillis);
}
}
@@ -0,0 +1,74 @@
package com.sap.sailing.domain.test;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.text.ParseException;
import java.util.Date;
import org.junit.Before;
import org.junit.Test;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
import com.sap.sailing.domain.tracking.DynamicGPSFixTrack;
import com.sap.sailing.domain.tractracadapter.ReceiverType;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.tractrac.model.lib.api.event.CreateModelException;
import com.tractrac.subscription.lib.api.SubscriberInitializationException;
/**
* At the 505 Worlds 2015 Race R7 Arthur/Anderson (RSA 6266) have been tracked with a wild outlier
* around 2015-04-02T15:05:07+0200.
*
* @author Axel Uhl (d043530)
*
*/
public class OutlierDetectionTest extends AbstractManeuverDetectionTestCase {
public OutlierDetectionTest() throws MalformedURLException, URISyntaxException {
super();
}
@Before
public void setUp() throws URISyntaxException, IOException, InterruptedException, ParseException, SubscriberInitializationException, CreateModelException {
super.setUp();
URI storedUri = new URI("file:///"+new File("resources/event_20150323_Worlds-505_Worlds_7.mtb").getCanonicalPath().replace('\\', '/'));
super.setUp(new URL("file:///"+new File("resources/event_20150323_Worlds-505_Worlds_7.txt").getCanonicalPath()),
/* liveUri */ null, /* storedUri */ storedUri,
new ReceiverType[] { ReceiverType.MARKPASSINGS, ReceiverType.RACECOURSE, ReceiverType.RAWPOSITIONS });
}
protected String getExpectedEventName() {
return "505 Worlds 2015";
}
/**
* Tests the 505 Race 7 for competitor "Arthur / Anderson" at a time where an outlier exists
*/
@Test
public void testManeuversForFindelCriticalDetection() throws ParseException, NoWindException {
Competitor competitor = getCompetitorByName("Arthur / Anderson");
assertNotNull(competitor);
Date fromDate = dateFormat.parse("04/02/2015-15:04:50");
TimePoint from = new MillisecondsTimePoint(fromDate);
Date toDate = dateFormat.parse("04/02/2015-15:06:20");
TimePoint to = new MillisecondsTimePoint(toDate);
assertNotNull(fromDate);
assertNotNull(toDate);
DynamicGPSFixTrack<Competitor, GPSFixMoving> track = getTrackedRace().getTrack(competitor);
track.lockForRead();
try {
assertTrue(track.getMaximumSpeedOverGround(from, to).getB().getKnots() < 15.);
} finally {
track.unlockAfterRead();
}
}
}
@@ -21,6 +21,7 @@ import com.sap.sailing.domain.tracking.Track;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sse.common.Duration;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.WithID;
import com.sap.sse.common.scalablevalue.ScalableValue;
@@ -39,7 +40,11 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
private transient TimeRangeCache<Distance> foilingDistanceCache;
private transient TimeRangeCache<Distance> averageRideHeightCache;
/**
* Caches the sum of the ride height of all fixes in the interval, paired with the number of fixes
* that constituted the basis for the ride height sum.
*/
private transient TimeRangeCache<Pair<Distance, Long>> averageRideHeightCache;
/**
* If a GPS track was provided at construction time, remember it non-transiently. It is needed when restoring
@@ -112,7 +117,7 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
}
}
private TimeRangeCache<Distance> createAverageRideHeightCache(ItemType trackedItem) {
private TimeRangeCache<Pair<Distance, Long>> createAverageRideHeightCache(ItemType trackedItem) {
return createTimeRangeCache(trackedItem, "averageRideHeightCache");
}
@@ -177,13 +182,15 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
@Override
public Distance getAverageRideHeight(TimePoint from, TimePoint to) {
return getValueSum(from, to, /* nullElement */ Distance.NULL, Distance::add, averageRideHeightCache,
/* valueCalculator */ new Track.TimeRangeValueCalculator<Distance>() {
final Pair<Distance, Long> nullElement = new Pair<>(Distance.NULL, 0l);
Pair<Distance, Long> rideHeightSumAndCount = getValueSum(from, to, nullElement,
(a, b)->new Pair<>(a.getA().add(b.getA()), a.getB()+b.getB()),
averageRideHeightCache,
/* valueCalculator */ new Track.TimeRangeValueCalculator<Pair<Distance, Long>>() {
@Override
public Distance calculate(TimePoint from, TimePoint to) {
Distance result;
public Pair<Distance, Long> calculate(TimePoint from, TimePoint to) {
Distance sum = Distance.NULL;
int count = 0;
long count = 0;
for (final BravoFix fix : getFixes(from, true, to, true)) {
final Distance rideHeight = fix.getRideHeight();
if (rideHeight != null) {
@@ -191,14 +198,10 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
count++;
}
}
if (count > 0) {
result = sum.scale(1./count);
} else {
result = null;
}
return result;
return new Pair<>(sum, count);
}
});
return rideHeightSumAndCount.getB() == 0l ? null : rideHeightSumAndCount.getA().scale(1./(double) rideHeightSumAndCount.getB());
}
private boolean isFoiling(BravoFix fix) {
@@ -294,7 +294,9 @@ public class MaxSpeedCache<ItemType, FixType extends GPSFix> implements GPSTrack
} else {
speedAtFixTime = track.getEstimatedSpeed(fix.getTimePoint());
}
if (speedAtFixTime != null && speedAtFixTime.compareTo(max) > 0) {
// accept max speeds only if they don't exceed our validity threshold
if (speedAtFixTime != null && speedAtFixTime.compareTo(GPSFixTrack.DEFAULT_MAX_SPEED_FOR_SMOOTHING) < 0
&& speedAtFixTime.compareTo(max) > 0) {
max = speedAtFixTime;
maxSpeedFix = fix;
}
@@ -94,9 +94,7 @@ public class TrackedRaceStatisticsCalculator {
if (calculateMaxSpeed) {
Pair<GPSFixMoving, Speed> competitorMaxSpeed = competitorTrack.getMaximumSpeedOverGround(from, to);
if (competitorMaxSpeed != null
&& (maxSpeed == null || competitorMaxSpeed.getB().compareTo(maxSpeed.getB()) > 0)
// only accept "reasonable" max speeds
&& competitorMaxSpeed.getB().compareTo(GPSFixTrack.DEFAULT_MAX_SPEED_FOR_SMOOTHING) <= 0) {
&& (maxSpeed == null || competitorMaxSpeed.getB().compareTo(maxSpeed.getB()) > 0)) {
maxSpeed = new Triple<>(competitor, competitorMaxSpeed.getB(),
competitorMaxSpeed.getA().getTimePoint());
}
+2 -2
View File
@@ -8,7 +8,7 @@ There are two ways to run the Selenium tests locally on your computer. Either, y
### Firefox Prerequisites
!Since old Firefox version do not work with WindowScaling, ensure that in windows the Font Scaling is set to 100%, else Firefox will not be able to click buttons!
!Since old Firefox version do not work with WindowScaling, ensure that in windows the Font Scaling is set to 100%, else Firefox will not be able to click buttons. You can find this setting at "Settings>Display Settings>Change the size of text, apps and other items"!
You have to ensure that your Firefox browser has a profile called "Selenium" and that in this profile the latest version of the GWT plugin is installed. To ensure this, launch the server by choosing the "Sailing Server (Proxy)" or "Sailing Server (No Proxy)" launch config. Then, run the "SailingGWT" launch to start the GWT UI in hosted / development mode. Afterwards you can launch Firefox from the command line with the -p option. On Windows machines, you can do this by pressing the Windows key, then typing "firefox.exe -p". In the profile manager create a profile called Selenium and start Firefow with that profile. Hit the entry page of the AdminConsole by entering `http://127.0.0.1:8888/gwt/AdminConsole.html?gwt.codesvr=127.0.0.1:9997` into the address bar. This will ask you to install the GWT plugin into your Selenium profile. When done, exit the browser. You may use the profile manager again to set your default profile to your original profile.
@@ -16,7 +16,7 @@ You have to ensure that your Firefox browser has a profile called "Selenium" and
Launch the server by choosing the "Sailing Server (Proxy, winddbTest)" or "Sailing Server (No Proxy, winddbTest)" launch config. Then, run the "SailingGWT" launch to start the GWT UI in hosted / development mode.
When the GWT development mode has finished its initialization as indicated by the "Development Mode" view showing the entry point URLs, launch the "com.sap.sailing.senelium.test (Proxy, GWT Codesvr)" or "com.sap.sailing.senelium.test (No Proxy, GWT Codesvr)" launch. This will then pop up Firefox windows using the "Selenium" profile and run the tests.
When the GWT development mode has finished its initialization as indicated by the "Development Mode" view showing the entry point URLs, launch the "com.sap.sailing.senelium.test (Proxy)" or "com.sap.sailing.senelium.test (No Proxy)" launch. This will then pop up Firefox windows using the "Selenium" profile and run the tests.
### Running the tests after a successful local GWT compile