# reworked serialization to use Leaderboards rather than Regatta.getRaces...

# deserialization of all relevant types on app side
This commit is contained in:
Lukas Niemeier committed 2013-02-05 19:29:12 +01:00
1 parent 0d67d37adc
commit 339f930a83
42 files changed
+851 -236

No files matched your search

@@ -16,6 +16,15 @@
<!-- RACE COMMITTEE START -->
<servlet>
<servlet-name>RCLeaderboards</servlet-name>
<servlet-class>com.sap.sailing.server.gateway.impl.rc.LeaderboardJsonExportServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RCLeaderboards</servlet-name>
<url-pattern>/rc/leaderboards</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>RCRegattas</servlet-name>
<servlet-class>com.sap.sailing.server.gateway.impl.rc.RegattasJsonExportServlet</servlet-class>
@@ -0,0 +1,58 @@
package com.sap.sailing.server.gateway.impl.rc;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.simple.JSONArray;
import com.sap.sailing.domain.leaderboard.Leaderboard;
import com.sap.sailing.server.gateway.impl.JsonExportServlet;
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.FleetWithRaceNamesJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.FleetWithRaceNamesOfSeriesExtensionSerializer;
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.LeaderboardJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.leaderboard.SeriesOfLeaderboardExtensionSerializer;
import com.sap.sailing.server.gateway.serialization.impl.regatta.ColorJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.regatta.FleetJsonSerializer;
import com.sap.sailing.server.gateway.serialization.impl.regatta.SeriesJsonSerializer;
public class LeaderboardJsonExportServlet extends JsonExportServlet {
private static final long serialVersionUID = 4510175441769759252L;
private static final String PARAM_COURSE_AREA_FILTER = "courseArea";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String courseAreaFilter = request.getParameter(PARAM_COURSE_AREA_FILTER);
if (courseAreaFilter != null) {
System.out.println("Filter by course area: " + courseAreaFilter);
}
/// TODO: implement course are filtering
JsonSerializer<Leaderboard> serializer = createSerializer();
JSONArray result = new JSONArray();
for (Leaderboard leaderboard : getService().getLeaderboards().values()) {
result.add(serializer.serialize(leaderboard));
}
result.writeJSONString(response.getWriter());
}
private static JsonSerializer<Leaderboard> createSerializer() {
return new LeaderboardJsonSerializer(
new SeriesOfLeaderboardExtensionSerializer(
new SeriesJsonSerializer(
new FleetWithRaceNamesOfSeriesExtensionSerializer(
new FleetWithRaceNamesJsonSerializer(
new FleetJsonSerializer(
new ColorJsonSerializer()))))));
}
}
@@ -92,7 +92,6 @@ public class RegattasJsonExportServlet extends JsonExportServlet {
}
private Filter<RaceDefinition> createFilter(final String courseAreaId) {
return new Filter<RaceDefinition>() {
@Override
public boolean isFiltered(RaceDefinition race) {