mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 21:25:38 +00:00
added fix types for all Igtimi formats known so far
This commit is contained in:
+1
-1
@@ -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;
|
||||
Executable
+12
@@ -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();
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+25
@@ -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;
|
||||
}
|
||||
}
|
||||
+41
@@ -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;
|
||||
}
|
||||
}
|
||||
+19
@@ -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;
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+49
@@ -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;
|
||||
}
|
||||
}
|
||||
+8
-7
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+21
@@ -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;
|
||||
}
|
||||
}
|
||||
+14
-2
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+21
@@ -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;
|
||||
}
|
||||
}
|
||||
+19
@@ -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;
|
||||
}
|
||||
}
|
||||
+19
@@ -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;
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+27
@@ -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;
|
||||
}
|
||||
}
|
||||
+40
-4
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+20
-11
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+55
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
@@ -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;
|
||||
|
||||
+1
@@ -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> {
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
|
||||
|
||||
+1
-1
@@ -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 {
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user