Merge branch 'master' into dev

This commit is contained in:
Axel Uhl
2013-01-25 22:56:34 +01:00
8 changed files with 98 additions and 92 deletions
@@ -546,9 +546,12 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
DBCollection leaderboardCollection = database.getCollection(CollectionNames.LEADERBOARDS.name());
Set<Leaderboard> result = new HashSet<Leaderboard>();
try {
//Don't change the query object, unless you know what you're doing
// Don't change the query object, unless you know what you're doing
BasicDBObject query = new BasicDBObject("$where", "function() { return db." + CollectionNames.LEADERBOARD_GROUPS.name() + ".find({ "
+ FieldNames.LEADERBOARD_GROUP_LEADERBOARDS.name() + ": this._id }).count() == 0; }");
+ FieldNames.LEADERBOARD_GROUP_LEADERBOARDS.name() + ": this._id }).count() == 0 && "
+ "db."+CollectionNames.LEADERBOARD_GROUPS.name()+".find({ "+FieldNames.LEADERBOARD_GROUP_OVERALL_LEADERBOARD.name() + ": this._id }).count() == 0 && "
+ "db."+CollectionNames.LEADERBOARD_GROUPS.name()+".find({ "+FieldNames.LEADERBOARD_GROUP_OVERALL_LEADERBOARD.name()+
": this."+FieldNames.LEADERBOARD_NAME.name()+" }).count() == 0; }}");
for (DBObject o : leaderboardCollection.find(query)) {
final Leaderboard loadedLeaderboard = loadLeaderboard(o, regattaRegistry, leaderboardRegistry, /* groupForMetaLeaderboard */ null);
if (loadedLeaderboard != null) {
@@ -2,6 +2,7 @@ package com.sap.sailing.domain.persistence.media.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
@@ -153,28 +154,32 @@ public class MediaDBImpl implements MediaDB {
@Override
public Collection<DBMediaTrack> queryOverlappingMediaTracks(Date rangeStart, Date rangeEnd) {
BasicDBObject startTimeCondition = new BasicDBObject();
startTimeCondition.put(DbNames.Fields.STARTTIME.name(), new BasicDBObject("$gt", rangeStart));
startTimeCondition.put(DbNames.Fields.STARTTIME.name(), new BasicDBObject("$lt", rangeEnd));
BasicDBObject endTimeCondition = new BasicDBObject();
// Should actually be "AND greater than rangeStart - duration".
// However, using values calculated on server side turns out to be a nightmare with mongodb.
// Instead do the remaining filtering on client side...
endTimeCondition.put(DbNames.Fields.STARTTIME.name(), new BasicDBObject("$lt", rangeStart));
DBObject query = QueryBuilder.start().or(startTimeCondition, endTimeCondition).get();
DBCursor cursor = getVideoCollection().find(query).sort(sortByStartTimeAndTitle);
List<DBMediaTrack> result = new ArrayList<>(cursor.count());
while (cursor.hasNext()) {
DBMediaTrack resultCandidate = createMediaObjectFromDB(cursor.next());
if (resultCandidate.durationInMillis > rangeStart.getTime() - resultCandidate.startTime.getTime()) {
result.add(resultCandidate);
if ((rangeStart != null) && (rangeEnd != null)) {
BasicDBObject startTimeCondition = new BasicDBObject();
startTimeCondition.put(DbNames.Fields.STARTTIME.name(), new BasicDBObject("$gt", rangeStart));
startTimeCondition.put(DbNames.Fields.STARTTIME.name(), new BasicDBObject("$lt", rangeEnd));
BasicDBObject endTimeCondition = new BasicDBObject();
// Should actually be "AND greater than rangeStart - duration".
// However, using values calculated on server side turns out to be a nightmare with mongodb.
// Instead do the remaining filtering on client side...
endTimeCondition.put(DbNames.Fields.STARTTIME.name(), new BasicDBObject("$lt", rangeStart));
DBObject query = QueryBuilder.start().or(startTimeCondition, endTimeCondition).get();
DBCursor cursor = getVideoCollection().find(query).sort(sortByStartTimeAndTitle);
List<DBMediaTrack> result = new ArrayList<>(cursor.count());
while (cursor.hasNext()) {
DBMediaTrack resultCandidate = createMediaObjectFromDB(cursor.next());
if (resultCandidate.durationInMillis > rangeStart.getTime() - resultCandidate.startTime.getTime()) {
result.add(resultCandidate);
}
}
return result;
} else {
return Collections.emptyList();
}
return result;
}
}
@@ -70,7 +70,7 @@ public class RaceColumnInLeaderboardDialog extends DataEntryDialog<RaceColumnInL
String errorMessage;
String racename = valueToValidate.getName();
Boolean isMedalRace = valueToValidate.isMedalRace();
boolean isNameNotEmpty = racename != null & racename != "";
boolean isNameNotEmpty = racename != null & !racename.isEmpty();
boolean medalRaceNotNull = isMedalRace != null;
boolean unique = true;
@@ -411,7 +411,7 @@ public class SwissTimingReplayConnectorPanel extends AbstractEventManagementPane
raceList.getList().clear();
if (text != null && !text.isEmpty()) {
for (SwissTimingReplayRaceDTO replayRace : availableSwissTimingRaces) {
boolean found = textContainsStringsToCheck(wordsToFilter, replayRace.boat_class, replayRace.flight_number, replayRace.name, replayRace.race_id);
boolean found = textContainsStringsToCheck(wordsToFilter, replayRace.boat_class, replayRace.flight_number, replayRace.name, replayRace.race_id, replayRace.rsc);
if (found) {
raceList.getList().add(replayRace);
}
@@ -16,7 +16,7 @@ race=Race
races=Races
tracked=tracked
time=Time
timeTooltip=Time the competitor sailed on this leg.
timeTooltip=Time the competitor sailed on this leg. For the first leg this is counted from the start, not when the competitor passed the start line.
playSpeed=Play speed
playSpeedHelp=Use "1" for regular play-back speed, "2" for double-speed playback and so on
playModeLive=Live
@@ -58,17 +58,17 @@ medalRace=Medal Race
renameRace=Rename Race
openSelectedLeaderboard=Open Selected Leaderboard
rank=Rank
rankTooltip=The position of the competitor.
rankTooltip=Competitor''s rank in the race
totalRank=Total rank
collapse=-
expand=+
leg=L
distanceInMeters=Distance
averageSpeedInKnots=\u2205 Speed
averageSpeedInKnotsTooltip=The average speed over ground during this leg,\ncalculated with the division of the traveled distance and the needed time.
raceAverageSpeedInKnotsTooltip=The average speed over ground during this race,\ncalculated with the division of the traveled distance and the needed time.
averageSpeedInKnotsTooltip=The average speed over ground during this leg,\ncalculated with the division of the distance traveled by the time needed.
raceAverageSpeedInKnotsTooltip=The average speed over ground during this race,\ncalculated with the division of the distance traveled by the time needed.
rankGain=Rank Gain
rankGainTooltip=The difference of the position from the current and the past leg.
rankGainTooltip=The difference of the position from the current and the previous leg.
sapSailingAnalytics=Sailing Analytics
leaderboard=Leaderboard
leaderboards=Leaderboards
@@ -78,15 +78,15 @@ selectAtLeastOneLegDetail=Select at least one leg detail
currentSpeedOverGroundInKnots=SOG
currentSpeedOverGroundInKnotsTooltip=The current speed over ground.
estimatedTimeToNextWaypointInSeconds=ETA
estimatedTimeToNextWaypointInSecondsTooltip=The estimated time that the competitor needs to reach the next waypoint.
estimatedTimeToNextWaypointInSecondsTooltip=The estimated time that the competitor needs to reach the next waypoint, based on the competitor''s current velocity made good, considering the true wind direction.
gapToLeaderInSeconds=Gap to leader
gapToLeaderInSecondsTooltip=The time a competitor would need to reach the leader.
gapToLeaderInSecondsTooltip=The time a competitor would need to reach the leader''s current position, based on the current velocity made good.
velocityMadeGoodInKnots=VMG
velocityMadeGoodInKnotsTooltip=The velocity made good, which is the speed towards the rhumb line.
velocityMadeGoodInKnotsTooltip=The velocity made good, which is the windward/leeward speed for upwind/downwind legs, respectively, or the along-track speed for reaching legs.
windwardDistanceToGoInMeters=Windward distance to go
windwardDistanceToGoInMetersTooltip=Windward distance from the positon of the competitor, to the end of the leg.
windwardDistanceToGoInMetersTooltip=Windward/leeward distance from the competitor''s current position to the end of the leg for upwind/downwind legs, respectively, or the along-track distance for reaching legs.
windwardDistanceToLeaderInMeters=Windward Distance To Leader
windwardDistanceToLeaderInMetersTooltip=Windward distance of the competitor to the leader.
windwardDistanceToLeaderInMetersTooltip=Windward/leeward distance of the competitor to the leader for upwind/downwind legs, respectively, or the along-track distance for reaching legs.
name=Name
leaveEmptyForDefault=Leave empty for default
trackNewEvent=Track New event
@@ -146,8 +146,8 @@ selectedRaces=Which races would you like to display?
lengthInSeconds=Length (s)
stressTest=Stress Test
numberOfManeuvers=Maneuvers
numberOfManeuversTooltip=The amount of the sailed maneuvers in this leg.
numberOfManeuversInRaceTooltip=The amount of the sailed maneuvers in this race.
numberOfManeuversTooltip=The number of the maneuvers sailed in this leg.
numberOfManeuversInRaceTooltip=The number of maneuvers sailed in this race.
tacks=Tacks
jibes=Jibes
penaltyCircles=Penalty Circles
@@ -182,11 +182,11 @@ raceWithThisNameAlreadyExistsInRegatta=A race with that name already exists in t
headUp=Head up
bearAway=Bear away
tack=Tack
tackTooltip=The amount of the sailed tacks in this race.
tackTooltip=The amount of tacks sailed in this race.
jibe=Jibe
jibeTooltip=The amount of the sailed jibes in this race.
jibeTooltip=The amount of jibes sailed in this race.
penaltyCircle=Penalty circle
penaltyCircleTooltip=The amount of the sailed penalty circles in this race.
penaltyCircleTooltip=The amount of penalty circles sailed in this race.
markPassing=Mark passing
mark=Mark
otherManeuver=Unknown maneuver
@@ -242,7 +242,7 @@ createNewLeaderboardGroup=Create leaderboard group
leaderboardGroupConfiguration=Leaderboard Group Configuration
legs=Legs
currentLeg=On Leg
currentLegTooltip=The leg, on which the competitor currently is.
currentLegTooltip=The number of the leg on which the competitor currently is, starting with 1
leaderboardGroup=Leaderboard Group
pleaseEnterNonEmptyDescription=Please enter a non-empty description
groupWithThisNameAlreadyExists=A leaderboard group with this name already exists.
@@ -305,8 +305,8 @@ leaderboardsInGroup=Leaderboards in group
replication=Replication
errorFetchingReplicaData=Error fetching replica data: {0}
averageCrossTrackErrorInMeters=\u2205 XTE
averageCrossTrackErrorInMetersTooltip=The average cross track error to the rhumb line during this leg.
raceAverageCrossTrackErrorInMetersTooltip=The average cross track error to the rhumb line during this race.
averageCrossTrackErrorInMetersTooltip=The average cross track error to the great circle segment connecting leg start with leg end
raceAverageCrossTrackErrorInMetersTooltip=The average cross track error to the great circle segments connecting leg start with leg end during this race.
enterMaster=Hostname of Master Instance
errorStartingReplication=Error starting replication from host {0} / exchange {1}: {2}
helpLines=Help lines
@@ -403,15 +403,15 @@ type=Type
actionAddRaces=Add races
racesWithNamePrefix=races with name prefix
maximumSpeedOverGroundInKnots=Max SOG
maximumSpeedOverGroundInKnotsTooltip=The biggest speed over ground measured in the regatta.
maximumSpeedOverGroundInKnotsTooltip=The competitor''s greatest speed over ground measured in the regatta.
totalTimeSailedDownwindInSeconds=Total time downwind
totalTimeSailedDownwindInSecondsTooltip=The total time, the competitor sailed on downwind in the regatta.
totalTimeSailedDownwindInSecondsTooltip=The total time the competitor sailed downwind in the regatta.
totalTimeSailedUpwindInSeconds=Total time upwind
totalTimeSailedUpwindInSecondsTooltip=The total time, the competitor sailed on upwind in the regatta.
totalTimeSailedUpwindInSecondsTooltip=The total time the competitor sailed upwind in the regatta.
totalTimeSailedReachingInSeconds=Total time reaching
totalTimeSailedReachingInSecondsTooltip=The total time, the competitor sailed on reaching in the regatta.
totalTimeSailedReachingInSecondsTooltip=The total time the competitor sailed on reaching legs in the regatta.
totalTimeSailedInSeconds=Total time
totalTimeSailedInSecondsTooltip=The total time, the competitor needed for the regatta.
totalTimeSailedInSecondsTooltip=The total time the competitor sailed in the regatta.
hhmmssUnit=hh:mm:ss
actionAddWindData=Add wind data
valueMustBeBetweenMinMax=The value of ''{0}'' must be between {1} and {2}.
@@ -456,7 +456,7 @@ factor=Factor
errorUpdatingIsMedalRace=Error updating the medal race setting: {0}
maneuverLoss=Maneuver loss
averageManeuverLossInMeters=\u2205 Maneuver Loss
averageManeuverLossInMetersTooltip=The average distance loss during any meneuver.
averageManeuverLossInMetersTooltip=The average distance loss during any mneuver.
averageTackLossInMeters=\u2205 Tack Loss
averageTackLossInMetersTooltip=The average distance loss during tacks.
averageJibeLossInMeters=\u2205 Jibe Loss
@@ -477,8 +477,7 @@ errorTryingToObtainOverallLeaderboards=Error trying to obtain overall leaderboar
finished=finished
passedTo=passed to {0}
gapChangeSinceLegStartInSeconds=Gap Change
gapChangeSinceLegStartInSecondsTooltip=The change of the gap to the leader since the last leg start.\nA negative number means, that the gap was decreased and \
a positive number means, that it was increased.
gapChangeSinceLegStartInSecondsTooltip=The change of the gap to the leader since the last leg start.\nA negative number means that the gap was decreased;\na positive number means that it was increased.
sideToWhichMarkAtLegStartWasRounded=Mark rounded to
sideToWhichMarkAtLegStartWasRoundedTooltip=Side to which the mark at leg start was rounded.
raceIsLive=Race {0} is live
@@ -486,7 +485,7 @@ racesAreLive=Races {0} are live
scoringSchemeHighPointFirstGetsTen=High Point, winner gets 10 points
knotsUnit=kts
competitorColumnTooltip=Names of the members of this competitor.
sailIdColumnTooltip=Shows the flag of the country and the sail ID of the competitor.
sailIdColumnTooltip=Shows the flag of the country and the sail number of the competitor.
rankColumnTooltip=The overall rank of this competitor in the regatta.
carryColumnTooltip=Carry of past races.
carryColumnTooltip=Points carried over from previous races.
totalsColumnTooltip=The total of all points of a competitor in the regatta.
@@ -16,7 +16,7 @@ race=Wettfahrt
races=Wettfahrten
tracked=verfolgt
time=Zeit
timeTooltip=Zeit die der Teilnehmer auf diesem Schenkel gesegelt ist.
timeTooltip=Zeit, die der Teilnehmer auf diesem Schenkel gesegelt ist.
playSpeed=Abspielgeschwindigkeit
playSpeedHelp="1" für normale Abspielgeschwindigkeit, "2" für doppelte Geschwindigkeit usw.
playModeLive=Live
@@ -58,17 +58,17 @@ medalRace=Medal Race
renameRace=Rennen umbenennen
openSelectedLeaderboard=Ausgewählte Rangliste öffnen
rank=Platz
rankTooltip=Platzierung des Teilnehmers.
rankTooltip=Platzierung des Teilnehmers im Rennen
totalRank=Gesamtplatz
collapse=-
expand=+
leg=L
distanceInMeters=Distanz
averageSpeedInKnots=\u2205 FüG
averageSpeedInKnotsTooltip=Die durchschnittliche Fahrt über Grund in diesem Schenkel,\berechnet durch die Division der gefahren Distanz und der benötigten Zeit.
raceAverageSpeedInKnotsTooltip=Die durchschnittliche Fahrt über Grund in diesem Rennen,\berechnet durch die Division der gefahren Distanz und der benötigten Zeit.
averageSpeedInKnotsTooltip=Die durchschnittliche Fahrt über Grund auf diesem Schenkel,\nberechnet durch die Division der gefahrenen Distanz durch die benötigte Zeit.
raceAverageSpeedInKnotsTooltip=Die durchschnittliche Fahrt über Grund in diesem Rennen,\nberechnet durch die Division der gefahrenen Distanz durch die benötigte Zeit.
rankGain=Platz +/-
rankGainTooltip=Die Differenz zwischen der Platzierung des aktuellen und des letzten Schenkels.
rankGainTooltip=Die Differenz zwischen der Platzierung im aktuellen und im vorangegangenen Schenkel
sapSailingAnalytics=Sailing Analytics
leaderboard=Ergebnisse
leaderboards=Ranglistenlisten
@@ -76,17 +76,17 @@ leaderboardSettings=Einstellungen Rangliste
settings=Einstellungen (z.B. Abschnittdetails auswählen)
selectAtLeastOneLegDetail=Mindestens ein Detail auswählen
currentSpeedOverGroundInKnots=FüG
currentSpeedOverGroundInKnotsTooltip=Die aktuelle Fahrt über Grund.
currentSpeedOverGroundInKnotsTooltip=Die aktuelle Fahrt über Grund
estimatedTimeToNextWaypointInSeconds=ETA
estimatedTimeToNextWaypointInSecondsTooltip=Die vorraussichtliche Zeit, die der Teilnehmer benötigt,\num den nächsten Wegpunkt zu erreichen.
estimatedTimeToNextWaypointInSecondsTooltip=Die vorraussichtliche Zeit, die der Teilnehmer benötigen wird,\num den nächsten Wegpunkt zu erreichen
gapToLeaderInSeconds=Abstand zum Führenden
gapToLeaderInSecondsTooltip=Die Zeit die ein Teilnehmer bräuchte, um de Führenden zu erreichen.
gapToLeaderInSecondsTooltip=Die Zeit, die ein Teilnehmer bräuchte, um die momentane Position des Führenden zu erreichen.
velocityMadeGoodInKnots=VMG
velocityMadeGoodInKnotsTooltip=Die effektive Geschwindigkeit zum Ziel.
windwardDistanceToGoInMeters=Abstand in Windrichtung zur nächsten Tonne
windwardDistanceToGoInMetersTooltip=Windwärtige Distanz des Teilnehmerns zum Ende des Schenkels.
velocityMadeGoodInKnotsTooltip=Die effektive Geschwindigkeit zum Ziel; auf der Kreuz die windwärtige Geschwindigkeit; auf der Vorwindstrecke die leewärtige Geschwindigkeit
windwardDistanceToGoInMeters=Abstand in Windrichtung zur nächsten Bahnmarke
windwardDistanceToGoInMetersTooltip=Windwärtige / leewärtige Distanz des Teilnehmerns bis zum Ende des Schenkels auf Kreuz bzw. Vorwindstrecke; Strecke entlang des Schenkels bei Holeschlägen
windwardDistanceToLeaderInMeters=Abstand zum führenden Boot
windwardDistanceToLeaderInMetersTooltip=Windwärtige Distanz des Teilnehmers zum Führenden.
windwardDistanceToLeaderInMetersTooltip=Windwärtige Distanz des Teilnehmers zum Führenden
name=Name
leaveEmptyForDefault=Leer für Standardeinstellung
trackNewEvent=Track New event
@@ -147,8 +147,8 @@ selectedRaces=Welche Rennen möchten Sie angezeigt bekommen?
lengthInSeconds=Länge (s)
stressTest=Stresstest
numberOfManeuvers=Manöver
numberOfManeuversTooltip=Die Anzahl der gesegelten Manöver in diesem Schenkel.
numberOfManeuversInRaceTooltip=Die Anzahl der gesegelten Manöver in diesem Rennen.
numberOfManeuversTooltip=Die Anzahl der gesegelten Manöver in diesem Schenkel
numberOfManeuversInRaceTooltip=Die Anzahl der gesegelten Manöver in diesem Rennen
tacks=Wenden
jibes=Halsen
penaltyCircles=Strafkreise
@@ -158,7 +158,7 @@ configuration=Konfiguration
chooseChart=Diagramm wählen
raceNameEmpty=Rennname leer
distanceTraveled=Zurückgelegte Strecke
distanceTraveledTooltip=Die zurückgelegt Strecke vom Start des Schenkel, bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls der Schenkel noch nicht beendet ist.
distanceTraveledTooltip=Die zurückgelegt Strecke vom Start des Schenkels bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls der Schenkel noch nicht beendet ist.
raceDistanceTraveledTooltip=Die zurückgelegt Strecke vom Start des Rennens, bis zum Ende\noder bis zum aktuellen Zeitpunkt, falls das Rennen noch nicht beendet ist.
velocityMadeGoodLong=Velocity Made Good
speedOverGroundLong=Speed Over Ground
@@ -184,11 +184,11 @@ raceWithThisNameAlreadyExistsInRegatta=Ein Rennen mit diesem Namen existiert sch
headUp=anluven
bearAway=abfallen
tack=Wende
tackTooltip=Die Anzahl der gesegelten Wenden in diesem Rennen.
tackTooltip=Die Anzahl der gesegelten Wenden in diesem Rennen
jibe=Halse
jibeTooltip=Die Anzahl der gesegelten Halsen in diesem Rennen.
jibeTooltip=Die Anzahl der gesegelten Halsen in diesem Rennen
penaltyCircle=Strafkreis
penaltyCircleTooltip=Die Anzahl der zu fahrenden Strafkreise in diesem Rennen.
penaltyCircleTooltip=Die Anzahl der zu fahrenden Strafkreise in diesem Rennen
markPassing=Tonnenpassierung
mark=Tonne
otherManeuver=Manövertyp unbekannt
@@ -243,7 +243,7 @@ createNewLeaderboardGroup=Neue Ranglisten-Gruppe erstellen
leaderboardGroupConfiguration=Ranglistengruppen-Konfiguration
legs=Schenkel
currentLeg=Aktueller Schenkel
currentLegTooltip=Schenkel auf dem sich der Teilnehmer aktuell befindet.
currentLegTooltip=Schenkel auf dem sich der Teilnehmer aktuell befindet
leaderboardGroup=Ranglisten-Gruppe
pleaseEnterNonEmptyDescription=Bitte eine nicht-leere Beschreibung eingeben
groupWithThisNameAlreadyExists=Ranglisten-Gruppe mit diesem Namen existiert bereits
@@ -306,8 +306,8 @@ leaderboardsInGroup=Leaderboards in der Gruppe
replication=Replikation
errorFetchingReplicaData=Fehler beim Beschaffen der Replikationsdaten: {0}
averageCrossTrackErrorInMeters=\u2205 XTE
averageCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Schenkel.
raceAverageCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Rennen.
averageCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Schenkel
raceAverageCrossTrackErrorInMetersTooltip=Die durchschnittliche Querabweichung zur Kursmittellinie in diesem Rennen
enterMaster=Hostname der Master-Instanz
errorStartingReplication=Fehler beim Starten der Replikation von Host {0} / Exchange {1}: {2}
helpLines=Hilfslinien
@@ -404,13 +404,13 @@ type=Typ
actionAddRaces=Rennen hinzuf�gen
racesWithNamePrefix=Rennen mit Namens-Pr�fix
maximumSpeedOverGroundInKnots=Max FüG
maximumSpeedOverGroundInKnotsTooltip=Die größte Fahrt über Grund, die in der Regatta gemessen wurde.
maximumSpeedOverGroundInKnotsTooltip=Die größte Fahrt über Grund, die in der Regatta für diesen Teilnehmer gemessen wurde.
totalTimeSailedDownwindInSeconds=Gesamtzeit Vorwind
totalTimeSailedDownwindInSecondsTooltip=Gesamtzeit, die der Teilnehmer in der Regatta auf Vorwind gesegelt ist.
totalTimeSailedDownwindInSecondsTooltip=Gesamtzeit, die der Teilnehmer in der Regatta auf Vorwindstrecken gesegelt ist.
totalTimeSailedUpwindInSeconds=Gesamtzeit Kreuz
totalTimeSailedUpwindInSecondsTooltip=Gesamtzeit, die der Teilnehmer in der Regatta auf Kreuz gesegelt ist.
totalTimeSailedUpwindInSecondsTooltip=Gesamtzeit, die der Teilnehmer in der Regatta auf der Kreuz gesegelt ist.
totalTimeSailedReachingInSeconds=Gesamtzeit Holeschlag
totalTimeSailedReachingInSecondsTooltip=Gesamtzeit, die der Teilnehmer in der Regatta auf Hohlschlägen gesegelt ist.
totalTimeSailedReachingInSecondsTooltip=Gesamtzeit, die der Teilnehmer in der Regatta auf Holeschlägen gesegelt ist.
totalTimeSailedInSeconds=Gesamtzeit
totalTimeSailedInSecondsTooltip=Gesamtzeit, die der Teilnehmer für die Regatta gebraucht hat.
hhmmssUnit=hh:mm:ss
@@ -457,11 +457,11 @@ factor=Faktor
errorUpdatingIsMedalRace=Fehler beim Ändern der Medaillenrennen-Einstellung: {0}
maneuverLoss=Manöververlust
averageManeuverLossInMeters=\u2205 Manöververlust
averageManeuverLossInMetersTooltip=Der durchschnittliche Distanzverlust durch Manöver.
averageManeuverLossInMetersTooltip=Der durchschnittliche Distanzverlust durch Manöver
averageTackLossInMeters=\u2205 Wendeverlust
averageTackLossInMetersTooltip=Der durchschnittliche Distanzverlust durch Wenden.
averageTackLossInMetersTooltip=Der durchschnittliche Distanzverlust durch Wenden
averageJibeLossInMeters=\u2205 Halseverlust
averageJibeLossInMetersTooltip=Der durchschnittliche Distanzverlust durch Halsen.
averageJibeLossInMetersTooltip=Der durchschnittliche Distanzverlust durch Halsen
shape=Form
pattern=Muster
legend=Legende
@@ -478,16 +478,15 @@ errorTryingToObtainOverallLeaderboards=Fehler beim Laden der Gesamtergebnisse: {
finished=beendet
passedTo=an {0} gerundet
gapChangeSinceLegStartInSeconds=Gap Änderung
gapChangeSinceLegStartInSecondsTooltip=Die Änderung des Abstands zum Führenden seit dem letzten Schenkelstart.\nEine negative Zahl bedeutet, \
dass sich der Abstand verringert hat und eine positive Zahl bedeutet, dass er sich vergrößert hat.
gapChangeSinceLegStartInSecondsTooltip=Die Änderung des Abstands zum Führenden seit dem letzten Schenkelstart.\nEine negative Zahl bedeutet,\ndass sich der Abstand verringert hat; eine positive Zahl bedeutet, dass er sich vergrößert hat.
sideToWhichMarkAtLegStartWasRounded=Tonne gerundet an
sideToWhichMarkAtLegStartWasRoundedTooltip=Seite zu der die Tonne am Schenkelsart gerundet wurde.
sideToWhichMarkAtLegStartWasRoundedTooltip=Seite, an der die Bahnmarke am Schenkelstart gerundet wurde
raceIsLive=Rennen {0} ist live
racesAreLive=Rennen {0} sind live
scoringSchemeHighPointFirstGetsTen=High Point System, Gewinner erhält 10 Punkte
knotsUnit=kn
competitorColumnTooltip=Namen der Segler dieses Teilnehmers.
sailIdColumnTooltip=Zeigt die Länderflagge und die Segel-ID des Teilnehmers.
rankColumnTooltip=Der Gesamtplatz des Teilnehmers in der Regatta.
carryColumnTooltip=Übertrag vergangener Rennen.
totalsColumnTooltip=Summe aller Punkte eines Teilnehmers in der Regatta.
competitorColumnTooltip=Namen der Segler dieses Teilnehmers
sailIdColumnTooltip=Zeigt die Länderflagge und die Segelnummer des Teilnehmers
rankColumnTooltip=Der Gesamtplatz des Teilnehmers in der Regatta
carryColumnTooltip=Übertrag vergangener Rennen
totalsColumnTooltip=Summe aller Punkte eines Teilnehmers in der Regatta
@@ -44,8 +44,8 @@ public class MediaServiceImpl extends RemoteServiceServlet implements MediaServi
public Collection<MediaTrack> getMediaTracksForRace(RegattaAndRaceIdentifier regattaAndRaceIdentifier) {
TrackedRace trackedRace = racingEventServiceTracker.getService().getExistingTrackedRace(regattaAndRaceIdentifier);
if (trackedRace != null) {
Date raceStart = trackedRace.getStartOfRace().asDate();
Date raceEnd = trackedRace.getEndOfRace().asDate();
Date raceStart = trackedRace.getStartOfRace() == null ? null : trackedRace.getStartOfRace().asDate();
Date raceEnd = trackedRace.getEndOfRace() == null ? null : trackedRace.getEndOfRace().asDate();
return createMediaTracksFromDB(mediaDB().queryOverlappingMediaTracks(raceStart , raceEnd));
} else {
return Collections.emptyList();
@@ -402,10 +402,10 @@ public class WindChart extends RaceChart implements Component<WindChartSettings>
double deltaMax = Math.abs(yMax - y);
double yDown = y - 360;
double deltaMinDown = Math.abs(yMin - Math.abs(yDown));
double deltaMinDown = Math.abs(yMin - yDown);
double yUp = y + 360;
double deltaMaxUp = Math.abs(yMax - Math.abs(yUp));
double deltaMaxUp = Math.abs(yMax - yUp);
if (!(deltaMin <= deltaMinDown && deltaMin <= deltaMaxUp)
&& !(deltaMax <= deltaMinDown && deltaMax <= deltaMaxUp)) {