Moved methods for the leaderboard start and location from the LeaderboardGroupDTO to the LeaderboardDTO

This commit is contained in:
Lennart Hensler committed 2012-02-27 16:58:32 +01:00
1 parent 180d8ef613
commit e04c04eed3
4 files changed
+68 -102

No files matched your search

@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -345,6 +346,59 @@ public class LeaderboardDTO implements IsSerializable {
public void setIsMedalRace(String raceColumnName, boolean medalRace) {
getRaceInLeaderboardByName(raceColumnName).setMedalRace(medalRace);
}
/**
* @return The earliest start date of the races, or <code>null</code> if no start dates of the races are available.
*/
public Date getStartDate() {
Date leaderboardStart = null;
for (RaceInLeaderboardDTO race : getRaceList()) {
if (race.isTrackedRace()) {
Date raceStart = null;
StrippedRaceDTO raceData = race.getRace();
if (raceData != null) {
raceStart = raceData.getStartDate();
}
if (raceStart != null) {
if (leaderboardStart == null) {
leaderboardStart = new Date();
}
leaderboardStart = leaderboardStart.before(raceStart) ? leaderboardStart : raceStart;
}
}
}
return leaderboardStart;
}
/**
* Takes the {@link PlacemarkOrderDTO} of all races in this leaderboard, if the PlacemarkOrderDTO for the race is
* available, and fills all {@link PlacemarkDTO} in a new PlacemarkOrderDTO.<br />
* The order of the races in this leaderboard determine the order of the PlacemarkDTOs in the PlacemarkOrderDTO.
*
* @return The places of this leaderboard in form of a {@link PlacemarkOrderDTO}, or <code>null</code> if the
* {@link PlacemarkOrderDTO places} of no race are available
*/
public PlacemarkOrderDTO getPlaces() {
PlacemarkOrderDTO leaderboardPlaces = null;
for (RaceInLeaderboardDTO race : getRaceList()) {
if (race.isTrackedRace()) {
PlacemarkOrderDTO racePlaces = null;
StrippedRaceDTO raceData = race.getRace();
if (raceData != null) {
racePlaces = raceData.places;
}
if (racePlaces != null) {
if (leaderboardPlaces == null) {
leaderboardPlaces = new PlacemarkOrderDTO();
}
leaderboardPlaces.getPlacemarks().addAll(racePlaces.getPlacemarks());
}
}
}
return leaderboardPlaces;
}
@Override
public int hashCode() {
@@ -46,57 +46,12 @@ public class LeaderboardGroupDTO extends NamedDTO implements IsSerializable {
}
/**
* @return The start date of the given <code>race</code>, or <code>null</code> if no date for <code>race</code> is available.
*/
public Date getRaceStartDate(RaceIdentifier raceID) {
Date startDate = null;
for (LeaderboardDTO leaderboard : leaderboards) {
for (RaceInLeaderboardDTO raceInLeaderboard : leaderboard.getRaceList()) {
RaceIdentifier raceInLeaderboardID = raceInLeaderboard.getRaceIdentifier();
StrippedRaceDTO raceData = raceInLeaderboard.getRace();
if (raceInLeaderboardID != null && raceInLeaderboardID.equals(raceID) && raceData != null) {
startDate = raceData.startOfRace != null ? raceData.startOfRace : raceData.startOfTracking;
}
}
}
return startDate;
}
/**
* @return The earliest start date of the races in the given <code>leaderboard</code>, or <code>null</code> if
* <code>leaderboard</code> isn't contained or no start dates of the races are available.
*/
public Date getLeaderboardStartDate(LeaderboardDTO leaderboard) {
Date leaderboardStart = null;
if (leaderboards.contains(leaderboard)) {
for (RaceInLeaderboardDTO race : leaderboard.getRaceList()) {
if (race.isTrackedRace()) {
Date raceStart = null;
StrippedRaceDTO raceData = race.getRace();
if (raceData != null) {
raceStart = raceData.startOfRace != null ? raceData.startOfRace : raceData.startOfTracking;
}
if (raceStart != null) {
if (leaderboardStart == null) {
leaderboardStart = new Date();
}
leaderboardStart = leaderboardStart.before(raceStart) ? leaderboardStart : raceStart;
}
}
}
}
return leaderboardStart;
}
/**
*
* @return The earliest date in the start dates of the races, or <code>null</code> if no start dates are contained
* @return The earliest date in the start dates of the leaderboards, or <code>null</code> if no start dates are contained
*/
public Date getGroupStartDate() {
Date groupStart = null;
for (LeaderboardDTO leaderboard : leaderboards) {
Date leaderboardStart = getLeaderboardStartDate(leaderboard);
Date leaderboardStart = leaderboard.getStartDate();
if (leaderboardStart != null) {
if (groupStart == null) {
groupStart = new Date();
@@ -107,55 +62,6 @@ public class LeaderboardGroupDTO extends NamedDTO implements IsSerializable {
return groupStart;
}
/**
* @return The {@link PlacemarkOrderDTO places} of the given <code>race</code>, or <code>null</code> if no places for <code>race</code> are available.
*/
public PlacemarkOrderDTO getRacePlaces(RaceIdentifier raceID) {
PlacemarkOrderDTO racePlaces = null;
for (LeaderboardDTO leaderboard : leaderboards) {
for (RaceInLeaderboardDTO raceInLeaderboard : leaderboard.getRaceList()) {
RaceIdentifier raceInLeaderboardID = raceInLeaderboard.getRaceIdentifier();
StrippedRaceDTO raceData = raceInLeaderboard.getRace();
if (raceInLeaderboardID != null && raceInLeaderboardID.equals(raceID) && raceData != null) {
racePlaces = raceData.places;
}
}
}
return racePlaces;
}
/**
* Takes the {@link PlacemarkOrderDTO} of all races in the {@link LeaderboardDTO} <code>leaderboard</code>, if the
* PlacemarkOrderDTO for the race is available, and fills all {@link PlacemarkDTO} in a new PlacemarkOrderDTO.<br />
* The order of the races in the leaderboard determine the order of the PlacemarkDTOs in the PlacemarkOrderDTO.
*
* @return The places of <code>leaderboard</code> in form of a {@link PlacemarkOrderDTO}, or <code>null</code> if
* <code>leaderboard</code> isn't contained or the {@link PlacemarkOrderDTO places} of no race in
* <code>leaderboard</code> are available
*/
public PlacemarkOrderDTO getLeaderboardPlaces(LeaderboardDTO leaderboard) {
PlacemarkOrderDTO leaderboardPlaces = null;
if (leaderboards.contains(leaderboard)) {
for (RaceInLeaderboardDTO race : leaderboard.getRaceList()) {
if (race.isTrackedRace()) {
PlacemarkOrderDTO racePlaces = null;
StrippedRaceDTO raceData = race.getRace();
if (raceData != null) {
racePlaces = raceData.places;
}
if (racePlaces != null) {
if (leaderboardPlaces == null) {
leaderboardPlaces = new PlacemarkOrderDTO();
}
leaderboardPlaces.getPlacemarks().addAll(racePlaces.getPlacemarks());
}
}
}
}
return leaderboardPlaces;
}
/**
* Uses {@link LeaderboardGroupDTO#getLeaderboardPlaces(leaderboard) LeaderboardGroupDTO.getLeaderboardPlaces} to
* create the {@link PlacemarkOrderDTO places} for all contained leaderboards and returns them as a list.
@@ -166,7 +72,7 @@ public class LeaderboardGroupDTO extends NamedDTO implements IsSerializable {
public List<PlacemarkOrderDTO> getGroupPlaces() {
List<PlacemarkOrderDTO> places = new ArrayList<PlacemarkOrderDTO>();
for (LeaderboardDTO leaderboard : leaderboards) {
PlacemarkOrderDTO leaderboardPlaces = getLeaderboardPlaces(leaderboard);
PlacemarkOrderDTO leaderboardPlaces = leaderboard.getPlaces();
if (leaderboardPlaces != null) {
places.add(leaderboardPlaces);
}
@@ -24,5 +24,9 @@ public class StrippedRaceDTO extends NamedDTO implements IsSerializable {
this.identifier = identifier;
this.places = places;
}
public Date getStartDate() {
return startOfRace == null ? startOfTracking : startOfRace;
}
}
@@ -5,6 +5,8 @@ import java.util.Comparator;
import java.util.Date;
import java.util.List;
import org.apache.tools.ant.taskdefs.Sleep;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.KeyUpEvent;
@@ -292,7 +294,7 @@ public class LeaderboardGroupOverviewPanel extends FormPanel {
noGroupSelectedLabel = new Label(this.stringMessages.noGroupSelected());
detailsPanel.add(noGroupSelectedLabel);
//Build group details GUI TODO
//Build group details GUI
groupDetailsPanel = new FlowPanel();
groupDetailsPanel.setStyleName(STYLE_NAME_PREFIX + "groupDetailsPanel");
groupDetailsPanel.getElement().getStyle().setFloat(Style.Float.LEFT);
@@ -306,8 +308,7 @@ public class LeaderboardGroupOverviewPanel extends FormPanel {
TextColumn<LeaderboardDTO> leaderboardsLocationColumn = new TextColumn<LeaderboardDTO>() {
@Override
public String getValue(LeaderboardDTO leaderboard) {
LeaderboardGroupDTO selectedGroup = groupsSelectionModel.getSelectedObject();
PlacemarkOrderDTO leaderboardPlaces = selectedGroup == null ? null : selectedGroup.getLeaderboardPlaces(leaderboard);
PlacemarkOrderDTO leaderboardPlaces = leaderboard.getPlaces();
return leaderboardPlaces == null ? LeaderboardGroupOverviewPanel.this.stringMessages
.locationNotAvailable() : leaderboardPlaces.placemarksAsString();
}
@@ -337,8 +338,9 @@ public class LeaderboardGroupOverviewPanel extends FormPanel {
TextColumn<LeaderboardDTO> leaderboardsStartDateColumn = new TextColumn<LeaderboardDTO>() {
@Override
public String getValue(LeaderboardDTO leaderboard) {
// TODO Auto-generated method stub
return null;
Date leaderboardStart = leaderboard.getStartDate();
return leaderboardStart == null ? LeaderboardGroupOverviewPanel.this.stringMessages.untracked()
: DateTimeFormat.getFormat(PredefinedFormat.DATE_SHORT).format(leaderboardStart);
}
};