mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-10 04:51:07 +00:00
add teamImageURI and flagImageURI query parameter to createAndAddCompetitor rest-api in RegattaResource
This commit is contained in:
1 parent
825f264c9f
commit
64526312ce
2 files changed
+54
-16
No files matched your search
+18
-8
@@ -6,6 +6,8 @@ import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
@@ -61,6 +63,8 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
|
||||
private final String competitorShortName1 = "MM";
|
||||
private final String competitorName2 = "Test Competitor";
|
||||
private final String competitorShortName2 = "TC";
|
||||
private final String flagImageUri = "file://flag.jpg";
|
||||
private final String teamImageUri = "file://team.jpg";
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
@@ -142,13 +146,15 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
|
||||
when(securityService.getCurrentUser()).thenReturn(user);
|
||||
|
||||
Response response = regattasResource.createAndAddCompetitor(closedRegattaName, boatClassName, null, "GER",
|
||||
"#F00", null, null, null, competitorName1, competitorShortName1, null, deviceUuid, null);
|
||||
"#F00", flagImageUri, teamImageUri, null, null, null, competitorName1, competitorShortName1, null,
|
||||
deviceUuid, null);
|
||||
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
|
||||
response.getStatus() == Status.OK.getStatusCode());
|
||||
assertTrue(regattasResource.getService() == racingEventService);
|
||||
|
||||
response = regattasResource.createAndAddCompetitor(closedRegattaName, boatClassName, null, "GER", "#0F0", null,
|
||||
null, null, competitorName2, competitorShortName2, null, deviceUuid, null);
|
||||
response = regattasResource.createAndAddCompetitor(closedRegattaName, boatClassName, null, "GER", "#0F0",
|
||||
flagImageUri, teamImageUri, null, null, null, competitorName2, competitorShortName2, null, deviceUuid,
|
||||
null);
|
||||
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
|
||||
response.getStatus() == Status.OK.getStatusCode());
|
||||
|
||||
@@ -169,7 +175,8 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
|
||||
doReturn(securityService).when(regattasResource).getService(SecurityService.class);
|
||||
setUser(null);
|
||||
Response response = regattasResource.createAndAddCompetitor(openRegattaName, boatClassName, null, "GER", "#F00",
|
||||
null, null, null, competitorName1, competitorShortName1, null, deviceUuid, secret);
|
||||
flagImageUri, teamImageUri, null, null, null, competitorName1, competitorShortName1, null, deviceUuid,
|
||||
secret);
|
||||
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
|
||||
response.getStatus() == Status.OK.getStatusCode());
|
||||
assertTrue(regattasResource.getService() == racingEventService);
|
||||
@@ -184,7 +191,7 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
|
||||
setUser(null);
|
||||
|
||||
Response response = regattasResource.createAndAddCompetitor(openRegattaName, boatClassName, null, "GER", "#F00",
|
||||
null, null, null, competitorName1, competitorShortName1, null, deviceUuid, "WRONGSECRET");
|
||||
flagImageUri, teamImageUri, null, null, null, competitorName1, competitorShortName1, null, deviceUuid, "WRONGSECRET");
|
||||
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
|
||||
response.getStatus() == Status.FORBIDDEN.getStatusCode());
|
||||
}
|
||||
@@ -199,7 +206,8 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
|
||||
Regatta regatta = racingEventService.getRegattaByName(openRegattaName);
|
||||
|
||||
Response response = regattasResource.createAndAddCompetitor(openRegattaName, boatClassName, null, "GER", "#F00",
|
||||
null, null, null, competitorName1, competitorShortName1, null, deviceUuid, secret);
|
||||
flagImageUri, teamImageUri, null, null, null, competitorName1, competitorShortName1, null, deviceUuid,
|
||||
secret);
|
||||
assertTrue(response.getStatus() + ": " + response.getEntity().toString(),
|
||||
response.getStatus() == Status.OK.getStatusCode());
|
||||
assertTrue(regattasResource.getService() == racingEventService);
|
||||
@@ -208,7 +216,7 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
|
||||
testResponseOfOpenRegattaCompetitorRegistration(regatta);
|
||||
}
|
||||
|
||||
private void testResponseOfOpenRegattaCompetitorRegistration(final Regatta regatta) {
|
||||
private void testResponseOfOpenRegattaCompetitorRegistration(final Regatta regatta) throws URISyntaxException {
|
||||
Iterator<Competitor> cit = regatta.getAllCompetitors().iterator();
|
||||
Competitor readCompetitor = cit.next();
|
||||
assertNotNull(readCompetitor);
|
||||
@@ -224,10 +232,12 @@ public class RegattasResourceTest extends AbstractJaxRsApiTest {
|
||||
assertEquals(Color.RED, readCompetitor.getColor());
|
||||
assertEquals(competitorName1, readCompetitor.getName());
|
||||
assertEquals(competitorShortName1, readCompetitor.getShortName());
|
||||
assertEquals(new URI(flagImageUri), readCompetitor.getFlagImage());
|
||||
assertEquals(new URI(teamImageUri), readCompetitor.getTeam().getImage());
|
||||
|
||||
// Same deviceUuid for registration should fail
|
||||
Response response = regattasResource.createAndAddCompetitor(regatta.getName(), boatClassName, null, "GER",
|
||||
"#F00", null, null, null, "XXX", "XXX", null, deviceUuid, secret);
|
||||
"#F00", flagImageUri, teamImageUri, null, null, null, "XXX", "XXX", null, deviceUuid, secret);
|
||||
assertTrue("Reponse http status should be forbidden (403) but is " + response.getStatus(),
|
||||
response.getStatus() == Status.FORBIDDEN.getStatusCode());
|
||||
}
|
||||
|
||||
+36
-8
@@ -1,6 +1,8 @@
|
||||
package com.sap.sailing.server.gateway.jaxrs.api;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
@@ -349,8 +351,9 @@ public class RegattasResource extends AbstractSailingServerResource {
|
||||
|
||||
private Response createAndAddCompetitor(String regattaName, String nationalityThreeLetterIOCCode, String rgbColor,
|
||||
Double timeOnTimeFactor, Long timeOnDistanceAllowancePerNauticalMileAsMillis, String searchTag,
|
||||
String competitorName, String competitorShortName, String competitorEmail,
|
||||
Function<String, DynamicBoat> boatObtainer, String deviceUuid, String registrationLinkSecret) {
|
||||
String competitorName, String competitorShortName, String competitorEmail, String flagImageURIString,
|
||||
String teamImageURIString, Function<String, DynamicBoat> boatObtainer, String deviceUuid,
|
||||
String registrationLinkSecret) {
|
||||
|
||||
final Subject subject = SecurityUtils.getSubject();
|
||||
final User user = getSecurityService().getCurrentUser();
|
||||
@@ -427,15 +430,37 @@ public class RegattasResource extends AbstractSailingServerResource {
|
||||
String.format("invalid color %s", iae.getMessage()));
|
||||
}
|
||||
}
|
||||
final URI flagImageURI;
|
||||
if (flagImageURIString == null || flagImageURIString.length() == 0) {
|
||||
flagImageURI = null;
|
||||
} else {
|
||||
try {
|
||||
flagImageURI = new URI(flagImageURIString);
|
||||
} catch (URISyntaxException use) {
|
||||
return getBadRegattaRegistrationValidationErrorResponse(
|
||||
String.format("invalid flagImageURIString %s", flagImageURIString));
|
||||
}
|
||||
}
|
||||
final URI teamImageURI;
|
||||
if (teamImageURIString == null || teamImageURIString.length() == 0) {
|
||||
teamImageURI = null;
|
||||
} else {
|
||||
try {
|
||||
teamImageURI = new URI(teamImageURIString);
|
||||
} catch (URISyntaxException use) {
|
||||
return getBadRegattaRegistrationValidationErrorResponse(
|
||||
String.format("invalid flagImageURIString %s", teamImageURIString));
|
||||
}
|
||||
}
|
||||
final TeamImpl team = new TeamImpl(eCompetitorShortName,
|
||||
Collections.singleton(new PersonImpl(eCompetitorName,
|
||||
getService().getBaseDomainFactory().getOrCreateNationality(nationalityThreeLetterIOCCode),
|
||||
/* dateOfBirth */ null, /* description */ null)),
|
||||
/* coach */ null);
|
||||
/* coach */ null, teamImageURI);
|
||||
final CompetitorWithBoat competitor = getService().getCompetitorAndBoatStore()
|
||||
.getOrCreateCompetitorWithBoat(UUID.randomUUID(), eCompetitorName,
|
||||
/* shortName */ eCompetitorShortName, color, eCompetitorEmail, /* flagImageURI */ null,
|
||||
team, timeOnTimeFactor,
|
||||
/* shortName */ eCompetitorShortName, color, eCompetitorEmail, flagImageURI, team,
|
||||
timeOnTimeFactor,
|
||||
timeOnDistanceAllowancePerNauticalMileAsMillis == null ? null
|
||||
: new MillisecondsDurationImpl(timeOnDistanceAllowancePerNauticalMileAsMillis),
|
||||
searchTag, boat);
|
||||
@@ -463,7 +488,8 @@ public class RegattasResource extends AbstractSailingServerResource {
|
||||
public Response createAndAddCompetitor(@PathParam("regattaname") String regattaName,
|
||||
@QueryParam("boatclass") String boatClassName, @QueryParam("sailid") String sailId,
|
||||
@QueryParam("nationalityIOC") String nationalityThreeLetterIOCCode,
|
||||
@QueryParam("displayColor") String displayColor, @QueryParam("timeontimefactor") Double timeOnTimeFactor,
|
||||
@QueryParam("displayColor") String displayColor, @QueryParam("flagImageURI") String flagImageURI,
|
||||
@QueryParam("teamImageURI") String teamImageURI, @QueryParam("timeontimefactor") Double timeOnTimeFactor,
|
||||
@QueryParam("timeondistanceallowancepernauticalmileasmillis") Long timeOnDistanceAllowancePerNauticalMileAsMillis,
|
||||
@QueryParam("searchtag") String searchTag, @QueryParam("competitorName") String competitorName,
|
||||
@QueryParam("competitorShortName") String competitorShortName,
|
||||
@@ -475,7 +501,7 @@ public class RegattasResource extends AbstractSailingServerResource {
|
||||
} else {
|
||||
response = createAndAddCompetitor(regattaName, nationalityThreeLetterIOCCode, displayColor,
|
||||
timeOnTimeFactor, timeOnDistanceAllowancePerNauticalMileAsMillis, searchTag, competitorName,
|
||||
competitorShortName, competitorEmail,
|
||||
competitorShortName, competitorEmail, flagImageURI, teamImageURI,
|
||||
shortName -> new BoatImpl(UUID.randomUUID(), shortName, getService().getBaseDomainFactory()
|
||||
.getOrCreateBoatClass(boatClassName, /* typicallyStartsUpwind */ true), sailId),
|
||||
deviceUuid, registrationLinkSecret);
|
||||
@@ -489,6 +515,7 @@ public class RegattasResource extends AbstractSailingServerResource {
|
||||
public Response createAndAddCompetitorWithBoat(@PathParam("regattaname") String regattaName,
|
||||
@QueryParam("boatId") String boatId, @QueryParam("sailid") String sailId,
|
||||
@QueryParam("nationalityIOC") String nationalityThreeLetterIOCCode,
|
||||
@QueryParam("flagImageURI") String flagImageURI, @QueryParam("teamImageURI") String teamImageURI,
|
||||
@QueryParam("displayColor") String displayColor, @QueryParam("timeontimefactor") Double timeOnTimeFactor,
|
||||
@QueryParam("timeondistanceallowancepernauticalmileasmillis") Long timeOnDistanceAllowancePerNauticalMileAsMillis,
|
||||
@QueryParam("searchtag") String searchTag, @QueryParam("competitorName") String competitorName,
|
||||
@@ -502,7 +529,8 @@ public class RegattasResource extends AbstractSailingServerResource {
|
||||
} else {
|
||||
response = createAndAddCompetitor(regattaName, nationalityThreeLetterIOCCode, displayColor,
|
||||
timeOnTimeFactor, timeOnDistanceAllowancePerNauticalMileAsMillis, searchTag, competitorName,
|
||||
competitorShortName, competitorEmail, t -> boat, deviceUuid, registrationLinkSecret);
|
||||
competitorShortName, competitorEmail, flagImageURI, teamImageURI, t -> boat, deviceUuid,
|
||||
registrationLinkSecret);
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user