mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-06 12:23:55 +00:00
Merge branch 'master' of ssh://sapsailing.com/home/trac/git into ubilabs--ios--develop
This commit is contained in:
commit
61dec711c1
6 files changed
+184
-2
No files matched your search
+13
-2
@@ -13,6 +13,7 @@ import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.common.tracking.impl.CompetitorJsonConstants;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sse.common.Color;
|
||||
import com.sap.sse.common.CountryCode;
|
||||
|
||||
public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
@@ -53,7 +54,8 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
result.put(idKeyAndValue.getKey(), idKeyAndValue.getValue());
|
||||
}
|
||||
result.put(CompetitorJsonConstants.FIELD_NAME, competitor.getName());
|
||||
result.put(CompetitorJsonConstants.FIELD_DISPLAY_COLOR, competitor.getColor() == null ? null : competitor.getColor().getAsHtml());
|
||||
Color color = getColor(competitor);
|
||||
result.put(CompetitorJsonConstants.FIELD_DISPLAY_COLOR, color == null ? null : color.getAsHtml());
|
||||
result.put(CompetitorJsonConstants.FIELD_EMAIL, competitor.getEmail());
|
||||
result.put(CompetitorJsonConstants.FIELD_SEARCHTAG, competitor.getSearchTag());
|
||||
result.put(CompetitorJsonConstants.FIELD_SAIL_ID, competitor.getBoat() == null ? "" : competitor.getBoat().getSailID());
|
||||
@@ -69,7 +71,7 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
result.put(CompetitorJsonConstants.FIELD_TEAM, teamJsonSerializer.serialize(competitor.getTeam()));
|
||||
}
|
||||
if (boatJsonSerializer != null) {
|
||||
result.put(CompetitorJsonConstants.FIELD_BOAT, boatJsonSerializer.serialize(competitor.getBoat()));
|
||||
result.put(CompetitorJsonConstants.FIELD_BOAT, boatJsonSerializer.serialize(getBoat(competitor)));
|
||||
}
|
||||
result.put(CompetitorJsonConstants.FIELD_TIME_ON_TIME_FACTOR, competitor.getTimeOnTimeFactor());
|
||||
result.put(CompetitorJsonConstants.FIELD_TIME_ON_DISTANCE_ALLOWANCE_IN_SECONDS_PER_NAUTICAL_MILE,
|
||||
@@ -82,4 +84,13 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
||||
Serializable competitorId = competitor.getId() instanceof UUID ? competitor.getId().toString() : competitor.getId();
|
||||
return competitorId;
|
||||
}
|
||||
|
||||
protected Color getColor(Competitor competitor ) {
|
||||
return competitor.getColor();
|
||||
}
|
||||
|
||||
protected Boat getBoat(Competitor competitor ) {
|
||||
return competitor.getBoat();
|
||||
}
|
||||
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sse.common.Color;
|
||||
|
||||
/**
|
||||
* This is a workaround for the serialization of a competitor with changing boats.
|
||||
* The class should be removed after bug https://bugzilla.sapsailing.com/bugzilla/show_bug.cgi?id=2822 is resolved.
|
||||
* @author Frank
|
||||
*
|
||||
*/
|
||||
public class CompetitorWithChangingBoatJsonSerializer extends CompetitorJsonSerializer {
|
||||
private final RaceDefinition race;
|
||||
|
||||
public CompetitorWithChangingBoatJsonSerializer() {
|
||||
this(null, null, null);
|
||||
}
|
||||
|
||||
public CompetitorWithChangingBoatJsonSerializer(RaceDefinition race, JsonSerializer<Team> teamJsonSerializer, JsonSerializer<Boat> boatSerializer) {
|
||||
super(teamJsonSerializer, boatSerializer);
|
||||
this.race = race;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Color getColor(Competitor competitor ) {
|
||||
if (race != null) {
|
||||
Boat boatOfCompetitor = race.getBoatOfCompetitorById(competitor.getId());
|
||||
if (boatOfCompetitor != null) {
|
||||
return boatOfCompetitor.getColor();
|
||||
}
|
||||
}
|
||||
return super.getColor(competitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boat getBoat(Competitor competitor ) {
|
||||
if (race != null) {
|
||||
Boat boatOfCompetitor = race.getBoatOfCompetitorById(competitor.getId());
|
||||
if (boatOfCompetitor != null) {
|
||||
return boatOfCompetitor;
|
||||
}
|
||||
}
|
||||
return super.getBoat(competitor);
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class RaceEntriesJsonSerializer implements JsonSerializer<RaceDefinition> {
|
||||
public static final String FIELD_NAME = "name";
|
||||
public static final String FIELD_COMPETITORS = "competitors";
|
||||
|
||||
private final JsonSerializer<Competitor> competitorSerializer;
|
||||
|
||||
public RaceEntriesJsonSerializer() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public RaceEntriesJsonSerializer(JsonSerializer<Competitor> competitorSerializer) {
|
||||
this.competitorSerializer = competitorSerializer;
|
||||
}
|
||||
|
||||
public JSONObject serialize(RaceDefinition race) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put(FIELD_NAME, race.getName());
|
||||
if(competitorSerializer != null) {
|
||||
JSONArray competitorsJson = new JSONArray();
|
||||
for (Competitor competitor: race.getCompetitors()) {
|
||||
competitorsJson.add(competitorSerializer.serialize(competitor));
|
||||
}
|
||||
result.put(FIELD_COMPETITORS, competitorsJson);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+36
@@ -59,10 +59,12 @@ import com.sap.sailing.server.gateway.serialization.impl.BoatClassJsonSerializer
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BoatJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.ColorJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorWithChangingBoatJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.DurationJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.FleetJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.NationalityJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.PersonJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RaceEntriesJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.RegattaJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.SeriesJsonSerializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer;
|
||||
@@ -172,6 +174,40 @@ public class RegattasResource extends AbstractSailingServerResource {
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all entries for a race.
|
||||
*
|
||||
* @param regattaName
|
||||
* the name of the regatta
|
||||
* @return
|
||||
*/
|
||||
@GET
|
||||
@Produces("application/json;charset=UTF-8")
|
||||
@Path("{regattaname}/races/{racename}/entries")
|
||||
public Response getEntries(@PathParam("regattaname") String regattaName, @PathParam("racename") String raceName) {
|
||||
Response response;
|
||||
Regatta regatta = findRegattaByName(regattaName);
|
||||
if (regatta == null) {
|
||||
response = getBadRegattaErrorResponse(regattaName);
|
||||
} else {
|
||||
RaceDefinition race = findRaceByName(regatta, raceName);
|
||||
if (race == null) {
|
||||
response = getBadRaceErrorResponse(regattaName, raceName);
|
||||
} else {
|
||||
NationalityJsonSerializer nationalityJsonSerializer = new NationalityJsonSerializer();
|
||||
CompetitorJsonSerializer competitorJsonSerializer = new CompetitorWithChangingBoatJsonSerializer(race, new TeamJsonSerializer(
|
||||
new PersonJsonSerializer(nationalityJsonSerializer)), new BoatJsonSerializer(
|
||||
new BoatClassJsonSerializer()));
|
||||
JsonSerializer<RaceDefinition> raceEntriesSerializer = new RaceEntriesJsonSerializer(competitorJsonSerializer);
|
||||
JSONObject serializedRaceEntries = raceEntriesSerializer.serialize(race);
|
||||
|
||||
String json = serializedRaceEntries.toJSONString();
|
||||
response = Response.ok(json).header("Content-Type", MediaType.APPLICATION_JSON + ";charset=UTF-8").build();
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all GPS positions of the competitors for a given race.
|
||||
*
|
||||
|
||||
@@ -60,6 +60,10 @@ name to make sure you get to the event you're interested in.
|
||||
<td><a href="entriesGetDoc.html">/api/v1/regattas/{name}/entries</a></td>
|
||||
<td>Gets the entries of a regatta</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="raceEntriesGetDoc.html">/api/v1/regattas/{regattaname}/races/{racename}/entries</a></td>
|
||||
<td>Gets the entries of a race</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="raceBearingOfFirstLegGetDoc.html">/api/v1/regattas/{regattaname}/races/{racename}/firstlegbearing</a></td>
|
||||
<td>Gets the bearing of the first leg</td>
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<link href='../../../../sailing-fontface-1.0.cache.css' media='screen' rel='stylesheet' title='Default stylesheet' type='text/css' />
|
||||
<link href='../../../main.css' media='screen' rel='stylesheet' title='Default stylesheet' type='text/css' />
|
||||
<link rel='icon' href='../../../../sap.ico' type='image/x-icon'>
|
||||
<title>SAP Sailing Analytics Webservices API Version 1.0 Beta</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>SAP Sailing Analytics Webservices API Version 1.0 Beta</h1>
|
||||
<h2>URL: /api/v1/regattas/{regattaname}/races/{racename}/entries</h2>
|
||||
|
||||
<b>Description:</b>
|
||||
<p>The service gets the entries (competitor list) of a race</p>
|
||||
<br/>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Webservice Type:</td>
|
||||
<td>REST</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Output format:</td>
|
||||
<td>Json</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Mandatory parameters:</td>
|
||||
<td>None</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Optional parameters:</td>
|
||||
<td>None</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Request method:</td>
|
||||
<td>GET</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Example:</td>
|
||||
<td><a href="http://www.sapsailing.com/sailingserver/api/v1/regattas/Kieler Woche (5o5)/races/Race 1/entries">http://www.sapsailing.com/sailingserver/api/v1/regattas/Kieler Woche (5o5)/races/Race 1/entries</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div style="height: 1em;"></div>
|
||||
<a href="index.html">Back to Web Service Overview</a>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user