diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/SailingSimulatorImpl.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/SailingSimulatorImpl.java index 6b537a151fc..de3b6a32728 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/SailingSimulatorImpl.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/SailingSimulatorImpl.java @@ -234,31 +234,28 @@ public class SailingSimulatorImpl implements SailingSimulator { Path gpsPath = null; Path gpsPathPoly = null; - if (this.simulationParameters.getMode() == SailingSimulatorUtil.measured) { + Pair, Path> result = SimulatorUtils.readLegPathsFromResources(selection.getRaceIndex(), selection.getCompetitorIndex(), + selection.getLegIndex()); + allPaths = result.getA(); + this.raceCourse = result.getB(); - Pair, Path> result = SimulatorUtils.readLegPathsFromResources(selection.getRaceIndex(), selection.getCompetitorIndex(), - selection.getLegIndex()); - allPaths = result.getA(); - this.raceCourse = result.getB(); - - if (allPaths != null && allPaths.isEmpty() == false && allPaths.size() == 6) { - return allPaths; - } - - try { - gpsPath = this.getFromResourcesOrDownload("7#GPS Track", selection.getRaceIndex(), selection.getCompetitorIndex(), selection.getLegIndex()); - gpsPathPoly = this.getFromResourcesOrDownload("6#GPS Poly", selection.getRaceIndex(), selection.getCompetitorIndex(), selection.getLegIndex()); - this.raceCourse = this.getFromResourcesOrDownload("raceCourse", selection.getRaceIndex(), selection.getCompetitorIndex(), - selection.getLegIndex()); - } catch (Exception e) { - LOGGER.severe(e.getMessage()); - } - - allPaths.put("6#GPS Poly", gpsPathPoly); - allPaths.put("7#GPS Track", gpsPath); + if (allPaths != null && allPaths.isEmpty() == false && allPaths.size() == 6) { + return allPaths; } - allPaths.putAll(SimulatorUtils.getSimulationPaths(this.simulationParameters)); + try { + gpsPath = this.getFromResourcesOrDownload("7#GPS Track", selection.getRaceIndex(), selection.getCompetitorIndex(), selection.getLegIndex()); + gpsPathPoly = this.getFromResourcesOrDownload("6#GPS Poly", selection.getRaceIndex(), selection.getCompetitorIndex(), selection.getLegIndex()); + this.raceCourse = this.getFromResourcesOrDownload("raceCourse", selection.getRaceIndex(), selection.getCompetitorIndex(), + selection.getLegIndex()); + } catch (Exception e) { + LOGGER.severe(e.getMessage()); + } + + allPaths.put("6#GPS Poly", gpsPathPoly); + allPaths.put("7#GPS Track", gpsPath); + + allPaths.putAll(SimulatorUtils.getSimulationPaths(this.simulationParameters, gpsPath, this.raceCourse)); if (this.simulationParameters.getMode() == SailingSimulatorUtil.measured) { SimulatorUtils.saveLegPathsToFiles(allPaths, this.raceCourse, selection.getRaceIndex(), selection.getCompetitorIndex(), selection.getLegIndex()); diff --git a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/SimulatorUtils.java b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/SimulatorUtils.java index 1a9601a4bc2..7fee1c60907 100644 --- a/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/SimulatorUtils.java +++ b/java/com.sap.sailing.simulator/src/com/sap/sailing/simulator/impl/SimulatorUtils.java @@ -13,6 +13,7 @@ import java.io.ObjectOutputStream; import java.io.OutputStream; import java.net.URI; import java.net.URL; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -20,6 +21,7 @@ import java.util.logging.Logger; import org.osgi.framework.FrameworkUtil; +import com.sap.sailing.domain.common.Position; import com.sap.sailing.domain.common.impl.Util.Pair; import com.sap.sailing.domain.racelog.RaceLogStore; import com.sap.sailing.domain.tracking.RacesHandle; @@ -28,6 +30,9 @@ import com.sap.sailing.server.impl.RacingEventServiceImpl; import com.sap.sailing.simulator.Path; import com.sap.sailing.simulator.SimulationParameters; import com.sap.sailing.simulator.TimedPositionWithSpeed; +import com.sap.sailing.simulator.util.SailingSimulatorUtil; +import com.sap.sailing.simulator.windfield.WindFieldGenerator; +import com.sap.sailing.simulator.windfield.impl.WindFieldGeneratorMeasured; @SuppressWarnings("restriction") public class SimulatorUtils { @@ -341,7 +346,24 @@ public class SimulatorUtils { + selectedCompetitorIndex + "_" + selectedLegIndex + "_" + pathName + ".dat"; } - public static Map getSimulationPaths(SimulationParameters parameters) { + public static Map getSimulationPaths(SimulationParameters parameters, Path gpsPath, Path raceCourse) { + + // + // Initialize WindFields boundary + // + WindFieldGenerator wf = parameters.getWindField(); + // int[] gridRes = wf.getGridResolution(); + Position[] gridArea = wf.getGridAreaGps(); + if (parameters.getMode() == SailingSimulatorUtil.measured) { + ((WindFieldGeneratorMeasured) wf).setGPSWind(gpsPath); + gridArea = new Position[2]; + gridArea[0] = raceCourse.getPathPoints().get(0).getPosition(); + gridArea[1] = raceCourse.getPathPoints().get(1).getPosition(); + List course = new ArrayList(); + course.add(gridArea[0]); + course.add(gridArea[1]); + parameters.setCourse(course); + } Map paths = new HashMap(); @@ -408,4 +430,5 @@ public class SimulatorUtils { return paths; } + }