From aac2dafd9a75ca0bf8bf49aba0646fa7079a8b93 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Wed, 17 Jun 2015 19:51:38 +0200 Subject: [PATCH] Initial implementation to load mini leaderboard --- .../event/GetMobileLeaderbordAction.java | 46 ++++++++++++++++--- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetMobileLeaderbordAction.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetMobileLeaderbordAction.java index cd36e94f706..76daa3489eb 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetMobileLeaderbordAction.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/shared/dispatch/event/GetMobileLeaderbordAction.java @@ -7,17 +7,20 @@ import java.util.logging.Level; import java.util.logging.Logger; import com.google.gwt.core.shared.GwtIncompatible; +import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.dto.LeaderboardDTO; +import com.sap.sailing.domain.common.dto.LeaderboardRowDTO; import com.sap.sailing.domain.leaderboard.Leaderboard; import com.sap.sailing.gwt.ui.shared.dispatch.Action; import com.sap.sailing.gwt.ui.shared.dispatch.DTO; import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext; import com.sap.sailing.gwt.ui.shared.dispatch.DispatchException; import com.sap.sailing.gwt.ui.shared.dispatch.ListResult; +import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL; import com.sap.sailing.gwt.ui.shared.dispatch.event.GetMobileLeaderbordAction.SimplifiedLeaderboardItemDTO; import com.sap.sailing.server.RacingEventService; -public class GetMobileLeaderbordAction implements Action> { +public class GetMobileLeaderbordAction implements Action>> { private static final Logger logger = Logger.getLogger(GetMobileLeaderbordAction.class.getName()); @SuppressWarnings("unused") @@ -35,29 +38,60 @@ public class GetMobileLeaderbordAction implements Action execute(DispatchContext context) { + public ResultWithTTL> execute(DispatchContext context) { final Leaderboard leaderboard = context.getRacingEventService().getLeaderboardByName(leaderboardName); if (leaderboard == null) { - return new ListResult<>(Collections.emptyList()); + return new ResultWithTTL>(1000 * 60 * 5, new ListResult<>(Collections.emptyList())); } RacingEventService service = context.getRacingEventService(); try { LeaderboardDTO leaderboardDTO = leaderboard.getLeaderboardDTO(null, Collections.emptyList(), true, service, service.getBaseDomainFactory(), false); + int rank = 0; + LinkedList items = new LinkedList(); + for(CompetitorDTO competitor : leaderboardDTO.competitors) { + rank++; + LeaderboardRowDTO row = leaderboardDTO.rows.get(competitor); + items.add(new SimplifiedLeaderboardItemDTO(competitor, rank, row.totalPoints)); + } + return new ResultWithTTL>(1000 * 60 * 5, new ListResult(items)); + // TODO: mini leaderboard magic } catch (Exception e) { logger.log(Level.SEVERE, "Error loading leaderboard", e); throw new DispatchException("Error loading leaderboard"); } - - LinkedList items = new LinkedList(); - return new ListResult(items); } public static class SimplifiedLeaderboardItemDTO implements DTO { + private CompetitorDTO competitor; + private int rank; + private Double points; + @SuppressWarnings("unused") + private SimplifiedLeaderboardItemDTO() { + } + + public SimplifiedLeaderboardItemDTO(CompetitorDTO competitor, int rank, Double points) { + super(); + this.competitor = competitor; + this.rank = rank; + this.points = points; + } + + public CompetitorDTO getCompetitor() { + return competitor; + } + + public Double getPoints() { + return points; + } + + public int getRank() { + return rank; + } } }