mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 03:13:49 +00:00
add competitor resource to REST API
This commit is contained in:
1 parent
0929262243
commit
cdccf25113
2 files changed
+103
No files matched your search
+60
@@ -0,0 +1,60 @@
|
||||
package com.sap.sailing.server.gateway.test;
|
||||
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.equalTo;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.JSONValue;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.mockito.Spy;
|
||||
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.domain.base.impl.TeamImpl;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.gateway.deserialization.impl.Helpers;
|
||||
import com.sap.sailing.server.gateway.jaxrs.api.CompetitorsResource;
|
||||
import com.sap.sailing.server.impl.RacingEventServiceImpl;
|
||||
|
||||
public class CompetitorsJsonExportTest {
|
||||
private final String name = "Heiko KRÖGER";
|
||||
private final String id = "af855a56-9726-4a9c-a77e-da955bd289be";
|
||||
private final String boatClassName = "49er";
|
||||
private final String sailID = "GER 1";
|
||||
private final String nationality = "GER";
|
||||
|
||||
private final @Spy CompetitorsResource competitorsResource = new CompetitorsResource();
|
||||
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
RacingEventService service = new RacingEventServiceImpl();
|
||||
Mockito.doReturn(service).when(competitorsResource).getService();
|
||||
|
||||
DynamicTeam team = new TeamImpl(null, Collections.singleton(new PersonImpl(null, new NationalityImpl(nationality), null, null)), null);
|
||||
DynamicBoat boat = new BoatImpl(null, new BoatClassImpl(boatClassName, false), sailID);
|
||||
service.getBaseDomainFactory().getOrCreateCompetitor(id, name, null, team, boat);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExportRegattasAsJson() throws Exception {
|
||||
String jsonString = competitorsResource.getCompetitor(id).getEntity().toString();
|
||||
JSONObject json = Helpers.toJSONObjectSafe(JSONValue.parse(jsonString));
|
||||
assertThat("id is correct", json.get("id"), equalTo(id));
|
||||
assertThat("name is correct", json.get("name"), equalTo(name));
|
||||
assertThat("boatClass is correct", json.get("boatClassName"), equalTo(boatClassName));
|
||||
assertThat("sailID is correct", json.get("sailID"), equalTo(sailID));
|
||||
assertThat("nationality is correct", json.get("nationality"), equalTo(nationality));
|
||||
}
|
||||
|
||||
}
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
package com.sap.sailing.server.gateway.jaxrs.api;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import javax.ws.rs.core.Response;
|
||||
import javax.ws.rs.core.Response.Status;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.server.gateway.jaxrs.AbstractSailingServerResource;
|
||||
|
||||
@Path("/v1/competitors")
|
||||
public class CompetitorsResource extends AbstractSailingServerResource {
|
||||
@GET
|
||||
@Produces("application/json;charset=UTF-8")
|
||||
@Path("{competitorId}")
|
||||
public Response getCompetitor(@PathParam("competitorId") String competitorIdAsString) {
|
||||
Response response;
|
||||
Competitor competitor = getService().getCompetitorStore().getExistingCompetitorByIdAsString(
|
||||
competitorIdAsString);
|
||||
if (competitor == null) {
|
||||
response = Response.status(Status.NOT_FOUND)
|
||||
.entity("Could not find a competitor with id '" + competitorIdAsString + "'.").type(MediaType.TEXT_PLAIN)
|
||||
.build();
|
||||
} else {
|
||||
//see http://wiki.sapsailing.com/wiki/tracking-app-api-v1-draft#Competitor-Information
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("id", competitorIdAsString);
|
||||
json.put("name", competitor.getName());
|
||||
json.put("sailID", competitor.getBoat().getSailID());
|
||||
json.put("nationality", competitor.getTeam().getNationality().getThreeLetterIOCAcronym());
|
||||
json.put("boatClassName", competitor.getBoat().getBoatClass().getName());
|
||||
|
||||
String jsonString = json.toJSONString();
|
||||
response = Response.ok(jsonString, MediaType.APPLICATION_JSON).build();
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user