mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 01:01:02 +00:00
Add email field to Competitor
This commit is contained in:
1 parent
45936be60d
commit
0e4775d51f
47 files changed
+155
-76
No files matched your search
+2
@@ -22,6 +22,8 @@ public interface CompetitorDTO extends Serializable, MappableToDevice {
|
|||||||
String getName();
|
String getName();
|
||||||
|
|
||||||
Color getColor();
|
Color getColor();
|
||||||
|
|
||||||
|
String getEmail();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A regular instance will simply return this object. A compacted version may compute the result by looking it up
|
* A regular instance will simply return this object. A compacted version may compute the result by looking it up
|
||||||
|
|||||||
+17
-1
@@ -19,16 +19,18 @@ public class CompetitorDTOImpl extends NamedDTO implements CompetitorDTO, Serial
|
|||||||
private String twoLetterIsoCountryCode;
|
private String twoLetterIsoCountryCode;
|
||||||
private String threeLetterIocCountryCode;
|
private String threeLetterIocCountryCode;
|
||||||
private Color color;
|
private Color color;
|
||||||
|
private String email;
|
||||||
private String sailID;
|
private String sailID;
|
||||||
private String idAsString;
|
private String idAsString;
|
||||||
private BoatClassDTO boatClass;
|
private BoatClassDTO boatClass;
|
||||||
|
|
||||||
public CompetitorDTOImpl() {}
|
public CompetitorDTOImpl() {}
|
||||||
|
|
||||||
public CompetitorDTOImpl(String name, Color color, String twoLetterIsoCountryCode, String threeLetterIocCountryCode,
|
public CompetitorDTOImpl(String name, Color color, String email, String twoLetterIsoCountryCode, String threeLetterIocCountryCode,
|
||||||
String countryName, String sailID, String idAsString, BoatClassDTO boatClass) {
|
String countryName, String sailID, String idAsString, BoatClassDTO boatClass) {
|
||||||
super(name);
|
super(name);
|
||||||
this.color = color;
|
this.color = color;
|
||||||
|
this.email = email;
|
||||||
this.twoLetterIsoCountryCode = twoLetterIsoCountryCode;
|
this.twoLetterIsoCountryCode = twoLetterIsoCountryCode;
|
||||||
this.threeLetterIocCountryCode = threeLetterIocCountryCode;
|
this.threeLetterIocCountryCode = threeLetterIocCountryCode;
|
||||||
this.countryName = countryName;
|
this.countryName = countryName;
|
||||||
@@ -45,6 +47,7 @@ public class CompetitorDTOImpl extends NamedDTO implements CompetitorDTO, Serial
|
|||||||
result = prime * result + ((idAsString == null) ? 0 : idAsString.hashCode());
|
result = prime * result + ((idAsString == null) ? 0 : idAsString.hashCode());
|
||||||
result = prime * result + ((sailID == null) ? 0 : sailID.hashCode());
|
result = prime * result + ((sailID == null) ? 0 : sailID.hashCode());
|
||||||
result = prime * result + ((color == null) ? 0 : color.hashCode());
|
result = prime * result + ((color == null) ? 0 : color.hashCode());
|
||||||
|
result = prime * result + ((email == null) ? 0 : email.hashCode());
|
||||||
result = prime * result + ((threeLetterIocCountryCode == null) ? 0 : threeLetterIocCountryCode.hashCode());
|
result = prime * result + ((threeLetterIocCountryCode == null) ? 0 : threeLetterIocCountryCode.hashCode());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -83,6 +86,11 @@ public class CompetitorDTOImpl extends NamedDTO implements CompetitorDTO, Serial
|
|||||||
return false;
|
return false;
|
||||||
} else if (!color.equals(other.color))
|
} else if (!color.equals(other.color))
|
||||||
return false;
|
return false;
|
||||||
|
if (email == null) {
|
||||||
|
if (other.email != null)
|
||||||
|
return false;
|
||||||
|
} else if (!email.equals(other.email))
|
||||||
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,4 +132,12 @@ public class CompetitorDTOImpl extends NamedDTO implements CompetitorDTO, Serial
|
|||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String email(){
|
||||||
|
return email;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+6
@@ -92,6 +92,12 @@ public class PreviousCompetitorDTOImpl implements CompetitorDTO {
|
|||||||
throw new RuntimeException("Internal error. Objects of type "+PreviousCompetitorDTOImpl.class.getName()+
|
throw new RuntimeException("Internal error. Objects of type "+PreviousCompetitorDTOImpl.class.getName()+
|
||||||
" need to be replaced by an object of "+CompetitorDTOImpl.class.getName()+" after deserialization");
|
" need to be replaced by an object of "+CompetitorDTOImpl.class.getName()+" after deserialization");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEmail() {
|
||||||
|
throw new RuntimeException("Internal error. Objects of type "+PreviousCompetitorDTOImpl.class.getName()+
|
||||||
|
" need to be replaced by an object of "+CompetitorDTOImpl.class.getName()+" after deserialization");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompetitorDTO getCompetitorFromPrevious(LeaderboardDTO previousVersion) {
|
public CompetitorDTO getCompetitorFromPrevious(LeaderboardDTO previousVersion) {
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@ public class AbstractGPSFixStoreTest {
|
|||||||
protected final DeviceIdentifier device = new SmartphoneImeiIdentifier("a");
|
protected final DeviceIdentifier device = new SmartphoneImeiIdentifier("a");
|
||||||
protected RaceLog raceLog;
|
protected RaceLog raceLog;
|
||||||
protected GPSFixStore store;
|
protected GPSFixStore store;
|
||||||
protected final Competitor comp = DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null);
|
protected final Competitor comp = DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null, null);
|
||||||
protected final Mark mark = DomainFactory.INSTANCE.getOrCreateMark("mark");
|
protected final Mark mark = DomainFactory.INSTANCE.getOrCreateMark("mark");
|
||||||
|
|
||||||
private final AbstractLogEventAuthor author = new LogEventAuthorImpl("author", 0);
|
private final AbstractLogEventAuthor author = new LogEventAuthorImpl("author", 0);
|
||||||
|
|||||||
+2
-2
@@ -168,7 +168,7 @@ public class CreateAndTrackWithRaceLogTest {
|
|||||||
assertFalse(raceLog.isEmpty());
|
assertFalse(raceLog.isEmpty());
|
||||||
|
|
||||||
// add a mapping and one fix in, one out of mapping
|
// add a mapping and one fix in, one out of mapping
|
||||||
Competitor comp1 = DomainFactory.INSTANCE.getOrCreateCompetitor("comp1", "comp1", null, null, null);
|
Competitor comp1 = DomainFactory.INSTANCE.getOrCreateCompetitor("comp1", "comp1", null, null, null, null);
|
||||||
DeviceIdentifier dev1 = new SmartphoneImeiIdentifier("dev1");
|
DeviceIdentifier dev1 = new SmartphoneImeiIdentifier("dev1");
|
||||||
raceLog.add(factory.createDeviceCompetitorMappingEvent(t(), author, dev1, comp1, 0, t(0), t(10)));
|
raceLog.add(factory.createDeviceCompetitorMappingEvent(t(), author, dev1, comp1, 0, t(0), t(10)));
|
||||||
addFixes0(dev1);
|
addFixes0(dev1);
|
||||||
@@ -202,7 +202,7 @@ public class CreateAndTrackWithRaceLogTest {
|
|||||||
adapter.denoteRaceForRaceLogTracking(service, leaderboard, column, fleet, "race");
|
adapter.denoteRaceForRaceLogTracking(service, leaderboard, column, fleet, "race");
|
||||||
|
|
||||||
// add a mapping and one fix in, one out of mapping
|
// add a mapping and one fix in, one out of mapping
|
||||||
Competitor comp1 = DomainFactory.INSTANCE.getOrCreateCompetitor("comp1", "comp1", null, null, null);
|
Competitor comp1 = DomainFactory.INSTANCE.getOrCreateCompetitor("comp1", "comp1", null, null, null, null);
|
||||||
DeviceIdentifier dev1 = new SmartphoneImeiIdentifier("dev1");
|
DeviceIdentifier dev1 = new SmartphoneImeiIdentifier("dev1");
|
||||||
regattaLog.add(new RegattaLogDeviceCompetitorMappingEventImpl(t(), author, t(), UUID.randomUUID(), comp1, dev1,
|
regattaLog.add(new RegattaLogDeviceCompetitorMappingEventImpl(t(), author, t(), UUID.randomUUID(), comp1, dev1,
|
||||||
t(0), t(10)));
|
t(0), t(10)));
|
||||||
|
|||||||
+1
-1
@@ -49,7 +49,7 @@ public class TrackedRaceLoadsFixesTest extends AbstractGPSFixStoreTest {
|
|||||||
@Test
|
@Test
|
||||||
public void areFixesStoredInDb() throws TransformationException, NoCorrespondingServiceRegisteredException,
|
public void areFixesStoredInDb() throws TransformationException, NoCorrespondingServiceRegisteredException,
|
||||||
InterruptedException {
|
InterruptedException {
|
||||||
Competitor comp2 = DomainFactory.INSTANCE.getOrCreateCompetitor("comp2", "comp2", null, null, null);
|
Competitor comp2 = DomainFactory.INSTANCE.getOrCreateCompetitor("comp2", "comp2", null, null, null, null);
|
||||||
Mark mark2 = DomainFactory.INSTANCE.getOrCreateMark("mark2");
|
Mark mark2 = DomainFactory.INSTANCE.getOrCreateMark("mark2");
|
||||||
DeviceIdentifier device2 = new SmartphoneImeiIdentifier("imei2");
|
DeviceIdentifier device2 = new SmartphoneImeiIdentifier("imei2");
|
||||||
DeviceIdentifier device3 = new SmartphoneImeiIdentifier("imei3");
|
DeviceIdentifier device3 = new SmartphoneImeiIdentifier("imei3");
|
||||||
|
|||||||
+4
@@ -15,6 +15,10 @@ public interface Competitor extends Named, WithID, IsManagedByCache<SharedDomain
|
|||||||
|
|
||||||
Color getColor();
|
Color getColor();
|
||||||
|
|
||||||
|
String getEmail();
|
||||||
|
|
||||||
|
boolean hasEmail();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a listener to this competitor. The listener is also added to the boat and the team for changes.
|
* Adds a listener to this competitor. The listener is also added to the boat and the team for changes.
|
||||||
* Adding a listener that is already part of this competitor's listeners set remains without effect.
|
* Adding a listener that is already part of this competitor's listeners set remains without effect.
|
||||||
|
|||||||
+1
-1
@@ -26,5 +26,5 @@ public interface CompetitorFactory {
|
|||||||
*/
|
*/
|
||||||
boolean isCompetitorToUpdateDuringGetOrCreate(Competitor result);
|
boolean isCompetitorToUpdateDuringGetOrCreate(Competitor result);
|
||||||
|
|
||||||
Competitor getOrCreateCompetitor(Serializable competitorId, String name, Color displayColor, DynamicTeam team, DynamicBoat boat);
|
Competitor getOrCreateCompetitor(Serializable competitorId, String name, Color displayColor, String email, DynamicTeam team, DynamicBoat boat);
|
||||||
}
|
}
|
||||||
+1
-1
@@ -63,7 +63,7 @@ public interface CompetitorStore extends CompetitorFactory {
|
|||||||
*
|
*
|
||||||
* If no competitor with the ID requested is found, the call is a no-op, doing nothing, not even throwing an exception.
|
* If no competitor with the ID requested is found, the call is a no-op, doing nothing, not even throwing an exception.
|
||||||
*/
|
*/
|
||||||
Competitor updateCompetitor(String idAsString, String newName, Color newDisplayColor, String newSailId,
|
Competitor updateCompetitor(String idAsString, String newName, Color newDisplayColor, String newEmail, String newSailId,
|
||||||
Nationality newNationality, URI newTeamImageUri);
|
Nationality newNationality, URI newTeamImageUri);
|
||||||
|
|
||||||
CompetitorDTO convertToCompetitorDTO(Competitor c);
|
CompetitorDTO convertToCompetitorDTO(Competitor c);
|
||||||
|
|||||||
+15
-1
@@ -20,6 +20,7 @@ public class CompetitorImpl implements DynamicCompetitor {
|
|||||||
private String name;
|
private String name;
|
||||||
private Color color;
|
private Color color;
|
||||||
private transient Set<CompetitorChangeListener> listeners;
|
private transient Set<CompetitorChangeListener> listeners;
|
||||||
|
private String email;
|
||||||
|
|
||||||
public CompetitorImpl(Serializable id, String name, Color color, DynamicTeam team, DynamicBoat boat) {
|
public CompetitorImpl(Serializable id, String name, Color color, DynamicTeam team, DynamicBoat boat) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
@@ -73,7 +74,7 @@ public class CompetitorImpl implements DynamicCompetitor {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Competitor resolve(SharedDomainFactory domainFactory) {
|
public Competitor resolve(SharedDomainFactory domainFactory) {
|
||||||
Competitor result = domainFactory.getOrCreateCompetitor(getId(), getName(), getColor(), getTeam(), getBoat());
|
Competitor result = domainFactory.getOrCreateCompetitor(getId(), getName(), getColor(), getEmail(), getTeam(), getBoat());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,4 +115,17 @@ public class CompetitorImpl implements DynamicCompetitor {
|
|||||||
return new HashSet<CompetitorChangeListener>(listeners);
|
return new HashSet<CompetitorChangeListener>(listeners);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getEmail() {
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEmail(String eMail) {
|
||||||
|
//TODO: add E-Mail verification from SecurityServiceImpl
|
||||||
|
this.email = eMail;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasEmail(){
|
||||||
|
return !email.isEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+1
@@ -9,4 +9,5 @@ public interface DynamicCompetitor extends Competitor, Renamable {
|
|||||||
DynamicTeam getTeam();
|
DynamicTeam getTeam();
|
||||||
|
|
||||||
void setColor(Color displayColor);
|
void setColor(Color displayColor);
|
||||||
|
void setEmail(String email);
|
||||||
}
|
}
|
||||||
+2
-2
@@ -332,11 +332,11 @@ public class SharedDomainFactoryImpl implements SharedDomainFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Competitor getOrCreateCompetitor(Serializable competitorId, String name, Color displayColor, DynamicTeam team, DynamicBoat boat) {
|
public Competitor getOrCreateCompetitor(Serializable competitorId, String name, Color displayColor, String email, DynamicTeam team, DynamicBoat boat) {
|
||||||
if (logger.isLoggable(Level.FINEST)) {
|
if (logger.isLoggable(Level.FINEST)) {
|
||||||
logger.log(Level.FINEST, "getting or creating competitor "+name+" with ID "+competitorId+" in domain factory "+this);
|
logger.log(Level.FINEST, "getting or creating competitor "+name+" with ID "+competitorId+" in domain factory "+this);
|
||||||
}
|
}
|
||||||
return getCompetitorStore().getOrCreateCompetitor(competitorId, name, displayColor, team, boat);
|
return getCompetitorStore().getOrCreateCompetitor(competitorId, name, displayColor, email, team, boat);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+5
-4
@@ -93,7 +93,7 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Competitor getOrCreateCompetitor(Serializable competitorId, String name, Color displayColor, DynamicTeam team, DynamicBoat boat) {
|
public Competitor getOrCreateCompetitor(Serializable competitorId, String name, Color displayColor, String email, DynamicTeam team, DynamicBoat boat) {
|
||||||
Competitor result = getExistingCompetitorById(competitorId); // avoid synchronization for successful read access
|
Competitor result = getExistingCompetitorById(competitorId); // avoid synchronization for successful read access
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
LockUtil.lockForWrite(lock);
|
LockUtil.lockForWrite(lock);
|
||||||
@@ -106,7 +106,7 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
|||||||
LockUtil.unlockAfterWrite(lock);
|
LockUtil.unlockAfterWrite(lock);
|
||||||
}
|
}
|
||||||
} else if (isCompetitorToUpdateDuringGetOrCreate(result)) {
|
} else if (isCompetitorToUpdateDuringGetOrCreate(result)) {
|
||||||
updateCompetitor(result.getId().toString(), name, displayColor, boat.getSailID(), team.getNationality(),
|
updateCompetitor(result.getId().toString(), name, displayColor, email, boat.getSailID(), team.getNationality(),
|
||||||
team.getImage());
|
team.getImage());
|
||||||
competitorNoLongerToUpdateDuringGetOrCreate(result);
|
competitorNoLongerToUpdateDuringGetOrCreate(result);
|
||||||
}
|
}
|
||||||
@@ -191,7 +191,7 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Competitor updateCompetitor(String idAsString, String newName, Color newDisplayColor, String newSailId,
|
public Competitor updateCompetitor(String idAsString, String newName, Color newDisplayColor, String newEmail, String newSailId,
|
||||||
Nationality newNationality, URI newTeamImageUri) {
|
Nationality newNationality, URI newTeamImageUri) {
|
||||||
DynamicCompetitor competitor = (DynamicCompetitor) getExistingCompetitorByIdAsString(idAsString);
|
DynamicCompetitor competitor = (DynamicCompetitor) getExistingCompetitorByIdAsString(idAsString);
|
||||||
if (competitor != null) {
|
if (competitor != null) {
|
||||||
@@ -199,6 +199,7 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
|||||||
try {
|
try {
|
||||||
competitor.setName(newName);
|
competitor.setName(newName);
|
||||||
competitor.setColor(newDisplayColor);
|
competitor.setColor(newDisplayColor);
|
||||||
|
competitor.setEmail(newEmail);
|
||||||
competitor.getBoat().setSailId(newSailId);
|
competitor.getBoat().setSailId(newSailId);
|
||||||
competitor.getTeam().setNationality(newNationality);
|
competitor.getTeam().setNationality(newNationality);
|
||||||
competitor.getTeam().setImage(newTeamImageUri);
|
competitor.getTeam().setImage(newTeamImageUri);
|
||||||
@@ -229,7 +230,7 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
|||||||
if (competitorDTO == null) {
|
if (competitorDTO == null) {
|
||||||
final Nationality nationality = c.getTeam().getNationality();
|
final Nationality nationality = c.getTeam().getNationality();
|
||||||
CountryCode countryCode = nationality == null ? null : nationality.getCountryCode();
|
CountryCode countryCode = nationality == null ? null : nationality.getCountryCode();
|
||||||
competitorDTO = new CompetitorDTOImpl(c.getName(), c.getColor(), countryCode == null ? ""
|
competitorDTO = new CompetitorDTOImpl(c.getName(), c.getColor(), c.getEmail(), countryCode == null ? ""
|
||||||
: countryCode.getTwoLetterISOCode(), countryCode == null ? ""
|
: countryCode.getTwoLetterISOCode(), countryCode == null ? ""
|
||||||
: countryCode.getThreeLetterIOCCode(), countryCode == null ? "" : countryCode.getName(), c
|
: countryCode.getThreeLetterIOCCode(), countryCode == null ? "" : countryCode.getName(), c
|
||||||
.getBoat().getSailID(), c.getId().toString(), new BoatClassDTO(c.getBoat().getBoatClass()
|
.getBoat().getSailID(), c.getId().toString(), new BoatClassDTO(c.getBoat().getBoatClass()
|
||||||
|
|||||||
+2
-2
@@ -124,7 +124,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
|||||||
teamMembers.add(person);
|
teamMembers.add(person);
|
||||||
}
|
}
|
||||||
DynamicTeam team = new TeamImpl(competitor.getName(), teamMembers, /* coach */ null);
|
DynamicTeam team = new TeamImpl(competitor.getName(), teamMembers, /* coach */ null);
|
||||||
result = competitorStore.getOrCreateCompetitor(competitor.getID(), competitor.getName(), null /*displayColor*/, team, boat);
|
result = competitorStore.getOrCreateCompetitor(competitor.getID(), competitor.getName(), null /*displayColor*/, null /*email*/, team, boat);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -140,7 +140,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
|||||||
}
|
}
|
||||||
DynamicTeam team = new TeamImpl(competitor.getName(), teamMembers, /* coach */ null);
|
DynamicTeam team = new TeamImpl(competitor.getName(), teamMembers, /* coach */ null);
|
||||||
result = baseDomainFactory.getCompetitorStore().getOrCreateCompetitor(getCompetitorID(competitor.getBoatID(), raceId, boatClass),
|
result = baseDomainFactory.getCompetitorStore().getOrCreateCompetitor(getCompetitorID(competitor.getBoatID(), raceId, boatClass),
|
||||||
competitor.getName(), null /*displayColor*/, team, boat);
|
competitor.getName(), null /*displayColor*/, null /*email*/, team, boat);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -232,7 +232,7 @@ public class LeaderboardDTODiffingTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testCompetitorListChange() {
|
public void testCompetitorListChange() {
|
||||||
newVersion.competitors = new ArrayList<CompetitorDTO>(newVersion.competitors); // clone competitor list so it's not identical to that of previous version
|
newVersion.competitors = new ArrayList<CompetitorDTO>(newVersion.competitors); // clone competitor list so it's not identical to that of previous version
|
||||||
CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "DE", "GER", "Germany", "GER 1234", "912p09871203987",
|
CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "someone@nobody.de", "DE", "GER", "Germany", "GER 1234", "912p09871203987",
|
||||||
new BoatClassDTO("505", 5.05));
|
new BoatClassDTO("505", 5.05));
|
||||||
newVersion.competitors.add(13, somebodyNew); // insert a competitor; this should mess up all others' indexes; check if this works
|
newVersion.competitors.add(13, somebodyNew); // insert a competitor; this should mess up all others' indexes; check if this works
|
||||||
CompetitorDTO wolfgang = getPreviousCompetitorByName("HUNGER +JESS");
|
CompetitorDTO wolfgang = getPreviousCompetitorByName("HUNGER +JESS");
|
||||||
@@ -252,7 +252,7 @@ public class LeaderboardDTODiffingTest {
|
|||||||
Util.addAll(newVersion.getSuppressedCompetitors(), newSuppressedCompetitors);
|
Util.addAll(newVersion.getSuppressedCompetitors(), newSuppressedCompetitors);
|
||||||
newVersion.setSuppressedCompetitors(newSuppressedCompetitors);
|
newVersion.setSuppressedCompetitors(newSuppressedCompetitors);
|
||||||
newVersion.competitors = new ArrayList<CompetitorDTO>(newVersion.competitors); // clone competitor list so it's not identical to that of previous version
|
newVersion.competitors = new ArrayList<CompetitorDTO>(newVersion.competitors); // clone competitor list so it's not identical to that of previous version
|
||||||
CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "DE", "GER", "Germany", "GER 1234", "912p09871203987",
|
CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "someone@nobody.de", "DE", "GER", "Germany", "GER 1234", "912p09871203987",
|
||||||
new BoatClassDTO("505", 5.05));
|
new BoatClassDTO("505", 5.05));
|
||||||
newVersion.setSuppressed(newVersion.competitors.get(13), true); // suppress an existing competitor; compaction should reduce this to a single number only
|
newVersion.setSuppressed(newVersion.competitors.get(13), true); // suppress an existing competitor; compaction should reduce this to a single number only
|
||||||
newVersion.setSuppressed(somebodyNew, true); // check that mixed mode with existing and new competitors works as well
|
newVersion.setSuppressed(somebodyNew, true); // check that mixed mode with existing and new competitors works as well
|
||||||
@@ -274,7 +274,7 @@ public class LeaderboardDTODiffingTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testDisplayNameChange() {
|
public void testDisplayNameChange() {
|
||||||
newVersion.competitors = new ArrayList<CompetitorDTO>(newVersion.competitors); // clone competitor list so it's not identical to that of previous version
|
newVersion.competitors = new ArrayList<CompetitorDTO>(newVersion.competitors); // clone competitor list so it's not identical to that of previous version
|
||||||
CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "DE", "GER", "Germany", "GER 1234", "912p09871203987",
|
CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "someone@nobody.de", "DE", "GER", "Germany", "GER 1234", "912p09871203987",
|
||||||
new BoatClassDTO("505", 5.05));
|
new BoatClassDTO("505", 5.05));
|
||||||
newVersion.competitors.add(somebodyNew);
|
newVersion.competitors.add(somebodyNew);
|
||||||
newVersion.competitorDisplayNames = new HashMap<CompetitorDTO, String>(newVersion.competitorDisplayNames);
|
newVersion.competitorDisplayNames = new HashMap<CompetitorDTO, String>(newVersion.competitorDisplayNames);
|
||||||
@@ -303,7 +303,7 @@ public class LeaderboardDTODiffingTest {
|
|||||||
List<CompetitorDTO> newOrdering = new ArrayList<CompetitorDTO>(newVersion.getCompetitorsFromBestToWorst(r9));
|
List<CompetitorDTO> newOrdering = new ArrayList<CompetitorDTO>(newVersion.getCompetitorsFromBestToWorst(r9));
|
||||||
newVersion.setCompetitorsFromBestToWorst(r9, newOrdering);
|
newVersion.setCompetitorsFromBestToWorst(r9, newOrdering);
|
||||||
newVersion.competitors = new ArrayList<CompetitorDTO>(newVersion.competitors); // clone competitor list so it's not identical to that of previous version
|
newVersion.competitors = new ArrayList<CompetitorDTO>(newVersion.competitors); // clone competitor list so it's not identical to that of previous version
|
||||||
CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "DE", "GER", "Germany", "GER 1234", "912p09871203987",
|
CompetitorDTO somebodyNew = new CompetitorDTOImpl("Someone New", Color.RED, "someone@nobody.de", "DE", "GER", "Germany", "GER 1234", "912p09871203987",
|
||||||
new BoatClassDTO("505", 5.05));
|
new BoatClassDTO("505", 5.05));
|
||||||
newVersion.competitors.add(somebodyNew);
|
newVersion.competitors.add(somebodyNew);
|
||||||
newOrdering.add(somebodyNew);
|
newOrdering.add(somebodyNew);
|
||||||
|
|||||||
+1
-1
@@ -24,7 +24,7 @@ public abstract class AbstractLeaderboardTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Competitor createCompetitor(String competitorName, CompetitorFactory competitorFactory) {
|
public static Competitor createCompetitor(String competitorName, CompetitorFactory competitorFactory) {
|
||||||
return competitorFactory.getOrCreateCompetitor(competitorName, competitorName, Color.RED, new TeamImpl("STG", Collections.singleton(
|
return competitorFactory.getOrCreateCompetitor(competitorName, competitorName, Color.RED, "someone@nobody.de", new TeamImpl("STG", Collections.singleton(
|
||||||
new PersonImpl(competitorName, new NationalityImpl("GER"),
|
new PersonImpl(competitorName, new NationalityImpl("GER"),
|
||||||
/* dateOfBirth */ null, "This is famous "+competitorName)),
|
/* dateOfBirth */ null, "This is famous "+competitorName)),
|
||||||
new PersonImpl("Rigo van Maas", new NationalityImpl("NED"),
|
new PersonImpl("Rigo van Maas", new NationalityImpl("NED"),
|
||||||
|
|||||||
+1
-1
@@ -259,7 +259,7 @@ public class DomainFactoryImpl implements DomainFactory {
|
|||||||
}
|
}
|
||||||
DynamicTeam team = getOrCreateTeam(name, nationality, competitorId);
|
DynamicTeam team = getOrCreateTeam(name, nationality, competitorId);
|
||||||
DynamicBoat boat = new BoatImpl(shortName, boatClass, shortName);
|
DynamicBoat boat = new BoatImpl(shortName, boatClass, shortName);
|
||||||
result = competitorStore.getOrCreateCompetitor(competitorId, name, null /*displayColor*/, team, boat);
|
result = competitorStore.getOrCreateCompetitor(competitorId, name, null /*displayColor*/, null /*email*/, team, boat);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ public interface DynamicCompetitorStore extends CompetitorStore {
|
|||||||
DynamicCompetitor getExistingCompetitorById(Serializable competitorId);
|
DynamicCompetitor getExistingCompetitorById(Serializable competitorId);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
DynamicCompetitor getOrCreateCompetitor(Serializable competitorId, String name, Color displayColor, DynamicTeam team, DynamicBoat boat);
|
DynamicCompetitor getOrCreateCompetitor(Serializable competitorId, String name, Color displayColor, String email, DynamicTeam team, DynamicBoat boat);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
Iterable<? extends DynamicCompetitor> getCompetitors();
|
Iterable<? extends DynamicCompetitor> getCompetitors();
|
||||||
|
|||||||
+10
@@ -72,6 +72,16 @@ public class DummyMarkPassingWithTimePointOnly implements MarkPassing {
|
|||||||
@Override
|
@Override
|
||||||
public void removeCompetitorChangeListener(CompetitorChangeListener listener) {
|
public void removeCompetitorChangeListener(CompetitorChangeListener listener) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getEmail() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasEmail() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+10
-3
@@ -38,6 +38,7 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
|
|||||||
private final TextBox displayColorTextBox;
|
private final TextBox displayColorTextBox;
|
||||||
private final ListBox threeLetterIocCountryCode;
|
private final ListBox threeLetterIocCountryCode;
|
||||||
private final TextBox sailId;
|
private final TextBox sailId;
|
||||||
|
private final TextBox email;
|
||||||
private final StringMessages stringMessages;
|
private final StringMessages stringMessages;
|
||||||
|
|
||||||
public CompetitorEditDialog(final StringMessages stringMessages, CompetitorDTO competitorToEdit,
|
public CompetitorEditDialog(final StringMessages stringMessages, CompetitorDTO competitorToEdit,
|
||||||
@@ -56,6 +57,9 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
|
|||||||
if (displayColor instanceof InvalidColor) {
|
if (displayColor instanceof InvalidColor) {
|
||||||
result = displayColor.getAsHtml();
|
result = displayColor.getAsHtml();
|
||||||
}
|
}
|
||||||
|
} else if (valueToValidate.getEmail() == null) {
|
||||||
|
//TODO: Proper Email-Validation
|
||||||
|
result = stringMessages.pleaseEnterAnEmail();
|
||||||
} else if (valueToValidate.getBoatClass().getName() == null || valueToValidate.getBoatClass().getName().isEmpty()) {
|
} else if (valueToValidate.getBoatClass().getName() == null || valueToValidate.getBoatClass().getName().isEmpty()) {
|
||||||
result = stringMessages.pleaseEnterABoatClass();
|
result = stringMessages.pleaseEnterABoatClass();
|
||||||
}
|
}
|
||||||
@@ -89,6 +93,7 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.name = createTextBox(competitorToEdit.getName());
|
this.name = createTextBox(competitorToEdit.getName());
|
||||||
|
this.email = createTextBox(competitorToEdit.getEmail());
|
||||||
this.displayColorTextBox = createTextBox(competitorToEdit.getColor() == null ? "" : competitorToEdit.getColor().getAsHtml());
|
this.displayColorTextBox = createTextBox(competitorToEdit.getColor() == null ? "" : competitorToEdit.getColor().getAsHtml());
|
||||||
this.threeLetterIocCountryCode = createListBox(/* isMultipleSelect */ false);
|
this.threeLetterIocCountryCode = createListBox(/* isMultipleSelect */ false);
|
||||||
CountryCodeFactory ccf = CountryCodeFactory.INSTANCE;
|
CountryCodeFactory ccf = CountryCodeFactory.INSTANCE;
|
||||||
@@ -170,7 +175,7 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
BoatClassDTO boatClass = new BoatClassDTO(boatClassName.getValue(boatClassName.getSelectedIndex()), 0);
|
BoatClassDTO boatClass = new BoatClassDTO(boatClassName.getValue(boatClassName.getSelectedIndex()), 0);
|
||||||
CompetitorDTO result = new CompetitorDTOImpl(name.getText(), color,
|
CompetitorDTO result = new CompetitorDTOImpl(name.getText(), color, email.getText(),
|
||||||
/* twoLetterIsoCountryCode */ null,
|
/* twoLetterIsoCountryCode */ null,
|
||||||
threeLetterIocCountryCode.getValue(threeLetterIocCountryCode.getSelectedIndex()),
|
threeLetterIocCountryCode.getValue(threeLetterIocCountryCode.getSelectedIndex()),
|
||||||
/* countryName */ null, sailId.getText(), competitorToEdit.getIdAsString(),
|
/* countryName */ null, sailId.getText(), competitorToEdit.getIdAsString(),
|
||||||
@@ -189,8 +194,10 @@ public class CompetitorEditDialog extends DataEntryDialog<CompetitorDTO> {
|
|||||||
result.setWidget(2, 1, threeLetterIocCountryCode);
|
result.setWidget(2, 1, threeLetterIocCountryCode);
|
||||||
result.setWidget(3, 0, new Label(stringMessages.color()));
|
result.setWidget(3, 0, new Label(stringMessages.color()));
|
||||||
result.setWidget(3, 1, displayColorTextBox);
|
result.setWidget(3, 1, displayColorTextBox);
|
||||||
result.setWidget(4, 0, new Label(stringMessages.boatClass()));
|
result.setWidget(4, 0, new Label(stringMessages.email()));
|
||||||
result.setWidget(4, 1, boatClassName);
|
result.setWidget(4, 1, email);
|
||||||
|
result.setWidget(5, 0, new Label(stringMessages.boatClass()));
|
||||||
|
result.setWidget(5, 1, boatClassName);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
@@ -1137,4 +1137,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages {
|
|||||||
String error();
|
String error();
|
||||||
String setAsActive();
|
String setAsActive();
|
||||||
String fileStorage();
|
String fileStorage();
|
||||||
|
String email();
|
||||||
|
String pleaseEnterAnEmail();
|
||||||
}
|
}
|
||||||
+3
-1
@@ -1119,4 +1119,6 @@ errorTryingToRegisterRacesForTracking=Error trying to register races {0} for tra
|
|||||||
errorDeterminingPolarAvailability=Error determining availability of polar / VPP data for race {0}: {1}
|
errorDeterminingPolarAvailability=Error determining availability of polar / VPP data for race {0}: {1}
|
||||||
error=Error
|
error=Error
|
||||||
setAsActive=Set as active
|
setAsActive=Set as active
|
||||||
fileStorage=File Storage
|
fileStorage=File Storage
|
||||||
|
email=E-Mail
|
||||||
|
pleaseEnterAnEmail=Please enter an E-Mail.
|
||||||
+3
-1
@@ -1108,4 +1108,6 @@ errorTryingToRegisterRacesForTracking=Fehler beim Versuch, die Wettfahrten {0} z
|
|||||||
errorDeterminingPolarAvailability=Fehler bei der Verfügbarkeitsprüfung für Polardaten für Wettfahrt {0}: {1}
|
errorDeterminingPolarAvailability=Fehler bei der Verfügbarkeitsprüfung für Polardaten für Wettfahrt {0}: {1}
|
||||||
error=Fehler
|
error=Fehler
|
||||||
setAsActive=Aktiv setzen
|
setAsActive=Aktiv setzen
|
||||||
fileStorage=Datei Speicherung
|
fileStorage=Datei Speicherung
|
||||||
|
email=E-Mail
|
||||||
|
pleaseEnterAnEmail=Bitte geben Sie eine E-Mail ein.
|
||||||
+3
-1
@@ -1056,4 +1056,6 @@ errorTryingToRegisterRacesForTracking=Error trying to register races {0} for tra
|
|||||||
errorDeterminingPolarAvailability=Error determining availability of polar / VPP data for race {0}: {1}
|
errorDeterminingPolarAvailability=Error determining availability of polar / VPP data for race {0}: {1}
|
||||||
error=Error
|
error=Error
|
||||||
setAsActive=Set as active
|
setAsActive=Set as active
|
||||||
fileStorage=File Storage
|
fileStorage=File Storage
|
||||||
|
email=эмаль
|
||||||
|
pleaseEnterAnEmail=Пожалуйста, введите эмаль
|
||||||
+2
-2
@@ -4536,12 +4536,12 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
|||||||
DynamicBoat boat = new BoatImpl(competitor.getName() + " boat", boatClass, competitor.getSailID());
|
DynamicBoat boat = new BoatImpl(competitor.getName() + " boat", boatClass, competitor.getSailID());
|
||||||
result = getBaseDomainFactory().convertToCompetitorDTO(
|
result = getBaseDomainFactory().convertToCompetitorDTO(
|
||||||
getBaseDomainFactory().getOrCreateCompetitor(UUID.randomUUID(), competitor.getName(),
|
getBaseDomainFactory().getOrCreateCompetitor(UUID.randomUUID(), competitor.getName(),
|
||||||
competitor.getColor(), team, boat));
|
competitor.getColor(), competitor.getEmail(), team, boat));
|
||||||
} else {
|
} else {
|
||||||
result = getBaseDomainFactory().convertToCompetitorDTO(
|
result = getBaseDomainFactory().convertToCompetitorDTO(
|
||||||
getService().apply(
|
getService().apply(
|
||||||
new UpdateCompetitor(competitor.getIdAsString(), competitor.getName(), competitor
|
new UpdateCompetitor(competitor.getIdAsString(), competitor.getName(), competitor
|
||||||
.getColor(), competitor.getSailID(), nationality, existingCompetitor.getTeam().getImage())));
|
.getColor(), competitor.getEmail(), competitor.getSailID(), nationality, existingCompetitor.getTeam().getImage())));
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -174,7 +174,7 @@ public class StoreAndLoadRaceLogEventsTest extends AbstractMongoDBTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testStoreAndLoadDeviceCompetitorMappingEvent() {
|
public void testStoreAndLoadDeviceCompetitorMappingEvent() {
|
||||||
DeviceIdentifier device = new SmartphoneImeiIdentifier("a");
|
DeviceIdentifier device = new SmartphoneImeiIdentifier("a");
|
||||||
Competitor mappedTo = DomainFactory.INSTANCE.getOrCreateCompetitor("abc", "abc", null, null, null);
|
Competitor mappedTo = DomainFactory.INSTANCE.getOrCreateCompetitor("abc", "abc", null, null, null, null);
|
||||||
TimePoint from = new MillisecondsTimePoint(20);
|
TimePoint from = new MillisecondsTimePoint(20);
|
||||||
TimePoint to = new MillisecondsTimePoint(30);
|
TimePoint to = new MillisecondsTimePoint(30);
|
||||||
RaceLogDeviceCompetitorMappingEvent expectedEvent = eventFactory.createDeviceCompetitorMappingEvent(
|
RaceLogDeviceCompetitorMappingEvent expectedEvent = eventFactory.createDeviceCompetitorMappingEvent(
|
||||||
@@ -251,7 +251,7 @@ public class StoreAndLoadRaceLogEventsTest extends AbstractMongoDBTest {
|
|||||||
public void testStoreAndLoadRegisterCompetitorEvent() {
|
public void testStoreAndLoadRegisterCompetitorEvent() {
|
||||||
RaceLogRegisterCompetitorEvent expectedEvent = eventFactory.createRegisterCompetitorEvent(
|
RaceLogRegisterCompetitorEvent expectedEvent = eventFactory.createRegisterCompetitorEvent(
|
||||||
expectedEventTime, author, expectedEventTime, expectedId, expectedPassId,
|
expectedEventTime, author, expectedEventTime, expectedId, expectedPassId,
|
||||||
DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null));
|
DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null, null));
|
||||||
|
|
||||||
DBObject dbObject = mongoFactory.storeRaceLogEntry(logIdentifier, expectedEvent);
|
DBObject dbObject = mongoFactory.storeRaceLogEntry(logIdentifier, expectedEvent);
|
||||||
RaceLogRegisterCompetitorEvent actualEvent = loadEvent(dbObject);
|
RaceLogRegisterCompetitorEvent actualEvent = loadEvent(dbObject);
|
||||||
|
|||||||
+1
-1
@@ -58,7 +58,7 @@ public class StoreGPSFixTrackTest extends AbstractMongoDBTest {
|
|||||||
public void testStoreAndLoadFixes() throws TransformationException, NoCorrespondingServiceRegisteredException {
|
public void testStoreAndLoadFixes() throws TransformationException, NoCorrespondingServiceRegisteredException {
|
||||||
TypeBasedServiceFinderFactory factory = new MockSmartphoneImeiServiceFinderFactory();
|
TypeBasedServiceFinderFactory factory = new MockSmartphoneImeiServiceFinderFactory();
|
||||||
AbstractLogEventAuthor author = new LogEventAuthorImpl("author", 0);
|
AbstractLogEventAuthor author = new LogEventAuthorImpl("author", 0);
|
||||||
Competitor comp = DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null);
|
Competitor comp = DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null, null);
|
||||||
Mark mark = DomainFactory.INSTANCE.getOrCreateMark("mark");
|
Mark mark = DomainFactory.INSTANCE.getOrCreateMark("mark");
|
||||||
MongoObjectFactory mongoObjectFactory = PersistenceFactory.INSTANCE.getMongoObjectFactory(getMongoService(), factory);
|
MongoObjectFactory mongoObjectFactory = PersistenceFactory.INSTANCE.getMongoObjectFactory(getMongoService(), factory);
|
||||||
DomainObjectFactory domainObjectFactory = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE, factory);
|
DomainObjectFactory domainObjectFactory = PersistenceFactory.INSTANCE.getDomainObjectFactory(getMongoService(), DomainFactory.INSTANCE, factory);
|
||||||
|
|||||||
+1
-1
@@ -350,7 +350,7 @@ public class TestStoringAndRetrievingLeaderboards extends AbstractMongoDBTest {
|
|||||||
final DomainFactory domainFactory = new DomainFactoryImpl();
|
final DomainFactory domainFactory = new DomainFactoryImpl();
|
||||||
// create the competitor through the competitor store/factory here so that the DomainObjectFactory finds it and
|
// create the competitor through the competitor store/factory here so that the DomainObjectFactory finds it and
|
||||||
// resolves the score corrections appropriate
|
// resolves the score corrections appropriate
|
||||||
Competitor competitor = domainFactory.getOrCreateCompetitor(123, "$$$Dr. Wolfgang+Hunger$$$", Color.RED, new TeamImpl("STG", Collections.singleton(
|
Competitor competitor = domainFactory.getOrCreateCompetitor(123, "$$$Dr. Wolfgang+Hunger$$$", Color.RED, "someone@nowhere.de", new TeamImpl("STG", Collections.singleton(
|
||||||
new PersonImpl("$$$Dr. Wolfgang+Hunger$$$", new NationalityImpl("GER"),
|
new PersonImpl("$$$Dr. Wolfgang+Hunger$$$", new NationalityImpl("GER"),
|
||||||
/* dateOfBirth */ null, "This is famous Dr. Wolfgang Hunger")), new PersonImpl("Rigo van Maas", new NationalityImpl("NED"),
|
/* dateOfBirth */ null, "This is famous Dr. Wolfgang Hunger")), new PersonImpl("Rigo van Maas", new NationalityImpl("NED"),
|
||||||
/* dateOfBirth */ null, "This is Rigo, the coach")), new BoatImpl("Dr. Wolfgang Hunger's boat", new BoatClassImpl("505", /* typicallyStartsUpwind */ true), null));
|
/* dateOfBirth */ null, "This is Rigo, the coach")), new BoatImpl("Dr. Wolfgang Hunger's boat", new BoatClassImpl("505", /* typicallyStartsUpwind */ true), null));
|
||||||
|
|||||||
+2
-2
@@ -273,7 +273,7 @@ public class TestStoringAndRetrievingRaceLogInLeaderboards extends RaceLogMongoD
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStoreAndRetrieveSimpleLeaderboardWithRaceLogFinishPositioningConfirmedEvent() {
|
public void testStoreAndRetrieveSimpleLeaderboardWithRaceLogFinishPositioningConfirmedEvent() {
|
||||||
Competitor storedCompetitor = DomainFactory.INSTANCE.getOrCreateCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", Color.RED, null, null);
|
Competitor storedCompetitor = DomainFactory.INSTANCE.getOrCreateCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", Color.RED, "someone@nowhere.de", null, null);
|
||||||
CompetitorResults storedPositioningList = new CompetitorResultsImpl();
|
CompetitorResults storedPositioningList = new CompetitorResultsImpl();
|
||||||
storedPositioningList.add(new com.sap.sse.common.Util.Triple<Serializable, String, MaxPointsReason>(storedCompetitor.getId(), storedCompetitor.getName(), MaxPointsReason.NONE));
|
storedPositioningList.add(new com.sap.sse.common.Util.Triple<Serializable, String, MaxPointsReason>(storedCompetitor.getId(), storedCompetitor.getName(), MaxPointsReason.NONE));
|
||||||
|
|
||||||
@@ -342,7 +342,7 @@ public class TestStoringAndRetrievingRaceLogInLeaderboards extends RaceLogMongoD
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStoreAndRetrieveSimpleLeaderboardWithRaceLogFinishPositioningListChangeEvent() {
|
public void testStoreAndRetrieveSimpleLeaderboardWithRaceLogFinishPositioningListChangeEvent() {
|
||||||
Competitor storedCompetitor = DomainFactory.INSTANCE.getOrCreateCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", Color.RED, null, null);
|
Competitor storedCompetitor = DomainFactory.INSTANCE.getOrCreateCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", Color.RED, "someone@nowhere.de", null, null);
|
||||||
CompetitorResults storedPositioningList = new CompetitorResultsImpl();
|
CompetitorResults storedPositioningList = new CompetitorResultsImpl();
|
||||||
storedPositioningList.add(new com.sap.sse.common.Util.Triple<Serializable, String, MaxPointsReason>(storedCompetitor.getId(), storedCompetitor.getName(), MaxPointsReason.NONE));
|
storedPositioningList.add(new com.sap.sse.common.Util.Triple<Serializable, String, MaxPointsReason>(storedCompetitor.getId(), storedCompetitor.getName(), MaxPointsReason.NONE));
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -187,7 +187,7 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends AbstractTestStorin
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStoreAndRetrieveRegattaWithRaceLogFinishPositioningListChangeEvent() {
|
public void testStoreAndRetrieveRegattaWithRaceLogFinishPositioningListChangeEvent() {
|
||||||
Competitor storedCompetitor = DomainFactory.INSTANCE.getOrCreateCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", Color.RED, null, null);
|
Competitor storedCompetitor = DomainFactory.INSTANCE.getOrCreateCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", Color.RED, "someone@nowhere.de", null, null);
|
||||||
CompetitorResults storedPositioningList = new CompetitorResultsImpl();
|
CompetitorResults storedPositioningList = new CompetitorResultsImpl();
|
||||||
storedPositioningList.add(new com.sap.sse.common.Util.Triple<Serializable, String, MaxPointsReason>(storedCompetitor.getId(), storedCompetitor.getName(), MaxPointsReason.NONE));
|
storedPositioningList.add(new com.sap.sse.common.Util.Triple<Serializable, String, MaxPointsReason>(storedCompetitor.getId(), storedCompetitor.getName(), MaxPointsReason.NONE));
|
||||||
|
|
||||||
@@ -217,7 +217,7 @@ public class TestStoringAndRetrievingRaceLogInRegatta extends AbstractTestStorin
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStoreAndRetrieveRegattaWithRaceLogFinishPositioningConfirmedEvent() {
|
public void testStoreAndRetrieveRegattaWithRaceLogFinishPositioningConfirmedEvent() {
|
||||||
Competitor storedCompetitor = DomainFactory.INSTANCE.getOrCreateCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", Color.RED, null, null);
|
Competitor storedCompetitor = DomainFactory.INSTANCE.getOrCreateCompetitor(UUID.randomUUID(), "SAP Extreme Sailing Team", Color.RED, "someone@nowhere.de", null, null);
|
||||||
CompetitorResults storedPositioningList = new CompetitorResultsImpl();
|
CompetitorResults storedPositioningList = new CompetitorResultsImpl();
|
||||||
storedPositioningList.add(new com.sap.sse.common.Util.Triple<Serializable, String, MaxPointsReason>(storedCompetitor.getId(), storedCompetitor.getName(), MaxPointsReason.NONE));
|
storedPositioningList.add(new com.sap.sse.common.Util.Triple<Serializable, String, MaxPointsReason>(storedCompetitor.getId(), storedCompetitor.getName(), MaxPointsReason.NONE));
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -51,6 +51,8 @@ public class CompetitorJsonDeserializer implements JsonDeserializer<Competitor>
|
|||||||
}
|
}
|
||||||
String name = (String) object.get(CompetitorJsonSerializer.FIELD_NAME);
|
String name = (String) object.get(CompetitorJsonSerializer.FIELD_NAME);
|
||||||
String displayColorAsString = (String) object.get(CompetitorJsonSerializer.FIELD_DISPLAY_COLOR);
|
String displayColorAsString = (String) object.get(CompetitorJsonSerializer.FIELD_DISPLAY_COLOR);
|
||||||
|
String email = (String) object.get(CompetitorJsonSerializer.FIELD_EMAIL);
|
||||||
|
|
||||||
final Color displayColor;
|
final Color displayColor;
|
||||||
if (displayColorAsString == null || displayColorAsString.isEmpty()) {
|
if (displayColorAsString == null || displayColorAsString.isEmpty()) {
|
||||||
displayColor = null;
|
displayColor = null;
|
||||||
@@ -67,7 +69,8 @@ public class CompetitorJsonDeserializer implements JsonDeserializer<Competitor>
|
|||||||
boat = boatJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
boat = boatJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
||||||
CompetitorJsonSerializer.FIELD_BOAT));
|
CompetitorJsonSerializer.FIELD_BOAT));
|
||||||
}
|
}
|
||||||
Competitor competitor = competitorStore.getOrCreateCompetitor(competitorId, name, displayColor, team, boat);
|
|
||||||
|
Competitor competitor = competitorStore.getOrCreateCompetitor(competitorId, name, displayColor, email, team, boat);
|
||||||
return competitor;
|
return competitor;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new JsonDeserializationException(e);
|
throw new JsonDeserializationException(e);
|
||||||
|
|||||||
+2
@@ -30,6 +30,7 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
|||||||
public static final String FIELD_TEAM = "team";
|
public static final String FIELD_TEAM = "team";
|
||||||
public static final String FIELD_BOAT = "boat";
|
public static final String FIELD_BOAT = "boat";
|
||||||
public static final String FIELD_DISPLAY_COLOR = "displayColor";
|
public static final String FIELD_DISPLAY_COLOR = "displayColor";
|
||||||
|
public static final String FIELD_EMAIL = "email";
|
||||||
|
|
||||||
private final JsonSerializer<Team> teamJsonSerializer;
|
private final JsonSerializer<Team> teamJsonSerializer;
|
||||||
private final JsonSerializer<Boat> boatJsonSerializer;
|
private final JsonSerializer<Boat> boatJsonSerializer;
|
||||||
@@ -66,6 +67,7 @@ public class CompetitorJsonSerializer implements JsonSerializer<Competitor> {
|
|||||||
}
|
}
|
||||||
result.put(FIELD_NAME, competitor.getName());
|
result.put(FIELD_NAME, competitor.getName());
|
||||||
result.put(FIELD_DISPLAY_COLOR, competitor.getColor() == null ? null : competitor.getColor().getAsHtml());
|
result.put(FIELD_DISPLAY_COLOR, competitor.getColor() == null ? null : competitor.getColor().getAsHtml());
|
||||||
|
result.put(FIELD_EMAIL, competitor.getEmail());
|
||||||
result.put(FIELD_SAILID, competitor.getBoat() == null ? "" : competitor.getBoat().getSailID());
|
result.put(FIELD_SAILID, competitor.getBoat() == null ? "" : competitor.getBoat().getSailID());
|
||||||
final Nationality nationality = competitor.getTeam() == null ? null : competitor.getTeam().getNationality();
|
final Nationality nationality = competitor.getTeam() == null ? null : competitor.getTeam().getNationality();
|
||||||
result.put(FIELD_NATIONALITY, nationality == null ? "" : nationality.getThreeLetterIOCAcronym());
|
result.put(FIELD_NATIONALITY, nationality == null ? "" : nationality.getThreeLetterIOCAcronym());
|
||||||
|
|||||||
+1
-1
@@ -237,7 +237,7 @@ public class RaceLogEventSerializerTest {
|
|||||||
public void testRegisterCompetitorEventSerializer() {
|
public void testRegisterCompetitorEventSerializer() {
|
||||||
// we use the real event type here because we do not want to re-implement the dispatching.
|
// we use the real event type here because we do not want to re-implement the dispatching.
|
||||||
RaceLogEvent event = factory.createRegisterCompetitorEvent(null, author, 0,
|
RaceLogEvent event = factory.createRegisterCompetitorEvent(null, author, 0,
|
||||||
DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null));
|
DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null, null));
|
||||||
serializer.serialize(event);
|
serializer.serialize(event);
|
||||||
verify(registerCompetitorEventSerializer).serialize(event);
|
verify(registerCompetitorEventSerializer).serialize(event);
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ public class CompetitorsResourceTest extends AbstractJaxRsApiTest {
|
|||||||
super.setUp();
|
super.setUp();
|
||||||
DynamicTeam team = new TeamImpl(null, Collections.singleton(new PersonImpl(null, new NationalityImpl(nationality), null, null)), null);
|
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);
|
DynamicBoat boat = new BoatImpl(null, new BoatClassImpl(boatClassName, false), sailID);
|
||||||
racingEventService.getBaseDomainFactory().getOrCreateCompetitor(id, name, null, team, boat);
|
racingEventService.getBaseDomainFactory().getOrCreateCompetitor(id, name, null, null, team, boat);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
+11
-9
@@ -44,8 +44,8 @@ public class LeaderboardsResourceCheckinAndOutTest extends AbstractJaxRsApiTest
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
Competitor c = createCompetitors(1).get(0);
|
Competitor c = createCompetitors(1).get(0);
|
||||||
competitor = racingEventService.getBaseDomainFactory().getOrCreateCompetitor(c.getId(), c.getName(), c.getColor(),
|
competitor = racingEventService.getBaseDomainFactory().getOrCreateCompetitor(c.getId(), c.getName(),
|
||||||
(DynamicTeam) c.getTeam(), (DynamicBoat) c.getBoat());
|
c.getColor(), c.getEmail(), (DynamicTeam) c.getTeam(), (DynamicBoat) c.getBoat());
|
||||||
|
|
||||||
Regatta regatta = new RegattaImpl("regatta", new BoatClassImpl("49er", false), MillisecondsTimePoint.now(),
|
Regatta regatta = new RegattaImpl("regatta", new BoatClassImpl("49er", false), MillisecondsTimePoint.now(),
|
||||||
MillisecondsTimePoint.now(), Collections.singleton(new SeriesImpl("series", false, Collections
|
MillisecondsTimePoint.now(), Collections.singleton(new SeriesImpl("series", false, Collections
|
||||||
@@ -62,7 +62,7 @@ public class LeaderboardsResourceCheckinAndOutTest extends AbstractJaxRsApiTest
|
|||||||
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
|
LeaderboardsResource resource = spyResource(new LeaderboardsResource());
|
||||||
UUID deviceUuid = UUID.randomUUID();
|
UUID deviceUuid = UUID.randomUUID();
|
||||||
|
|
||||||
//checkin
|
// checkin
|
||||||
long fromMillis = 500;
|
long fromMillis = 500;
|
||||||
JSONObject json = new JSONObject();
|
JSONObject json = new JSONObject();
|
||||||
json.put(DeviceMappingConstants.JSON_COMPETITOR_ID_AS_STRING, competitor.getId().toString());
|
json.put(DeviceMappingConstants.JSON_COMPETITOR_ID_AS_STRING, competitor.getId().toString());
|
||||||
@@ -82,22 +82,24 @@ public class LeaderboardsResourceCheckinAndOutTest extends AbstractJaxRsApiTest
|
|||||||
DeviceMapping<Competitor> mappingForC = mappingsForC.get(0);
|
DeviceMapping<Competitor> mappingForC = mappingsForC.get(0);
|
||||||
assertThat("that mapping is for the correct device",
|
assertThat("that mapping is for the correct device",
|
||||||
((SmartphoneUUIDIdentifier) mappingForC.getDevice()).getUUID(), equalTo(deviceUuid));
|
((SmartphoneUUIDIdentifier) mappingForC.getDevice()).getUUID(), equalTo(deviceUuid));
|
||||||
assertThat("that mapping starts at the correct timepoint", mappingForC.getTimeRange().from().asMillis(), equalTo(fromMillis));
|
assertThat("that mapping starts at the correct timepoint", mappingForC.getTimeRange().from().asMillis(),
|
||||||
|
equalTo(fromMillis));
|
||||||
assertThat("that mapping is open-ended", mappingForC.getTimeRange().hasOpenEnd(), equalTo(true));
|
assertThat("that mapping is open-ended", mappingForC.getTimeRange().hasOpenEnd(), equalTo(true));
|
||||||
|
|
||||||
//checkout
|
// checkout
|
||||||
long toMillis = 1000;
|
long toMillis = 1000;
|
||||||
json = new JSONObject();
|
json = new JSONObject();
|
||||||
json.put(DeviceMappingConstants.JSON_TO_MILLIS, toMillis);
|
json.put(DeviceMappingConstants.JSON_TO_MILLIS, toMillis);
|
||||||
json.put(DeviceMappingConstants.JSON_COMPETITOR_ID_AS_STRING, competitor.getId().toString());
|
json.put(DeviceMappingConstants.JSON_COMPETITOR_ID_AS_STRING, competitor.getId().toString());
|
||||||
json.put(DeviceMappingConstants.JSON_DEVICE_UUID, deviceUuid.toString());
|
json.put(DeviceMappingConstants.JSON_DEVICE_UUID, deviceUuid.toString());
|
||||||
|
|
||||||
response = resource.postCheckout(json.toString(), leaderboard.getName());
|
response = resource.postCheckout(json.toString(), leaderboard.getName());
|
||||||
assertThat("checkout returns OK", response.getStatus(), equalTo(Response.Status.OK.getStatusCode()));
|
assertThat("checkout returns OK", response.getStatus(), equalTo(Response.Status.OK.getStatusCode()));
|
||||||
|
|
||||||
mappings = new DeviceCompetitorMappingFinder<>(log).analyze();
|
mappings = new DeviceCompetitorMappingFinder<>(log).analyze();
|
||||||
mappingForC = mappings.get(competitor).get(0);
|
mappingForC = mappings.get(competitor).get(0);
|
||||||
assertThat("mapping now ends at checkout timepoint", mappingForC.getTimeRange().to().asMillis(), equalTo(toMillis));
|
assertThat("mapping now ends at checkout timepoint", mappingForC.getTimeRange().to().asMillis(),
|
||||||
|
equalTo(toMillis));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+1
-1
@@ -54,7 +54,7 @@ public class TeamImageTest extends AbstractJaxRsApiTest {
|
|||||||
DynamicTeam team = new TeamImpl(null, Collections.singleton(new PersonImpl(null, new NationalityImpl(
|
DynamicTeam team = new TeamImpl(null, Collections.singleton(new PersonImpl(null, new NationalityImpl(
|
||||||
nationality), null, null)), null);
|
nationality), null, null)), null);
|
||||||
DynamicBoat boat = new BoatImpl(null, new BoatClassImpl(boatClassName, false), sailID);
|
DynamicBoat boat = new BoatImpl(null, new BoatClassImpl(boatClassName, false), sailID);
|
||||||
racingEventService.getBaseDomainFactory().getOrCreateCompetitor(id, name, null, team, boat);
|
racingEventService.getBaseDomainFactory().getOrCreateCompetitor(id, name, null, null, team, boat);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
+1
-1
@@ -141,7 +141,7 @@ public class CompetitorsResource extends AbstractSailingServerResource {
|
|||||||
.entity("Could not store competitor image").type(MediaType.TEXT_PLAIN).build());
|
.entity("Could not store competitor image").type(MediaType.TEXT_PLAIN).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
getService().getCompetitorStore().updateCompetitor(competitorId, competitor.getName(), competitor.getColor(),
|
getService().getCompetitorStore().updateCompetitor(competitorId, competitor.getName(), competitor.getColor(), competitor.getEmail(),
|
||||||
competitor.getBoat().getSailID(), competitor.getTeam().getNationality(), imageUri);
|
competitor.getBoat().getSailID(), competitor.getTeam().getNationality(), imageUri);
|
||||||
logger.log(Level.INFO, "Set team image for competitor " + competitor.getName());
|
logger.log(Level.INFO, "Set team image for competitor " + competitor.getName());
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -76,7 +76,7 @@ public class CompetitorReplicationTest extends AbstractServerReplicationTest {
|
|||||||
Iterable<Waypoint> emptyWaypointList = Collections.emptyList();
|
Iterable<Waypoint> emptyWaypointList = Collections.emptyList();
|
||||||
final String competitorName = "Der mit dem Kiel zieht";
|
final String competitorName = "Der mit dem Kiel zieht";
|
||||||
Competitor competitor = master.getBaseDomainFactory().getOrCreateCompetitor(
|
Competitor competitor = master.getBaseDomainFactory().getOrCreateCompetitor(
|
||||||
123, competitorName, Color.RED,
|
123, competitorName, Color.RED, "someone@nowhere.de",
|
||||||
new TeamImpl("STG", Collections.singleton(new PersonImpl(competitorName, new NationalityImpl("GER"),
|
new TeamImpl("STG", Collections.singleton(new PersonImpl(competitorName, new NationalityImpl("GER"),
|
||||||
/* dateOfBirth */null, "This is famous " + competitorName)), new PersonImpl("Rigo van Maas",
|
/* dateOfBirth */null, "This is famous " + competitorName)), new PersonImpl("Rigo van Maas",
|
||||||
new NationalityImpl("NED"),
|
new NationalityImpl("NED"),
|
||||||
@@ -106,7 +106,7 @@ public class CompetitorReplicationTest extends AbstractServerReplicationTest {
|
|||||||
|
|
||||||
// now update competitor on master using replicating operation
|
// now update competitor on master using replicating operation
|
||||||
final String newCompetitorName = "Der Vogel, der mit dem Kiel zieht";
|
final String newCompetitorName = "Der Vogel, der mit dem Kiel zieht";
|
||||||
master.apply(new UpdateCompetitor(competitor.getId().toString(), newCompetitorName, competitor.getColor(), competitor.getBoat().getSailID(), competitor.getTeam().getNationality(),
|
master.apply(new UpdateCompetitor(competitor.getId().toString(), newCompetitorName, competitor.getColor(), competitor.getEmail(), competitor.getBoat().getSailID(), competitor.getTeam().getNationality(),
|
||||||
competitor.getTeam().getImage()));
|
competitor.getTeam().getImage()));
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
assertEquals(newCompetitorName, replicatedCompetitor.getName()); // expect in-place update of existing competitor in replica
|
assertEquals(newCompetitorName, replicatedCompetitor.getName()); // expect in-place update of existing competitor in replica
|
||||||
@@ -114,7 +114,7 @@ public class CompetitorReplicationTest extends AbstractServerReplicationTest {
|
|||||||
// now allow for resetting to default through some event, such as receiving a GPS position
|
// now allow for resetting to default through some event, such as receiving a GPS position
|
||||||
master.apply(new AllowCompetitorResetToDefaults(Collections.singleton(competitor.getId().toString())));
|
master.apply(new AllowCompetitorResetToDefaults(Collections.singleton(competitor.getId().toString())));
|
||||||
// modify the competitor on the master "from below" without an UpdateCompetitor operation, only locally:
|
// modify the competitor on the master "from below" without an UpdateCompetitor operation, only locally:
|
||||||
master.getBaseDomainFactory().getCompetitorStore().updateCompetitor(competitor.getId().toString(), competitorName, Color.RED,
|
master.getBaseDomainFactory().getCompetitorStore().updateCompetitor(competitor.getId().toString(), competitorName, Color.RED, competitor.getEmail(),
|
||||||
competitor.getBoat().getSailID(), competitor.getTeam().getNationality(), competitor.getTeam().getImage());
|
competitor.getBoat().getSailID(), competitor.getTeam().getNationality(), competitor.getTeam().getImage());
|
||||||
final RegattaAndRaceIdentifier raceIdentifier = masterRegatta.getRaceIdentifier(raceDefinition);
|
final RegattaAndRaceIdentifier raceIdentifier = masterRegatta.getRaceIdentifier(raceDefinition);
|
||||||
DynamicTrackedRace trackedRace = (DynamicTrackedRace) master.apply(new CreateTrackedRace(raceIdentifier,
|
DynamicTrackedRace trackedRace = (DynamicTrackedRace) master.apply(new CreateTrackedRace(raceIdentifier,
|
||||||
|
|||||||
+1
-1
@@ -71,7 +71,7 @@ public class TrackedRaceContentsReplicationTest extends AbstractServerReplicatio
|
|||||||
// FIXME use master DomainFactory; see bug 592
|
// FIXME use master DomainFactory; see bug 592
|
||||||
final DomainFactory masterDomainFactory = DomainFactory.INSTANCE;
|
final DomainFactory masterDomainFactory = DomainFactory.INSTANCE;
|
||||||
BoatClass boatClass = masterDomainFactory.getOrCreateBoatClass(boatClassName, /* typicallyStartsUpwind */true);
|
BoatClass boatClass = masterDomainFactory.getOrCreateBoatClass(boatClassName, /* typicallyStartsUpwind */true);
|
||||||
competitor = masterDomainFactory.getCompetitorStore().getOrCreateCompetitor("GER 61", "Tina Lutz", Color.RED, new TeamImpl("Tina Lutz + Susann Beucke",
|
competitor = masterDomainFactory.getCompetitorStore().getOrCreateCompetitor("GER 61", "Tina Lutz", Color.RED, "someone@nowhere.de", new TeamImpl("Tina Lutz + Susann Beucke",
|
||||||
(List<PersonImpl>) Arrays.asList(new PersonImpl[] { new PersonImpl("Tina Lutz", DomainFactory.INSTANCE.getOrCreateNationality("GER"), null, null),
|
(List<PersonImpl>) Arrays.asList(new PersonImpl[] { new PersonImpl("Tina Lutz", DomainFactory.INSTANCE.getOrCreateNationality("GER"), null, null),
|
||||||
new PersonImpl("Tina Lutz", DomainFactory.INSTANCE.getOrCreateNationality("GER"), null, null) }),
|
new PersonImpl("Tina Lutz", DomainFactory.INSTANCE.getOrCreateNationality("GER"), null, null) }),
|
||||||
new PersonImpl("Rigo de Mas", DomainFactory.INSTANCE.getOrCreateNationality("NED"), null, null)),
|
new PersonImpl("Rigo de Mas", DomainFactory.INSTANCE.getOrCreateNationality("NED"), null, null)),
|
||||||
|
|||||||
+7
-7
@@ -22,20 +22,20 @@ public class CompetitorStoreTest {
|
|||||||
public void testAddingToTransientStore() {
|
public void testAddingToTransientStore() {
|
||||||
CompetitorStore transientStore = new TransientCompetitorStoreImpl();
|
CompetitorStore transientStore = new TransientCompetitorStoreImpl();
|
||||||
DynamicCompetitor template = AbstractLeaderboardTest.createCompetitor("Test Competitor");
|
DynamicCompetitor template = AbstractLeaderboardTest.createCompetitor("Test Competitor");
|
||||||
Competitor competitor = transientStore.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getTeam(), template.getBoat());
|
Competitor competitor = transientStore.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getEmail(), template.getTeam(), template.getBoat());
|
||||||
assertTrue(competitor != template);
|
assertTrue(competitor != template);
|
||||||
Competitor competitor2 = transientStore.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getTeam(), template.getBoat());
|
Competitor competitor2 = transientStore.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getEmail(), template.getTeam(), template.getBoat());
|
||||||
assertSame(competitor, competitor2);
|
assertSame(competitor, competitor2);
|
||||||
assertEquals(DomainFactory.INSTANCE.getOrCreateNationality("GER"), competitor.getTeam().getNationality());
|
assertEquals(DomainFactory.INSTANCE.getOrCreateNationality("GER"), competitor.getTeam().getNationality());
|
||||||
DynamicTeam differentTeam = AbstractLeaderboardTest.createCompetitor("Test Competitor").getTeam();
|
DynamicTeam differentTeam = AbstractLeaderboardTest.createCompetitor("Test Competitor").getTeam();
|
||||||
differentTeam.setNationality(DomainFactory.INSTANCE.getOrCreateNationality("GHA")); // Ghana
|
differentTeam.setNationality(DomainFactory.INSTANCE.getOrCreateNationality("GHA")); // Ghana
|
||||||
Competitor competitor3 = transientStore.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), differentTeam, template.getBoat());
|
Competitor competitor3 = transientStore.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getEmail(), differentTeam, template.getBoat());
|
||||||
assertSame(competitor, competitor3); // use existing competitor despite the different team
|
assertSame(competitor, competitor3); // use existing competitor despite the different team
|
||||||
assertSame(competitor.getTeam(), competitor3.getTeam());
|
assertSame(competitor.getTeam(), competitor3.getTeam());
|
||||||
|
|
||||||
// now mark the competitor as to update from defaults
|
// now mark the competitor as to update from defaults
|
||||||
transientStore.allowCompetitorResetToDefaults(competitor);
|
transientStore.allowCompetitorResetToDefaults(competitor);
|
||||||
Competitor competitor4 = transientStore.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), differentTeam, template.getBoat());
|
Competitor competitor4 = transientStore.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getEmail(), differentTeam, template.getBoat());
|
||||||
assertSame(competitor, competitor4); // expecting an in-place update
|
assertSame(competitor, competitor4); // expecting an in-place update
|
||||||
assertEquals(differentTeam.getNationality(), competitor4.getTeam().getNationality());
|
assertEquals(differentTeam.getNationality(), competitor4.getTeam().getNationality());
|
||||||
}
|
}
|
||||||
@@ -44,7 +44,7 @@ public class CompetitorStoreTest {
|
|||||||
public void testPersistentCompetitorStore() {
|
public void testPersistentCompetitorStore() {
|
||||||
CompetitorStore persistentStore1 = new PersistentCompetitorStore(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(), /* clearStore */ true, null);
|
CompetitorStore persistentStore1 = new PersistentCompetitorStore(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(), /* clearStore */ true, null);
|
||||||
DynamicCompetitor template = AbstractLeaderboardTest.createCompetitor("Test Competitor");
|
DynamicCompetitor template = AbstractLeaderboardTest.createCompetitor("Test Competitor");
|
||||||
Competitor competitor = persistentStore1.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getTeam(), template.getBoat());
|
Competitor competitor = persistentStore1.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getEmail(), template.getTeam(), template.getBoat());
|
||||||
|
|
||||||
CompetitorStore persistentStore2 = new PersistentCompetitorStore(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(), /* clearStore */ false, null);
|
CompetitorStore persistentStore2 = new PersistentCompetitorStore(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(), /* clearStore */ false, null);
|
||||||
Competitor competitor2 = persistentStore2.getExistingCompetitorById(template.getId());
|
Competitor competitor2 = persistentStore2.getExistingCompetitorById(template.getId());
|
||||||
@@ -53,14 +53,14 @@ public class CompetitorStoreTest {
|
|||||||
assertEquals(template.getTeam().getNationality(), competitor2.getTeam().getNationality());
|
assertEquals(template.getTeam().getNationality(), competitor2.getTeam().getNationality());
|
||||||
DynamicTeam differentTeam = AbstractLeaderboardTest.createCompetitor("Test Competitor").getTeam();
|
DynamicTeam differentTeam = AbstractLeaderboardTest.createCompetitor("Test Competitor").getTeam();
|
||||||
differentTeam.setNationality(DomainFactory.INSTANCE.getOrCreateNationality("GHA")); // Ghana
|
differentTeam.setNationality(DomainFactory.INSTANCE.getOrCreateNationality("GHA")); // Ghana
|
||||||
Competitor competitor3 = persistentStore2.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), differentTeam, template.getBoat());
|
Competitor competitor3 = persistentStore2.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getEmail(), differentTeam, template.getBoat());
|
||||||
assertSame(competitor2, competitor3); // use existing competitor despite the different team
|
assertSame(competitor2, competitor3); // use existing competitor despite the different team
|
||||||
assertNotSame(differentTeam, competitor2.getTeam()); // team expected to remain unchanged
|
assertNotSame(differentTeam, competitor2.getTeam()); // team expected to remain unchanged
|
||||||
assertEquals(competitor.getTeam().getNationality(), competitor3.getTeam().getNationality()); // no updatability requested; nationality expected to remain unchanged
|
assertEquals(competitor.getTeam().getNationality(), competitor3.getTeam().getNationality()); // no updatability requested; nationality expected to remain unchanged
|
||||||
|
|
||||||
// now mark the competitor as to update from defaults
|
// now mark the competitor as to update from defaults
|
||||||
persistentStore2.allowCompetitorResetToDefaults(competitor2);
|
persistentStore2.allowCompetitorResetToDefaults(competitor2);
|
||||||
Competitor competitor4 = persistentStore2.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), differentTeam, template.getBoat());
|
Competitor competitor4 = persistentStore2.getOrCreateCompetitor(template.getId(), template.getName(), template.getColor(), template.getEmail(), differentTeam, template.getBoat());
|
||||||
assertSame(competitor2, competitor4); // expecting an in-place update
|
assertSame(competitor2, competitor4); // expecting an in-place update
|
||||||
assertEquals(differentTeam.getNationality(), competitor4.getTeam().getNationality());
|
assertEquals(differentTeam.getNationality(), competitor4.getTeam().getNationality());
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,7 @@ public class LeaderboardStorageTest extends TestCase {
|
|||||||
DynamicBoat boat = new BoatImpl("woot", service.getBaseDomainFactory().getOrCreateBoatClass("H16"), "70155");
|
DynamicBoat boat = new BoatImpl("woot", service.getBaseDomainFactory().getOrCreateBoatClass("H16"), "70155");
|
||||||
String competitorId = "testC";
|
String competitorId = "testC";
|
||||||
Competitor competitor = service.getBaseDomainFactory().getOrCreateCompetitor(competitorId, "Test C", null,
|
Competitor competitor = service.getBaseDomainFactory().getOrCreateCompetitor(competitorId, "Test C", null,
|
||||||
team, boat);
|
null, team, boat);
|
||||||
|
|
||||||
double carriedPoints = 2.0;
|
double carriedPoints = 2.0;
|
||||||
leaderboard.setCarriedPoints(competitor, carriedPoints);
|
leaderboard.setCarriedPoints(competitor, carriedPoints);
|
||||||
|
|||||||
+3
-3
@@ -749,7 +749,7 @@ public class MasterDataImportTest {
|
|||||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||||
Competitor competitor = sourceDomainFactory.getOrCreateCompetitor(competitorUUID, "Froderik", Color.RED, team,
|
Competitor competitor = sourceDomainFactory.getOrCreateCompetitor(competitorUUID, "Froderik", Color.RED, "noone@nowhere.de", team,
|
||||||
boat);
|
boat);
|
||||||
competitors.add(competitor);
|
competitors.add(competitor);
|
||||||
UUID competitor2UUID = UUID.randomUUID();
|
UUID competitor2UUID = UUID.randomUUID();
|
||||||
@@ -759,7 +759,7 @@ public class MasterDataImportTest {
|
|||||||
DynamicTeam team2 = new TeamImpl("Pros2", sailors2, coach2);
|
DynamicTeam team2 = new TeamImpl("Pros2", sailors2, coach2);
|
||||||
DynamicBoat boat2 = new BoatImpl("FastBoat", boatClass, "GER70133");
|
DynamicBoat boat2 = new BoatImpl("FastBoat", boatClass, "GER70133");
|
||||||
Competitor competitor2 = sourceDomainFactory.getCompetitorStore().getOrCreateCompetitor(competitor2UUID,
|
Competitor competitor2 = sourceDomainFactory.getCompetitorStore().getOrCreateCompetitor(competitor2UUID,
|
||||||
"Froderik", Color.RED, team2, boat2);
|
"Froderik", Color.RED, "noone@nowhere.de", team2, boat2);
|
||||||
competitors.add(competitor2);
|
competitors.add(competitor2);
|
||||||
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
|
RaceColumn raceColumn = leaderboard.getRaceColumnByName(raceColumnName);
|
||||||
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
|
TrackedRace trackedRace = new DummyTrackedRace(raceId, competitors, regatta, null, sourceService.getWindStore());
|
||||||
@@ -1206,7 +1206,7 @@ public class MasterDataImportTest {
|
|||||||
DynamicBoat boatToOverride = new BoatImpl("Wingy", boatClassToOverride, "GER70133");
|
DynamicBoat boatToOverride = new BoatImpl("Wingy", boatClassToOverride, "GER70133");
|
||||||
String competitorOldName = "oldName";
|
String competitorOldName = "oldName";
|
||||||
Competitor competitorToOverride = domainFactory.getOrCreateCompetitor(competitorUUID, competitorOldName,
|
Competitor competitorToOverride = domainFactory.getOrCreateCompetitor(competitorUUID, competitorOldName,
|
||||||
Color.BLUE, teamToOverride, boatToOverride);
|
Color.BLUE, "noone@nowhere.de", teamToOverride, boatToOverride);
|
||||||
competitorsToOverride.add(competitorToOverride);
|
competitorsToOverride.add(competitorToOverride);
|
||||||
|
|
||||||
Leaderboard leaderboardToOverride = destService.addRegattaLeaderboard(
|
Leaderboard leaderboardToOverride = destService.addRegattaLeaderboard(
|
||||||
|
|||||||
+1
-1
@@ -105,7 +105,7 @@ public class WindByRaceLogTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Competitor createCompetitor(final DomainFactory masterDomainFactory) {
|
private Competitor createCompetitor(final DomainFactory masterDomainFactory) {
|
||||||
return masterDomainFactory.getOrCreateCompetitor("GER 61", "Sailor", Color.RED, new TeamImpl("Sailor",
|
return masterDomainFactory.getOrCreateCompetitor("GER 61", "Sailor", Color.RED, "noone@nowhere.de", new TeamImpl("Sailor",
|
||||||
(List<PersonImpl>) Arrays.asList(new PersonImpl[] { new PersonImpl("Sailor 1", DomainFactory.INSTANCE.getOrCreateNationality("GER"), null, null)}),
|
(List<PersonImpl>) Arrays.asList(new PersonImpl[] { new PersonImpl("Sailor 1", DomainFactory.INSTANCE.getOrCreateNationality("GER"), null, null)}),
|
||||||
new PersonImpl("Sailor 2", DomainFactory.INSTANCE.getOrCreateNationality("NED"), null, null)),
|
new PersonImpl("Sailor 2", DomainFactory.INSTANCE.getOrCreateNationality("NED"), null, null)),
|
||||||
new BoatImpl("GER 61", DomainFactory.INSTANCE.getOrCreateBoatClass("470", /* typicallyStartsUpwind */ true), "GER 61"));
|
new BoatImpl("GER 61", DomainFactory.INSTANCE.getOrCreateBoatClass("470", /* typicallyStartsUpwind */ true), "GER 61"));
|
||||||
|
|||||||
+2
-2
@@ -96,9 +96,9 @@ public class PersistentCompetitorStore extends TransientCompetitorStoreImpl impl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Competitor updateCompetitor(String idAsString, String newName, Color newRgbDisplayColor, String newSailId,
|
public Competitor updateCompetitor(String idAsString, String newName, Color newRgbDisplayColor, String newEmail, String newSailId,
|
||||||
Nationality newNationality, URI newTeamImageUri) {
|
Nationality newNationality, URI newTeamImageUri) {
|
||||||
Competitor result = super.updateCompetitor(idAsString, newName, newRgbDisplayColor, newSailId, newNationality,
|
Competitor result = super.updateCompetitor(idAsString, newName, newRgbDisplayColor, newEmail, newSailId, newNationality,
|
||||||
newTeamImageUri);
|
newTeamImageUri);
|
||||||
storeTo.storeCompetitor(result);
|
storeTo.storeCompetitor(result);
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
+2
-2
@@ -462,7 +462,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
|||||||
@Override
|
@Override
|
||||||
public void competitorUpdated(Competitor competitor) {
|
public void competitorUpdated(Competitor competitor) {
|
||||||
replicate(new UpdateCompetitor(competitor.getId().toString(), competitor.getName(), competitor
|
replicate(new UpdateCompetitor(competitor.getId().toString(), competitor.getName(), competitor
|
||||||
.getColor(), competitor.getBoat().getSailID(), competitor.getTeam().getNationality(),
|
.getColor(), competitor.getEmail(), competitor.getBoat().getSailID(), competitor.getTeam().getNationality(),
|
||||||
competitor.getTeam().getImage()));
|
competitor.getTeam().getImage()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -2354,7 +2354,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
|||||||
for (Competitor competitor : ((CompetitorStore) ois.readObject()).getCompetitors()) {
|
for (Competitor competitor : ((CompetitorStore) ois.readObject()).getCompetitors()) {
|
||||||
DynamicCompetitor dynamicCompetitor = (DynamicCompetitor) competitor;
|
DynamicCompetitor dynamicCompetitor = (DynamicCompetitor) competitor;
|
||||||
competitorStore.getOrCreateCompetitor(dynamicCompetitor.getId(), dynamicCompetitor.getName(),
|
competitorStore.getOrCreateCompetitor(dynamicCompetitor.getId(), dynamicCompetitor.getName(),
|
||||||
dynamicCompetitor.getColor(), dynamicCompetitor.getTeam(), dynamicCompetitor.getBoat());
|
dynamicCompetitor.getColor(), dynamicCompetitor.getEmail(), dynamicCompetitor.getTeam(), dynamicCompetitor.getBoat());
|
||||||
}
|
}
|
||||||
logoutput.append("Received " + competitorStore.size() + " NEW competitors\n");
|
logoutput.append("Received " + competitorStore.size() + " NEW competitors\n");
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -14,6 +14,7 @@ public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Compet
|
|||||||
private final String newName;
|
private final String newName;
|
||||||
private final Color newDisplayColor;
|
private final Color newDisplayColor;
|
||||||
private final String newSailId;
|
private final String newSailId;
|
||||||
|
private final String newEmail;
|
||||||
private final Nationality newNationality;
|
private final Nationality newNationality;
|
||||||
private final URI newTeamImageUri;
|
private final URI newTeamImageUri;
|
||||||
|
|
||||||
@@ -24,7 +25,7 @@ public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Compet
|
|||||||
* if <code>null</code>, the competitor obtains the "NONE" nationality, usually represented by a white
|
* if <code>null</code>, the competitor obtains the "NONE" nationality, usually represented by a white
|
||||||
* flag
|
* flag
|
||||||
*/
|
*/
|
||||||
public UpdateCompetitor(String idAsString, String newName, Color newDisplayColor, String newSailId,
|
public UpdateCompetitor(String idAsString, String newName, Color newDisplayColor, String newEmail, String newSailId,
|
||||||
Nationality newNationality, URI newTeamImageUri) {
|
Nationality newNationality, URI newTeamImageUri) {
|
||||||
super();
|
super();
|
||||||
this.idAsString = idAsString;
|
this.idAsString = idAsString;
|
||||||
@@ -33,6 +34,7 @@ public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Compet
|
|||||||
this.newSailId = newSailId;
|
this.newSailId = newSailId;
|
||||||
this.newNationality = newNationality;
|
this.newNationality = newNationality;
|
||||||
this.newTeamImageUri = newTeamImageUri;
|
this.newTeamImageUri = newTeamImageUri;
|
||||||
|
this.newEmail = newEmail;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -46,7 +48,7 @@ public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Compet
|
|||||||
@Override
|
@Override
|
||||||
public Competitor internalApplyTo(RacingEventService toState) throws Exception {
|
public Competitor internalApplyTo(RacingEventService toState) throws Exception {
|
||||||
Competitor result = toState.getBaseDomainFactory().getCompetitorStore()
|
Competitor result = toState.getBaseDomainFactory().getCompetitorStore()
|
||||||
.updateCompetitor(idAsString, newName, newDisplayColor, newSailId, newNationality,
|
.updateCompetitor(idAsString, newName, newDisplayColor, newEmail, newSailId, newNationality,
|
||||||
newTeamImageUri);
|
newTeamImageUri);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -201,11 +201,12 @@ public class StructureImporter {
|
|||||||
String idAsString = person.getPersonID();
|
String idAsString = person.getPersonID();
|
||||||
String name = person.getGivenName() + " " + person.getFamilyName();
|
String name = person.getGivenName() + " " + person.getFamilyName();
|
||||||
Color color = null;
|
Color color = null;
|
||||||
|
String email = null;
|
||||||
Nationality nationality = (person.getNOC() == null) ? null : getNationality(person.getNOC()
|
Nationality nationality = (person.getNOC() == null) ? null : getNationality(person.getNOC()
|
||||||
.toString());
|
.toString());
|
||||||
BoatAndTeam boatAndTeam = getBoatAndTeam(idAsString, name, nationality, boatClass);
|
BoatAndTeam boatAndTeam = getBoatAndTeam(idAsString, name, nationality, boatClass);
|
||||||
this.baseDomainFactory.convertToCompetitorDTO(this.baseDomainFactory.getOrCreateCompetitor(
|
this.baseDomainFactory.convertToCompetitorDTO(this.baseDomainFactory.getOrCreateCompetitor(
|
||||||
UUID.fromString(idAsString), name, color, boatAndTeam.getTeam(), boatAndTeam.getBoat()));
|
UUID.fromString(idAsString), name, color, email, boatAndTeam.getTeam(), boatAndTeam.getBoat()));
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user