broken activemq import package declarations

This commit is contained in:
Axel Uhl committed 2012-04-24 13:30:09 +02:00
1 parent 938d406fe9
commit 4c39000801
19 files changed
+156 -6

No files matched your search

@@ -12,8 +12,9 @@ import java.io.Serializable;
public enum DetailType implements Serializable {
DISTANCE_TRAVELED(0), AVERAGE_SPEED_OVER_GROUND_IN_KNOTS(2), RACE_RANK(0), RANK_GAIN(0), NUMBER_OF_MANEUVERS(0),
CURRENT_SPEED_OVER_GROUND_IN_KNOTS(2), ESTIMATED_TIME_TO_NEXT_WAYPOINT_IN_SECONDS(1), VELOCITY_MADE_GOOD_IN_KNOTS(2), GAP_TO_LEADER_IN_SECONDS(0),
WINDWARD_DISTANCE_TO_GO_IN_METERS(0), RACE_DISTANCE_TRAVELED(0), RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS(2), RACE_GAP_TO_LEADER_IN_SECONDS(0),
RACE_DISTANCE_TO_LEADER_IN_METERS(0),
WINDWARD_DISTANCE_TO_GO_IN_METERS(0), AVERAGE_CROSS_TRACK_ERROR_IN_METERS(0), RACE_DISTANCE_TRAVELED(0),
RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS(2), RACE_GAP_TO_LEADER_IN_SECONDS(0),
RACE_DISTANCE_TO_LEADER_IN_METERS(0), RACE_AVERAGE_CROSS_TRACK_ERROR_IN_METERS(0),
WINDWARD_DISTANCE_TO_OVERALL_LEADER(0), HEAD_UP(0), BEAR_AWAY(0), TACK(0), JIBE(0), PENALTY_CIRCLE(0), MARK_PASSING(0), CURRENT_LEG(0),
DISPLAY_LEGS(0), TIME_TRAVELED(0);
@@ -534,4 +534,10 @@ public class MockedTrackedRace implements DynamicTrackedRace {
// TODO Auto-generated method stub
return null;
}
@Override
public Distance getAverageCrossTrackError(Competitor competitor, TimePoint timePoint) throws NoWindException {
// TODO Auto-generated method stub
return null;
}
}
@@ -7,8 +7,10 @@ import java.util.Map;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Leg;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.LegType;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.TimePoint;
import com.sap.sailing.domain.tracking.TrackedLeg;
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
@@ -76,4 +78,10 @@ public class TracTracTrackedLegImpl implements TrackedLeg {
return null;
}
@Override
public Distance getCrossTrackError(Position p, TimePoint timePoint) {
// TODO Auto-generated method stub
return null;
}
}
@@ -176,4 +176,10 @@ public class TracTracTrackedLegOfCompetitor implements TrackedLegOfCompetitor {
return result;
}
@Override
public Distance getAverageCrossTrackError(TimePoint timePoint) {
// TODO Auto-generated method stub
return null;
}
}
@@ -6,8 +6,10 @@ import java.util.LinkedHashMap;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Leg;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.LegType;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.common.Position;
import com.sap.sailing.domain.common.TimePoint;
public interface TrackedLeg extends Serializable {
@@ -42,4 +44,5 @@ public interface TrackedLeg extends Serializable {
Bearing getLegBearing(TimePoint at);
Distance getCrossTrackError(Position p, TimePoint timePoint);
}
@@ -152,4 +152,6 @@ public interface TrackedLegOfCompetitor extends Serializable {
*/
Distance getWindwardDistanceToOverallLeader(TimePoint timePoint) throws NoWindException;
Distance getAverageCrossTrackError(TimePoint timePoint) throws NoWindException;
}
@@ -367,4 +367,9 @@ public interface TrackedRace extends Serializable {
* After the call returns, {@link #getWindSourcesToExclude()} returns an iterable that equals <code>windSourcesToExclude</code>
*/
void setWindSourcesToExclude(Iterable<WindSource> windSourcesToExclude);
/**
* Computes the average cross-track error for the legs with type {@link LegType#UPWIND}.
*/
Distance getAverageCrossTrackError(Competitor competitor, TimePoint timePoint) throws NoWindException;
}
@@ -12,6 +12,7 @@ import com.sap.sailing.domain.base.Buoy;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Leg;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Distance;
import com.sap.sailing.domain.common.LegType;
import com.sap.sailing.domain.common.NoWindException;
import com.sap.sailing.domain.common.Position;
@@ -227,4 +228,9 @@ public class TrackedLegImpl implements TrackedLeg, RaceChangeListener {
}
}
@Override
public Distance getCrossTrackError(Position p, TimePoint timePoint) {
return p.crossTrackError(getTrackedRace().getApproximatePosition(getLeg().getFrom(), timePoint), getLegBearing(timePoint));
}
}
@@ -20,6 +20,7 @@ import com.sap.sailing.domain.tracking.GPSFixMoving;
import com.sap.sailing.domain.tracking.GPSFixTrack;
import com.sap.sailing.domain.tracking.Maneuver;
import com.sap.sailing.domain.tracking.MarkPassing;
import com.sap.sailing.domain.tracking.TrackedLeg;
import com.sap.sailing.domain.tracking.TrackedLegOfCompetitor;
import com.sap.sailing.domain.tracking.TrackedRace;
import com.sap.sailing.domain.tracking.Wind;
@@ -368,6 +369,32 @@ public class TrackedLegOfCompetitorImpl implements TrackedLegOfCompetitor {
return result;
}
@Override
public Distance getAverageCrossTrackError(TimePoint timePoint) throws NoWindException {
double distanceInMeters = 0;
int count = 0;
GPSFixTrack<Competitor, GPSFixMoving> track = getTrackedRace().getTrack(competitor);
GPSFixMoving fix = null;
final TrackedLeg trackedLeg = getTrackedLeg();
final MarkPassing legStartMarkPassing = getTrackedRace().getMarkPassing(competitor, getLeg().getFrom());
if (legStartMarkPassing != null) {
TimePoint legStart = legStartMarkPassing.getTimePoint();
final MarkPassing legEndMarkPassing = getTrackedRace().getMarkPassing(competitor, getLeg().getTo());
Iterator<GPSFixMoving> fixIter = track.getFixesIterator(legStart, /* inclusive */true);
while (fixIter.hasNext()
&& (fix == null || ((legEndMarkPassing == null || fix.getTimePoint().compareTo(
legEndMarkPassing.getTimePoint()) < 0) && fix.getTimePoint().compareTo(timePoint) < 0))) {
fix = fixIter.next();
if (fix.getTimePoint().compareTo(timePoint) < 0) {
Distance xte = trackedLeg.getCrossTrackError(fix.getPosition(), fix.getTimePoint());
distanceInMeters += xte.getMeters();
count++;
}
}
}
return new MeterDistance(distanceInMeters / count);
}
@Override
public Double getGapToLeaderInSeconds(TimePoint timePoint) throws NoWindException {
// If the leader already completed this leg, compute the estimated arrival time at the
@@ -33,6 +33,7 @@ import com.sap.sailing.domain.base.Waypoint;
import com.sap.sailing.domain.base.impl.BearingWithConfidenceImpl;
import com.sap.sailing.domain.base.impl.DouglasPeucker;
import com.sap.sailing.domain.base.impl.KnotSpeedWithBearingImpl;
import com.sap.sailing.domain.base.impl.MeterDistance;
import com.sap.sailing.domain.base.impl.MillisecondsTimePoint;
import com.sap.sailing.domain.common.Bearing;
import com.sap.sailing.domain.common.Distance;
@@ -611,6 +612,40 @@ public abstract class TrackedRaceImpl implements TrackedRace, CourseListener {
}
}
@Override
public Distance getAverageCrossTrackError(Competitor competitor, TimePoint timePoint) throws NoWindException {
double distanceInMeters = 0;
int count = 0;
GPSFixTrack<Competitor, GPSFixMoving> track = getTrack(competitor);
GPSFixMoving fix = null;
for (Leg leg : getRace().getCourse().getLegs()) {
final TrackedLeg trackedLeg = getTrackedLeg(leg);
if (trackedLeg.getLegType(timePoint) == LegType.UPWIND) {
final MarkPassing legStartMarkPassing = getMarkPassing(competitor, leg.getFrom());
if (legStartMarkPassing != null) {
TimePoint legStart = legStartMarkPassing.getTimePoint();
final MarkPassing legEndMarkPassing = getMarkPassing(competitor, leg.getTo());
Iterator<GPSFixMoving> fixIter = track.getFixesIterator(legStart, /* inclusive */true);
while (fixIter.hasNext()
&& (fix == null || ((legEndMarkPassing == null || fix.getTimePoint().compareTo(
legEndMarkPassing.getTimePoint()) < 0)
&& fix.getTimePoint().compareTo(timePoint) < 0))) {
fix = fixIter.next();
if (fix.getTimePoint().compareTo(timePoint) < 0) {
Distance xte = trackedLeg.getCrossTrackError(fix.getPosition(), fix.getTimePoint());
distanceInMeters += xte.getMeters();
count++;
}
}
}
}
if (fix != null && fix.getTimePoint().compareTo(timePoint) >= 0) {
break;
}
}
return new MeterDistance(distanceInMeters / count);
}
@Override
public TrackedLegOfCompetitor getCurrentLeg(Competitor competitor, TimePoint timePoint) {
NavigableSet<MarkPassing> competitorMarkPassings = markPassingsForCompetitor.get(competitor);
@@ -33,6 +33,8 @@ public class DetailTypeFormatter {
return stringMessages.gapToLeaderInSeconds();
case RACE_DISTANCE_TO_LEADER_IN_METERS:
return stringMessages.windwardDistanceToLeaderInMeters();
case RACE_AVERAGE_CROSS_TRACK_ERROR_IN_METERS:
return stringMessages.averageCrossTrackErrorInMeters();
case WINDWARD_DISTANCE_TO_OVERALL_LEADER:
return stringMessages.windwardDistanceToOverallLeader();
case HEAD_UP:
@@ -53,6 +55,8 @@ public class DetailTypeFormatter {
return stringMessages.currentLeg();
case TIME_TRAVELED:
return stringMessages.time();
case AVERAGE_CROSS_TRACK_ERROR_IN_METERS:
return stringMessages.averageCrossTrackErrorInMeters();
}
return null;
@@ -286,4 +286,5 @@ public interface StringMessages extends Messages {
String leaderboardsInGroup();
String replication();
String errorFetchingReplicaData(String message);
String averageCrossTrackErrorInMeters();
}
@@ -280,4 +280,5 @@ degreesBoatToTheWind=Angle to wind
racesInLeaderboard=Races in leaderboard
leaderboardsInGroup=Leaderboards in group
replication=Replication
errorFetchingReplicaData=Error fetching replica data: {0}
errorFetchingReplicaData=Error fetching replica data: {0}
averageCrossTrackErrorInMeters=\u2205 XTE
@@ -281,4 +281,5 @@ degreesBoatToTheWind=Winkel zum Wind
racesInLeaderboard=Rennen im Leaderboard
leaderboardsInGroup=Leaderboards in der Gruppe
replication=Replikation
errorFetchingReplicaData=Fehler beim Beschaffen der Replikationsdaten: {0}
errorFetchingReplicaData=Fehler beim Beschaffen der Replikationsdaten: {0}
averageCrossTrackErrorInMeters=\u2205 XTE
@@ -563,10 +563,16 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
new FormattedDoubleLegDetailColumn(stringMessages.windwardDistanceToOverallLeader(), "["+stringMessages
.distanceInMetersUnit()+"]", new RaceDistanceToLeaderInMeters(), 0, getLeaderboardPanel()
.getLeaderboardTable(), LEG_COLUMN_HEADER_STYLE, LEG_COLUMN_STYLE));
result.put(
DetailType.RACE_AVERAGE_CROSS_TRACK_ERROR_IN_METERS,
new FormattedDoubleLegDetailColumn(stringMessages.averageCrossTrackErrorInMeters(), "["+stringMessages
.metersUnit()+"]", new RaceAverageCrossTrackErrorInMeters(), 0, getLeaderboardPanel()
.getLeaderboardTable(), LEG_COLUMN_HEADER_STYLE, LEG_COLUMN_STYLE));
result.put(DetailType.NUMBER_OF_MANEUVERS, getManeuverCountRaceColumn());
result.put(DetailType.CURRENT_LEG, new FormattedDoubleLegDetailColumn(stringMessages.currentLeg(), "",
new CurrentLeg(), 0, getLeaderboardPanel().getLeaderboardTable(), LEG_COLUMN_HEADER_STYLE,
LEG_COLUMN_STYLE));
return result;
}
@@ -647,6 +653,23 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
}
}
/**
* Fetches the average cross-track error for the race
*
* @author Axel Uhl (D043530)
*/
private class RaceAverageCrossTrackErrorInMeters implements LegDetailField<Double> {
@Override
public Double get(LeaderboardRowDTO row) {
Double result = null;
LeaderboardEntryDTO fieldsForRace = row.fieldsByRaceName.get(getRaceColumnName());
if (fieldsForRace != null) {
result = fieldsForRace.averageCrossTrackErrorInMeters;
}
return result;
}
}
/**
* Accumulates the distance traveled over all legs of a race
*
@@ -64,6 +64,13 @@ public class LegColumn extends ExpandableSortableColumn<String> {
}
}
private class AverageCrossTrackErrorInMeters extends AbstractLegDetailField<Double> {
@Override
protected Double getFromNonNullEntry(LegEntryDTO entry) {
return entry.averageCrossTrackErrorInMeters;
}
}
private class CurrentSpeedOverGroundInKnots extends AbstractLegDetailField<Double> {
@Override
protected Double getFromNonNullEntry(LegEntryDTO entry) {
@@ -257,6 +264,9 @@ public class LegColumn extends ExpandableSortableColumn<String> {
result.put(DetailType.TIME_TRAVELED, new FormattedDoubleLegDetailColumn(stringConstants.time(),
"[" + stringConstants.secondsUnit() + "]", new TimeTraveledInSeconds(), 0,
getLeaderboardPanel().getLeaderboardTable(), detailHeaderStyle, detailColumnStyle));
result.put(DetailType.AVERAGE_CROSS_TRACK_ERROR_IN_METERS, new FormattedDoubleLegDetailColumn(stringConstants.averageCrossTrackErrorInMeters(),
"[" + stringConstants.metersUnit() + "]", new AverageCrossTrackErrorInMeters(), 0,
getLeaderboardPanel().getLeaderboardTable(), detailHeaderStyle, detailColumnStyle));
return result;
}
@@ -335,6 +335,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
}
final Distance windwardDistanceToOverallLeader = trackedRace == null ? null : trackedRace.getWindwardDistanceToOverallLeader(competitor, timePoint);
entryDTO.windwardDistanceToOverallLeaderInMeters = windwardDistanceToOverallLeader == null ? null : windwardDistanceToOverallLeader.getMeters();
entryDTO.averageCrossTrackErrorInMeters = trackedRace.getAverageCrossTrackError(competitor, timePoint).getMeters();
return entryDTO;
}
@@ -345,8 +346,9 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
} else {
result = new LegEntryDTO();
final Speed averageSpeedOverGround = trackedLeg.getAverageSpeedOverGround(timePoint);
result.averageSpeedOverGroundInKnots = averageSpeedOverGround == null ? null : averageSpeedOverGround
.getKnots();
result.averageSpeedOverGroundInKnots = averageSpeedOverGround == null ? null : averageSpeedOverGround.getKnots();
final Distance averageCrossTrackError = trackedLeg.getAverageCrossTrackError(timePoint);
result.averageCrossTrackErrorInMeters = averageCrossTrackError == null ? null : averageCrossTrackError.getMeters();
Double speedOverGroundInKnots;
if (trackedLeg.hasFinishedLeg(timePoint)) {
speedOverGroundInKnots = averageSpeedOverGround == null ? null : averageSpeedOverGround.getKnots();
@@ -26,6 +26,8 @@ public class LeaderboardEntryDTO implements IsSerializable {
public Double windwardDistanceToOverallLeaderInMeters;
public Double averageCrossTrackErrorInMeters;
/**
* If <code>null</code>, no leg details are known yet, the race is not being tracked or the details
* haven't been requested from the server yet. Otherwise, the list holds one entry per {@link Leg} of the
@@ -40,6 +42,7 @@ public class LeaderboardEntryDTO implements IsSerializable {
result = prime * result + (discarded ? 1231 : 1237);
result = prime * result + ((legDetails == null) ? 0 : legDetails.hashCode());
result = prime * result + netPoints;
result = prime * result + ((averageCrossTrackErrorInMeters == null) ? 0 : averageCrossTrackErrorInMeters.hashCode());
result = prime * result + ((reasonForMaxPoints == null) ? 0 : reasonForMaxPoints.hashCode());
result = prime * result + ((windwardDistanceToOverallLeaderInMeters == null) ? 0 : windwardDistanceToOverallLeaderInMeters.hashCode());
result = prime * result + totalPoints;
@@ -74,6 +77,11 @@ public class LeaderboardEntryDTO implements IsSerializable {
return false;
} else if (!windwardDistanceToOverallLeaderInMeters.equals(other.windwardDistanceToOverallLeaderInMeters))
return false;
if (averageCrossTrackErrorInMeters == null) {
if (other.averageCrossTrackErrorInMeters != null)
return false;
} else if (!averageCrossTrackErrorInMeters.equals(other.averageCrossTrackErrorInMeters))
return false;
if (totalPoints != other.totalPoints)
return false;
return true;
@@ -38,6 +38,7 @@ public class LegEntryDTO implements IsSerializable {
public Integer numberOfJibes;
public Integer numberOfTacks;
public Integer numberOfPenaltyCircles;
public Double averageCrossTrackErrorInMeters;
@Override
public int hashCode() {