mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-30 17:36:40 +00:00
changed target definition so that it uses external server URL to fetch target platform contents
This commit is contained in:
1 parent
b88b15cd33
commit
cd1425520b
6 files changed
+21
-8
No files matched your search
+3
-1
@@ -10,7 +10,9 @@ import com.sap.sailing.domain.common.Util.Pair;
|
|||||||
/**
|
/**
|
||||||
* Contains a number of {@link Bearing} objects and maintains the average bearing. For a given {@link Bearing} it
|
* Contains a number of {@link Bearing} objects and maintains the average bearing. For a given {@link Bearing} it
|
||||||
* can determine the difference to this cluster's average bearing. It can also split the cluster into two, based
|
* can determine the difference to this cluster's average bearing. It can also split the cluster into two, based
|
||||||
* on the two bearings farthest apart.<p>
|
* on the two bearings farthest apart. The cluster can contain multiple occurrences of the same and also
|
||||||
|
* multiple occurrences of mutually equal {@link Bearing} objects which is one possible way of computing a
|
||||||
|
* weighted average.<p>
|
||||||
*
|
*
|
||||||
* It is assumed that bearings added to this cluster are no further than 180 degrees apart. Violating this
|
* It is assumed that bearings added to this cluster are no further than 180 degrees apart. Violating this
|
||||||
* rule will lead to unpredictable results.
|
* rule will lead to unpredictable results.
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@ import com.sap.sailing.util.impl.DescendingNavigableSet;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Emulates a collection of {@link Wind} fixes for a {@link TrackedRace}, computed using
|
* Emulates a collection of {@link Wind} fixes for a {@link TrackedRace}, computed using
|
||||||
* {@link TrackedRace#getEstimatedWindDirection(com.sap.sailing.domain.base.Position, TimePoint)}. If not contrained
|
* {@link TrackedRace#getEstimatedWindDirection(com.sap.sailing.domain.base.Position, TimePoint)}. If not constrained
|
||||||
* by a {@link #from} and/or a {@link #to} time point, an equidistant time field is assumed, starting at
|
* by a {@link #from} and/or a {@link #to} time point, an equidistant time field is assumed, starting at
|
||||||
* {@link TrackedRace#getStart()} and leading up to {@link TrackedRace#getTimePointOfNewestEvent()}. If
|
* {@link TrackedRace#getStart()} and leading up to {@link TrackedRace#getTimePointOfNewestEvent()}. If
|
||||||
* {@link TrackedRace#getStart()} returns <code>null</code>, {@link Long#MAX_VALUE} is used as the {@link #from}
|
* {@link TrackedRace#getStart()} returns <code>null</code>, {@link Long#MAX_VALUE} is used as the {@link #from}
|
||||||
|
|||||||
+6
@@ -26,6 +26,12 @@ import com.sap.sailing.util.impl.ArrayListNavigableSet;
|
|||||||
* computed from the tracked race's boat tracks.
|
* computed from the tracked race's boat tracks.
|
||||||
* <p>
|
* <p>
|
||||||
*
|
*
|
||||||
|
* The estimation is integrated into the {@link WindTrackImpl} concepts by redefining the {@link #getInternalRawFixes()}
|
||||||
|
* method such that it returns an {@link EstimatedWindFixesAsNavigableSet} object. It computes its values by asking back
|
||||||
|
* to {@link #getEstimatedWindDirection(Position, TimePoint)} which first performs a cache look-up. In case of a cache
|
||||||
|
* miss it determines the result based on {@link TrackedRace#getEstimatedWindDirection(Position, TimePoint)}.
|
||||||
|
* <p>
|
||||||
|
*
|
||||||
* Caching is done using the base class's {@link TrackImpl#fixes} field which is made accessible through
|
* Caching is done using the base class's {@link TrackImpl#fixes} field which is made accessible through
|
||||||
* {@link #getCachedFixes()}. This track observes the {@link TrackedRace} for which it provides wind estimations.
|
* {@link #getCachedFixes()}. This track observes the {@link TrackedRace} for which it provides wind estimations.
|
||||||
* Whenever a change occurs, all fixes whose derivation is potentially affected by the change are removed from the
|
* Whenever a change occurs, all fixes whose derivation is potentially affected by the change are removed from the
|
||||||
|
|||||||
+7
-4
@@ -555,7 +555,6 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Wind getEstimatedWindDirection(Position position, TimePoint timePoint) {
|
public Wind getEstimatedWindDirection(Position position, TimePoint timePoint) {
|
||||||
int count = 0; // counts how many boats' courses were used in computing the result
|
|
||||||
Map<LegType, BearingCluster> bearings = new HashMap<LegType, BearingCluster>();
|
Map<LegType, BearingCluster> bearings = new HashMap<LegType, BearingCluster>();
|
||||||
for (LegType legType : LegType.values()) {
|
for (LegType legType : LegType.values()) {
|
||||||
bearings.put(legType, new BearingCluster());
|
bearings.put(legType, new BearingCluster());
|
||||||
@@ -573,6 +572,7 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
|
|||||||
}
|
}
|
||||||
if (legType != LegType.REACHING) {
|
if (legType != LegType.REACHING) {
|
||||||
GPSFixTrack<Competitor, GPSFixMoving> track = getTrack(competitor);
|
GPSFixTrack<Competitor, GPSFixMoving> track = getTrack(competitor);
|
||||||
|
// TODO bug #167 could be fixed here by excluding competitors that are x seconds before/after a mark passing
|
||||||
if (!track.hasDirectionChange(timePoint, getManeuverDegreeAngleThreshold())) {
|
if (!track.hasDirectionChange(timePoint, getManeuverDegreeAngleThreshold())) {
|
||||||
Bearing bearing = track.getEstimatedSpeed(timePoint).getBearing();
|
Bearing bearing = track.getEstimatedSpeed(timePoint).getBearing();
|
||||||
BearingCluster bearingClusters = bearings.get(legType);
|
BearingCluster bearingClusters = bearings.get(legType);
|
||||||
@@ -582,17 +582,20 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Bearing upwindAverage = null;
|
Bearing upwindAverage = null;
|
||||||
|
int upwindConfidence = 0;
|
||||||
BearingCluster[] bearingClustersUpwind = bearings.get(LegType.UPWIND).splitInTwo(getMinimumAngleBetweenDifferentTacksUpwind());
|
BearingCluster[] bearingClustersUpwind = bearings.get(LegType.UPWIND).splitInTwo(getMinimumAngleBetweenDifferentTacksUpwind());
|
||||||
if (!bearingClustersUpwind[0].isEmpty() && !bearingClustersUpwind[1].isEmpty()) {
|
if (!bearingClustersUpwind[0].isEmpty() && !bearingClustersUpwind[1].isEmpty()) {
|
||||||
upwindAverage = bearingClustersUpwind[0].getAverage().middle(bearingClustersUpwind[1].getAverage());
|
upwindAverage = bearingClustersUpwind[0].getAverage().middle(bearingClustersUpwind[1].getAverage());
|
||||||
count += bearingClustersUpwind[0].size() + bearingClustersUpwind[1].size();
|
upwindConfidence = Math.min(bearingClustersUpwind[0].size(), bearingClustersUpwind[1].size());
|
||||||
}
|
}
|
||||||
Bearing downwindAverage = null;
|
Bearing downwindAverage = null;
|
||||||
|
int downwindConfidence = 0;
|
||||||
BearingCluster[] bearingClustersDownwind = bearings.get(LegType.DOWNWIND).splitInTwo(getMinimumAngleBetweenDifferentTacksDownwind());
|
BearingCluster[] bearingClustersDownwind = bearings.get(LegType.DOWNWIND).splitInTwo(getMinimumAngleBetweenDifferentTacksDownwind());
|
||||||
if (!bearingClustersDownwind[0].isEmpty() && !bearingClustersDownwind[1].isEmpty()) {
|
if (!bearingClustersDownwind[0].isEmpty() && !bearingClustersDownwind[1].isEmpty()) {
|
||||||
downwindAverage = bearingClustersDownwind[0].getAverage().middle(bearingClustersDownwind[1].getAverage());
|
downwindAverage = bearingClustersDownwind[0].getAverage().middle(bearingClustersDownwind[1].getAverage());
|
||||||
count += bearingClustersDownwind[0].size() + bearingClustersDownwind[1].size();
|
downwindConfidence = Math.min(bearingClustersDownwind[0].size(), bearingClustersDownwind[1].size());
|
||||||
}
|
}
|
||||||
|
int confidence = upwindConfidence + downwindConfidence;
|
||||||
Bearing bearing;
|
Bearing bearing;
|
||||||
if (upwindAverage == null) {
|
if (upwindAverage == null) {
|
||||||
if (downwindAverage == null) {
|
if (downwindAverage == null) {
|
||||||
@@ -608,7 +611,7 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new WindImpl(null, timePoint,
|
return new WindImpl(null, timePoint,
|
||||||
new KnotSpeedWithBearingImpl(/* speedInKnots */ count, bearing));
|
new KnotSpeedWithBearingImpl(/* speedInKnots */ confidence, bearing));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@
|
|||||||
<location includeAllPlatforms="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
<location includeAllPlatforms="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||||
<unit id="com.sap.sailing.target.base.feature.group" version="1.0.0"/>
|
<unit id="com.sap.sailing.target.base.feature.group" version="1.0.0"/>
|
||||||
<unit id="com.sap.sailing.target.test.feature.group" version="1.0.0"/>
|
<unit id="com.sap.sailing.target.test.feature.group" version="1.0.0"/>
|
||||||
<repository location="file:/home/trac/p2-repositories/sailing"/>
|
<repository location="http://sapcoe-app01.pironet-ndh.com/p2/sailing/"/>
|
||||||
</location>
|
</location>
|
||||||
<location includeAllPlatforms="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
<location includeAllPlatforms="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||||
<unit id="org.eclipse.equinox.core.sdk.feature.group" version="3.7.0.v20110506-0800-7uF9LFp7FWmE7gTBiKg15LDD"/>
|
<unit id="org.eclipse.equinox.core.sdk.feature.group" version="3.7.0.v20110506-0800-7uF9LFp7FWmE7gTBiKg15LDD"/>
|
||||||
|
|||||||
@@ -10,7 +10,9 @@
|
|||||||
<repository location="http://nexus.wdf.sap.corp:8081/nexus/content/repositories/build.snapshots.unzip/com/sap/ui5/com.sap.ui5.updatesite/1.1.0/com.sap.ui5.updatesite-1.1.0-assembly.zip-unzip/"/>
|
<repository location="http://nexus.wdf.sap.corp:8081/nexus/content/repositories/build.snapshots.unzip/com/sap/ui5/com.sap.ui5.updatesite/1.1.0/com.sap.ui5.updatesite-1.1.0-assembly.zip-unzip/"/>
|
||||||
</location>
|
</location>
|
||||||
<location includeAllPlatforms="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
<location includeAllPlatforms="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||||
<repository location="file:/C:/data/SAP/sailing/workspace/java/com.sap.sailing.targetplatform.base/gen/p2"/>
|
<unit id="com.sap.sailing.target.base.feature.group" version="1.0.0"/>
|
||||||
|
<unit id="com.sap.sailing.target.test.feature.group" version="1.0.0"/>
|
||||||
|
<repository location="http://sapcoe-app01.pironet-ndh.com/p2/sailing/"/>
|
||||||
</location>
|
</location>
|
||||||
<location includeAllPlatforms="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
<location includeAllPlatforms="false" includeMode="slicer" includeSource="true" type="InstallableUnit">
|
||||||
<unit id="org.eclipse.jetty.bundles.f.feature.group" version="7.5.4"/>
|
<unit id="org.eclipse.jetty.bundles.f.feature.group" version="7.5.4"/>
|
||||||
|
|||||||
Reference in new issue
Block a user