mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-13 22:15:26 +00:00
Initial implementation to get Leaderboard update news
This commit is contained in:
1 parent
783a46eb4e
commit
bdcf580f94
12 files changed
+146
-42
No files matched your search
+7
-3
@@ -11,10 +11,12 @@ import com.sap.sailing.gwt.ui.shared.dispatch.Action;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.DispatchContext;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.ResultWithTTL;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.InfoNewsEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.dispatch.news.LeaderboardNewsEntryDTO;
|
||||
import com.sap.sailing.gwt.ui.shared.general.EventState;
|
||||
import com.sap.sailing.gwt.ui.shared.media.MediaUtils;
|
||||
import com.sap.sailing.news.EventNewsItem;
|
||||
import com.sap.sailing.news.impl.InfoEventNewsItem;
|
||||
import com.sap.sailing.news.impl.LeaderboardUpdateNewsItem;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.media.MimeType;
|
||||
@@ -129,15 +131,17 @@ public class GetEventOverviewStageAction implements Action<ResultWithTTL<EventOv
|
||||
|
||||
@GwtIncompatible
|
||||
private void addNews(DispatchContext dispatchContext, Event event, EventOverviewStageDTO stage) {
|
||||
// TODO correct date
|
||||
List<EventNewsItem> newsItems = dispatchContext.getEventNewsService().getNews(event, event.getStartDate().asDate());
|
||||
List<EventNewsItem> newsItems = dispatchContext.getEventNewsService().getNews(event);
|
||||
|
||||
for(EventNewsItem newsItem: newsItems) {
|
||||
if(newsItem instanceof InfoEventNewsItem) {
|
||||
stage.addNews(new InfoNewsEntryDTO((InfoEventNewsItem) newsItem));
|
||||
}
|
||||
if(newsItem instanceof LeaderboardUpdateNewsItem) {
|
||||
stage.addNews(new LeaderboardNewsEntryDTO((LeaderboardUpdateNewsItem) newsItem));
|
||||
}
|
||||
}
|
||||
// TODO test contents
|
||||
// TODO remove test contents
|
||||
//
|
||||
// boolean singleRegatta = HomeServiceUtil.isSingleRegatta(event);
|
||||
//
|
||||
|
||||
+1
-8
@@ -6,18 +6,16 @@ public abstract class AbstractRaceNewsEntryDTO extends NewsEntryDTO {
|
||||
|
||||
private String regattaName;
|
||||
private String trackedRaceName;
|
||||
private String raceTitle;
|
||||
private String boatClass;
|
||||
|
||||
protected AbstractRaceNewsEntryDTO() {
|
||||
}
|
||||
|
||||
public AbstractRaceNewsEntryDTO(String regattaName, String trackedRaceName, String raceTitle, String boatClass, Date timestamp) {
|
||||
super(timestamp);
|
||||
super(raceTitle, timestamp);
|
||||
this.regattaName = regattaName;
|
||||
this.trackedRaceName = trackedRaceName;
|
||||
this.boatClass = boatClass;
|
||||
this.raceTitle = raceTitle;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -25,11 +23,6 @@ public abstract class AbstractRaceNewsEntryDTO extends NewsEntryDTO {
|
||||
return boatClass;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return raceTitle;
|
||||
}
|
||||
|
||||
public String getRegattaName() {
|
||||
return regattaName;
|
||||
}
|
||||
|
||||
+1
-8
@@ -5,7 +5,6 @@ import com.sap.sailing.news.impl.InfoEventNewsItem;
|
||||
|
||||
public class InfoNewsEntryDTO extends NewsEntryDTO {
|
||||
|
||||
private String title;
|
||||
private String subtitle;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
@@ -14,16 +13,10 @@ public class InfoNewsEntryDTO extends NewsEntryDTO {
|
||||
|
||||
@GwtIncompatible
|
||||
public InfoNewsEntryDTO(InfoEventNewsItem item) {
|
||||
super(item.getCreatedAtDate());
|
||||
this.title = item.getTitle();
|
||||
super(item.getTitle(), item.getCreatedAtDate());
|
||||
this.subtitle = item.getMessage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return subtitle;
|
||||
|
||||
+8
-17
@@ -1,6 +1,7 @@
|
||||
package com.sap.sailing.gwt.ui.shared.dispatch.news;
|
||||
|
||||
import java.util.Date;
|
||||
import com.google.gwt.core.shared.GwtIncompatible;
|
||||
import com.sap.sailing.news.impl.LeaderboardUpdateNewsItem;
|
||||
|
||||
public class LeaderboardNewsEntryDTO extends NewsEntryDTO {
|
||||
|
||||
@@ -9,7 +10,6 @@ public class LeaderboardNewsEntryDTO extends NewsEntryDTO {
|
||||
}
|
||||
|
||||
private String leaderboardName;
|
||||
private String leaderboardDisplayName;
|
||||
private String boatClassName;
|
||||
private String externalURL;
|
||||
private Type type;
|
||||
@@ -18,19 +18,14 @@ public class LeaderboardNewsEntryDTO extends NewsEntryDTO {
|
||||
private LeaderboardNewsEntryDTO() {
|
||||
}
|
||||
|
||||
public LeaderboardNewsEntryDTO(String leaderboardName, String leaderboardDisplayName, String boatClassName, Date timestamp, Type type) {
|
||||
super(timestamp);
|
||||
this.boatClassName = boatClassName;
|
||||
this.type = type;
|
||||
this.setLeaderboardName(leaderboardName);
|
||||
this.leaderboardDisplayName = leaderboardDisplayName;
|
||||
@GwtIncompatible
|
||||
public LeaderboardNewsEntryDTO(LeaderboardUpdateNewsItem item) {
|
||||
super(item.getTitle(), item.getCreatedAtDate());
|
||||
this.boatClassName = item.getBoatClass();
|
||||
this.type = Type.RESULTS_UPDATE;
|
||||
this.leaderboardName = item.getLeaderboardName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return leaderboardDisplayName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBoatClass() {
|
||||
return boatClassName;
|
||||
@@ -56,8 +51,4 @@ public class LeaderboardNewsEntryDTO extends NewsEntryDTO {
|
||||
public String getLeaderboardName() {
|
||||
return leaderboardName;
|
||||
}
|
||||
|
||||
public void setLeaderboardName(String leaderboardName) {
|
||||
this.leaderboardName = leaderboardName;
|
||||
}
|
||||
}
|
||||
+7
-2
@@ -7,15 +7,20 @@ import com.google.gwt.user.client.rpc.IsSerializable;
|
||||
public abstract class NewsEntryDTO implements IsSerializable {
|
||||
|
||||
private Date timestamp;
|
||||
|
||||
private String title;
|
||||
|
||||
protected NewsEntryDTO() {
|
||||
}
|
||||
|
||||
public NewsEntryDTO(Date timestamp) {
|
||||
public NewsEntryDTO(String title, Date timestamp) {
|
||||
this.title = title;
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
public abstract String getTitle();
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public abstract String getMessage();
|
||||
|
||||
|
||||
@@ -13,4 +13,5 @@ Import-Package: org.osgi.framework;version="1.5.0",
|
||||
org.osgi.util.tracker;version="1.5.1"
|
||||
Require-Bundle: com.sap.sse.common,
|
||||
com.sap.sailing.server,
|
||||
com.sap.sailing.domain
|
||||
com.sap.sailing.domain,
|
||||
com.sap.sailing.domain.common
|
||||
@@ -7,6 +7,7 @@ import org.osgi.framework.BundleContext;
|
||||
|
||||
import com.sap.sailing.news.impl.EventNewsProviderRegistryImpl;
|
||||
import com.sap.sailing.news.impl.EventNewsServiceImpl;
|
||||
import com.sap.sailing.news.impl.LeaderboardUpdateEventNewsProvider;
|
||||
import com.sap.sailing.news.impl.SimpleDemoEventNewsProvider;
|
||||
|
||||
public class Activator implements BundleActivator {
|
||||
@@ -19,6 +20,7 @@ public class Activator implements BundleActivator {
|
||||
context.registerService(EventNewsProviderRegistry.class, providerRegistry, null);
|
||||
|
||||
providerRegistry.registerNewsProvider(new SimpleDemoEventNewsProvider());
|
||||
providerRegistry.registerNewsProvider(new LeaderboardUpdateEventNewsProvider());
|
||||
logger.info("EventNews Service registered.");
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import java.util.UUID;
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public interface NewsItem {
|
||||
public interface NewsItem extends Comparable<NewsItem> {
|
||||
UUID getId();
|
||||
|
||||
String getCategory();
|
||||
|
||||
@@ -55,4 +55,19 @@ public class AbstractNewsItem implements NewsItem {
|
||||
public UUID getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(NewsItem o) {
|
||||
Date otherCreatedAtDate = o.getCreatedAtDate();
|
||||
if(createdAtDate == otherCreatedAtDate) {
|
||||
return 0;
|
||||
}
|
||||
if(createdAtDate == null) {
|
||||
return 1;
|
||||
}
|
||||
if(otherCreatedAtDate == null) {
|
||||
return -1;
|
||||
}
|
||||
return -createdAtDate.compareTo(otherCreatedAtDate);
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.sap.sailing.news.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@@ -25,7 +26,11 @@ public class EventNewsServiceImpl implements EventNewsService {
|
||||
Collection<? extends EventNewsItem> news = provider.getNews(event);
|
||||
result.addAll(news);
|
||||
}
|
||||
return result;
|
||||
Collections.sort(result);
|
||||
if(result.size() <= 15) {
|
||||
return result;
|
||||
}
|
||||
return result.subList(0, 16);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -35,7 +40,11 @@ public class EventNewsServiceImpl implements EventNewsService {
|
||||
Collection<? extends EventNewsItem> news = provider.getNews(event, startingFrom);
|
||||
result.addAll(news);
|
||||
}
|
||||
return result;
|
||||
Collections.sort(result);
|
||||
if(result.size() <= 15) {
|
||||
return result;
|
||||
}
|
||||
return result.subList(0, 16);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.LeaderboardGroup;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.news.EventNewsItem;
|
||||
import com.sap.sailing.news.EventNewsProvider;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
|
||||
public class LeaderboardUpdateEventNewsProvider implements EventNewsProvider {
|
||||
|
||||
@Override
|
||||
public Collection<? extends EventNewsItem> getNews(Event event) {
|
||||
List<LeaderboardUpdateNewsItem> result = new LinkedList<>();
|
||||
Iterable<LeaderboardGroup> leaderboardGroups = event.getLeaderboardGroups();
|
||||
for(LeaderboardGroup leaderboardGroup: leaderboardGroups) {
|
||||
for(Leaderboard leaderboard: leaderboardGroup.getLeaderboards()) {
|
||||
TimePoint timePointOfLatestModification = leaderboard.getTimePointOfLatestModification();
|
||||
if(timePointOfLatestModification == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
String displayName = leaderboard.getDisplayName() != null ?leaderboard.getDisplayName() :leaderboard.getName();
|
||||
String boatClassName= null;
|
||||
if(leaderboard instanceof RegattaLeaderboard) {
|
||||
BoatClass boatClass = ((RegattaLeaderboard) leaderboard).getRegatta().getBoatClass();
|
||||
if(boatClass != null) {
|
||||
boatClassName = boatClass.getDisplayName();
|
||||
}
|
||||
}
|
||||
result.add(new LeaderboardUpdateNewsItem(event.getId(), timePointOfLatestModification.asDate(), leaderboard.getName(), displayName, boatClassName));
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(result);
|
||||
|
||||
if(result.size() <= 10) {
|
||||
return result;
|
||||
}
|
||||
return result.subList(0, 11);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<? extends EventNewsItem> getNews(Event event, Date startingFrom) {
|
||||
// TODO correct implementation
|
||||
return getNews(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNews(Event event, Date startingFrom) {
|
||||
// TODO correct implementation
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasNews(Event event) {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.sap.sailing.news.impl;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
public class LeaderboardUpdateNewsItem extends AbstractEventNewsItem {
|
||||
private String leaderboardName;
|
||||
private String boatClass;
|
||||
|
||||
public LeaderboardUpdateNewsItem(UUID eventId, Date updateDate, String leaderboardName, String leaderboardDisplayName, String boatClass) {
|
||||
super(eventId, leaderboardDisplayName, null, updateDate, null, null);
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.boatClass = boatClass;
|
||||
}
|
||||
|
||||
public String getLeaderboardName() {
|
||||
return leaderboardName;
|
||||
}
|
||||
|
||||
public String getBoatClass() {
|
||||
return boatClass;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user