added fix types for all Igtimi formats known so far

This commit is contained in:
Axel Uhl
2013-11-27 10:59:36 +01:00
parent 512a58dd21
commit 18ad066e35
40 changed files with 571 additions and 41 deletions
@@ -1,4 +1,4 @@
package com.sap.sailing.domain.base.impl;
package com.sap.sailing.domain.common.impl;
import com.sap.sailing.domain.common.AbstractSpeedImpl;
import com.sap.sailing.domain.common.Speed;
@@ -0,0 +1,12 @@
package com.sap.sailing.domain.igtimiadapter;
public interface Sensor {
/**
* The ID called "sensor ID" by Igtimi. This identifies the microcontroller-like device that can mange several sensors
* such as wind, GPS or heart rate. Together with the type code and the optional {@link #getDeviceId() device ID} as used
* for heart rate sensors the individual sensor is uniquely defined.
*/
String getTransmitterId();
String getDeviceId();
}
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* Apparent wind angle, relative to the device's or vessel's orientation
*
* @author Axel Uhl (d043530)
*
*/
public class AWA extends Fix {
private final Bearing apparentWindAngle;
public AWA(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
apparentWindAngle = new DegreeBearingImpl(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Bearing getApparentWindAngle() {
return apparentWindAngle;
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* Apparent wind speed, relative to the inertial system on which the wind speed was measured
*
* @author Axel Uhl (d043530)
*
*/
public class AWS extends Fix {
private final Speed apparentWindSpeed;
public AWS(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
apparentWindSpeed = new KnotSpeedImpl(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Speed getApparentWindSpeed() {
return apparentWindSpeed;
}
}
@@ -0,0 +1,25 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* Cadence value measured by an ANT sensor
*
* @author Axel Uhl (d043530)
*
*/
public class AntCbst extends Fix {
private final int cadence;
public AntCbst(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
cadence = ((Number) valuesPerSubindex.get(1)).intValue();
}
public int getCadence() {
return cadence;
}
}
@@ -0,0 +1,41 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* A heart rate measurement received through a sensor supporting the ANT protocol
*
* @author Axel Uhl (d043530)
*
*/
public class AntHrm extends Fix {
/**
* The ANT protocol specifies its own time stamp that may vary from the {@link #getTimePoint transmitter's time stamp}.
*/
private final TimePoint eventTime;
private final int heartBeatCount;
private final int heartRate;
public AntHrm(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
eventTime = new MillisecondsTimePoint(((Number) valuesPerSubindex.get(1)).longValue());
heartBeatCount = ((Number) valuesPerSubindex.get(2)).intValue();
heartRate = ((Number) valuesPerSubindex.get(3)).intValue();
}
public TimePoint getEventTime() {
return eventTime;
}
public int getHeartBeatCount() {
return heartBeatCount;
}
public int getHeartRate() {
return heartRate;
}
}
@@ -0,0 +1,19 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public class BatteryLevel extends Fix {
private final double percentage;
public BatteryLevel(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
percentage = ((Number) valuesPerSubindex.get(1)).doubleValue();
}
public double getPercentage() {
return percentage;
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* Course over ground
*
* @author Axel Uhl (d043530)
*
*/
public class COG extends Fix {
private final Bearing courseOverGround;
public COG(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
courseOverGround = new DegreeBearingImpl(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Bearing getCourseOverGround() {
return courseOverGround;
}
}
@@ -0,0 +1,49 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public class File extends Fix {
private final TimePoint start;
private final TimePoint end;
private final String fileName;
private final String md5;
private final String contentType;
private final long size;
public File(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
start = timePoint;
end = timePoint; // TODO how are start and end timepoints encoded here?
fileName = ((String) valuesPerSubindex.get(1));
md5 = ((String) valuesPerSubindex.get(2));
contentType = ((String) valuesPerSubindex.get(3));
size = ((Number) valuesPerSubindex.get(4)).longValue();
}
public TimePoint getStart() {
return start;
}
public TimePoint getEnd() {
return end;
}
public String getFileName() {
return fileName;
}
public String getMd5() {
return md5;
}
public String getContentType() {
return contentType;
}
public long getSize() {
return size;
}
}
@@ -1,22 +1,23 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public abstract class Fix {
private final int code;
private final TimePoint timePoint;
private final Sensor sensor;
protected Fix(int code, String sensorId, TimePoint timePoint) {
protected Fix(Sensor sensor, TimePoint timePoint) {
super();
this.code = code;
this.timePoint = timePoint;
}
public int getCode() {
return code;
this.sensor = sensor;
}
public TimePoint getTimePoint() {
return timePoint;
}
public Sensor getSensor() {
return sensor;
}
}
@@ -0,0 +1,21 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.MeterDistance;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public class GpsAltitude extends Fix {
private final Distance altitude;
public GpsAltitude(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
altitude = new MeterDistance(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Distance getAltitude() {
return altitude;
}
}
@@ -1,9 +1,21 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public class GpsLatLong extends Fix {
public GpsLatLong(TimePoint timePoint, String sensorId) {
super(/* type */ 1, sensorId, timePoint);
private final Position position;
public GpsLatLong(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
position = new DegreePosition(((Number) valuesPerSubindex.get(1)).doubleValue(), ((Number) valuesPerSubindex.get(2)).doubleValue());
}
public Position getPosition() {
return position;
}
}
@@ -0,0 +1,21 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.MeterDistance;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public class GpsQualityHdop extends Fix {
private final Distance hdop;
public GpsQualityHdop(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
hdop = new MeterDistance(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Distance getHdop() {
return hdop;
}
}
@@ -0,0 +1,19 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public class GpsQualityIndicator extends Fix {
private final int quality;
public GpsQualityIndicator(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
quality = ((Number) valuesPerSubindex.get(1)).intValue();
}
public int getQuality() {
return quality;
}
}
@@ -0,0 +1,19 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public class GpsQualitySatCount extends Fix {
private final int satCount;
public GpsQualitySatCount(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
satCount = ((Number) valuesPerSubindex.get(1)).intValue();
}
public int getSatCount() {
return satCount;
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* True heading; the difference to {@link HDGM} is the local declination at the point in time the measurement was made
*
* @author Axel Uhl (d043530)
*
*/
public class HDG extends Fix {
private final Bearing trueHeading;
public HDG(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
trueHeading = new DegreeBearingImpl(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Bearing getTrueHeading() {
return trueHeading;
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* Magnetic heading
*
* @author Axel Uhl (d043530)
*
*/
public class HDGM extends Fix {
private final Bearing magnetigHeading;
public HDGM(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
magnetigHeading = new DegreeBearingImpl(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Bearing getMagnetigHeading() {
return magnetigHeading;
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* Speed over ground
*
* @author Axel Uhl (d043530)
*
*/
public class SOG extends Fix {
private final Speed speedOverGround;
public SOG(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
speedOverGround = new KnotSpeedImpl(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Speed getSpeedOverGround() {
return speedOverGround;
}
}
@@ -0,0 +1,27 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.Map;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.igtimiadapter.Sensor;
/**
* Speed through water
*
* @author Axel Uhl (d043530)
*
*/
public class STW extends Fix {
private final Speed speedThroughWater;
public STW(TimePoint timePoint, Sensor sensor, Map<Integer, Object> valuesPerSubindex) {
super(sensor, timePoint);
speedThroughWater = new KnotSpeedImpl(((Number) valuesPerSubindex.get(1)).doubleValue());
}
public Speed getSpeedThroughWater() {
return speedThroughWater;
}
}
@@ -1,15 +1,51 @@
package com.sap.sailing.domain.igtimiadapter.datatypes;
import java.util.HashMap;
import java.util.Map;
public enum Type {
gps_latlong(1);
gps_latlong(1, GpsLatLong.class),
gps_quality_indicator(2, GpsQualityIndicator.class),
gps_quality_sat_count(3, GpsQualitySatCount.class),
gps_quality_hdop(4, GpsQualityHdop.class),
gps_altitude(5, GpsAltitude.class),
COG(6, COG.class),
HDGM(7, HDGM.class),
HDG(8, HDG.class),
SOG(9, SOG.class),
STW(10, STW.class),
AWA(11, AWA.class),
AWS(12, AWS.class),
ant_hrm(13, AntHrm.class),
ant_cbst(14, AntCbst.class),
battery_level(15, BatteryLevel.class),
File(16, File.class);
public static Type valueOf(int code) {
return typeByCode.get(code);
}
public int getCode() {
return code;
}
private final int code;
public Class<? extends Fix> getFixClass() {
return fixClass;
}
private Type(int code) {
private final int code;
private final Class<? extends Fix> fixClass;
private final static Map<Integer, Type> typeByCode = new HashMap<>();
private Type(int code, Class<? extends Fix> fixClass) {
this.code = code;
this.fixClass = fixClass;
}
static {
for (Type type : Type.values()) {
typeByCode.put(type.getCode(), type);
}
}
}
@@ -1,19 +1,27 @@
package com.sap.sailing.domain.igtimiadapter.impl;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.igtimiadapter.Sensor;
import com.sap.sailing.domain.igtimiadapter.datatypes.Fix;
import com.sap.sailing.domain.igtimiadapter.datatypes.Type;
public class FixFactory {
private static final Logger logger = Logger.getLogger(FixFactory.class.getName());
public Iterable<Fix> createFixes(JSONObject sensorsJson) {
List<Fix> result = new ArrayList<>();
for (Entry<Object, Object> e : sensorsJson.entrySet()) {
@@ -27,20 +35,15 @@ public class FixFactory {
int fixIndex = 0;
for (Object timePointMillis : timePointsMillis) {
TimePoint timePoint = new MillisecondsTimePoint((Long) timePointMillis);
Map<Integer, Number> valuesPerSubindex = new HashMap<>();
Map<Integer, Object> valuesPerSubindex = new HashMap<>();
int i=1;
JSONArray values;
while ((values=(JSONArray) fixesJson.get(""+i)) != null) {
valuesPerSubindex.put(i, (Number) values.get(fixIndex));
i++;
}
final String sensorIdAndOptionalSubId;
if (fixTypeAndOptionalColonSeparatedSensorsSubId.length == 2) {
sensorIdAndOptionalSubId = sensorId+":"+fixTypeAndOptionalColonSeparatedSensorsSubId[1];
} else {
sensorIdAndOptionalSubId = sensorId;
}
Fix fix = createFix(sensorIdAndOptionalSubId, fixType, timePoint, valuesPerSubindex);
Sensor sensor = new SensorImpl(sensorId, fixTypeAndOptionalColonSeparatedSensorsSubId.length<2?null:fixTypeAndOptionalColonSeparatedSensorsSubId[1]);
Fix fix = createFix(sensor, Type.valueOf(fixType), timePoint, valuesPerSubindex);
result.add(fix);
fixIndex++;
}
@@ -49,8 +52,14 @@ public class FixFactory {
return result;
}
private Fix createFix(String sensorId, int fixType, TimePoint timePoint, Map<Integer, Number> valuesPerSubindex) {
// TODO Auto-generated method stub
return null;
private Fix createFix(Sensor sensor, Type fixType, TimePoint timePoint, Map<Integer, Object> valuesPerSubindex) {
try {
Constructor<? extends Fix> constructor = fixType.getFixClass().getConstructor(TimePoint.class, Sensor.class, Map.class);
Fix fix = constructor.newInstance(timePoint, sensor, valuesPerSubindex);
return fix;
} catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
logger.log(Level.SEVERE, "Internal error trying to find fix constructor for fix type "+fixType+" with class "+fixType.getFixClass());
throw new RuntimeException(e);
}
}
}
@@ -0,0 +1,55 @@
package com.sap.sailing.domain.igtimiadapter.impl;
import com.sap.sailing.domain.igtimiadapter.Sensor;
public class SensorImpl implements Sensor {
private final String transmitterId;
private final String deviceId;
protected SensorImpl(String transmitterId, String deviceId) {
super();
this.transmitterId = transmitterId;
this.deviceId = deviceId;
}
@Override
public String getTransmitterId() {
return transmitterId;
}
@Override
public String getDeviceId() {
return deviceId;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((deviceId == null) ? 0 : deviceId.hashCode());
result = prime * result + ((transmitterId == null) ? 0 : transmitterId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
SensorImpl other = (SensorImpl) obj;
if (deviceId == null) {
if (other.deviceId != null)
return false;
} else if (!deviceId.equals(other.deviceId))
return false;
if (transmitterId == null) {
if (other.transmitterId != null)
return false;
} else if (!transmitterId.equals(other.transmitterId))
return false;
return true;
}
}
@@ -14,11 +14,11 @@ import java.util.Arrays;
import java.util.Date;
import java.util.List;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.MeterDistance;
import com.sap.sailing.domain.swisstimingadapter.Competitor;
@@ -25,7 +25,6 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.Speed;
@@ -34,6 +33,7 @@ import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.MeterDistance;
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
@@ -26,7 +26,6 @@ import com.sap.sailing.domain.base.Boat;
import com.sap.sailing.domain.base.Timed;
import com.sap.sailing.domain.base.impl.BoatClassImpl;
import com.sap.sailing.domain.base.impl.BoatImpl;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.Position;
@@ -35,6 +34,7 @@ import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.MeterDistance;
import com.sap.sailing.domain.common.impl.MeterPerSecondSpeedWithDegreeBearingImpl;
@@ -3,6 +3,7 @@ package com.sap.sailing.domain.base.impl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.RadianBearingImpl;
import com.sap.sailing.domain.common.impl.Util.Triple;
@@ -2,6 +2,7 @@ package com.sap.sailing.domain.base.impl;
import com.sap.sailing.domain.base.SpeedWithConfidence;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.confidence.ScalableValue;
public class SpeedWithConfidenceImpl<RelativeTo> extends HasConfidenceImpl<Double, Speed, RelativeTo> implements SpeedWithConfidence<RelativeTo> {
@@ -20,7 +20,6 @@ import com.sap.sailing.domain.base.SpeedWithBearingWithConfidence;
import com.sap.sailing.domain.base.SpeedWithConfidence;
import com.sap.sailing.domain.base.Timed;
import com.sap.sailing.domain.base.impl.BearingWithConfidenceImpl;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.base.impl.SpeedWithBearingWithConfidenceImpl;
import com.sap.sailing.domain.base.impl.SpeedWithConfidenceImpl;
import com.sap.sailing.domain.common.Bearing;
@@ -29,6 +28,7 @@ import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.common.impl.NauticalMileDistance;
@@ -9,7 +9,6 @@ import java.util.NavigableSet;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Leg;
import com.sap.sailing.domain.base.Mark;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.ManeuverType;
@@ -18,6 +17,7 @@ import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.MeterDistance;
import com.sap.sailing.domain.common.impl.Util.Pair;
@@ -65,7 +65,6 @@ import com.sap.sailing.domain.base.Series;
import com.sap.sailing.domain.base.Sideline;
import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.base.impl.FleetImpl;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.base.impl.RegattaImpl;
import com.sap.sailing.domain.base.impl.SeriesImpl;
import com.sap.sailing.domain.common.Bearing;
@@ -120,6 +119,7 @@ import com.sap.sailing.domain.common.dto.TrackedRaceDTO;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.DegreePosition;
import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.MeterDistance;
import com.sap.sailing.domain.common.impl.MillisecondsTimePoint;
@@ -4,7 +4,6 @@ import net.sf.marineapi.nmea.sentence.MWVSentence;
import net.sf.marineapi.nmea.util.Units;
import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedWithBearingImpl;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.Speed;
@@ -12,6 +11,7 @@ import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KilometersPerHourSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.tracking.Wind;
import com.sap.sailing.domain.tracking.impl.WindImpl;
@@ -8,9 +8,9 @@ import java.util.NavigableMap;
import java.util.Set;
import java.util.TreeSet;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.simulator.PolarDiagram;
import com.sap.sailing.simulator.impl.PolarDiagram49STG;
@@ -3,10 +3,10 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
public class PolarDiagram49 extends PolarDiagramBase {
private static final long serialVersionUID = -878812179468801167L;
@@ -3,10 +3,10 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
public class PolarDiagram49Bethwaite extends PolarDiagramBase {
@@ -3,10 +3,10 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
public class PolarDiagram49ORC extends PolarDiagramBase {
@@ -3,10 +3,10 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
public class PolarDiagram49STG extends PolarDiagramBase {
@@ -3,10 +3,10 @@ package com.sap.sailing.simulator.impl;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
public class PolarDiagram505STG extends PolarDiagramBase {
@@ -12,10 +12,10 @@ import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.TreeMap;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
public class PolarDiagramCSV extends PolarDiagramBase {
@@ -6,11 +6,11 @@ import java.util.Map;
import java.util.logging.Logger;
import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedWithBearingImpl;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.domain.tracking.Wind;
import com.sap.sailing.domain.tracking.impl.WindImpl;
@@ -2,7 +2,6 @@ package com.sap.sailing.simulator.windfield.impl;
import java.util.logging.Logger;
import com.sap.sailing.domain.base.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.Position;
@@ -10,6 +9,7 @@ import com.sap.sailing.domain.common.Speed;
import com.sap.sailing.domain.common.SpeedWithBearing;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedImpl;
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.domain.tracking.Wind;