mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-02 09:09:37 +00:00
# moved everything used by Android projects of com.sap.sailing.domain into new bundle com.sap.sailing.domain.shared.android
# updated com.sap.sailing.domain to Java 1.7 again # split of Event (see EventData) and Course (see CourseData) to minimize shared code with android # to avoid sharing RaceColumn and Leaderboard (and its dependencies) Android projects work with RaceGroups (consisting of SeriesWithRows -> consisting of RaceRows -> consisting of RaceCells -> consisting of RaceLogs). A RaceGroup is basically a data-only view on transposed RaceColumns. See RaceGroupFactory for conversion from Leaderboard to RaceGroup. Future work: use Regatta instead of Leaderboard to convert to RaceGroup
This commit is contained in:
1 parent
3e9df143c4
commit
a229765845
160 files changed
+1236
-1420
No files matched your search
@@ -23,7 +23,8 @@ Require-Bundle: com.sap.sailing.domain,
|
||||
com.sap.sailing.domain.common,
|
||||
com.sap.sailing.udpconnector,
|
||||
com.sap.sailing.server.gateway.serialization;bundle-version="1.0.0",
|
||||
org.jdom;bundle-version="1.0.0"
|
||||
org.jdom;bundle-version="1.0.0",
|
||||
com.sap.sailing.domain.shared.android;bundle-version="1.0.0"
|
||||
Bundle-ClassPath: .,
|
||||
lib/rome-1.0.jar
|
||||
Web-ContextPath: /sailingserver
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<servlet>
|
||||
<servlet-name>RCLeaderboards</servlet-name>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.rc.LeaderboardJsonExportServlet</servlet-class>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.rc.RaceGroupJsonExportServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>RCLeaderboards</servlet-name>
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
<servlet>
|
||||
<servlet-name>RCEvents</servlet-name>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.rc.EventsJsonExportServlet</servlet-class>
|
||||
<servlet-class>com.sap.sailing.server.gateway.impl.rc.EventDataJsonExportServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>RCEvents</servlet-name>
|
||||
|
||||
+7
-7
@@ -8,30 +8,30 @@ import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.EventData;
|
||||
import com.sap.sailing.server.gateway.impl.JsonExportServlet;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.EventJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.EventDataJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.VenueJsonSerializer;
|
||||
|
||||
public class EventsJsonExportServlet extends JsonExportServlet {
|
||||
public class EventDataJsonExportServlet extends JsonExportServlet {
|
||||
private static final long serialVersionUID = 4515246650108245796L;
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
JsonSerializer<Event> eventSerializer = createSerializer();
|
||||
JsonSerializer<EventData> eventSerializer = createSerializer();
|
||||
JSONArray result = new JSONArray();
|
||||
for (Event event : getService().getAllEvents()) {
|
||||
for (EventData event : getService().getAllEvents()) {
|
||||
result.add(eventSerializer.serialize(event));
|
||||
}
|
||||
result.writeJSONString(response.getWriter());
|
||||
}
|
||||
|
||||
private static JsonSerializer<Event> createSerializer() {
|
||||
return new EventJsonSerializer(
|
||||
private static JsonSerializer<EventData> createSerializer() {
|
||||
return new EventDataJsonSerializer(
|
||||
new VenueJsonSerializer(
|
||||
new CourseAreaJsonSerializer()));
|
||||
}
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
package com.sap.sailing.server.gateway.impl.rc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.RaceCell;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.RaceColumnInSeries;
|
||||
import com.sap.sailing.domain.base.RaceGroup;
|
||||
import com.sap.sailing.domain.base.RaceRow;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.SeriesWithRows;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceCellImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceGroupImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceRowImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesImpl;
|
||||
import com.sap.sailing.domain.base.impl.SeriesWithRowsImpl;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.leaderboard.RegattaLeaderboard;
|
||||
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
|
||||
import com.sap.sailing.domain.racelog.impl.RaceLogIdentifierImpl;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
|
||||
public class RaceGroupFactory {
|
||||
|
||||
private RacingEventService service;
|
||||
|
||||
public RaceGroupFactory(RacingEventService service) {
|
||||
this.service = service;
|
||||
}
|
||||
|
||||
public RaceGroup convert(Leaderboard leaderboard) {
|
||||
String name = leaderboard.getName();
|
||||
|
||||
CourseArea courseArea = leaderboard.getDefaultCourseArea();
|
||||
|
||||
BoatClass boatClass = null;
|
||||
if (leaderboard instanceof RegattaLeaderboard) {
|
||||
boatClass = ((RegattaLeaderboard) leaderboard).getRegatta().getBoatClass();
|
||||
}
|
||||
|
||||
Iterable<SeriesWithRows> series = getSeries(leaderboard);
|
||||
|
||||
return new RaceGroupImpl(name, boatClass, courseArea, series);
|
||||
}
|
||||
|
||||
public Iterable<SeriesWithRows> getSeries(Leaderboard leaderboard) {
|
||||
|
||||
Map<Series, List<RaceColumn>> seriesToRaceColumns = getSeriesToRaceColumns(leaderboard);
|
||||
|
||||
Collection<SeriesWithRows> seriesWithRows = new ArrayList<>();
|
||||
for (Series series : seriesToRaceColumns.keySet()) {
|
||||
Collection<RaceRow> rows = new ArrayList<>();
|
||||
for (Fleet fleet : series.getFleets()) {
|
||||
Collection<RaceCell> cells = new ArrayList<>();
|
||||
for (RaceColumn raceColumn : seriesToRaceColumns.get(series)) {
|
||||
RaceLogIdentifier identifier = new RaceLogIdentifierImpl(leaderboard, raceColumn, fleet);
|
||||
cells.add(new RaceCellImpl(raceColumn.getName(), service.getRaceLog(identifier)));
|
||||
}
|
||||
rows.add(new RaceRowImpl(fleet, cells));
|
||||
}
|
||||
seriesWithRows.add(new SeriesWithRowsImpl(series.getName(), rows, series.isMedal()));
|
||||
}
|
||||
return seriesWithRows;
|
||||
}
|
||||
|
||||
private Map<Series, List<RaceColumn>> getSeriesToRaceColumns(
|
||||
Leaderboard leaderboard) {
|
||||
Map<Series, List<RaceColumn>> seriesToRaceColumns = new HashMap<>();
|
||||
|
||||
Series defaultSeries = null;
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
if (raceColumn instanceof RaceColumnInSeries) {
|
||||
Series raceColumnSeries = ((RaceColumnInSeries) raceColumn).getSeries();
|
||||
insertSeriesIfNew(seriesToRaceColumns, raceColumnSeries).add(raceColumn);
|
||||
} else {
|
||||
if (defaultSeries == null) {
|
||||
defaultSeries = createDefaultSeries();
|
||||
insertSeriesIfNew(seriesToRaceColumns, defaultSeries);
|
||||
}
|
||||
seriesToRaceColumns.get(defaultSeries).add(raceColumn);
|
||||
}
|
||||
}
|
||||
return seriesToRaceColumns;
|
||||
}
|
||||
|
||||
private Series createDefaultSeries() {
|
||||
Series defaultSeries;
|
||||
defaultSeries = new SeriesImpl(
|
||||
"Default Series",
|
||||
false,
|
||||
Collections.<Fleet>singleton(new FleetImpl("Default Fleet")),
|
||||
Collections.<String>emptyList(),
|
||||
null);
|
||||
return defaultSeries;
|
||||
}
|
||||
|
||||
private List<RaceColumn> insertSeriesIfNew(Map<Series, List<RaceColumn>> target, Series newSeries) {
|
||||
if (!target.containsKey(newSeries)) {
|
||||
target.put(newSeries, new ArrayList<RaceColumn>());
|
||||
}
|
||||
return target.get(newSeries);
|
||||
}
|
||||
|
||||
}
|
||||
+18
-15
@@ -12,6 +12,7 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
import com.sap.sailing.domain.base.Event;
|
||||
import com.sap.sailing.domain.base.RaceGroup;
|
||||
import com.sap.sailing.domain.leaderboard.Leaderboard;
|
||||
import com.sap.sailing.domain.racelog.RaceLog;
|
||||
import com.sap.sailing.server.gateway.impl.JsonExportServlet;
|
||||
@@ -19,15 +20,15 @@ import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.ColorJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CourseAreaJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.FleetJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.SeriesDataJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.LeaderboardJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceCellJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceRowJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.RaceRowsOfSeriesDataExtensionSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.SeriesDataOfLeaderboardExtensionSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.racegroup.FleetJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.racegroup.RaceGroupJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.racegroup.RaceCellJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.racegroup.RaceRowJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.racegroup.RaceRowsOfSeriesWithRowsSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.racegroup.SeriesWithRowsJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.racegroup.SeriesWithRowsOfRaceGroupSerializer;
|
||||
|
||||
public class LeaderboardJsonExportServlet extends JsonExportServlet {
|
||||
public class RaceGroupJsonExportServlet extends JsonExportServlet {
|
||||
private static final long serialVersionUID = 4510175441769759252L;
|
||||
|
||||
private static final String PARAM_COURSE_AREA_FILTER = "courseArea";
|
||||
@@ -49,12 +50,14 @@ public class LeaderboardJsonExportServlet extends JsonExportServlet {
|
||||
|
||||
CourseArea filterCourseArea = getCourseArea(courseAreaId);
|
||||
|
||||
JsonSerializer<Leaderboard> serializer = createSerializer();
|
||||
JsonSerializer<RaceGroup> serializer = createSerializer();
|
||||
JSONArray result = new JSONArray();
|
||||
|
||||
RaceGroupFactory raceGroupFactory = new RaceGroupFactory(getService());
|
||||
for (Leaderboard leaderboard : getService().getLeaderboards().values()) {
|
||||
if (filterCourseArea.equals(leaderboard.getDefaultCourseArea())) {
|
||||
result.add(serializer.serialize(leaderboard));
|
||||
RaceGroup raceGroup = raceGroupFactory.convert(leaderboard);
|
||||
result.add(serializer.serialize(raceGroup));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,13 +86,13 @@ public class LeaderboardJsonExportServlet extends JsonExportServlet {
|
||||
}
|
||||
}
|
||||
|
||||
private static JsonSerializer<Leaderboard> createSerializer() {
|
||||
return new LeaderboardJsonSerializer(
|
||||
private static JsonSerializer<RaceGroup> createSerializer() {
|
||||
return new RaceGroupJsonSerializer(
|
||||
new BoatClassJsonSerializer(),
|
||||
new CourseAreaJsonSerializer(),
|
||||
new SeriesDataOfLeaderboardExtensionSerializer(
|
||||
new SeriesDataJsonSerializer(
|
||||
new RaceRowsOfSeriesDataExtensionSerializer(
|
||||
new SeriesWithRowsOfRaceGroupSerializer(
|
||||
new SeriesWithRowsJsonSerializer(
|
||||
new RaceRowsOfSeriesWithRowsSerializer(
|
||||
new RaceRowJsonSerializer(
|
||||
new FleetJsonSerializer(
|
||||
new ColorJsonSerializer()),
|
||||
Reference in new issue
Block a user