From cd98c1e5dbdac3577f4fe99cd08d155f007b56a2 Mon Sep 17 00:00:00 2001 From: Simon Pamies Date: Wed, 30 Nov 2016 12:17:21 +0100 Subject: [PATCH] Exporting working - manual test with one race and one competitor successful --- .../sap/sailing/xmlexport/FoilingData.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/FoilingData.java b/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/FoilingData.java index 713952a2d55..be8ac86df6a 100644 --- a/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/FoilingData.java +++ b/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/FoilingData.java @@ -25,6 +25,8 @@ import com.sap.sailing.domain.common.tracking.BravoFix; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.domain.tracking.BravoFixTrack; import com.sap.sailing.domain.tracking.DynamicSensorFixTrack; +import com.sap.sailing.domain.tracking.MarkPassing; +import com.sap.sailing.domain.tracking.TrackedLeg; import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor; import com.sap.sailing.domain.tracking.TrackedRace; import com.sap.sailing.domain.tracking.WindTrack; @@ -75,7 +77,7 @@ public class FoilingData { result.append("TimePoint").append(";"); result.append("RegattaName").append(";"); result.append("RaceName").append(";"); - result.append("CourseIndexStartingAtZero").append(";"); + result.append("LegIndexStartingAtZero").append(";"); result.append("CompetitorName").append(";"); result.append("SpeedOverGroundInKnots").append(";"); result.append("RideHeight").append(";"); @@ -83,18 +85,19 @@ public class FoilingData { result.append("RideHeightStarboard").append(";"); result.append("Heel").append(";"); result.append("Pitch").append(";"); - result.append("AveragedWindSpeed").append(";"); + result.append("AveragedWindSpeedInKnots").append(";"); result.append("WindBearingInDegrees").append("\n"); Leaderboard leaderboard = getLeaderboard(); for (RaceColumn raceColumn : leaderboard.getRaceColumns()) { for (Fleet fleet : raceColumn.getFleets()) { TrackedRace trackedRace = raceColumn.getTrackedRace(fleet); + if (trackedRace != null) { final List allCompetitors = trackedRace.getCompetitorsFromBestToWorst(/*timePoint*/trackedRace.getEndOfRace()); for (Competitor competitor : allCompetitors) { DynamicSensorFixTrack sensorTrack = trackedRace.getSensorTrack(competitor, BravoFixTrack.TRACK_NAME); final Duration samplingInterval = Duration.ONE_SECOND; final TimePoint fromTimePoint = trackedRace.getStartOfRace(); - if (fromTimePoint != null) { + if (sensorTrack != null && fromTimePoint != null) { final List windSourcesToDeliver = new ArrayList(); final WindSource windSource = new WindSourceImpl(WindSourceType.COMBINED); windSourcesToDeliver.add(windSource); @@ -114,12 +117,16 @@ public class FoilingData { WindWithConfidence> windFix = windTrack.getAveragedWindWithConfidence(null, timePointToConsider); SpeedWithConfidence windFixSpeed = new SpeedWithConfidenceImpl(new KnotSpeedImpl(windFix.getObject().getKnots()), windFix.getConfidence(), timePointToConsider); Bearing windFixBearing = windFix.getObject().getBearing(); - TrackedLegOfCompetitor leg = trackedRace.getCurrentLeg(competitor, timePointToConsider); - + TrackedLegOfCompetitor leg = trackedRace.getTrackedLeg(competitor, timePointToConsider); + result.append(timePointToConsider.asDate().toString()).append(";"); result.append(trackedRace.getRaceIdentifier().getRegattaName()).append(";"); result.append(trackedRace.getRaceIdentifier().getRaceName()).append(";"); - result.append(trackedRace.getRace().getCourse().getLegs().indexOf(leg.getLeg())).append(";"); + if (leg != null) { + result.append(trackedRace.getRace().getCourse().getLegs().indexOf(leg.getLeg())).append(";"); + } else { + result.append("-1").append(";"); + } result.append(competitor.getName()).append(";"); result.append(speedOfCompetitor.getKnots()).append(";"); result.append(rideHeight).append(";"); @@ -135,11 +142,12 @@ public class FoilingData { } } } + } } } res.setContentType("text/csv"); res.addHeader("Content-Disposition", "attachment; filename=" + leaderboard.getName() + ".csv"); - res.getOutputStream().write(result.toString().getBytes()); + res.getOutputStream().write(result.toString().getBytes("UTF-8")); res.getOutputStream().flush(); } }