Merge remote-tracking branch 'origin/master'

This commit is contained in:
fmittag committed 2012-02-12 22:00:35 +01:00
commit d96b4cac24
6 files changed
+114 -72

No files matched your search

@@ -232,48 +232,8 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
protected void loadData() {
chartAndBusyIndicatorPanel.showWidget(0);
final Runnable loadData = new Runnable() {
@Override
public void run() {
final List<CompetitorDTO> competitorsToLoad = new ArrayList<CompetitorDTO>();
for (CompetitorDTO competitor : competitorSelectionProvider.getAllCompetitors()) {
if (isCompetitorVisible(competitor) && !seriesByCompetitor.keySet().contains(competitor)) {
competitorsToLoad.add(competitor);
}
}
final CompetitorsAndTimePointsDTO competitorsAndTimePointsToLoad = new CompetitorsAndTimePointsDTO(
getStepsToLoad());
competitorsAndTimePointsToLoad.setStartTime(getCompetitorsAndTimePointsDTO().getStartTime());
competitorsAndTimePointsToLoad.setTimePointOfNewestEvent(getCompetitorsAndTimePointsDTO()
.getTimePointOfNewestEvent());
for (CompetitorDTO competitor : competitorsToLoad) {
competitorsAndTimePointsToLoad.setMarkPassings(competitor,
getCompetitorsAndTimePointsDTO().getMarkPassings(competitor));
}
competitorsAndTimePointsToLoad.setCompetitors(competitorsToLoad.toArray(new CompetitorDTO[0]));
AbstractChartPanel.this.sailingService.getCompetitorRaceData(getSelectedRace(),
competitorsAndTimePointsToLoad, getDataToShow(), new AsyncCallback<CompetitorInRaceDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(getStringMessages().failedToLoadRaceData() + ": "
+ caught.toString());
}
@Override
public void onSuccess(CompetitorInRaceDTO result) {
fireEvent(new DataLoadedEvent());
for (CompetitorDTO competitor : competitorsToLoad) {
chartData.setRaceData(competitor, result.getRaceData(competitor));
chartData.setMarkPassingData(competitor, result.getMarkPassings(competitor));
}
updateTableData(competitorsAndTimePointsToLoad.getCompetitors());
chartAndBusyIndicatorPanel.showWidget(1);
}
});
}
};
if (getCompetitorsAndTimePointsDTO() != null) {
loadData.run();
doLoadData();
} else {
this.sailingService.getCompetitorsAndTimePoints(getSelectedRace(), getStepsToLoad(),
new AsyncCallback<CompetitorsAndTimePointsDTO>() {
@@ -285,12 +245,49 @@ implements CompetitorSelectionChangeListener, RaceSelectionChangeListener, TimeL
@Override
public void onSuccess(CompetitorsAndTimePointsDTO result) {
setCompetitorsAndTimePointsDTO(result);
loadData.run();
doLoadData();
}
});
}
}
private void doLoadData() {
final List<CompetitorDTO> competitorsToLoad = new ArrayList<CompetitorDTO>();
for (CompetitorDTO competitor : competitorSelectionProvider.getAllCompetitors()) {
if (isCompetitorVisible(competitor) && !seriesByCompetitor.keySet().contains(competitor)) {
competitorsToLoad.add(competitor);
}
}
final CompetitorsAndTimePointsDTO competitorsAndTimePointsToLoad = new CompetitorsAndTimePointsDTO(
getStepsToLoad());
competitorsAndTimePointsToLoad.setStartTime(getCompetitorsAndTimePointsDTO().getStartTime());
competitorsAndTimePointsToLoad.setTimePointOfNewestEvent(getCompetitorsAndTimePointsDTO()
.getTimePointOfNewestEvent());
for (CompetitorDTO competitor : competitorsToLoad) {
competitorsAndTimePointsToLoad.setMarkPassings(competitor, getCompetitorsAndTimePointsDTO()
.getMarkPassings(competitor));
}
competitorsAndTimePointsToLoad.setCompetitors(competitorsToLoad.toArray(new CompetitorDTO[0]));
AbstractChartPanel.this.sailingService.getCompetitorRaceData(getSelectedRace(), competitorsAndTimePointsToLoad,
getDataToShow(), new AsyncCallback<CompetitorInRaceDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(getStringMessages().failedToLoadRaceData() + ": " + caught.toString());
}
@Override
public void onSuccess(CompetitorInRaceDTO result) {
fireEvent(new DataLoadedEvent());
for (CompetitorDTO competitor : competitorsToLoad) {
chartData.setRaceData(competitor, result.getRaceData(competitor));
chartData.setMarkPassingData(competitor, result.getMarkPassings(competitor));
}
updateTableData(competitorsAndTimePointsToLoad.getCompetitors());
chartAndBusyIndicatorPanel.showWidget(1);
}
});
}
private RaceIdentifier getSelectedRace() {
RaceIdentifier result = null;
List<RaceIdentifier> selectedRaces = raceSelectionProvider.getSelectedRaces();
@@ -22,7 +22,6 @@ public class LeaderboardPage extends AbstractEntryPoint {
@Override
public void onModuleLoad() {
super.onModuleLoad();
sailingService.getLeaderboardNames(new AsyncCallback<List<String>>() {
@Override
@@ -43,15 +42,12 @@ public class LeaderboardPage extends AbstractEntryPoint {
});
}
private void createLeaderboardPanel()
{
private void createLeaderboardPanel() {
LogoAndTitlePanel logoAndTitlePanel = new LogoAndTitlePanel(stringMessages);
logoAndTitlePanel.addStyleName("LogoAndTitlePanel");
// create the breadcrumb navigation
ArrayList<Pair<String, String>> breadcrumbLinksData = new ArrayList<Pair<String, String>>();
String debugParam = Window.Location.getParameter("gwt.codesvr");
if(leaderboardGroupName != null) {
String link = "/gwt/Spectator.html?leaderboardGroupName=" + leaderboardGroupName;
if(debugParam != null && !debugParam.isEmpty())
@@ -59,7 +55,8 @@ public class LeaderboardPage extends AbstractEntryPoint {
breadcrumbLinksData.add(new Pair<String, String>(link, leaderboardGroupName));
}
BreadcrumbPanel breadcrumbPanel = new BreadcrumbPanel(breadcrumbLinksData, leaderboardName.toUpperCase());
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService, LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(true),
LeaderboardPanel leaderboardPanel = new LeaderboardPanel(sailingService,
LeaderboardSettingsFactory.getInstance().createNewDefaultSettings(/* autoExpandFirstRace */ false),
/* preSelectedRace */ null, new CompetitorSelectionModel(/* hasMultiSelection */ true),
new Timer(PlayModes.Live, /* delayBetweenAutoAdvancesInMilliseconds */3000l),
leaderboardName, leaderboardGroupName,
@@ -1295,6 +1295,18 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
Collections.sort(countryCodes);
return countryCodes.toArray(new String[0]);
}
/**
* Finds a competitor in a sequence of competitors that has an {@link Competitor#getId()} equal to <code>id</code>.
*/
private Competitor getCompetitorById(Iterable<Competitor> competitors, String id) {
for (Competitor c : competitors) {
if (c.getId().toString().equals(id)) {
return c;
}
}
return null;
}
@Override
public CompetitorInRaceDTO getCompetitorRaceData(RaceIdentifier race,
@@ -1302,24 +1314,19 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
CompetitorInRaceDTO competitorData = new CompetitorInRaceDTO();
TrackedRace trackedRace = getExistingTrackedRace(race);
if (trackedRace != null) {
Iterable<Competitor> competitors = trackedRace.getRace().getCompetitors();
List<Competitor> selectedCompetitor = new ArrayList<Competitor>();
List<Competitor> selectedCompetitors = new ArrayList<Competitor>();
for (CompetitorDTO cDTO : competitorAndTimePointsDTO.getCompetitors()) {
for (Competitor c : competitors) {
if (c.getId().toString().equals(cDTO.id)) {
selectedCompetitor.add(c);
}
}
selectedCompetitors.add(getCompetitorById(trackedRace.getRace().getCompetitors(), cDTO.id));
}
switch (dataType) {
case CURRENT_SPEED_OVER_GROUND_IN_KNOTS:
for (int c = 0; c < selectedCompetitor.size(); c++) {
for (int c = 0; c < selectedCompetitors.size(); c++) {
Double[] entries = new Double[competitorAndTimePointsDTO.getTimePoints().length];
for (int i = 0; i < competitorAndTimePointsDTO.getTimePoints().length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getTimePoints()[i]);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
SpeedWithBearing speedOverGround = trackedLeg.getSpeedOverGround(time);
entries[i] = (speedOverGround == null) ? null : speedOverGround.getKnots();
@@ -1331,7 +1338,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
for (int i = 0; i < competitorAndTimePointsDTO.getMarkPassings(competitor).length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getMarkPassings(competitor)[i].getB());
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
SpeedWithBearing speedOverGround = trackedLeg.getSpeedOverGround(time);
entries[i] = (speedOverGround == null) ? null : speedOverGround.getKnots();
@@ -1341,12 +1348,12 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
}
break;
case VELOCITY_MADE_GOOD_IN_KNOTS:
for (int c = 0; c < selectedCompetitor.size(); c++) {
for (int c = 0; c < selectedCompetitors.size(); c++) {
Double[] entries = new Double[competitorAndTimePointsDTO.getTimePoints().length];
for (int i = 0; i < competitorAndTimePointsDTO.getTimePoints().length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getTimePoints()[i]);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
Speed velocityMadeGood = trackedLeg.getVelocityMadeGood(time);
entries[i] = (velocityMadeGood == null) ? null : velocityMadeGood.getKnots();
@@ -1358,7 +1365,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
for (int i = 0; i < competitorAndTimePointsDTO.getMarkPassings(competitor).length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getMarkPassings(competitor)[i].getB());
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
Speed velocityMadeGood = trackedLeg.getVelocityMadeGood(time);
entries[i] = (velocityMadeGood == null) ? null : velocityMadeGood.getKnots();
@@ -1368,14 +1375,14 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
}
break;
case DISTANCE_TRAVELED:
for (int c = 0; c < selectedCompetitor.size(); c++) {
for (int c = 0; c < selectedCompetitors.size(); c++) {
Double[] entries = new Double[competitorAndTimePointsDTO.getTimePoints().length];
double distanceOfPreviousLegs = 0;
double lastTraveledDistance = 0;
for (int i = 0; i < competitorAndTimePointsDTO.getTimePoints().length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getTimePoints()[i]);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
Distance distanceTraveled = trackedLeg.getDistanceTraveled(time);
if (distanceTraveled != null) {
@@ -1394,7 +1401,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
for (int i = 0; i < competitorAndTimePointsDTO.getMarkPassings(competitor).length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getMarkPassings(competitor)[i].getB());
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
Distance distanceTraveled = trackedLeg.getDistanceTraveled(time);
if (distanceTraveled != null) {
@@ -1411,12 +1418,12 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
}
break;
case GAP_TO_LEADER_IN_SECONDS:
for (int c = 0; c < selectedCompetitor.size(); c++) {
for (int c = 0; c < selectedCompetitors.size(); c++) {
Double[] entries = new Double[competitorAndTimePointsDTO.getTimePoints().length];
for (int i = 0; i < competitorAndTimePointsDTO.getTimePoints().length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getTimePoints()[i]);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
entries[i] = trackedLeg.getGapToLeaderInSeconds(time);
}
@@ -1427,7 +1434,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
for (int i = 0; i < competitorAndTimePointsDTO.getMarkPassings(competitor).length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getMarkPassings(competitor)[i].getB());
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
entries[i] = trackedLeg.getGapToLeaderInSeconds(time);
}
@@ -1436,19 +1443,19 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
}
break;
case WINDWARD_DISTANCE_TO_OVERALL_LEADER:
for (int c = 0; c < selectedCompetitor.size(); c++) {
for (int c = 0; c < selectedCompetitors.size(); c++) {
CompetitorDTO competitor = competitorAndTimePointsDTO.getCompetitors()[c];
Double[] entries = new Double[competitorAndTimePointsDTO.getTimePoints().length];
Double[] markEntries = new Double[competitorAndTimePointsDTO.getMarkPassings(competitor).length];
MillisecondsTimePoint markTime = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getMarkPassings(competitor)[0].getB());
int markEntryCounter = 0;
TrackedLegOfCompetitor trackedLegforMark = trackedRace.getTrackedLeg(selectedCompetitor.get(c),
TrackedLegOfCompetitor trackedLegforMark = trackedRace.getTrackedLeg(selectedCompetitors.get(c),
markTime);
for (int i = 0; i < competitorAndTimePointsDTO.getTimePoints().length; i++) {
MillisecondsTimePoint time = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getTimePoints()[i]);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitor.get(c), time);
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(selectedCompetitors.get(c), time);
if (trackedLeg != null) {
Distance distanceToLeader = trackedLeg.getWindwardDistanceToOverallLeader(time);
entries[i] = (distanceToLeader == null) ? null : distanceToLeader.getMeters();
@@ -1462,7 +1469,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
if (markEntryCounter < competitorAndTimePointsDTO.getMarkPassings(competitor).length) {
markTime = new MillisecondsTimePoint(
competitorAndTimePointsDTO.getMarkPassings(competitor)[markEntryCounter].getB());
trackedLegforMark = trackedRace.getTrackedLeg(selectedCompetitor.get(c), markTime);
trackedLegforMark = trackedRace.getTrackedLeg(selectedCompetitors.get(c), markTime);
}
}
}
@@ -1611,7 +1618,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
}
@SuppressWarnings("unchecked")
@Override
@Override
public CompetitorsAndTimePointsDTO getCompetitorsAndTimePoints(RaceIdentifier race, int steps) {
CompetitorsAndTimePointsDTO competitorAndTimePointsDTO = new CompetitorsAndTimePointsDTO(steps);
TrackedRace trackedRace = getExistingTrackedRace(race);
@@ -4,7 +4,22 @@ import java.util.HashMap;
import com.google.gwt.user.client.rpc.IsSerializable;
import com.sap.sailing.domain.common.impl.Util.Pair;
import com.sap.sailing.gwt.ui.client.SailingService;
/**
* A data transfer object used as argument to
* {@link SailingService#getCompetitorRaceData(com.sap.sailing.domain.common.RaceIdentifier, CompetitorsAndTimePointsDTO, com.sap.sailing.domain.common.DetailType)}
* and as result in
* {@link SailingService#getCompetitorsAndTimePoints(com.sap.sailing.domain.common.RaceIdentifier, int)}. Objects of this class
* mainly tell the competitors and the time points for which to load data about a race. The mark passing times are
* stored in this object because when mark passings are to be displayed in a chart, the point needs an associated value, and
* hence the function to be represented in the chart needs to be evaluated for the time of the mark passing. This is
* particularly important if the distance between the other time points is so great that the next time points before and after
* the mark passing are too far away and therefore the function values may be too different from that at the mark passing time.
*
* @author Benjamin Ebling, Axel Uhl (D043530)
*
*/
public class CompetitorsAndTimePointsDTO implements IsSerializable {
private static final long MILLISECONDS_BEFORE_RACE_TO_INCLUDE = 20000;
+11
View File
@@ -0,0 +1,11 @@
target="`dirname \"$0\"`"
pwd=`pwd`
echo "$target" | grep "^/"
if [ "$0" != "0" ]; then
# no leading slash, therefore no absolute path; prepend pwd
target="$pwd/$target"
fi
target=c:/cygwin/home/User/git/java/target
echo target is $target
cd "$target/../com.sap.sailing.feature.p2build/bin/products/raceanalysis.product.id/win32/win32/x86_64"
"$JAVA_HOME/bin/java" -Dfile.encoding=cp1252 -Djetty.home="$target/configuration/jetty" -Djava.util.logging.config.file="$target/configuration/logging.properties" -Xmx8192m -jar plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar -console -configuration ./ -clean
+15
View File
@@ -0,0 +1,15 @@
#!/bin/sh
target="`dirname \"$0\"`"
pwd=`pwd`
echo "$target" | grep "^/"
if [ "$0" != "0" ]; then
# no leading slash, therefore no absolute path; prepend pwd
target="$pwd/$target"
fi
target=c:/cygwin/home/User/git/java/target
echo target is $target
cd "$target/../com.sap.sailing.feature.p2build/bin/products/raceanalysis.product.id/win32/win32/x86_64"
echo pwd is now `pwd`
jar=`find plugins -name 'com.sap.sailing.expeditionconnector_*.jar' | sort | tail -1`
echo Using JAR file $jar
"$JAVA_HOME/bin/java" -cp "$jar" -Djava.util.logging.config.file=udpmirrorLog.properties com.sap.sailing.expeditionconnector.UDPMirror $*