mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-09 04:21:01 +00:00
removed redundancies between the two leaderboard service variants
Change-Id: I7186fbc350809c9acccec5cc99d82cf6d2565fff
This commit is contained in:
1 parent
96677487af
commit
ab0efda1ba
5 files changed
+50
-51
No files matched your search
+2
-1
@@ -25,6 +25,7 @@ import com.sap.sailing.domain.common.NotFoundException;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.AbstractLeaderboardsResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.EventsResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardGroupsResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardsResource;
|
||||
@@ -159,7 +160,7 @@ public class EventResourceTest extends AbstractJaxRsApiTest {
|
||||
}
|
||||
|
||||
private Response getLeaderboard(String name) {
|
||||
return leaderboardsResource.getLeaderboard(name, LeaderboardsResource.ResultStates.Final, null);
|
||||
return leaderboardsResource.getLeaderboard(name, AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
}
|
||||
|
||||
private boolean hasAtLeastOneCourseArea(JSONObject objEvent) {
|
||||
|
||||
+16
-15
@@ -31,6 +31,7 @@ import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
|
||||
import com.sap.sailing.domain.test.mock.MockedTrackedRaceWithStartTimeAndRanks;
|
||||
import com.sap.sailing.domain.tracking.TrackedRace;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.AbstractLeaderboardsResource;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.LeaderboardsResource;
|
||||
import com.sap.sse.common.TimePoint;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
@@ -83,7 +84,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
dropAndCreateRegatta();
|
||||
|
||||
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, null);
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
|
||||
String jsonString = (String) leaderboardReponse.getEntity();
|
||||
Object obj= JSONValue.parse(jsonString);
|
||||
@@ -93,7 +94,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
String jsonResultState = (String) jsonObject.get("resultState");
|
||||
|
||||
assertTrue(regattaLeaderboard.getName().equals(jsonLeaderboardName));
|
||||
assertTrue(LeaderboardsResource.ResultStates.Final.name().equals(jsonResultState));
|
||||
assertTrue(AbstractLeaderboardsResource.ResultStates.Final.name().equals(jsonResultState));
|
||||
|
||||
// resultTimepoint should be null if there are no 'final' results yet
|
||||
TimePoint resultTimePoint = parseTimepointFromJsonNumber((Long) jsonObject.get("resultTimepoint"));
|
||||
@@ -108,7 +109,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
dropAndCreateRegatta();
|
||||
|
||||
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, null);
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
|
||||
String jsonString = (String) leaderboardReponse.getEntity();
|
||||
Object obj= JSONValue.parse(jsonString);
|
||||
@@ -118,7 +119,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
String jsonResultState = (String) jsonObject.get("resultState");
|
||||
|
||||
assertTrue(regattaLeaderboard.getName().equals(jsonLeaderboardName));
|
||||
assertTrue(LeaderboardsResource.ResultStates.Final.name().equals(jsonResultState));
|
||||
assertTrue(AbstractLeaderboardsResource.ResultStates.Final.name().equals(jsonResultState));
|
||||
|
||||
TimePoint resultTimePoint = parseTimepointFromJsonNumber((Long) jsonObject.get("resultTimepoint"));
|
||||
assertNull(resultTimePoint);
|
||||
@@ -126,7 +127,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
regattaLeaderboard.getScoreCorrection().setTimePointOfLastCorrectionsValidity(MillisecondsTimePoint.now());
|
||||
|
||||
LeaderboardsResource resource2 = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, null);
|
||||
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
|
||||
String jsonString2 = (String) leaderboardReponse2.getEntity();
|
||||
obj= JSONValue.parse(jsonString2);
|
||||
@@ -141,7 +142,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
dropAndCreateRegatta();
|
||||
|
||||
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Live, null);
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Live, null);
|
||||
|
||||
String jsonString = (String) leaderboardReponse.getEntity();
|
||||
Object obj= JSONValue.parse(jsonString);
|
||||
@@ -151,7 +152,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
String jsonResultState = (String) jsonObject.get("resultState");
|
||||
|
||||
assertTrue(regattaLeaderboard.getName().equals(jsonLeaderboardName));
|
||||
assertTrue(LeaderboardsResource.ResultStates.Live.name().equals(jsonResultState));
|
||||
assertTrue(AbstractLeaderboardsResource.ResultStates.Live.name().equals(jsonResultState));
|
||||
|
||||
TimePoint resultTimePoint = parseTimepointFromJsonNumber((Long) jsonObject.get("resultTimepoint"));
|
||||
assertNotNull(resultTimePoint);
|
||||
@@ -171,7 +172,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
|
||||
// call the servlet for the first time
|
||||
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, null);
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
|
||||
String jsonString = (String) leaderboardReponse.getEntity();
|
||||
Object obj= JSONValue.parse(jsonString);
|
||||
@@ -181,7 +182,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
String jsonResultState = (String) jsonObject.get("resultState");
|
||||
|
||||
assertTrue(regattaLeaderboard.getName().equals(jsonLeaderboardName));
|
||||
assertTrue(LeaderboardsResource.ResultStates.Final.name().equals(jsonResultState));
|
||||
assertTrue(AbstractLeaderboardsResource.ResultStates.Final.name().equals(jsonResultState));
|
||||
|
||||
TimePoint resultTimePoint = parseTimepointFromJsonNumber((Long) jsonObject.get("resultTimepoint"));
|
||||
assertNotNull(resultTimePoint);
|
||||
@@ -190,7 +191,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
Thread.sleep(100);
|
||||
|
||||
LeaderboardsResource resource2 = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, null);
|
||||
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
|
||||
String jsonString2 = (String) leaderboardReponse2.getEntity();
|
||||
Object obj2= JSONValue.parse(jsonString2);
|
||||
@@ -213,7 +214,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
Integer maxCompetitorsCount = 2;
|
||||
|
||||
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, null);
|
||||
Response leaderboardReponse = resource.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
|
||||
String jsonString = (String) leaderboardReponse.getEntity();
|
||||
Object obj= JSONValue.parse(jsonString);
|
||||
@@ -223,7 +224,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
String jsonResultState = (String) jsonObject.get("resultState");
|
||||
|
||||
assertTrue(regattaLeaderboard.getName().equals(jsonLeaderboardName));
|
||||
assertTrue(LeaderboardsResource.ResultStates.Final.name().equals(jsonResultState));
|
||||
assertTrue(AbstractLeaderboardsResource.ResultStates.Final.name().equals(jsonResultState));
|
||||
|
||||
TimePoint resultTimePoint = parseTimepointFromJsonNumber((Long) jsonObject.get("resultTimepoint"));
|
||||
assertNull(resultTimePoint);
|
||||
@@ -232,7 +233,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
|
||||
// first call for 'all' competitors
|
||||
LeaderboardsResource resource2 = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, null);
|
||||
Response leaderboardReponse2 = resource2.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
|
||||
jsonString = (String) leaderboardReponse2.getEntity();
|
||||
obj= JSONValue.parse(jsonString);
|
||||
@@ -244,7 +245,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
|
||||
// second call with maxCompetitorsCount set
|
||||
LeaderboardsResource resource3 = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse3 = resource3.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, maxCompetitorsCount);
|
||||
Response leaderboardReponse3 = resource3.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, maxCompetitorsCount);
|
||||
|
||||
jsonString = (String) leaderboardReponse3.getEntity();
|
||||
obj= JSONValue.parse(jsonString);
|
||||
@@ -256,7 +257,7 @@ public class LeaderboardsResourceTest extends AbstractJaxRsApiTest {
|
||||
|
||||
// third call for 'all' competitors
|
||||
LeaderboardsResource resource4 = spyResource(new LeaderboardsResource());
|
||||
Response leaderboardReponse4 = resource4.getLeaderboard(regatta.getName(), LeaderboardsResource.ResultStates.Final, null);
|
||||
Response leaderboardReponse4 = resource4.getLeaderboard(regatta.getName(), AbstractLeaderboardsResource.ResultStates.Final, null);
|
||||
|
||||
jsonString = (String) leaderboardReponse4.getEntity();
|
||||
obj= JSONValue.parse(jsonString);
|
||||
|
||||
+22
-24
@@ -1,7 +1,8 @@
|
||||
package com.sap.sailing.server.gateway.jaxrs.api;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
@@ -17,7 +18,6 @@ import com.sap.sailing.domain.common.NoWindException;
|
||||
import com.sap.sailing.domain.common.dto.BoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.SettableScoreCorrection;
|
||||
@@ -91,27 +91,6 @@ public abstract class AbstractLeaderboardsResource extends AbstractSailingServer
|
||||
return jsonLeaderboard;
|
||||
}
|
||||
|
||||
protected void writeCommonLeaderboardData(JSONObject jsonLeaderboard, LeaderboardDTO leaderboard,
|
||||
ResultStates resultState, Integer maxCompetitorsCount) {
|
||||
jsonLeaderboard.put("name", leaderboard.name);
|
||||
final String displayName = leaderboard.getDisplayName();
|
||||
jsonLeaderboard.put("displayName", displayName == null ? leaderboard.name : displayName);
|
||||
jsonLeaderboard.put("resultTimepoint", leaderboard.getTimePoint() != null ? leaderboard.getTimePoint().getTime() : null);
|
||||
jsonLeaderboard.put("resultState", resultState.name());
|
||||
jsonLeaderboard.put("type", leaderboard.type.name());
|
||||
jsonLeaderboard.put("canBoatsOfCompetitorsChangePerRace", leaderboard.canBoatsOfCompetitorsChangePerRace);
|
||||
jsonLeaderboard.put("maxCompetitorsCount", maxCompetitorsCount);
|
||||
jsonLeaderboard.put("higherScoreIsBetter", leaderboard.isHigherScoreBetter());
|
||||
jsonLeaderboard.put("scoringComment", leaderboard.getComment());
|
||||
Date lastUpdateTimepoint = leaderboard.getTimePointOfLastCorrectionsValidity();
|
||||
jsonLeaderboard.put("lastScoringUpdate", lastUpdateTimepoint != null ? lastUpdateTimepoint.getTime() : null);
|
||||
JSONArray jsonColumnNames = new JSONArray();
|
||||
jsonLeaderboard.put("columnNames", jsonColumnNames);
|
||||
for (RaceColumnDTO raceColumn : leaderboard.getRaceList()) {
|
||||
jsonColumnNames.add(raceColumn.getName());
|
||||
}
|
||||
}
|
||||
|
||||
protected void writeCompetitorBaseData(JSONObject jsonCompetitor, CompetitorWithBoatDTO competitor, LeaderboardDTO leaderboard) {
|
||||
jsonCompetitor.put("name", competitor.getName());
|
||||
jsonCompetitor.put("shortName", competitor.getShortName());
|
||||
@@ -132,7 +111,7 @@ public abstract class AbstractLeaderboardsResource extends AbstractSailingServer
|
||||
jsonBoat.put("color", boat.getColor() != null ? boat.getColor().toString() : null);
|
||||
}
|
||||
|
||||
private void writeCommonLeaderboardData(JSONObject jsonLeaderboard, Leaderboard leaderboard,
|
||||
protected void writeCommonLeaderboardData(JSONObject jsonLeaderboard, Leaderboard leaderboard,
|
||||
ResultStates resultState, TimePoint resultTimePoint, Integer maxCompetitorsCount) {
|
||||
jsonLeaderboard.put("name", leaderboard.getName());
|
||||
final String displayName = leaderboard.getDisplayName();
|
||||
@@ -209,4 +188,23 @@ public abstract class AbstractLeaderboardsResource extends AbstractSailingServer
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
protected abstract JSONObject getLeaderboardJson(Leaderboard leaderboard, TimePoint resultTimePoint,
|
||||
ResultStates resultState, Integer maxCompetitorsCount, List<String> raceColumnNames,
|
||||
List<String> raceDetailNames) throws NoWindException, InterruptedException, ExecutionException;
|
||||
|
||||
protected JSONObject getLeaderboardJson(ResultStates resultState, Integer maxCompetitorsCount,
|
||||
TimePoint requestTimePoint, Leaderboard leaderboard, TimePoint timePoint, List<String> raceColumnNames,
|
||||
List<String> raceDetailNames)
|
||||
throws NoWindException, InterruptedException, ExecutionException {
|
||||
final JSONObject jsonLeaderboard;
|
||||
if (timePoint != null || resultState == ResultStates.Live) {
|
||||
jsonLeaderboard = getLeaderboardJson(leaderboard, timePoint, resultState, maxCompetitorsCount, raceColumnNames, raceDetailNames);
|
||||
} else {
|
||||
jsonLeaderboard = createEmptyLeaderboardJson(leaderboard, resultState, requestTimePoint,
|
||||
maxCompetitorsCount);
|
||||
}
|
||||
return jsonLeaderboard;
|
||||
}
|
||||
|
||||
}
|
||||
+7
-9
@@ -159,12 +159,8 @@ public class LeaderboardsResource extends AbstractLeaderboardsResource {
|
||||
try {
|
||||
TimePoint timePoint = calculateTimePointForResultState(leaderboard, resultState);
|
||||
JSONObject jsonLeaderboard;
|
||||
if (timePoint != null || resultState == ResultStates.Live) {
|
||||
jsonLeaderboard = getLeaderboardJson(leaderboard, timePoint, resultState, maxCompetitorsCount);
|
||||
} else {
|
||||
jsonLeaderboard = createEmptyLeaderboardJson(leaderboard, resultState, requestTimePoint,
|
||||
maxCompetitorsCount);
|
||||
}
|
||||
jsonLeaderboard = getLeaderboardJson(resultState, maxCompetitorsCount, requestTimePoint, leaderboard, timePoint,
|
||||
/* race column names */ null, /* race detail names */ null);
|
||||
StringWriter sw = new StringWriter();
|
||||
jsonLeaderboard.writeJSONString(sw);
|
||||
String json = sw.getBuffer().toString();
|
||||
@@ -177,15 +173,17 @@ public class LeaderboardsResource extends AbstractLeaderboardsResource {
|
||||
return response;
|
||||
}
|
||||
|
||||
private JSONObject getLeaderboardJson(Leaderboard leaderboard,
|
||||
TimePoint resultTimePoint, ResultStates resultState, Integer maxCompetitorsCount)
|
||||
@Override
|
||||
protected JSONObject getLeaderboardJson(Leaderboard leaderboard,
|
||||
TimePoint resultTimePoint, ResultStates resultState, Integer maxCompetitorsCount, List<String> raceColumnNames,
|
||||
List<String> raceDetailNames)
|
||||
throws NoWindException, InterruptedException, ExecutionException {
|
||||
LeaderboardDTO leaderboardDTO = leaderboard.getLeaderboardDTO(
|
||||
resultTimePoint, Collections.<String> emptyList(), /* addOverallDetails */
|
||||
false, getService(), getService().getBaseDomainFactory(),
|
||||
/* fillTotalPointsUncorrected */false);
|
||||
JSONObject jsonLeaderboard = new JSONObject();
|
||||
writeCommonLeaderboardData(jsonLeaderboard, leaderboardDTO, resultState, maxCompetitorsCount);
|
||||
writeCommonLeaderboardData(jsonLeaderboard, leaderboard, resultState, resultTimePoint, maxCompetitorsCount);
|
||||
JSONArray jsonCompetitorEntries = new JSONArray();
|
||||
jsonLeaderboard.put("competitors", jsonCompetitorEntries);
|
||||
int counter = 1;
|
||||
|
||||
+3
-2
@@ -95,7 +95,8 @@ public class LeaderboardsResourceV2 extends AbstractLeaderboardsResource {
|
||||
return response;
|
||||
}
|
||||
|
||||
private JSONObject getLeaderboardJson(Leaderboard leaderboard,
|
||||
@Override
|
||||
protected JSONObject getLeaderboardJson(Leaderboard leaderboard,
|
||||
TimePoint resultTimePoint, ResultStates resultState, Integer maxCompetitorsCount,
|
||||
List<String> raceColumnNames, List<String> raceDetailNames)
|
||||
throws NoWindException, InterruptedException, ExecutionException {
|
||||
@@ -106,7 +107,7 @@ public class LeaderboardsResourceV2 extends AbstractLeaderboardsResource {
|
||||
false, getService(), getService().getBaseDomainFactory(),
|
||||
/* fillTotalPointsUncorrected */false);
|
||||
JSONObject jsonLeaderboard = new JSONObject();
|
||||
writeCommonLeaderboardData(jsonLeaderboard, leaderboardDTO, resultState, maxCompetitorsCount);
|
||||
writeCommonLeaderboardData(jsonLeaderboard, leaderboard, resultState, resultTimePoint, maxCompetitorsCount);
|
||||
Map<String, Map<String, Map<CompetitorWithBoatDTO, Integer>>> competitorRanksPerRaceColumnsAndFleets = new HashMap<>();
|
||||
for (String raceColumnName : raceColumnsToShow) {
|
||||
List<CompetitorWithBoatDTO> competitorsFromBestToWorst = leaderboardDTO.getCompetitorsFromBestToWorst(raceColumnName);
|
||||
|
||||
Reference in new issue
Block a user