mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 22:37:15 +00:00
Fixed calculatition of event stage candidates
This commit is contained in:
1 parent
cfc3d5b41a
commit
42ccbb569b
3 files changed
+26
-11
No files matched your search
+1
-1
@@ -15,7 +15,7 @@ import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class EventStageCandidateCalculator implements EventVisitor {
|
||||
private final TimePoint now = MillisecondsTimePoint.now();
|
||||
private final SortedSet<Pair<StageEventType, EventHolder>> featuredEvents = new TreeSet<>(FeaturedEventsComparator.INSTANCE);
|
||||
private final SortedSet<Pair<StageEventType, EventHolder>> featuredEvents = new TreeSet<>(new FeaturedEventsComparator());
|
||||
|
||||
@Override
|
||||
public void visit(EventBase event, boolean onRemoteServer, URL baseURL) {
|
||||
|
||||
+21
-7
@@ -1,7 +1,11 @@
|
||||
package com.sap.sailing.gwt.server;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import com.sap.sailing.domain.base.EventBase;
|
||||
import com.sap.sailing.gwt.ui.shared.start.StageEventType;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.TimeRange;
|
||||
@@ -10,15 +14,25 @@ import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
import com.sap.sse.common.impl.TimeRangeImpl;
|
||||
|
||||
public class FeaturedEventsComparator implements Comparator<Pair<StageEventType, EventHolder>> {
|
||||
public static final Comparator<Pair<StageEventType, EventHolder>> INSTANCE = new FeaturedEventsComparator();
|
||||
|
||||
private final TimePoint now = MillisecondsTimePoint.now();
|
||||
private final Random randomizer = new Random();
|
||||
private final Map<EventBase, Integer> randomizedEvents = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public int compare(Pair<StageEventType, EventHolder> eventAndStageType1, Pair<StageEventType, EventHolder> eventAndStageType2) {
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
TimeRange event1Range = new TimeRangeImpl(eventAndStageType1.getB().event.getStartDate(),
|
||||
eventAndStageType1.getB().event.getEndDate());
|
||||
TimeRange event2Range = new TimeRangeImpl(eventAndStageType2.getB().event.getStartDate(),
|
||||
eventAndStageType2.getB().event.getEndDate());
|
||||
return event1Range.timeDifference(now).compareTo(event2Range.timeDifference(now));
|
||||
EventBase event1 = eventAndStageType1.getB().event, event2 = eventAndStageType2.getB().event;
|
||||
TimeRange event1Range = new TimeRangeImpl(event1.getStartDate(), event1.getEndDate());
|
||||
TimeRange event2Range = new TimeRangeImpl(event2.getStartDate(), event2.getEndDate());
|
||||
int timeDiffComp = event1Range.timeDifference(now).compareTo(event2Range.timeDifference(now));
|
||||
return timeDiffComp == 0 ? getRandomValue(event1) - getRandomValue(event2) : timeDiffComp;
|
||||
}
|
||||
|
||||
private int getRandomValue(EventBase event) {
|
||||
Integer randomValue = randomizedEvents.get(event);
|
||||
if (randomValue == null) {
|
||||
randomizedEvents.put(event, randomValue = randomizer.nextInt());
|
||||
}
|
||||
return randomValue;
|
||||
}
|
||||
}
|
||||
+4
-3
@@ -78,13 +78,14 @@ public class HomeServiceImpl extends ProxiedRemoteServiceServlet implements Home
|
||||
|
||||
int count = 0;
|
||||
for(Pair<StageEventType, EventHolder> pair : stageCandidateCalculator.getFeaturedEvents()) {
|
||||
StageEventType stageType = pair.getA();
|
||||
EventHolder holder = pair.getB();
|
||||
|
||||
count++;
|
||||
if(count > MAX_STAGE_EVENTS) {
|
||||
if(count > MAX_STAGE_EVENTS && stageType != StageEventType.RUNNING) {
|
||||
break;
|
||||
}
|
||||
|
||||
StageEventType stageType = pair.getA();
|
||||
EventHolder holder = pair.getB();
|
||||
result.addStageEvent(HomeServiceUtil.convertToEventStageDTO(holder.event, holder.baseURL, holder.onRemoteServer, stageType, getService(), false));
|
||||
|
||||
EventReferenceDTO eventRef = new EventReferenceDTO(holder.event);
|
||||
|
||||
Reference in new issue
Block a user