added initial support for new bravo values in , increased displayed

precision for expedition values to better match precision in the csv
files
This commit is contained in:
Kai Boernert committed 2018-03-19 13:51:20 +01:00
1 parent 9062e8b762
commit efd60cfdd1
16 files changed
+583 -83

No files matched your search

@@ -117,77 +117,89 @@ public enum DetailType implements Serializable {
CHART_BEAT_ANGLE(0, ASCENDING, "BEAT_ANGLE"),
CHART_COURSE_OVER_GROUND_TRUE_DEGREES(0, ASCENDING, "COURSE_OVER_GROUND_TRUE_DEGREES"),
OVERALL_TOTAL_SCORED_RACE_COUNT(0, ASCENDING, "TOTAL_SCORED_RACE_COUNT"),
EXPEDITION_RACE_AWA(0, ASCENDING),
EXPEDITION_RACE_AWS(0, ASCENDING),
EXPEDITION_RACE_TWA(0, ASCENDING),
EXPEDITION_RACE_TWS(0, ASCENDING),
EXPEDITION_RACE_TWD(0, ASCENDING),
EXPEDITION_RACE_TARG_TWA(0, ASCENDING),
EXPEDITION_RACE_BOAT_SPEED(0, ASCENDING),
EXPEDITION_RACE_TARG_BOAT_SPEED(0, ASCENDING),
EXPEDITION_RACE_SOG(0, ASCENDING),
EXPEDITION_RACE_COG(0, ASCENDING),
EXPEDITION_RACE_FORESTAY_LOAD(0, ASCENDING),
EXPEDITION_RACE_RAKE(0, ASCENDING),
EXPEDITION_RACE_COURSE(0, ASCENDING),
EXPEDITION_RACE_HEADING(0, ASCENDING),
EXPEDITION_RACE_VMG(0, ASCENDING),
EXPEDITION_RACE_VMG_TARG_VMG_DELTA(0, ASCENDING),
EXPEDITION_RACE_RATE_OF_TURN(0, ASCENDING),
EXPEDITION_RACE_RUDDER_ANGLE(0, ASCENDING),
EXPEDITION_RACE_HEEL(0, ASCENDING),
EXPEDITION_RACE_TARGET_HEEL(0, ASCENDING),
EXPEDITION_RACE_TIME_TO_PORT_LAYLINE(0, ASCENDING),
EXPEDITION_RACE_TIME_TO_STB_LAYLINE(0, ASCENDING),
EXPEDITION_RACE_DIST_TO_PORT_LAYLINE(0, ASCENDING),
EXPEDITION_RACE_DIST_TO_STB_LAYLINE(0, ASCENDING),
EXPEDITION_RACE_TIME_TO_GUN(0, ASCENDING),
EXPEDITION_RACE_TIME_TO_COMMITTEE_BOAT(0, ASCENDING),
EXPEDITION_RACE_TIME_TO_PIN(0, ASCENDING),
EXPEDITION_RACE_TIME_TO_BURN_TO_LINE(0, ASCENDING),
EXPEDITION_RACE_TIME_TO_BURN_TO_COMMITTEE_BOAT(0, ASCENDING),
EXPEDITION_RACE_TIME_TO_BURN_TO_PIN(0, ASCENDING),
EXPEDITION_RACE_DISTANCE_TO_COMMITTEE_BOAT(0, ASCENDING),
EXPEDITION_RACE_DISTANCE_TO_PIN(0, ASCENDING),
EXPEDITION_RACE_DISTANCE_BELOW_LINE(0, ASCENDING),
EXPEDITION_RACE_LINE_SQUARE_FOR_WIND_DIRECTION(0, ASCENDING),
EXPEDITION_LEG_AWA(0, ASCENDING),
EXPEDITION_LEG_AWS(0, ASCENDING),
EXPEDITION_LEG_TWA(0, ASCENDING),
EXPEDITION_LEG_TWS(0, ASCENDING),
EXPEDITION_LEG_TWD(0, ASCENDING),
EXPEDITION_LEG_TARG_TWA(0, ASCENDING),
EXPEDITION_LEG_BOAT_SPEED(0, ASCENDING),
EXPEDITION_LEG_TARG_BOAT_SPEED(0, ASCENDING),
EXPEDITION_LEG_SOG(0, ASCENDING),
EXPEDITION_LEG_COG(0, ASCENDING),
EXPEDITION_LEG_FORESTAY_LOAD(0, ASCENDING),
EXPEDITION_LEG_RAKE(0, ASCENDING),
EXPEDITION_LEG_COURSE(0, ASCENDING),
EXPEDITION_LEG_HEADING(0, ASCENDING),
EXPEDITION_LEG_VMG(0, ASCENDING),
EXPEDITION_LEG_VMG_TARG_VMG_DELTA(0, ASCENDING),
EXPEDITION_LEG_RATE_OF_TURN(0, ASCENDING),
EXPEDITION_LEG_RUDDER_ANGLE(0, ASCENDING),
EXPEDITION_LEG_HEEL(0, ASCENDING),
EXPEDITION_LEG_TARGET_HEEL(0, ASCENDING),
EXPEDITION_LEG_TIME_TO_PORT_LAYLINE(0, ASCENDING),
EXPEDITION_LEG_TIME_TO_STB_LAYLINE(0, ASCENDING),
EXPEDITION_LEG_DIST_TO_PORT_LAYLINE(0, ASCENDING),
EXPEDITION_LEG_DIST_TO_STB_LAYLINE(0, ASCENDING),
EXPEDITION_LEG_TIME_TO_GUN(0, ASCENDING),
EXPEDITION_LEG_TIME_TO_COMMITTEE_BOAT(0, ASCENDING),
EXPEDITION_LEG_TIME_TO_PIN(0, ASCENDING),
EXPEDITION_LEG_TIME_TO_BURN_TO_LINE(0, ASCENDING),
EXPEDITION_LEG_TIME_TO_BURN_TO_COMMITTEE_BOAT(0, ASCENDING),
EXPEDITION_LEG_TIME_TO_BURN_TO_PIN(0, ASCENDING),
EXPEDITION_LEG_DISTANCE_TO_COMMITTEE_BOAT(0, ASCENDING),
EXPEDITION_LEG_DISTANCE_TO_PIN(0, ASCENDING),
EXPEDITION_LEG_DISTANCE_BELOW_LINE(0, ASCENDING),
EXPEDITION_LEG_LINE_SQUARE_FOR_WIND_DIRECTION(0, ASCENDING),
EXPEDITION_RACE_AWA(2, ASCENDING),
EXPEDITION_RACE_AWS(2, ASCENDING),
EXPEDITION_RACE_TWA(2, ASCENDING),
EXPEDITION_RACE_TWS(2, ASCENDING),
EXPEDITION_RACE_TWD(2, ASCENDING),
EXPEDITION_RACE_TARG_TWA(2, ASCENDING),
EXPEDITION_RACE_BOAT_SPEED(2, ASCENDING),
EXPEDITION_RACE_TARG_BOAT_SPEED(2, ASCENDING),
EXPEDITION_RACE_SOG(2, ASCENDING),
EXPEDITION_RACE_COG(2, ASCENDING),
EXPEDITION_RACE_FORESTAY_LOAD(2, ASCENDING),
EXPEDITION_RACE_RAKE(2, ASCENDING),
EXPEDITION_RACE_COURSE(2, ASCENDING),
EXPEDITION_RACE_HEADING(2, ASCENDING),
EXPEDITION_RACE_VMG(2, ASCENDING),
EXPEDITION_RACE_VMG_TARG_VMG_DELTA(2, ASCENDING),
EXPEDITION_RACE_RATE_OF_TURN(2, ASCENDING),
EXPEDITION_RACE_RUDDER_ANGLE(2, ASCENDING),
EXPEDITION_RACE_HEEL(2, ASCENDING),
EXPEDITION_RACE_TARGET_HEEL(2, ASCENDING),
EXPEDITION_RACE_TIME_TO_PORT_LAYLINE(2, ASCENDING),
EXPEDITION_RACE_TIME_TO_STB_LAYLINE(2, ASCENDING),
EXPEDITION_RACE_DIST_TO_PORT_LAYLINE(2, ASCENDING),
EXPEDITION_RACE_DIST_TO_STB_LAYLINE(2, ASCENDING),
EXPEDITION_RACE_TIME_TO_GUN(2, ASCENDING),
EXPEDITION_RACE_TIME_TO_COMMITTEE_BOAT(2, ASCENDING),
EXPEDITION_RACE_TIME_TO_PIN(2, ASCENDING),
EXPEDITION_RACE_TIME_TO_BURN_TO_LINE(2, ASCENDING),
EXPEDITION_RACE_TIME_TO_BURN_TO_COMMITTEE_BOAT(2, ASCENDING),
EXPEDITION_RACE_TIME_TO_BURN_TO_PIN(2, ASCENDING),
EXPEDITION_RACE_DISTANCE_TO_COMMITTEE_BOAT(2, ASCENDING),
EXPEDITION_RACE_DISTANCE_TO_PIN(2, ASCENDING),
EXPEDITION_RACE_DISTANCE_BELOW_LINE(2, ASCENDING),
EXPEDITION_RACE_LINE_SQUARE_FOR_WIND_DIRECTION(2, ASCENDING),
EXPEDITION_LEG_AWA(2, ASCENDING),
EXPEDITION_LEG_AWS(2, ASCENDING),
EXPEDITION_LEG_TWA(2, ASCENDING),
EXPEDITION_LEG_TWS(2, ASCENDING),
EXPEDITION_LEG_TWD(2, ASCENDING),
EXPEDITION_LEG_TARG_TWA(2, ASCENDING),
EXPEDITION_LEG_BOAT_SPEED(2, ASCENDING),
EXPEDITION_LEG_TARG_BOAT_SPEED(2, ASCENDING),
EXPEDITION_LEG_SOG(2, ASCENDING),
EXPEDITION_LEG_COG(2, ASCENDING),
EXPEDITION_LEG_FORESTAY_LOAD(2, ASCENDING),
EXPEDITION_LEG_RAKE(2, ASCENDING),
EXPEDITION_LEG_COURSE(2, ASCENDING),
EXPEDITION_LEG_HEADING(2, ASCENDING),
EXPEDITION_LEG_VMG(2, ASCENDING),
EXPEDITION_LEG_VMG_TARG_VMG_DELTA(2, ASCENDING),
EXPEDITION_LEG_RATE_OF_TURN(2, ASCENDING),
EXPEDITION_LEG_RUDDER_ANGLE(2, ASCENDING),
EXPEDITION_LEG_HEEL(2, ASCENDING),
EXPEDITION_LEG_TARGET_HEEL(2, ASCENDING),
EXPEDITION_LEG_TIME_TO_PORT_LAYLINE(2, ASCENDING),
EXPEDITION_LEG_TIME_TO_STB_LAYLINE(2, ASCENDING),
EXPEDITION_LEG_DIST_TO_PORT_LAYLINE(2, ASCENDING),
EXPEDITION_LEG_DIST_TO_STB_LAYLINE(2, ASCENDING),
EXPEDITION_LEG_TIME_TO_GUN(2, ASCENDING),
EXPEDITION_LEG_TIME_TO_COMMITTEE_BOAT(2, ASCENDING),
EXPEDITION_LEG_TIME_TO_PIN(2, ASCENDING),
EXPEDITION_LEG_TIME_TO_BURN_TO_LINE(2, ASCENDING),
EXPEDITION_LEG_TIME_TO_BURN_TO_COMMITTEE_BOAT(2, ASCENDING),
EXPEDITION_LEG_TIME_TO_BURN_TO_PIN(2, ASCENDING),
EXPEDITION_LEG_DISTANCE_TO_COMMITTEE_BOAT(2, ASCENDING),
EXPEDITION_LEG_DISTANCE_TO_PIN(2, ASCENDING),
EXPEDITION_LEG_DISTANCE_BELOW_LINE(2, ASCENDING),
EXPEDITION_LEG_LINE_SQUARE_FOR_WIND_DIRECTION(2, ASCENDING),
EXPEDITION_RACE_BARO(2, ASCENDING),
EXPEDITION_RACE_LOAD_S(2, ASCENDING),
EXPEDITION_RACE_LOAD_P(2, ASCENDING),
EXPEDITION_RACE_JIB_CAR_PORT(2, ASCENDING),
EXPEDITION_RACE_JIB_CAR_STBD(2, ASCENDING),
EXPEDITION_RACE_MAST_BUTT(2, ASCENDING),
EXPEDITION_LEG_BARO(2, ASCENDING),
EXPEDITION_LEG_LOAD_S(2, ASCENDING),
EXPEDITION_LEG_LOAD_P(2, ASCENDING),
EXPEDITION_LEG_JIB_CAR_PORT(2, ASCENDING),
EXPEDITION_LEG_JIB_CAR_STBD(2, ASCENDING),
EXPEDITION_LEG_MAST_BUTT(2, ASCENDING),
BRAVO_RACE_HEEL_IN_DEGREES(2, DESCENDING),
BRAVO_RACE_PITCH_IN_DEGREES(2, DESCENDING);
private int precision;
private SortingOrder defaultSortingOrder;
@@ -267,6 +279,12 @@ public enum DetailType implements Serializable {
allowed.add(EXPEDITION_RACE_DISTANCE_TO_PIN);
allowed.add(EXPEDITION_RACE_DISTANCE_BELOW_LINE);
allowed.add(EXPEDITION_RACE_LINE_SQUARE_FOR_WIND_DIRECTION);
allowed.add(EXPEDITION_RACE_BARO);
allowed.add(EXPEDITION_RACE_LOAD_S);
allowed.add(EXPEDITION_RACE_LOAD_P);
allowed.add(EXPEDITION_RACE_JIB_CAR_PORT);
allowed.add(EXPEDITION_RACE_JIB_CAR_STBD);
allowed.add(EXPEDITION_RACE_MAST_BUTT);
return allowed;
}
@@ -405,7 +423,9 @@ public enum DetailType implements Serializable {
EXPEDITION_LEG_TIME_TO_PIN, EXPEDITION_LEG_TIME_TO_BURN_TO_LINE,
EXPEDITION_LEG_TIME_TO_BURN_TO_COMMITTEE_BOAT, EXPEDITION_LEG_TIME_TO_BURN_TO_PIN,
EXPEDITION_LEG_DISTANCE_TO_COMMITTEE_BOAT, EXPEDITION_LEG_DISTANCE_TO_PIN,
EXPEDITION_LEG_DISTANCE_BELOW_LINE, EXPEDITION_LEG_LINE_SQUARE_FOR_WIND_DIRECTION });
EXPEDITION_LEG_DISTANCE_BELOW_LINE, EXPEDITION_LEG_LINE_SQUARE_FOR_WIND_DIRECTION, EXPEDITION_LEG_BARO,
EXPEDITION_LEG_LOAD_S, EXPEDITION_LEG_LOAD_P, EXPEDITION_LEG_JIB_CAR_PORT, EXPEDITION_LEG_JIB_CAR_STBD,
EXPEDITION_LEG_MAST_BUTT });
}
/**
@@ -437,11 +457,12 @@ public enum DetailType implements Serializable {
all.addAll(getLegExpeditionDetailColumnTypes());
return all;
}
/**
* This method allows callers to also restore legacy names of older settings that do not match the renamed detailtypes anymore.
* It matches {@code value} primarily to the literals; if no match is found, all {@link #oldNames old names} are checked,
* and the first match, if any, is returned. If no match is found, an {@link IllegalArgumentException} is thrown.
* This method allows callers to also restore legacy names of older settings that do not match the renamed
* detailtypes anymore. It matches {@code value} primarily to the literals; if no match is found, all
* {@link #oldNames old names} are checked, and the first match, if any, is returned. If no match is found, an
* {@link IllegalArgumentException} is thrown.
*/
public static DetailType valueOfString(String value) {
// fastpath for directly mappable values
@@ -569,6 +569,49 @@ public class LeaderboardEntryDTO implements Serializable {
}
}
public void setExpeditionBaro(Double expeditionBARO) {
if (expeditionBARO != null) {
ensureExpeditionHolder();
expeditionDataHolder.expeditionBARO = expeditionBARO;
}
}
public void setExpeditionLoadP(Double expeditionLoadP) {
if (expeditionLoadP != null) {
ensureExpeditionHolder();
expeditionDataHolder.expeditionLoadP = expeditionLoadP;
}
}
public void setExpeditionLoadS(Double expeditionLoadS) {
if (expeditionLoadS != null) {
ensureExpeditionHolder();
expeditionDataHolder.expeditionLoadS = expeditionLoadS;
}
}
public void setExpeditionJibCarPort(Double expeditionJibCarPort) {
if (expeditionJibCarPort != null) {
ensureExpeditionHolder();
expeditionDataHolder.expeditionJibCarPort = expeditionJibCarPort;
}
}
public void setExpeditionJibCarStbd(Double expeditionJibCarStbd) {
if (expeditionJibCarStbd != null) {
ensureExpeditionHolder();
expeditionDataHolder.expeditionJibCarStbd = expeditionJibCarStbd;
}
}
public void setExpeditionMastButt(Double expeditionMastButt) {
if (expeditionMastButt != null) {
ensureExpeditionHolder();
expeditionDataHolder.expeditionMastButt = expeditionMastButt;
}
}
public Double getExpeditionAWA() {
return expeditionDataHolder == null ? null : expeditionDataHolder.expeditionAWA;
}
@@ -670,12 +713,36 @@ public class LeaderboardEntryDTO implements Serializable {
}
public Double getExpeditionVMGTargVMGDelta() {
return expeditionDataHolder == null ? null : expeditionDataHolder.expeditionVMGTargVMGDelta;
}
public Double getExpeditionBaro() {
return expeditionDataHolder == null ? null : expeditionDataHolder.expeditionBARO;
}
public Double getExpeditionLoadP() {
return expeditionDataHolder == null ? null : expeditionDataHolder.expeditionLoadP;
}
public Double getExpeditionLoadS() {
return expeditionDataHolder == null ? null : expeditionDataHolder.expeditionLoadS;
}
public Double getExpeditionJibCarPort() {
return expeditionDataHolder == null ? null : expeditionDataHolder.expeditionJibCarPort;
}
public Double getExpeditionJibCarStbd() {
return expeditionDataHolder == null ? null : expeditionDataHolder.expeditionJibCarStbd;
}
public Double getExpeditionMastButt() {
return expeditionDataHolder == null ? null : expeditionDataHolder.expeditionMastButt;
}
/**
* Used to ensure that only one null value needs to be transmitted, if no expedition data exists
*/
public static class ExpeditionDataHolder implements Serializable{
public Double expeditionMastButt;
public Double expeditionJibCarStbd;
public Double expeditionJibCarPort;
public Double expeditionLoadS;
public Double expeditionLoadP;
public Double expeditionBARO;
private static final long serialVersionUID = 1L;
public Double expeditionAWA;
public Double expeditionAWS;
@@ -717,6 +784,7 @@ public class LeaderboardEntryDTO implements Serializable {
int result = 1;
result = prime * result + ((expeditionAWA == null) ? 0 : expeditionAWA.hashCode());
result = prime * result + ((expeditionAWS == null) ? 0 : expeditionAWS.hashCode());
result = prime * result + ((expeditionBARO == null) ? 0 : expeditionBARO.hashCode());
result = prime * result + ((expeditionBoatSpeed == null) ? 0 : expeditionBoatSpeed.hashCode());
result = prime * result + ((expeditionCOG == null) ? 0 : expeditionCOG.hashCode());
result = prime * result + ((expeditionCourseDetail == null) ? 0 : expeditionCourseDetail.hashCode());
@@ -733,8 +801,13 @@ public class LeaderboardEntryDTO implements Serializable {
result = prime * result + ((expeditionForestayLoad == null) ? 0 : expeditionForestayLoad.hashCode());
result = prime * result + ((expeditionHeading == null) ? 0 : expeditionHeading.hashCode());
result = prime * result + ((expeditionHeel == null) ? 0 : expeditionHeel.hashCode());
result = prime * result + ((expeditionJibCarPort == null) ? 0 : expeditionJibCarPort.hashCode());
result = prime * result + ((expeditionJibCarStbd == null) ? 0 : expeditionJibCarStbd.hashCode());
result = prime * result + ((expeditionLineSquareForWindDirection == null) ? 0
: expeditionLineSquareForWindDirection.hashCode());
result = prime * result + ((expeditionLoadP == null) ? 0 : expeditionLoadP.hashCode());
result = prime * result + ((expeditionLoadS == null) ? 0 : expeditionLoadS.hashCode());
result = prime * result + ((expeditionMastButt == null) ? 0 : expeditionMastButt.hashCode());
result = prime * result + ((expeditionRake == null) ? 0 : expeditionRake.hashCode());
result = prime * result + ((expeditionRateOfTurn == null) ? 0 : expeditionRateOfTurn.hashCode());
result = prime * result + ((expeditionRudderAngle == null) ? 0 : expeditionRudderAngle.hashCode());
@@ -781,6 +854,11 @@ public class LeaderboardEntryDTO implements Serializable {
return false;
} else if (!expeditionAWS.equals(other.expeditionAWS))
return false;
if (expeditionBARO == null) {
if (other.expeditionBARO != null)
return false;
} else if (!expeditionBARO.equals(other.expeditionBARO))
return false;
if (expeditionBoatSpeed == null) {
if (other.expeditionBoatSpeed != null)
return false;
@@ -836,11 +914,36 @@ public class LeaderboardEntryDTO implements Serializable {
return false;
} else if (!expeditionHeel.equals(other.expeditionHeel))
return false;
if (expeditionJibCarPort == null) {
if (other.expeditionJibCarPort != null)
return false;
} else if (!expeditionJibCarPort.equals(other.expeditionJibCarPort))
return false;
if (expeditionJibCarStbd == null) {
if (other.expeditionJibCarStbd != null)
return false;
} else if (!expeditionJibCarStbd.equals(other.expeditionJibCarStbd))
return false;
if (expeditionLineSquareForWindDirection == null) {
if (other.expeditionLineSquareForWindDirection != null)
return false;
} else if (!expeditionLineSquareForWindDirection.equals(other.expeditionLineSquareForWindDirection))
return false;
if (expeditionLoadP == null) {
if (other.expeditionLoadP != null)
return false;
} else if (!expeditionLoadP.equals(other.expeditionLoadP))
return false;
if (expeditionLoadS == null) {
if (other.expeditionLoadS != null)
return false;
} else if (!expeditionLoadS.equals(other.expeditionLoadS))
return false;
if (expeditionMastButt == null) {
if (other.expeditionMastButt != null)
return false;
} else if (!expeditionMastButt.equals(other.expeditionMastButt))
return false;
if (expeditionRake == null) {
if (other.expeditionRake != null)
return false;
@@ -485,6 +485,48 @@ public class LegEntryDTO implements Serializable {
expeditionHolder.expeditionLineSquareForWindDirection = expeditionLineSquareForWindDirection;
}
}
public void setExpeditionBaroIfAvailable(Double expeditionBaro) {
if (expeditionBaro != null) {
ensureExpeditionHolder();
expeditionHolder.expeditionBaro = expeditionBaro;
}
}
public void setExpeditionLoadSIfAvailable(Double expeditionLoadS) {
if (expeditionLoadS != null) {
ensureExpeditionHolder();
expeditionHolder.expeditionLoadS = expeditionLoadS;
}
}
public void setExpeditionLoadPIfAvailable(Double expeditionLoadP) {
if (expeditionLoadP != null) {
ensureExpeditionHolder();
expeditionHolder.expeditionLoadP = expeditionLoadP;
}
}
public void setExpeditionJibCarPortIfAvailable(Double expeditionJibCarPort) {
if (expeditionJibCarPort != null) {
ensureExpeditionHolder();
expeditionHolder.expeditionJibCarPort = expeditionJibCarPort;
}
}
public void setExpeditionJibCarStbdIfAvailable(Double expeditionJibCarStbd) {
if (expeditionJibCarStbd != null) {
ensureExpeditionHolder();
expeditionHolder.expeditionJibCarStbd = expeditionJibCarStbd;
}
}
public void setExpeditionMastButtIfAvailable(Double expeditionMastButt) {
if (expeditionMastButt != null) {
ensureExpeditionHolder();
expeditionHolder.expeditionMastButt = expeditionMastButt;
}
}
public Double getExpeditionAWA() {
return expeditionHolder == null ? null : expeditionHolder.expeditionAWA;
@@ -588,10 +630,33 @@ public class LegEntryDTO implements Serializable {
public Double getExpeditionVMGTargVMGDelta() {
return expeditionHolder == null ? null : expeditionHolder.expeditionVMGTargVMGDelta;
}
public Double getExpeditionBaro() {
return expeditionHolder == null ? null : expeditionHolder.expeditionBaro;
}
public Double getExpeditionLoadS() {
return expeditionHolder == null ? null : expeditionHolder.expeditionLoadS;
}
public Double getExpeditionLoadP() {
return expeditionHolder == null ? null : expeditionHolder.expeditionLoadP;
}
public Double getExpeditionJibCarPort() {
return expeditionHolder == null ? null : expeditionHolder.expeditionJibCarPort;
}
public Double getExpeditionJibCarStbd() {
return expeditionHolder == null ? null : expeditionHolder.expeditionJibCarStbd;
}
public Double getExpeditionMastButt() {
return expeditionHolder == null ? null : expeditionHolder.expeditionMastButt;
}
public static class ExpeditionLegHolder implements Serializable {
private static final long serialVersionUID = -2507536984016949734L;
public Double expeditionMastButt;
public Double expeditionJibCarStbd;
public Double expeditionJibCarPort;
public Double expeditionLoadP;
public Double expeditionLoadS;
public Double expeditionBaro;
public Double expeditionAWA;
public Double expeditionAWS;
public Double expeditionBoatSpeed;
@@ -632,6 +697,7 @@ public class LegEntryDTO implements Serializable {
int result = 1;
result = prime * result + ((expeditionAWA == null) ? 0 : expeditionAWA.hashCode());
result = prime * result + ((expeditionAWS == null) ? 0 : expeditionAWS.hashCode());
result = prime * result + ((expeditionBaro == null) ? 0 : expeditionBaro.hashCode());
result = prime * result + ((expeditionBoatSpeed == null) ? 0 : expeditionBoatSpeed.hashCode());
result = prime * result + ((expeditionCOG == null) ? 0 : expeditionCOG.hashCode());
result = prime * result + ((expeditionCourseDetail == null) ? 0 : expeditionCourseDetail.hashCode());
@@ -648,8 +714,13 @@ public class LegEntryDTO implements Serializable {
result = prime * result + ((expeditionForestayLoad == null) ? 0 : expeditionForestayLoad.hashCode());
result = prime * result + ((expeditionHeading == null) ? 0 : expeditionHeading.hashCode());
result = prime * result + ((expeditionHeel == null) ? 0 : expeditionHeel.hashCode());
result = prime * result + ((expeditionJibCarPort == null) ? 0 : expeditionJibCarPort.hashCode());
result = prime * result + ((expeditionJibCarStbd == null) ? 0 : expeditionJibCarStbd.hashCode());
result = prime * result + ((expeditionLineSquareForWindDirection == null) ? 0
: expeditionLineSquareForWindDirection.hashCode());
result = prime * result + ((expeditionLoadP == null) ? 0 : expeditionLoadP.hashCode());
result = prime * result + ((expeditionLoadS == null) ? 0 : expeditionLoadS.hashCode());
result = prime * result + ((expeditionMastButt == null) ? 0 : expeditionMastButt.hashCode());
result = prime * result + ((expeditionRake == null) ? 0 : expeditionRake.hashCode());
result = prime * result + ((expeditionRateOfTurn == null) ? 0 : expeditionRateOfTurn.hashCode());
result = prime * result + ((expeditionRudderAngle == null) ? 0 : expeditionRudderAngle.hashCode());
@@ -696,6 +767,11 @@ public class LegEntryDTO implements Serializable {
return false;
} else if (!expeditionAWS.equals(other.expeditionAWS))
return false;
if (expeditionBaro == null) {
if (other.expeditionBaro != null)
return false;
} else if (!expeditionBaro.equals(other.expeditionBaro))
return false;
if (expeditionBoatSpeed == null) {
if (other.expeditionBoatSpeed != null)
return false;
@@ -751,11 +827,36 @@ public class LegEntryDTO implements Serializable {
return false;
} else if (!expeditionHeel.equals(other.expeditionHeel))
return false;
if (expeditionJibCarPort == null) {
if (other.expeditionJibCarPort != null)
return false;
} else if (!expeditionJibCarPort.equals(other.expeditionJibCarPort))
return false;
if (expeditionJibCarStbd == null) {
if (other.expeditionJibCarStbd != null)
return false;
} else if (!expeditionJibCarStbd.equals(other.expeditionJibCarStbd))
return false;
if (expeditionLineSquareForWindDirection == null) {
if (other.expeditionLineSquareForWindDirection != null)
return false;
} else if (!expeditionLineSquareForWindDirection.equals(other.expeditionLineSquareForWindDirection))
return false;
if (expeditionLoadP == null) {
if (other.expeditionLoadP != null)
return false;
} else if (!expeditionLoadP.equals(other.expeditionLoadP))
return false;
if (expeditionLoadS == null) {
if (other.expeditionLoadS != null)
return false;
} else if (!expeditionLoadS.equals(other.expeditionLoadS))
return false;
if (expeditionMastButt == null) {
if (other.expeditionMastButt != null)
return false;
} else if (!expeditionMastButt.equals(other.expeditionMastButt))
return false;
if (expeditionRake == null) {
if (other.expeditionRake != null)
return false;
@@ -859,6 +960,4 @@ public class LegEntryDTO implements Serializable {
return true;
}
}
}
@@ -49,8 +49,8 @@ public enum ExpeditionExtendedSensorDataMetadata {
EXPEDITION_BELOWLN("BelowLn", BravoExtendedSensorDataMetadata.EXPEDITION_TMTOBURN), //
EXPEDITION_RATE_OF_TURN("ROT", BravoExtendedSensorDataMetadata.EXPEDITION_TMTOBURN), //
EXPEDITION_BARO("Baro", BravoExtendedSensorDataMetadata.EXPEDITION_BARO), //
EXPEDITION_LOAD_P("LoadP", BravoExtendedSensorDataMetadata.EXPEDITION_LOAD_P), //
EXPEDITION_LOAD_S("LoadS", BravoExtendedSensorDataMetadata.EXPEDITION_LOAD_S), //
EXPEDITION_LOAD_P("Load P", BravoExtendedSensorDataMetadata.EXPEDITION_LOAD_P), //
EXPEDITION_LOAD_S("Load S", BravoExtendedSensorDataMetadata.EXPEDITION_LOAD_S), //
EXPEDITION_JIB_CAR_PORT("JibCarPort", BravoExtendedSensorDataMetadata.EXPEDITION_JIB_CAR_PORT), //
EXPEDITION_JIB_CAR_STBD("JibCarStbd", BravoExtendedSensorDataMetadata.EXPEDITION_JIB_CAR_STBD), //
EXPEDITION_MAST_BUTT("MastButt", BravoExtendedSensorDataMetadata.EXPEDITION_MAST_BUTT), //
@@ -44,4 +44,10 @@ public interface BravoExtendedFix extends BravoFix {
Duration getExpeditionTmToBurn();
Double getExpeditionBelowLn();
Double getExpeditionCourse();
Double getExpeditionJibCarStbd();
Double getExpeditionJibCarPort();
Double getExpeditionLoadS();
Double getExpeditionLoadP();
Double getExpeditionBARO();
Double getExpeditionMastButt();
}
@@ -193,6 +193,36 @@ public class BravoExtendedFixImpl extends BravoFixImpl implements BravoExtendedF
public Double getExpeditionTG_Heell() {
return fix.get(BravoExtendedSensorDataMetadata.EXPEDITION_TGHEEL.getColumnIndex());
}
@Override
public Double getExpeditionBARO() {
return fix.get(BravoExtendedSensorDataMetadata.EXPEDITION_BARO.getColumnIndex());
}
@Override
public Double getExpeditionLoadP() {
return fix.get(BravoExtendedSensorDataMetadata.EXPEDITION_LOAD_P.getColumnIndex());
}
@Override
public Double getExpeditionLoadS() {
return fix.get(BravoExtendedSensorDataMetadata.EXPEDITION_LOAD_S.getColumnIndex());
}
@Override
public Double getExpeditionJibCarPort() {
return fix.get(BravoExtendedSensorDataMetadata.EXPEDITION_JIB_CAR_PORT.getColumnIndex());
}
@Override
public Double getExpeditionJibCarStbd() {
return fix.get(BravoExtendedSensorDataMetadata.EXPEDITION_JIB_CAR_STBD.getColumnIndex());
}
@Override
public Double getExpeditionMastButt() {
return fix.get(BravoExtendedSensorDataMetadata.EXPEDITION_MAST_BUTT.getColumnIndex());
}
@Override
public Duration getExpeditionTmToGun() {
@@ -625,6 +625,13 @@ public abstract class AbstractLeaderboardWithCache implements Leaderboard {
entryDTO.setExpeditionTimeToBurnToLine(fix.getExpeditionTmToBurn());
entryDTO.setExpeditionDistanceBelowLine(fix.getExpeditionBelowLn());
entryDTO.setExpeditionCourseDetail(fix.getExpeditionCourse());
entryDTO.setExpeditionBaro(fix.getExpeditionBARO());
entryDTO.setExpeditionLoadP(fix.getExpeditionLoadP());
entryDTO.setExpeditionLoadS(fix.getExpeditionLoadS());
entryDTO.setExpeditionJibCarPort(fix.getExpeditionJibCarPort());
entryDTO.setExpeditionJibCarStbd(fix.getExpeditionJibCarStbd());
entryDTO.setExpeditionMastButt(fix.getExpeditionMastButt());
entryDTO.heel = fix.getHeel();
entryDTO.pitch = fix.getPitch();
}
@@ -1048,6 +1055,12 @@ public abstract class AbstractLeaderboardWithCache implements Leaderboard {
result.setExpeditionDistanceToPinDetail(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionDistanceToPinDetail, TrackedLegOfCompetitor::getAverageExpeditionDistanceToPinDetail));
result.setExpeditionDistanceBelowLine(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionDistanceBelowLine, TrackedLegOfCompetitor::getAverageExpeditionDistanceBelowLine));
result.setExpeditionLineSquareForWindDirection(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionLineSquareForWindDirection, TrackedLegOfCompetitor::getAverageExpeditionLineSquareForWindDirection));
result.setExpeditionBaroIfAvailable(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionBaroIfAvailable, TrackedLegOfCompetitor::getAverageExpeditionBaroIfAvailable));
result.setExpeditionLoadSIfAvailable(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionLoadSIfAvailable, TrackedLegOfCompetitor::getAverageExpeditionLoadSIfAvailable));
result.setExpeditionLoadPIfAvailable(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionLoadPIfAvailable, TrackedLegOfCompetitor::getAverageExpeditionLoadPIfAvailable));
result.setExpeditionJibCarPortIfAvailable(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionJibCarPortIfAvailable, TrackedLegOfCompetitor::getAverageExpeditionJibCarPortIfAvailable));
result.setExpeditionJibCarStbdIfAvailable(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionJibCarStbdIfAvailable, TrackedLegOfCompetitor::getAverageExpeditionJibCarStbdIfAvailable));
result.setExpeditionMastButtIfAvailable(extractDoubleValue.apply(TrackedLegOfCompetitor::getExpeditionMastButtIfAvailable, TrackedLegOfCompetitor::getAverageExpeditionMastButtIfAvailable));
}
return result;
}
@@ -133,6 +133,12 @@ public interface BravoFixTrack<ItemType extends WithID & Serializable> extends S
Double getExpeditionDistanceToPinDetailIfAvailable(TimePoint at);
Double getExpeditionDistanceBelowLineIfAvailable(TimePoint at);
Double getExpeditionLineSquareForWindIfAvailable(TimePoint at);
Double getExpeditionBaroIfAvailable(TimePoint at);
Double getExpeditionLoadSIfAvailable(TimePoint at);
Double getExpeditionLoadPIfAvailable(TimePoint at);
Double getExpeditionJibCarPortIfAvailable(TimePoint at);
Double getExpeditionJibCarStbdIfAvailable(TimePoint at);
Double getExpeditionMastButtIfAvailable(TimePoint at);
Double getAverageExpeditionAWAIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionAWSIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionTWAIfAvailable(TimePoint start, TimePoint endTimePoint);
@@ -167,4 +173,10 @@ public interface BravoFixTrack<ItemType extends WithID & Serializable> extends S
Double getAverageExpeditionDistanceToPinDetailIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionDistanceBelowLineIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionLineSquareForWindIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionBaroIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionLoadSIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionLoadPIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionJibCarPortIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionJibCarStbdIfAvailable(TimePoint start, TimePoint endTimePoint);
Double getAverageExpeditionMastButtIfAvailable(TimePoint start, TimePoint endTimePoint);
}
@@ -336,6 +336,12 @@ public interface TrackedLegOfCompetitor extends Serializable {
Double getExpeditionDistanceToPinDetail(TimePoint at);
Double getExpeditionDistanceBelowLine(TimePoint at);
Double getExpeditionLineSquareForWindDirection(TimePoint at);
Double getExpeditionBaroIfAvailable(TimePoint at);
Double getExpeditionLoadSIfAvailable(TimePoint at);
Double getExpeditionLoadPIfAvailable(TimePoint at);
Double getExpeditionJibCarPortIfAvailable(TimePoint at);
Double getExpeditionJibCarStbdIfAvailable(TimePoint at);
Double getExpeditionMastButtIfAvailable(TimePoint at);
Double getAverageExpeditionAWA(TimePoint at);
Double getAverageExpeditionAWS(TimePoint at);
Double getAverageExpeditionTWA(TimePoint at);
@@ -370,5 +376,10 @@ public interface TrackedLegOfCompetitor extends Serializable {
Double getAverageExpeditionDistanceToPinDetail(TimePoint at);
Double getAverageExpeditionDistanceBelowLine(TimePoint at);
Double getAverageExpeditionLineSquareForWindDirection(TimePoint at);
Double getAverageExpeditionBaroIfAvailable(TimePoint at);
Double getAverageExpeditionLoadSIfAvailable(TimePoint at);
Double getAverageExpeditionLoadPIfAvailable(TimePoint at);
Double getAverageExpeditionJibCarPortIfAvailable(TimePoint at);
Double getAverageExpeditionJibCarStbdIfAvailable(TimePoint at);
Double getAverageExpeditionMastButtIfAvailable(TimePoint at);
}
@@ -58,6 +58,12 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
private transient TimeRangeCache<Pair<Double, Long>> expeditionForestayLoadCache;
private transient TimeRangeCache<Pair<Double, Long>> expeditionRakeCache;
private transient TimeRangeCache<Pair<Double, Long>> expeditionCourseDetailCache;
private transient TimeRangeCache<Pair<Double, Long>> expeditionBaroCache;
private transient TimeRangeCache<Pair<Double, Long>> expeditionLoadSCache;
private transient TimeRangeCache<Pair<Double, Long>> expeditionLoadPCache;
private transient TimeRangeCache<Pair<Double, Long>> expeditionJibCarPortCache;
private transient TimeRangeCache<Pair<Double, Long>> expeditionJibCarStbdCache;
private transient TimeRangeCache<Pair<Double, Long>> expeditionMastButtCache;
/**
* If a GPS track was provided at construction time, remember it non-transiently. It is needed when restoring
@@ -124,6 +130,12 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
this.expeditionForestayLoadCache= createTimeRangeCache(trackedItem, "expeditionForestayLoadCache");
this.expeditionRakeCache= createTimeRangeCache(trackedItem, "expeditionRakeCache");
this.expeditionCourseDetailCache= createTimeRangeCache(trackedItem, "expeditionCourseDetailCache");
this.expeditionBaroCache= createTimeRangeCache(trackedItem, "expeditionBaroCache");
this.expeditionLoadSCache= createTimeRangeCache(trackedItem, "expeditionLoadSCache");
this.expeditionLoadPCache= createTimeRangeCache(trackedItem, "expeditionLoadPCache");
this.expeditionJibCarPortCache= createTimeRangeCache(trackedItem, "expeditionJibCarPortCache");
this.expeditionJibCarStbdCache= createTimeRangeCache(trackedItem, "expeditionJibCarStbdCache");
this.expeditionMastButtCache= createTimeRangeCache(trackedItem, "expeditionMastButtCache");
}
public GPSFixTrack<ItemType, GPSFixMoving> getGpsTrack() {
@@ -191,7 +203,9 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
invalidateAllAtOrLaterThanForCaches(fixTimePoint, averageRideHeightCache, foilingDistanceCache,
foilingTimeCache, expeditionAWACache, expeditionAWSCache, expeditionTWACache, expeditionTWSCache,
expeditionTWDCache, expeditionBoatSpeedCache, expeditionTargBoatSpeedCache, expeditionSOGCache,
expeditionCOGCache, expeditionForestayLoadCache, expeditionRakeCache, expeditionCourseDetailCache);
expeditionCOGCache, expeditionForestayLoadCache, expeditionRakeCache, expeditionCourseDetailCache,
expeditionBaroCache, expeditionJibCarPortCache, expeditionJibCarStbdCache, expeditionLoadPCache,
expeditionLoadSCache, expeditionMastButtCache);
}
return added;
}
@@ -493,6 +507,36 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
public Double getAverageExpeditionCourseDetailIfAvailable(TimePoint start, TimePoint endTimePoint){
return getAverageOfBravoExtenededFixValueWithCachingForDouble(start, endTimePoint, BravoExtendedFix::getExpeditionCourse, expeditionCourseDetailCache);
}
@Override
public Double getAverageExpeditionBaroIfAvailable(TimePoint start, TimePoint endTimePoint){
return getAverageOfBravoExtenededFixValueWithCachingForDouble(start, endTimePoint, BravoExtendedFix::getExpeditionBARO, expeditionBaroCache);
}
@Override
public Double getAverageExpeditionLoadSIfAvailable(TimePoint start, TimePoint endTimePoint){
return getAverageOfBravoExtenededFixValueWithCachingForDouble(start, endTimePoint, BravoExtendedFix::getExpeditionLoadS, expeditionLoadSCache);
}
@Override
public Double getAverageExpeditionLoadPIfAvailable(TimePoint start, TimePoint endTimePoint){
return getAverageOfBravoExtenededFixValueWithCachingForDouble(start, endTimePoint, BravoExtendedFix::getExpeditionLoadP, expeditionLoadPCache);
}
@Override
public Double getAverageExpeditionJibCarPortIfAvailable(TimePoint start, TimePoint endTimePoint){
return getAverageOfBravoExtenededFixValueWithCachingForDouble(start, endTimePoint, BravoExtendedFix::getExpeditionJibCarPort, expeditionJibCarPortCache);
}
@Override
public Double getAverageExpeditionJibCarStbdIfAvailable(TimePoint start, TimePoint endTimePoint){
return getAverageOfBravoExtenededFixValueWithCachingForDouble(start, endTimePoint, BravoExtendedFix::getExpeditionJibCarStbd, expeditionJibCarStbdCache);
}
@Override
public Double getAverageExpeditionMastButtIfAvailable(TimePoint start, TimePoint endTimePoint){
return getAverageOfBravoExtenededFixValueWithCachingForDouble(start, endTimePoint, BravoExtendedFix::getExpeditionMastButt, expeditionMastButtCache);
}
@Override
public Double getAverageExpeditionHeadingIfAvailable(TimePoint start, TimePoint endTimePoint){
@@ -692,6 +736,36 @@ public class BravoFixTrackImpl<ItemType extends WithID & Serializable> extends S
return getExpeditionValueForDouble(at, BravoExtendedFix::getExpeditionCourse);
}
@Override
public Double getExpeditionBaroIfAvailable(TimePoint at) {
return getExpeditionValueForDouble(at, BravoExtendedFix::getExpeditionBARO);
}
@Override
public Double getExpeditionLoadSIfAvailable(TimePoint at) {
return getExpeditionValueForDouble(at, BravoExtendedFix::getExpeditionLoadS);
}
@Override
public Double getExpeditionLoadPIfAvailable(TimePoint at) {
return getExpeditionValueForDouble(at, BravoExtendedFix::getExpeditionLoadP);
}
@Override
public Double getExpeditionJibCarPortIfAvailable(TimePoint at) {
return getExpeditionValueForDouble(at, BravoExtendedFix::getExpeditionJibCarPort);
}
@Override
public Double getExpeditionJibCarStbdIfAvailable(TimePoint at) {
return getExpeditionValueForDouble(at, BravoExtendedFix::getExpeditionJibCarStbd);
}
@Override
public Double getExpeditionMastButtIfAvailable(TimePoint at) {
return getExpeditionValueForDouble(at, BravoExtendedFix::getExpeditionMastButt);
}
@Override
public Double getExpeditionHeadingIfAvailable(TimePoint at){
// TODO Auto-generated method stub
@@ -908,6 +908,36 @@ public class TrackedLegOfCompetitorImpl implements TrackedLegOfCompetitor {
return getExpeditionValueFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getExpeditionLineSquareForWindIfAvailable);
}
@Override
public Double getExpeditionBaroIfAvailable(TimePoint at) {
return getExpeditionValueFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getExpeditionBaroIfAvailable);
}
@Override
public Double getExpeditionLoadSIfAvailable(TimePoint at) {
return getExpeditionValueFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getExpeditionLoadSIfAvailable);
}
@Override
public Double getExpeditionLoadPIfAvailable(TimePoint at) {
return getExpeditionValueFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getExpeditionLoadPIfAvailable);
}
@Override
public Double getExpeditionJibCarPortIfAvailable(TimePoint at) {
return getExpeditionValueFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getExpeditionJibCarPortIfAvailable);
}
@Override
public Double getExpeditionJibCarStbdIfAvailable(TimePoint at) {
return getExpeditionValueFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getExpeditionJibCarStbdIfAvailable);
}
@Override
public Double getExpeditionMastButtIfAvailable(TimePoint at) {
return getExpeditionValueFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getExpeditionMastButtIfAvailable);
}
@Override
public Double getAverageExpeditionAWA(TimePoint at) {
return getAverageExpeditionValueWithTimeRangeFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getAverageExpeditionAWAIfAvailable);
@@ -1078,6 +1108,36 @@ public class TrackedLegOfCompetitorImpl implements TrackedLegOfCompetitor {
return getAverageExpeditionValueWithTimeRangeFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getAverageExpeditionLineSquareForWindIfAvailable);
}
@Override
public Double getAverageExpeditionBaroIfAvailable(TimePoint at) {
return getAverageExpeditionValueWithTimeRangeFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getAverageExpeditionBaroIfAvailable);
}
@Override
public Double getAverageExpeditionLoadSIfAvailable(TimePoint at) {
return getAverageExpeditionValueWithTimeRangeFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getAverageExpeditionLoadSIfAvailable);
}
@Override
public Double getAverageExpeditionLoadPIfAvailable(TimePoint at) {
return getAverageExpeditionValueWithTimeRangeFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getAverageExpeditionLoadPIfAvailable);
}
@Override
public Double getAverageExpeditionJibCarPortIfAvailable(TimePoint at) {
return getAverageExpeditionValueWithTimeRangeFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getAverageExpeditionJibCarPortIfAvailable);
}
@Override
public Double getAverageExpeditionJibCarStbdIfAvailable(TimePoint at) {
return getAverageExpeditionValueWithTimeRangeFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getAverageExpeditionJibCarStbdIfAvailable);
}
@Override
public Double getAverageExpeditionMastButtIfAvailable(TimePoint at) {
return getAverageExpeditionValueWithTimeRangeFromBravoFixTrackIfLegIsStarted(at, BravoFixTrack::getAverageExpeditionMastButtIfAvailable);
}
private <R> R getExpeditionValueFromBravoFixTrackIfLegIsStarted(TimePoint at, BiFunction<BravoFixTrack<Competitor>, TimePoint, R> valueExtractor) {
final R result;
if (hasStartedLeg(at)) {
@@ -270,6 +270,18 @@ public class DetailTypeFormatter {
return stringMessages.expeditionDistanceBelowLine();
case EXPEDITION_RACE_LINE_SQUARE_FOR_WIND_DIRECTION:
return stringMessages.expeditionLineSquareForWindDirection();
case EXPEDITION_RACE_BARO:
return stringMessages.expeditionBaro();
case EXPEDITION_RACE_LOAD_S:
return stringMessages.expeditionRaceLoadS();
case EXPEDITION_RACE_LOAD_P:
return stringMessages.expeditionRaceLoadP();
case EXPEDITION_RACE_JIB_CAR_PORT:
return stringMessages.expeditionRaceJibCarPort();
case EXPEDITION_RACE_JIB_CAR_STBD:
return stringMessages.expeditionRaceJibCarStbd();
case EXPEDITION_RACE_MAST_BUTT:
return stringMessages.expeditionRaceMastButt();
case EXPEDITION_LEG_AWA:
return "\u2205 " + stringMessages.expeditionAwa();
case EXPEDITION_LEG_AWS:
@@ -338,6 +350,18 @@ public class DetailTypeFormatter {
return "\u2205 " + stringMessages.expeditionVmg();
case EXPEDITION_LEG_VMG_TARG_VMG_DELTA:
return "\u2205 " + stringMessages.expeditionVmgTargVmgDelta();
case EXPEDITION_LEG_BARO:
return "\u2205 " + stringMessages.expeditionBaro();
case EXPEDITION_LEG_LOAD_S:
return "\u2205 " + stringMessages.expeditionRaceLoadS();
case EXPEDITION_LEG_LOAD_P:
return "\u2205 " + stringMessages.expeditionRaceLoadP();
case EXPEDITION_LEG_JIB_CAR_PORT:
return "\u2205 " + stringMessages.expeditionRaceJibCarPort();
case EXPEDITION_LEG_JIB_CAR_STBD:
return "\u2205 " + stringMessages.expeditionRaceJibCarStbd();
case EXPEDITION_LEG_MAST_BUTT:
return "\u2205 " + stringMessages.expeditionRaceMastButt();
case BRAVO_RACE_HEEL_IN_DEGREES:
return stringMessages.currentHeelInDegree();
case BRAVO_RACE_PITCH_IN_DEGREES:
@@ -459,7 +483,14 @@ public class DetailTypeFormatter {
case RACE_CURRENT_DURATION_FOILED_IN_SECONDS:
case OVERALL_TOTAL_DURATION_FOILED_IN_SECONDS:
return stringMessages.hhmmssUnit();
case EXPEDITION_RACE_BARO:
return stringMessages.milliBarUnits();
case EXPEDITION_RACE_JIB_CAR_PORT:
return stringMessages.degreesUnit();
case EXPEDITION_RACE_JIB_CAR_STBD:
return stringMessages.degreesUnit();
case EXPEDITION_RACE_MAST_BUTT:
return stringMessages.millimetersUnit();
// Cases for detail types without unit, so that an empty string is returned.
case RACE_RANK:
case REGATTA_RANK:
@@ -547,6 +578,8 @@ public class DetailTypeFormatter {
case EXPEDITION_LEG_DISTANCE_TO_PIN:
case EXPEDITION_LEG_DISTANCE_BELOW_LINE:
case EXPEDITION_LEG_LINE_SQUARE_FOR_WIND_DIRECTION:
case EXPEDITION_RACE_LOAD_S:
case EXPEDITION_RACE_LOAD_P:
return "";
default:
break;
@@ -2102,4 +2102,11 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages,
String expeditionDistanceToPin();
String expeditionDistanceBelowLine();
String expeditionLineSquareForWindDirection();
String expeditionBaro();
String expeditionRaceLoadS();
String expeditionRaceLoadP();
String expeditionRaceJibCarPort();
String expeditionRaceJibCarStbd();
String expeditionRaceMastButt();
String milliBarUnits();
}
@@ -2090,4 +2090,11 @@ expeditionTimeToBurnToPin=eTime to burn to pin
expeditionDistanceToCommitteeBoat=eDistance to committee boat
expeditionDistanceToPin=eDistance to pin
expeditionDistanceBelowLine=eDistance below line
expeditionLineSquareForWindDirection=eLine square for wind direction
expeditionLineSquareForWindDirection=eLine square for wind direction
expeditionBaro=pAtmosphere
expeditionRaceLoadS=FShroudS
expeditionRaceLoadP=FShroudP
expeditionRaceJibCarPort=aJibCarPFromBow
expeditionRaceJibCarStbd=aJibCarSFromBow
expeditionRaceMastButt=xMastButt
milliBarUnits=mbar
@@ -1315,6 +1315,18 @@ public abstract class LeaderboardPanel<LS extends LeaderboardSettings> extends A
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.EXPEDITION_RACE_LINE_SQUARE_FOR_WIND_DIRECTION, new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_RACE_LINE_SQUARE_FOR_WIND_DIRECTION, new DoubleTextRaceDetailTypeExtractor(LeaderboardEntryDTO::getExpeditionLineSquareForWindDirection), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.EXPEDITION_RACE_BARO, new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_RACE_BARO, new DoubleTextRaceDetailTypeExtractor(LeaderboardEntryDTO::getExpeditionBaro), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.EXPEDITION_RACE_LOAD_S, new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_RACE_LOAD_S, new DoubleTextRaceDetailTypeExtractor(LeaderboardEntryDTO::getExpeditionLoadS), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.EXPEDITION_RACE_LOAD_P, new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_RACE_LOAD_P, new DoubleTextRaceDetailTypeExtractor(LeaderboardEntryDTO::getExpeditionLoadP), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.EXPEDITION_RACE_JIB_CAR_PORT, new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_RACE_JIB_CAR_PORT, new DoubleTextRaceDetailTypeExtractor(LeaderboardEntryDTO::getExpeditionJibCarPort), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.EXPEDITION_RACE_JIB_CAR_STBD, new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_RACE_JIB_CAR_STBD, new DoubleTextRaceDetailTypeExtractor(LeaderboardEntryDTO::getExpeditionJibCarStbd), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.EXPEDITION_RACE_MAST_BUTT, new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_RACE_MAST_BUTT, new DoubleTextRaceDetailTypeExtractor(LeaderboardEntryDTO::getExpeditionJibCarStbd), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.BRAVO_RACE_HEEL_IN_DEGREES, new FormattedDoubleDetailTypeColumn(DetailType.BRAVO_RACE_HEEL_IN_DEGREES, new BearingAsDegreeDetailTypeExtractor(e -> e.heel), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE, LeaderboardPanel.this));
result.put(DetailType.BRAVO_RACE_PITCH_IN_DEGREES, new FormattedDoubleDetailTypeColumn(DetailType.BRAVO_RACE_PITCH_IN_DEGREES, new BearingAsDegreeDetailTypeExtractor(e -> e.pitch), LEG_COLUMN_HEADER_STYLE,
@@ -301,6 +301,18 @@ public class LegColumn extends ExpandableSortableColumn<String> {
new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_LEG_DISTANCE_BELOW_LINE, new DoubleDetailTypeExtractor(LegEntryDTO::getExpeditionDistanceBelowLine), detailHeaderStyle, detailColumnStyle, leaderboardPanel));
result.put(DetailType.EXPEDITION_LEG_LINE_SQUARE_FOR_WIND_DIRECTION,
new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_LEG_LINE_SQUARE_FOR_WIND_DIRECTION, new DoubleDetailTypeExtractor(LegEntryDTO::getExpeditionLineSquareForWindDirection), detailHeaderStyle, detailColumnStyle, leaderboardPanel));
result.put(DetailType.EXPEDITION_LEG_BARO,
new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_LEG_BARO, new DoubleDetailTypeExtractor(LegEntryDTO::getExpeditionBaro), detailHeaderStyle, detailColumnStyle, leaderboardPanel));
result.put(DetailType.EXPEDITION_LEG_LOAD_S,
new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_LEG_LOAD_S, new DoubleDetailTypeExtractor(LegEntryDTO::getExpeditionLoadS), detailHeaderStyle, detailColumnStyle, leaderboardPanel));
result.put(DetailType.EXPEDITION_LEG_LOAD_P,
new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_LEG_LOAD_P, new DoubleDetailTypeExtractor(LegEntryDTO::getExpeditionLoadP), detailHeaderStyle, detailColumnStyle, leaderboardPanel));
result.put(DetailType.EXPEDITION_LEG_JIB_CAR_PORT,
new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_LEG_JIB_CAR_PORT, new DoubleDetailTypeExtractor(LegEntryDTO::getExpeditionJibCarPort), detailHeaderStyle, detailColumnStyle, leaderboardPanel));
result.put(DetailType.EXPEDITION_LEG_JIB_CAR_STBD,
new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_LEG_JIB_CAR_STBD, new DoubleDetailTypeExtractor(LegEntryDTO::getExpeditionJibCarStbd), detailHeaderStyle, detailColumnStyle, leaderboardPanel));
result.put(DetailType.EXPEDITION_LEG_MAST_BUTT,
new FormattedDoubleDetailTypeColumn(DetailType.EXPEDITION_LEG_MAST_BUTT, new DoubleDetailTypeExtractor(LegEntryDTO::getExpeditionMastButt), detailHeaderStyle, detailColumnStyle, leaderboardPanel));
return result;
}