From 4218b779fda63e2529999ebc13bdbc39b82fa7f8 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Mon, 29 Aug 2011 11:05:08 +0200 Subject: [PATCH] use compacting fix subclass also for buoy tracks --- .../tracking/impl/CompactGPSFixImpl.java | 57 +++++++++++++++++++ .../impl/CompactGPSFixMovingImpl.java | 42 +------------- .../tracking/impl/DynamicGPSFixTrackImpl.java | 15 +++++ .../domain/tracking/impl/TrackedRaceImpl.java | 10 +--- .../ExpeditionWindTrackerFactory.java | 1 + 5 files changed, 79 insertions(+), 46 deletions(-) create mode 100755 java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixImpl.java create mode 100755 java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicGPSFixTrackImpl.java diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixImpl.java new file mode 100755 index 00000000000..932c39328dc --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixImpl.java @@ -0,0 +1,57 @@ +package com.sap.sailing.domain.tracking.impl; + +import com.sap.sailing.domain.base.Position; +import com.sap.sailing.domain.base.TimePoint; +import com.sap.sailing.domain.base.impl.AbstractPosition; +import com.sap.sailing.domain.base.impl.AbstractTimePoint; +import com.sap.sailing.domain.tracking.GPSFix; + +public class CompactGPSFixImpl implements GPSFix { + private final double latDeg; + private final double lngDeg; + private final long timePointAsMillis; + + private class CompactPosition extends AbstractPosition { + @Override + public double getLatDeg() { + return latDeg; + } + + @Override + public double getLngDeg() { + return lngDeg; + } + } + + private class CompactTimePoint extends AbstractTimePoint implements TimePoint { + @Override + public long asMillis() { + return timePointAsMillis; + } + } + + public CompactGPSFixImpl(Position position, TimePoint timePoint) { + latDeg = position.getLatDeg(); + lngDeg = position.getLngDeg(); + timePointAsMillis = timePoint.asMillis(); + } + + public CompactGPSFixImpl(GPSFix gpsFix) { + this(gpsFix.getPosition(), gpsFix.getTimePoint()); + } + + @Override + public String toString() { + return getTimePoint() + ": " + getPosition(); + } + + @Override + public Position getPosition() { + return new CompactPosition(); + } + + @Override + public TimePoint getTimePoint() { + return new CompactTimePoint(); + } +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixMovingImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixMovingImpl.java index d15b72d4911..cb875804eaa 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixMovingImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/CompactGPSFixMovingImpl.java @@ -5,9 +5,7 @@ import com.sap.sailing.domain.base.Position; import com.sap.sailing.domain.base.SpeedWithBearing; import com.sap.sailing.domain.base.TimePoint; import com.sap.sailing.domain.base.impl.AbstractBearing; -import com.sap.sailing.domain.base.impl.AbstractPosition; import com.sap.sailing.domain.base.impl.AbstractSpeedImpl; -import com.sap.sailing.domain.base.impl.AbstractTimePoint; import com.sap.sailing.domain.tracking.GPSFixMoving; /** @@ -19,10 +17,7 @@ import com.sap.sailing.domain.tracking.GPSFixMoving; * @author Axel Uhl (d043530) * */ -public class CompactGPSFixMovingImpl implements GPSFixMoving { - private final double latDeg; - private final double lngDeg; - private final long timePointAsMillis; +public class CompactGPSFixMovingImpl extends CompactGPSFixImpl implements GPSFixMoving { private final double knotSpeed; private final double degBearing; @@ -60,29 +55,8 @@ public class CompactGPSFixMovingImpl implements GPSFixMoving { } } - private class CompactPosition extends AbstractPosition { - @Override - public double getLatDeg() { - return latDeg; - } - - @Override - public double getLngDeg() { - return lngDeg; - } - } - - private class CompactTimePoint extends AbstractTimePoint implements TimePoint { - @Override - public long asMillis() { - return timePointAsMillis; - } - } - public CompactGPSFixMovingImpl(Position position, TimePoint timePoint, SpeedWithBearing speed) { - latDeg = position.getLatDeg(); - lngDeg = position.getLngDeg(); - timePointAsMillis = timePoint.asMillis(); + super(position, timePoint); knotSpeed = speed.getKnots(); degBearing = speed.getBearing().getDegrees(); } @@ -98,16 +72,6 @@ public class CompactGPSFixMovingImpl implements GPSFixMoving { @Override public String toString() { - return getTimePoint() + ": " + getPosition() + " with " + getSpeed(); - } - - @Override - public Position getPosition() { - return new CompactPosition(); - } - - @Override - public TimePoint getTimePoint() { - return new CompactTimePoint(); + return super.toString() + " with " + getSpeed(); } } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicGPSFixTrackImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicGPSFixTrackImpl.java new file mode 100755 index 00000000000..14554d1fd94 --- /dev/null +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicGPSFixTrackImpl.java @@ -0,0 +1,15 @@ +package com.sap.sailing.domain.tracking.impl; + +import com.sap.sailing.domain.tracking.GPSFix; + +public class DynamicGPSFixTrackImpl extends DynamicTrackImpl { + + public DynamicGPSFixTrackImpl(ItemType trackedItem, long millisecondsOverWhichToAverage) { + super(trackedItem, millisecondsOverWhichToAverage); + } + + @Override + public void addGPSFix(GPSFix gpsFix) { + super.addGPSFix(new CompactGPSFixImpl(gpsFix)); + } +} diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index b1c4216ba4b..21a8bbc9f26 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -113,9 +113,7 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { this.buoyTracks = new HashMap>(); for (Waypoint waypoint : race.getCourse().getWaypoints()) { for (Buoy buoy : waypoint.getBuoys()) { - if (!buoyTracks.containsKey(buoy)) { - buoyTracks.put(buoy, new DynamicTrackImpl(buoy, millisecondsOverWhichToAverageSpeed)); - } + getTrack(buoy); } } trackedLegs = new LinkedHashMap(); @@ -364,7 +362,7 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { synchronized (buoyTracks) { GPSFixTrack result = buoyTracks.get(buoy); if (result == null) { - result = new DynamicTrackImpl(buoy, millisecondsOverWhichToAverageSpeed); + result = new DynamicGPSFixTrackImpl(buoy, millisecondsOverWhichToAverageSpeed); buoyTracks.put(buoy, result); } return result; @@ -450,9 +448,7 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener { public synchronized void waypointAdded(int zeroBasedIndex, Waypoint waypointThatGotAdded) { markPassingsForWaypoint.put(waypointThatGotAdded, new ConcurrentSkipListSet(TimedComparator.INSTANCE)); for (Buoy buoy : waypointThatGotAdded.getBuoys()) { - if (!buoyTracks.containsKey(buoy)) { - buoyTracks.put(buoy, new DynamicTrackImpl(buoy, millisecondsOverWhichToAverageSpeed)); - } + getTrack(buoy); } // a waypoint got added; this means that a leg got added as well; but we shouldn't claim we know where // in the leg list of the course the leg was added; that's an implementation secret of CourseImpl. So try: diff --git a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionWindTrackerFactory.java b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionWindTrackerFactory.java index 6a379025c49..6a39674f46b 100755 --- a/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionWindTrackerFactory.java +++ b/java/com.sap.sailing.expeditionconnector/src/com/sap/sailing/expeditionconnector/ExpeditionWindTrackerFactory.java @@ -23,6 +23,7 @@ public class ExpeditionWindTrackerFactory implements WindTrackerFactory, BundleA private static BundleContext defaultBundleContext; private static final String EXPEDITION_UDP_PORT_PROPERTY_NAME = "expedition.udp.port"; + /** * Remembers the wind tracker and the port on which the UDP receiver with which the wind tracker is * registers is listening for incoming Expedition messages.