mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-24 13:03:55 +00:00
allow a competitor to be modified through the UpdateCompetitor operation
This commit is contained in:
1 parent
5068f0268a
commit
fe8bd57a19
30 files changed
+354
-185
No files matched your search
-1
@@ -7,5 +7,4 @@ public interface Competitor extends Named, WithID, IsManagedBySharedDomainFactor
|
||||
Team getTeam();
|
||||
|
||||
Boat getBoat();
|
||||
|
||||
}
|
||||
+12
-1
@@ -3,6 +3,9 @@ package com.sap.sailing.domain.base;
|
||||
import java.io.Serializable;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicCompetitor;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.common.MarkType;
|
||||
import com.sap.sailing.domain.common.NauticalSide;
|
||||
|
||||
@@ -74,10 +77,18 @@ public interface SharedDomainFactory {
|
||||
|
||||
Competitor getExistingCompetitorById(Serializable competitorId);
|
||||
|
||||
Competitor getOrCreateCompetitor(Serializable competitorId, String name, Team team, Boat boat);
|
||||
Competitor getOrCreateCompetitor(Serializable competitorId, String name, DynamicTeam team, DynamicBoat boat);
|
||||
|
||||
/**
|
||||
* Same as {@link #getOrCreateCompetitor(Serializable, String, DynamicTeam, DynamicBoat)} but returns the writable
|
||||
* specialization of the {@link Competitor} interface. Use with care because the setters offered by the <code>Dynamic...</code>
|
||||
* subinterfaces don't automatically replicate or store the changes.
|
||||
*/
|
||||
DynamicCompetitor getOrCreateDynamicCompetitor(UUID competitorId, String name, DynamicTeam team, DynamicBoat boat);
|
||||
|
||||
CourseArea getOrCreateCourseArea(Serializable courseAreaId, String name);
|
||||
|
||||
CourseArea getExistingCourseAreaById(Serializable courseAreaId);
|
||||
|
||||
|
||||
}
|
||||
+7
-3
@@ -1,13 +1,12 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.common.impl.NamedImpl;
|
||||
|
||||
public class BoatImpl extends NamedImpl implements Boat {
|
||||
public class BoatImpl extends NamedImpl implements DynamicBoat {
|
||||
private static final long serialVersionUID = 3489730487528955788L;
|
||||
private final BoatClass boatClass;
|
||||
private final String sailID;
|
||||
private String sailID;
|
||||
|
||||
public BoatImpl(String name, BoatClass boatClass, String sailID) {
|
||||
super(name);
|
||||
@@ -24,4 +23,9 @@ public class BoatImpl extends NamedImpl implements Boat {
|
||||
public String getSailID() {
|
||||
return sailID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSailId(String newSailId) {
|
||||
this.sailID = newSailId;
|
||||
}
|
||||
}
|
||||
+18
-10
@@ -2,37 +2,45 @@ package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.common.impl.NamedImpl;
|
||||
|
||||
public class CompetitorImpl extends NamedImpl implements Competitor {
|
||||
public class CompetitorImpl implements DynamicCompetitor {
|
||||
private static final long serialVersionUID = 294603681016643157L;
|
||||
private final Team team;
|
||||
private final Boat boat;
|
||||
private final DynamicTeam team;
|
||||
private final DynamicBoat boat;
|
||||
private final Serializable id;
|
||||
private String name;
|
||||
|
||||
public CompetitorImpl(Serializable id, String name, Team team, Boat boat) {
|
||||
super(name);
|
||||
public CompetitorImpl(Serializable id, String name, DynamicTeam team, DynamicBoat boat) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.team = team;
|
||||
this.boat = boat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(String newName) {
|
||||
this.name = newName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Serializable getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Team getTeam() {
|
||||
public DynamicTeam getTeam() {
|
||||
return team;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boat getBoat() {
|
||||
public DynamicBoat getBoat() {
|
||||
return boat;
|
||||
}
|
||||
|
||||
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
|
||||
public interface DynamicBoat extends Boat {
|
||||
void setSailId(String newSailId);
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.common.Renamable;
|
||||
|
||||
public interface DynamicCompetitor extends Competitor, Renamable {
|
||||
DynamicBoat getBoat();
|
||||
DynamicTeam getTeam();
|
||||
}
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
|
||||
public interface DynamicPerson extends Person {
|
||||
void setNationality(Nationality newNationality);
|
||||
}
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
|
||||
public interface DynamicTeam extends Team {
|
||||
void setNationality(Nationality newNationality);
|
||||
}
|
||||
+7
-3
@@ -4,12 +4,11 @@ import java.io.InputStream;
|
||||
import java.util.Date;
|
||||
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.common.impl.NamedImpl;
|
||||
|
||||
public class PersonImpl extends NamedImpl implements Person {
|
||||
public class PersonImpl extends NamedImpl implements DynamicPerson {
|
||||
private static final long serialVersionUID = -2104903799224233508L;
|
||||
private final Nationality nationality;
|
||||
private Nationality nationality;
|
||||
private final Date dateOfBirth;
|
||||
private final String description;
|
||||
|
||||
@@ -29,6 +28,11 @@ public class PersonImpl extends NamedImpl implements Person {
|
||||
public Nationality getNationality() {
|
||||
return nationality;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNationality(Nationality newNationality) {
|
||||
this.nationality = newNationality;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getDateOfBirth() {
|
||||
|
||||
+10
-4
@@ -2,15 +2,14 @@ package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.common.impl.NamedImpl;
|
||||
|
||||
public class TeamImpl extends NamedImpl implements Team {
|
||||
public class TeamImpl extends NamedImpl implements DynamicTeam {
|
||||
private static final long serialVersionUID = 4646922280429210183L;
|
||||
private final Iterable<? extends Person> sailors;
|
||||
private final Iterable<? extends DynamicPerson> sailors;
|
||||
private final Person coach;
|
||||
|
||||
public TeamImpl(String name, Iterable<? extends Person> sailors, Person coach) {
|
||||
public TeamImpl(String name, Iterable<? extends DynamicPerson> sailors, Person coach) {
|
||||
super(name);
|
||||
this.sailors = sailors;
|
||||
this.coach = coach;
|
||||
@@ -39,4 +38,11 @@ public class TeamImpl extends NamedImpl implements Team {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNationality(Nationality newNationality) {
|
||||
for (Person sailor : getSailors()) {
|
||||
((DynamicPerson) sailor).setNationality(newNationality);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+7
-7
@@ -9,18 +9,18 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicPerson;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
@@ -41,9 +41,9 @@ import com.sap.sailing.domain.swisstimingadapter.Mark;
|
||||
import com.sap.sailing.domain.swisstimingadapter.MessageType;
|
||||
import com.sap.sailing.domain.swisstimingadapter.Race;
|
||||
import com.sap.sailing.domain.swisstimingadapter.RaceSpecificMessageLoader;
|
||||
import com.sap.sailing.domain.swisstimingadapter.StartList;
|
||||
import com.sap.sailing.domain.swisstimingadapter.RaceType;
|
||||
import com.sap.sailing.domain.swisstimingadapter.RaceType.OlympicRaceCode;
|
||||
import com.sap.sailing.domain.swisstimingadapter.StartList;
|
||||
import com.sap.sailing.domain.swisstimingadapter.SwissTimingFactory;
|
||||
import com.sap.sailing.domain.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.tracking.MarkPassing;
|
||||
@@ -128,13 +128,13 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
public Competitor getOrCreateCompetitor(com.sap.sailing.domain.swisstimingadapter.Competitor competitor, RaceType raceType) {
|
||||
Competitor result = getCompetitorByBoatIDAndRaceType(competitor.getBoatID(), raceType);
|
||||
if (result == null) {
|
||||
Boat boat = new BoatImpl(competitor.getName(), raceType.getBoatClass(), competitor.getBoatID());
|
||||
List<Person> teamMembers = new ArrayList<Person>();
|
||||
DynamicBoat boat = new BoatImpl(competitor.getName(), raceType.getBoatClass(), competitor.getBoatID());
|
||||
List<DynamicPerson> teamMembers = new ArrayList<DynamicPerson>();
|
||||
for (String teamMemberName : competitor.getName().split("[-+&]")) {
|
||||
teamMembers.add(new PersonImpl(teamMemberName.trim(), getOrCreateNationality(competitor.getThreeLetterIOCCode()),
|
||||
/* dateOfBirth */ null, teamMemberName.trim()));
|
||||
}
|
||||
Team team = new TeamImpl(competitor.getName(), teamMembers, /* coach */ null);
|
||||
DynamicTeam team = new TeamImpl(competitor.getName(), teamMembers, /* coach */ null);
|
||||
result = baseDomainFactory.getOrCreateCompetitor(getCompetitorID(competitor.getBoatID(), raceType),
|
||||
competitor.getName(), team, boat);
|
||||
}
|
||||
|
||||
+4
-4
@@ -17,11 +17,11 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicPerson;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.domain.base.impl.TeamImpl;
|
||||
import com.sap.sailing.domain.common.Position;
|
||||
@@ -114,8 +114,8 @@ public abstract class StoredTrackBasedTest extends TrackBasedTest {
|
||||
Map<Competitor, DynamicGPSFixTrack<Competitor, GPSFixMoving>> tracks = new HashMap<Competitor, DynamicGPSFixTrack<Competitor,GPSFixMoving>>();
|
||||
final String KIELER_WOCHE = "Kieler Woche";
|
||||
for (String competitorName : getCompetitorNamesOfStoredTracks(KIELER_WOCHE)) {
|
||||
Person p = new PersonImpl(competitorName, /* nationality */ null, /* dateOfBirth */ null, /* description */ null);
|
||||
Team t = new TeamImpl(competitorName, Collections.singleton(p), /* coach */ null);
|
||||
DynamicPerson p = new PersonImpl(competitorName, /* nationality */ null, /* dateOfBirth */ null, /* description */ null);
|
||||
DynamicTeam t = new TeamImpl(competitorName, Collections.singleton(p), /* coach */ null);
|
||||
Competitor c = new CompetitorImpl(competitorName, competitorName, t, new BoatImpl(competitorName,
|
||||
new BoatClassImpl("505", /* typicallyStartsUpwind */ true), null));
|
||||
DynamicGPSFixTrack<Competitor, GPSFixMoving> track = readTrack(c, KIELER_WOCHE);
|
||||
|
||||
+12
-12
@@ -19,21 +19,21 @@ import java.util.UUID;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.ControlPoint;
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicPerson;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.base.impl.KilometersPerHourSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||
@@ -87,9 +87,9 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
private final Map<TracTracControlPoint, com.sap.sailing.domain.base.ControlPoint> controlPointCache =
|
||||
new HashMap<TracTracControlPoint, com.sap.sailing.domain.base.ControlPoint>();
|
||||
|
||||
private final Map<Pair<String, UUID>, Person> personCache = new HashMap<>();
|
||||
private final Map<Pair<String, UUID>, DynamicPerson> personCache = new HashMap<>();
|
||||
|
||||
private final Map<Serializable, Team> teamCache = new HashMap<>();
|
||||
private final Map<Serializable, DynamicTeam> teamCache = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Caches regattas by their name and their boat class's name
|
||||
@@ -245,20 +245,20 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
nationality = null;
|
||||
logger.log(Level.SEVERE, "Unknown nationality "+nationalityAsString+" for competitor "+name+"; leaving null", iae);
|
||||
}
|
||||
Team team = getOrCreateTeam(name, nationality, competitorId);
|
||||
Boat boat = new BoatImpl(shortName, boatClass, shortName);
|
||||
DynamicTeam team = getOrCreateTeam(name, nationality, competitorId);
|
||||
DynamicBoat boat = new BoatImpl(shortName, boatClass, shortName);
|
||||
result = baseDomainFactory.getOrCreateCompetitor(competitorId, name, team, boat);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Team getOrCreateTeam(String name, Nationality nationality, UUID competitorId) {
|
||||
public DynamicTeam getOrCreateTeam(String name, Nationality nationality, UUID competitorId) {
|
||||
synchronized (teamCache) {
|
||||
Team result = teamCache.get(competitorId);
|
||||
DynamicTeam result = teamCache.get(competitorId);
|
||||
if (result == null) {
|
||||
String[] sailorNames = name.split("\\b*\\+\\b*");
|
||||
List<Person> sailors = new ArrayList<Person>();
|
||||
List<DynamicPerson> sailors = new ArrayList<DynamicPerson>();
|
||||
for (String sailorName : sailorNames) {
|
||||
sailors.add(getOrCreatePerson(sailorName.trim(), nationality, competitorId));
|
||||
}
|
||||
@@ -270,10 +270,10 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Person getOrCreatePerson(String name, Nationality nationality, UUID competitorId) {
|
||||
public DynamicPerson getOrCreatePerson(String name, Nationality nationality, UUID competitorId) {
|
||||
synchronized (personCache) {
|
||||
Pair<String, UUID> key = new Pair<String, UUID>(name, competitorId);
|
||||
Person result = personCache.get(key);
|
||||
DynamicPerson result = personCache.get(key);
|
||||
if (result == null) {
|
||||
result = new PersonImpl(name, nationality, /* date of birth unknown */null, /* description */"");
|
||||
personCache.put(key, result);
|
||||
|
||||
@@ -2,6 +2,9 @@ package com.sap.sailing.domain.base;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
|
||||
/**
|
||||
* Manages a set of {@link Competitor} objects. There may be a transient implementation based on a simple cache,
|
||||
* and there may be persistent implementations.
|
||||
@@ -13,7 +16,7 @@ public interface CompetitorStore {
|
||||
|
||||
Competitor getExistingCompetitorById(Serializable competitorId);
|
||||
|
||||
Competitor getOrCreateCompetitor(Serializable competitorId, String name, Team team, Boat boat);
|
||||
Competitor getOrCreateCompetitor(Serializable competitorId, String name, DynamicTeam team, DynamicBoat boat);
|
||||
|
||||
int size();
|
||||
|
||||
@@ -22,7 +25,18 @@ public interface CompetitorStore {
|
||||
*/
|
||||
void clear();
|
||||
|
||||
Iterable<Competitor> getCompetitors();
|
||||
Iterable<? extends Competitor> getCompetitors();
|
||||
|
||||
void removeCompetitor(Competitor competitor);
|
||||
|
||||
/**
|
||||
* Updates the competitor with {@link Competitor#getId() ID} <code>id</code> by setting the name, sail ID and nationality to
|
||||
* the values provided. Doing so will not fire any events nor will it replicate this change from a master to any replicas.
|
||||
* The calling client has to make sure that the changes applied will reach replicas and all other interested clients. It will
|
||||
* be sufficient to ensure that subsequent DTOs produced from the competitor modified will reflect the changes.<p>
|
||||
*
|
||||
* If no competitor with the ID requested is found, the call is a no-op, doing nothing, not even throwing an exception.
|
||||
* @return TODO
|
||||
*/
|
||||
Competitor updateCompetitor(Serializable id, String newName, String newSailId, Nationality newNationality);
|
||||
}
|
||||
+7
-3
@@ -14,11 +14,11 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorStore;
|
||||
@@ -30,7 +30,6 @@ import com.sap.sailing.domain.base.Gate;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.ObjectInputStreamResolvingAgainstDomainFactory;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.common.CountryCode;
|
||||
import com.sap.sailing.domain.common.Distance;
|
||||
@@ -300,10 +299,15 @@ public class DomainFactoryImpl implements DomainFactory {
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized Competitor getOrCreateCompetitor(Serializable competitorId, String name, Team team, Boat boat) {
|
||||
public synchronized Competitor getOrCreateCompetitor(Serializable competitorId, String name, DynamicTeam team, DynamicBoat boat) {
|
||||
return competitorStore.getOrCreateCompetitor(competitorId, name, team, boat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DynamicCompetitor getOrCreateDynamicCompetitor(UUID fromString, String name, DynamicTeam team, DynamicBoat boat) {
|
||||
return (DynamicCompetitor) getOrCreateDynamicCompetitor(fromString, name, team, boat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ObjectInputStreamResolvingAgainstDomainFactory createObjectInputStreamResolvingAgainstThisFactory(InputStream inputStream) throws IOException {
|
||||
return new ObjectInputStreamResolvingAgainstDomainFactoryImpl(inputStream, this);
|
||||
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
package com.sap.sailing.domain.base.impl;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sailing.domain.base.CompetitorStore;
|
||||
|
||||
public interface DynamicCompetitorStore extends CompetitorStore {
|
||||
@Override
|
||||
DynamicCompetitor getExistingCompetitorById(Serializable competitorId);
|
||||
|
||||
@Override
|
||||
DynamicCompetitor getOrCreateCompetitor(Serializable competitorId, String name, DynamicTeam team, DynamicBoat boat);
|
||||
|
||||
@Override
|
||||
Iterable<? extends DynamicCompetitor> getCompetitors();
|
||||
|
||||
}
|
||||
+14
-4
@@ -4,10 +4,9 @@ import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorStore;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
|
||||
public class TransientCompetitorStoreImpl implements CompetitorStore, Serializable {
|
||||
private static final long serialVersionUID = -4198298775476586931L;
|
||||
@@ -17,7 +16,7 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
competitorCache = new ConcurrentHashMap<>();
|
||||
}
|
||||
|
||||
private Competitor createCompetitor(Serializable id, String name, Team team, Boat boat) {
|
||||
private Competitor createCompetitor(Serializable id, String name, DynamicTeam team, DynamicBoat boat) {
|
||||
Competitor result = new CompetitorImpl(id, name, team, boat);
|
||||
addNewCompetitor(id, result);
|
||||
return result;
|
||||
@@ -33,7 +32,7 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
}
|
||||
|
||||
@Override
|
||||
public Competitor getOrCreateCompetitor(Serializable competitorId, String name, Team team, Boat boat) {
|
||||
public Competitor getOrCreateCompetitor(Serializable competitorId, String name, DynamicTeam team, DynamicBoat boat) {
|
||||
Competitor result = getExistingCompetitorById(competitorId); // avoid synchronization for successful read access
|
||||
if (result == null) {
|
||||
synchronized(this) {
|
||||
@@ -70,5 +69,16 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
public void removeCompetitor(Competitor competitor) {
|
||||
competitorCache.remove(competitor.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Competitor updateCompetitor(Serializable id, String newName, String newSailId, Nationality newNationality) {
|
||||
DynamicCompetitor competitor = (DynamicCompetitor) getExistingCompetitorById(id);
|
||||
if (competitor != null) {
|
||||
competitor.setName(newName);
|
||||
competitor.getBoat().setSailId(newSailId);
|
||||
competitor.getTeam().setNationality(newNationality);
|
||||
}
|
||||
return competitor;
|
||||
}
|
||||
|
||||
}
|
||||
+3
-3
@@ -2,14 +2,14 @@ package com.sap.sailing.server.gateway.deserialization.impl;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.BoatJsonSerializer;
|
||||
|
||||
public class BoatJsonDeserializer implements JsonDeserializer<Boat> {
|
||||
public class BoatJsonDeserializer implements JsonDeserializer<DynamicBoat> {
|
||||
private final BoatClassJsonDeserializer boatClassDeserializer;
|
||||
|
||||
public BoatJsonDeserializer(BoatClassJsonDeserializer boatClassDeserializer) {
|
||||
@@ -17,7 +17,7 @@ public class BoatJsonDeserializer implements JsonDeserializer<Boat> {
|
||||
this.boatClassDeserializer = boatClassDeserializer;
|
||||
}
|
||||
|
||||
public Boat deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
public DynamicBoat deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
String name = object.get(BoatJsonSerializer.FIELD_NAME).toString();
|
||||
String sailId = object.get(BoatJsonSerializer.FIELD_SAIL_ID).toString();
|
||||
BoatClass boatClass = null;
|
||||
|
||||
+7
-7
@@ -4,19 +4,19 @@ import java.io.Serializable;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.CompetitorJsonSerializer;
|
||||
|
||||
public class CompetitorJsonDeserializer implements JsonDeserializer<Competitor> {
|
||||
protected final SharedDomainFactory factory;
|
||||
protected final JsonDeserializer<Team> teamJsonDeserializer;
|
||||
protected final JsonDeserializer<Boat> boatJsonDeserializer;
|
||||
protected final JsonDeserializer<DynamicTeam> teamJsonDeserializer;
|
||||
protected final JsonDeserializer<DynamicBoat> boatJsonDeserializer;
|
||||
|
||||
public static CompetitorJsonDeserializer create(DomainFactory baseDomainFactory) {
|
||||
return new CompetitorJsonDeserializer(baseDomainFactory, new TeamJsonDeserializer(new PersonJsonDeserializer(
|
||||
@@ -27,7 +27,7 @@ public class CompetitorJsonDeserializer implements JsonDeserializer<Competitor>
|
||||
this(factory, null, /* boatDeserializer */ null);
|
||||
}
|
||||
|
||||
public CompetitorJsonDeserializer(SharedDomainFactory factory, JsonDeserializer<Team> teamJsonDeserializer, JsonDeserializer<Boat> boatDeserializer) {
|
||||
public CompetitorJsonDeserializer(SharedDomainFactory factory, JsonDeserializer<DynamicTeam> teamJsonDeserializer, JsonDeserializer<DynamicBoat> boatDeserializer) {
|
||||
this.factory = factory;
|
||||
this.teamJsonDeserializer = teamJsonDeserializer;
|
||||
this.boatJsonDeserializer = boatDeserializer;
|
||||
@@ -38,8 +38,8 @@ public class CompetitorJsonDeserializer implements JsonDeserializer<Competitor>
|
||||
Serializable competitorId = (Serializable) object.get(CompetitorJsonSerializer.FIELD_ID);
|
||||
competitorId = Helpers.tryUuidConversion(competitorId);
|
||||
String name = (String) object.get(CompetitorJsonSerializer.FIELD_NAME);
|
||||
Team team = null;
|
||||
Boat boat = null;
|
||||
DynamicTeam team = null;
|
||||
DynamicBoat boat = null;
|
||||
if (teamJsonDeserializer != null) {
|
||||
team = teamJsonDeserializer.deserialize(Helpers.getNestedObjectSafe(object,
|
||||
CompetitorJsonSerializer.FIELD_TEAM));
|
||||
|
||||
+3
-3
@@ -5,13 +5,13 @@ import java.util.Date;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.base.impl.DynamicPerson;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.PersonJsonSerializer;
|
||||
|
||||
public class PersonJsonDeserializer implements JsonDeserializer<Person> {
|
||||
public class PersonJsonDeserializer implements JsonDeserializer<DynamicPerson> {
|
||||
|
||||
private final JsonDeserializer<Nationality> nationalityDeserializer;
|
||||
|
||||
@@ -20,7 +20,7 @@ public class PersonJsonDeserializer implements JsonDeserializer<Person> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Person deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
public DynamicPerson deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
if (object == null) {
|
||||
// Coach is often null
|
||||
return null;
|
||||
|
||||
+7
-6
@@ -8,32 +8,33 @@ import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.impl.DynamicPerson;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.base.impl.TeamImpl;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.impl.TeamJsonSerializer;
|
||||
|
||||
public class TeamJsonDeserializer implements JsonDeserializer<Team> {
|
||||
public class TeamJsonDeserializer implements JsonDeserializer<DynamicTeam> {
|
||||
|
||||
private final JsonDeserializer<Person> personDeserializer;
|
||||
private final JsonDeserializer<DynamicPerson> personDeserializer;
|
||||
|
||||
public static TeamJsonDeserializer create(DomainFactory baseDomainFactory) {
|
||||
return new TeamJsonDeserializer(new PersonJsonDeserializer(
|
||||
new NationalityJsonDeserializer(baseDomainFactory)));
|
||||
}
|
||||
|
||||
public TeamJsonDeserializer(JsonDeserializer<Person> personDeserializer) {
|
||||
public TeamJsonDeserializer(JsonDeserializer<DynamicPerson> personDeserializer) {
|
||||
this.personDeserializer = personDeserializer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Team deserialize(JSONObject object)
|
||||
public DynamicTeam deserialize(JSONObject object)
|
||||
throws JsonDeserializationException {
|
||||
String name = (String) object.get(TeamJsonSerializer.FIELD_NAME);
|
||||
Person coach = personDeserializer.deserialize((JSONObject) object
|
||||
.get(TeamJsonSerializer.FIELD_COACH));
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
|
||||
JSONArray sailorsJson = (JSONArray) object
|
||||
.get(TeamJsonSerializer.FIELD_SAILORS);
|
||||
|
||||
+11
-11
@@ -4,44 +4,44 @@ import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.SharedDomainFactory;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicCompetitor;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.masterdata.impl.CompetitorMasterDataJsonSerializer;
|
||||
|
||||
public class CompetitorMasterDataDeserializer implements JsonDeserializer<Competitor> {
|
||||
public class CompetitorMasterDataDeserializer implements JsonDeserializer<DynamicCompetitor> {
|
||||
|
||||
private final JsonDeserializer<BoatClass> boatClassDeserializer;
|
||||
|
||||
private final JsonDeserializer<Team> teamDeserializer;
|
||||
private final JsonDeserializer<DynamicTeam> teamDeserializer;
|
||||
|
||||
private final SharedDomainFactory domainFactory;
|
||||
|
||||
|
||||
|
||||
public CompetitorMasterDataDeserializer(JsonDeserializer<BoatClass> boatClassDeserializer,
|
||||
JsonDeserializer<Team> teamDeserializer, SharedDomainFactory domainFactory) {
|
||||
JsonDeserializer<DynamicTeam> teamDeserializer, SharedDomainFactory domainFactory) {
|
||||
this.boatClassDeserializer = boatClassDeserializer;
|
||||
this.teamDeserializer = teamDeserializer;
|
||||
this.domainFactory = domainFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Competitor deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
public DynamicCompetitor deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
String name = (String) object.get(CompetitorMasterDataJsonSerializer.FIELD_NAME);
|
||||
String id = (String) object.get(CompetitorMasterDataJsonSerializer.FIELD_ID);
|
||||
Boat boat = createBoatFromJson((JSONObject) object.get(CompetitorMasterDataJsonSerializer.FIELD_BOAT));
|
||||
Team team = teamDeserializer.deserialize((JSONObject) object.get(CompetitorMasterDataJsonSerializer.FIELD_TEAM));
|
||||
return domainFactory.getOrCreateCompetitor(UUID.fromString(id), name, team, boat);
|
||||
DynamicBoat boat = createBoatFromJson((JSONObject) object.get(CompetitorMasterDataJsonSerializer.FIELD_BOAT));
|
||||
DynamicTeam team = teamDeserializer.deserialize((JSONObject) object.get(CompetitorMasterDataJsonSerializer.FIELD_TEAM));
|
||||
return domainFactory.getOrCreateDynamicCompetitor(UUID.fromString(id), name, team, boat);
|
||||
|
||||
}
|
||||
|
||||
private Boat createBoatFromJson(JSONObject object) throws JsonDeserializationException {
|
||||
private DynamicBoat createBoatFromJson(JSONObject object) throws JsonDeserializationException {
|
||||
String name = (String) object.get(CompetitorMasterDataJsonSerializer.FIELD_NAME);
|
||||
String sailID = (String) object.get(CompetitorMasterDataJsonSerializer.FIELD_SAIL_ID);
|
||||
BoatClass boatClass = boatClassDeserializer.deserialize((JSONObject) object.get(CompetitorMasterDataJsonSerializer.FIELD_BOAT_CLASS));
|
||||
|
||||
+6
-6
@@ -9,13 +9,13 @@ import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Fleet;
|
||||
import com.sap.sailing.domain.base.LeaderboardMasterData;
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.impl.DynamicCompetitor;
|
||||
import com.sap.sailing.domain.base.impl.DynamicPerson;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.common.Color;
|
||||
import com.sap.sailing.domain.leaderboard.ScoringScheme;
|
||||
import com.sap.sailing.domain.masterdataimport.EventMasterData;
|
||||
@@ -47,9 +47,9 @@ public class LeaderboardGroupMasterDataJsonDeserializer implements JsonDeseriali
|
||||
public static JsonDeserializer<LeaderboardGroupMasterData> create(DomainFactory domainFactory) {
|
||||
JsonDeserializer<BoatClass> boatClassDeserializer = new BoatClassJsonDeserializer(domainFactory);
|
||||
JsonDeserializer<Nationality> nationalityDeserializer = new NationalityJsonDeserializer(domainFactory);
|
||||
JsonDeserializer<Person> personDeserializer = new PersonJsonDeserializer(nationalityDeserializer);
|
||||
JsonDeserializer<Team> teamDeserializer = new TeamJsonDeserializer(personDeserializer);
|
||||
JsonDeserializer<Competitor> competitorDeserializer = new CompetitorMasterDataDeserializer(
|
||||
JsonDeserializer<DynamicPerson> personDeserializer = new PersonJsonDeserializer(nationalityDeserializer);
|
||||
JsonDeserializer<DynamicTeam> teamDeserializer = new TeamJsonDeserializer(personDeserializer);
|
||||
JsonDeserializer<DynamicCompetitor> competitorDeserializer = new CompetitorMasterDataDeserializer(
|
||||
boatClassDeserializer, teamDeserializer, domainFactory);
|
||||
JsonDeserializer<RaceLogEvent> raceLogEventDeserializer = RaceLogEventDeserializer.create(domainFactory);
|
||||
JsonDeserializer<LeaderboardMasterData> leaderboardDeserializer = new LeaderboardMasterDataJsonDeserializer(
|
||||
|
||||
+3
-2
@@ -13,6 +13,7 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.LeaderboardMasterData;
|
||||
import com.sap.sailing.domain.base.impl.DynamicCompetitor;
|
||||
import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
@@ -30,11 +31,11 @@ import com.sap.sailing.server.gateway.serialization.masterdata.impl.RaceColumnMa
|
||||
|
||||
public class LeaderboardMasterDataJsonDeserializer implements JsonDeserializer<LeaderboardMasterData> {
|
||||
|
||||
private final JsonDeserializer<Competitor> competitorDeserializer;
|
||||
private final JsonDeserializer<DynamicCompetitor> competitorDeserializer;
|
||||
private final DomainFactory domainFactory;
|
||||
private final JsonDeserializer<RaceLogEvent> raceLogEventDeseriaizer;
|
||||
|
||||
public LeaderboardMasterDataJsonDeserializer(JsonDeserializer<Competitor> competitorDeserializer,
|
||||
public LeaderboardMasterDataJsonDeserializer(JsonDeserializer<DynamicCompetitor> competitorDeserializer,
|
||||
DomainFactory domainFactory, JsonDeserializer<RaceLogEvent> raceLogEventDeseriaizer) {
|
||||
this.competitorDeserializer = competitorDeserializer;
|
||||
this.domainFactory = domainFactory;
|
||||
|
||||
+51
-50
@@ -22,7 +22,6 @@ import org.junit.Test;
|
||||
|
||||
import com.mongodb.DBCollection;
|
||||
import com.mongodb.DBCursor;
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CourseArea;
|
||||
@@ -33,12 +32,14 @@ import com.sap.sailing.domain.base.Person;
|
||||
import com.sap.sailing.domain.base.RaceColumn;
|
||||
import com.sap.sailing.domain.base.Regatta;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.impl.BoatClassImpl;
|
||||
import com.sap.sailing.domain.base.impl.BoatImpl;
|
||||
import com.sap.sailing.domain.base.impl.CompetitorImpl;
|
||||
import com.sap.sailing.domain.base.impl.CourseAreaImpl;
|
||||
import com.sap.sailing.domain.base.impl.DomainFactoryImpl;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicPerson;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.domain.base.impl.FleetImpl;
|
||||
import com.sap.sailing.domain.base.impl.NationalityImpl;
|
||||
import com.sap.sailing.domain.base.impl.PersonImpl;
|
||||
@@ -180,24 +181,24 @@ public class MasterDataImportTest {
|
||||
// Set tracked Race with competitors
|
||||
Set<Competitor> competitors = new HashSet<Competitor>();
|
||||
UUID competitorUUID = UUID.randomUUID();
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
sailors.add(new PersonImpl("Froderik Poterson", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Oberhoschy"));
|
||||
Person coach = new PersonImpl("Lennart Hensler", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Der Lennart halt");
|
||||
Team team = new TeamImpl("Pros", sailors, coach);
|
||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||
Boat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", team, boat);
|
||||
competitors.add(competitor);
|
||||
UUID competitorToSuppressUUID = UUID.randomUUID();
|
||||
Set<Person> sailors2 = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors2 = new HashSet<DynamicPerson>();
|
||||
sailors2.add(new PersonImpl("Angela Merkel", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"segelt auch mit"));
|
||||
Person coach2 = new PersonImpl("Peer Steinbrueck", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Bester Coach");
|
||||
Team team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
Boat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
DynamicTeam team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
DynamicBoat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
CompetitorImpl competitorToSuppress = new CompetitorImpl(competitorToSuppressUUID, "Merkel", team2, boat2);
|
||||
competitors.add(competitorToSuppress);
|
||||
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta);
|
||||
@@ -345,22 +346,22 @@ public class MasterDataImportTest {
|
||||
// Set tracked Race with competitors
|
||||
Set<Competitor> competitors = new HashSet<Competitor>();
|
||||
UUID competitorUUID = UUID.randomUUID();
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
sailors.add(new PersonImpl("Froderik Poterson", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Oberhoschy"));
|
||||
Person coach = new PersonImpl("Lennart Hensler", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Der Lennart halt");
|
||||
Team team = new TeamImpl("Pros", sailors, coach);
|
||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||
Boat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", team, boat);
|
||||
competitors.add(competitor);
|
||||
UUID competitor2UUID = UUID.randomUUID();
|
||||
Set<Person> sailors2 = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors2 = new HashSet<DynamicPerson>();
|
||||
sailors2.add(new PersonImpl("Test Mustermann", new NationalityImpl("GER"), new Date(645487200000L), "desc"));
|
||||
Person coach2 = new PersonImpl("Max Test", new NationalityImpl("GER"), new Date(645487200000L), "desc");
|
||||
Team team2 = new TeamImpl("Pros2", sailors2, coach2);
|
||||
Boat boat2 = new BoatImpl("FastBoat", boatClass, "GER70133");
|
||||
DynamicTeam team2 = new TeamImpl("Pros2", sailors2, coach2);
|
||||
DynamicBoat boat2 = new BoatImpl("FastBoat", boatClass, "GER70133");
|
||||
CompetitorImpl competitor2 = new CompetitorImpl(competitor2UUID, "Froderik", team2, boat2);
|
||||
competitors.add(competitor2);
|
||||
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta);
|
||||
@@ -500,22 +501,22 @@ public class MasterDataImportTest {
|
||||
// Set tracked Race with competitors
|
||||
Set<Competitor> competitors = new HashSet<Competitor>();
|
||||
UUID competitorUUID = UUID.randomUUID();
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
sailors.add(new PersonImpl("Froderik Poterson", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Oberhoschy"));
|
||||
Person coach = new PersonImpl("Lennart Hensler", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Der Lennart halt");
|
||||
Team team = new TeamImpl("Pros", sailors, coach);
|
||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||
Boat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
Competitor competitor = sourceDomainFactory.getOrCreateCompetitor(competitorUUID, "Froderik", team, boat);
|
||||
competitors.add(competitor);
|
||||
UUID competitor2UUID = UUID.randomUUID();
|
||||
Set<Person> sailors2 = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors2 = new HashSet<DynamicPerson>();
|
||||
sailors2.add(new PersonImpl("Test Mustermann", new NationalityImpl("GER"), new Date(645487200000L), "desc"));
|
||||
Person coach2 = new PersonImpl("Max Test", new NationalityImpl("GER"), new Date(645487200000L), "desc");
|
||||
Team team2 = new TeamImpl("Pros2", sailors2, coach2);
|
||||
Boat boat2 = new BoatImpl("FastBoat", boatClass, "GER70133");
|
||||
DynamicTeam team2 = new TeamImpl("Pros2", sailors2, coach2);
|
||||
DynamicBoat boat2 = new BoatImpl("FastBoat", boatClass, "GER70133");
|
||||
Competitor competitor2 = sourceDomainFactory.getOrCreateCompetitor(competitor2UUID, "Froderik", team2, boat2);
|
||||
competitors.add(competitor2);
|
||||
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta);
|
||||
@@ -632,24 +633,24 @@ public class MasterDataImportTest {
|
||||
// Set tracked Race with competitors
|
||||
Set<Competitor> competitors = new HashSet<Competitor>();
|
||||
UUID competitorUUID = UUID.randomUUID();
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
sailors.add(new PersonImpl("Froderik Poterson", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Oberhoschy"));
|
||||
Person coach = new PersonImpl("Lennart Hensler", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Der Lennart halt");
|
||||
Team team = new TeamImpl("Pros", sailors, coach);
|
||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||
Boat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", team, boat);
|
||||
competitors.add(competitor);
|
||||
UUID competitorToSuppressUUID = UUID.randomUUID();
|
||||
Set<Person> sailors2 = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors2 = new HashSet<DynamicPerson>();
|
||||
sailors2.add(new PersonImpl("Angela Merkel", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"segelt auch mit"));
|
||||
Person coach2 = new PersonImpl("Peer Steinbrueck", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Bester Coach");
|
||||
Team team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
Boat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
DynamicTeam team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
DynamicBoat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
CompetitorImpl competitorToSuppress = new CompetitorImpl(competitorToSuppressUUID, "Merkel", team2, boat2);
|
||||
competitors.add(competitorToSuppress);
|
||||
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta);
|
||||
@@ -808,24 +809,24 @@ public class MasterDataImportTest {
|
||||
// Set tracked Race with competitors
|
||||
Set<Competitor> competitors = new HashSet<Competitor>();
|
||||
UUID competitorUUID = UUID.randomUUID();
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
sailors.add(new PersonImpl("Froderik Poterson", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Oberhoschy"));
|
||||
Person coach = new PersonImpl("Lennart Hensler", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Der Lennart halt");
|
||||
Team team = new TeamImpl("Pros", sailors, coach);
|
||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||
Boat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", team, boat);
|
||||
competitors.add(competitor);
|
||||
UUID competitorToSuppressUUID = UUID.randomUUID();
|
||||
Set<Person> sailors2 = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors2 = new HashSet<DynamicPerson>();
|
||||
sailors2.add(new PersonImpl("Angela Merkel", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"segelt auch mit"));
|
||||
Person coach2 = new PersonImpl("Peer Steinbrueck", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Bester Coach");
|
||||
Team team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
Boat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
DynamicTeam team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
DynamicBoat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
CompetitorImpl competitorToSuppress = new CompetitorImpl(competitorToSuppressUUID, "Merkel", team2, boat2);
|
||||
competitors.add(competitorToSuppress);
|
||||
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta);
|
||||
@@ -978,24 +979,24 @@ public class MasterDataImportTest {
|
||||
// Set tracked Race with competitors
|
||||
Set<Competitor> competitors = new HashSet<Competitor>();
|
||||
UUID competitorUUID = UUID.randomUUID();
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
sailors.add(new PersonImpl("Froderik Poterson", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Oberhoschy"));
|
||||
Person coach = new PersonImpl("Lennart Hensler", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Der Lennart halt");
|
||||
Team team = new TeamImpl("Pros", sailors, coach);
|
||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||
Boat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", team, boat);
|
||||
competitors.add(competitor);
|
||||
UUID competitorToSuppressUUID = UUID.randomUUID();
|
||||
Set<Person> sailors2 = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors2 = new HashSet<DynamicPerson>();
|
||||
sailors2.add(new PersonImpl("Angela Merkel", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"segelt auch mit"));
|
||||
Person coach2 = new PersonImpl("Peer Steinbrueck", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Bester Coach");
|
||||
Team team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
Boat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
DynamicTeam team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
DynamicBoat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
CompetitorImpl competitorToSuppress = new CompetitorImpl(competitorToSuppressUUID, "Merkel", team2, boat2);
|
||||
competitors.add(competitorToSuppress);
|
||||
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta);
|
||||
@@ -1103,24 +1104,24 @@ public class MasterDataImportTest {
|
||||
// Set tracked Race with competitors
|
||||
Set<Competitor> competitors = new HashSet<Competitor>();
|
||||
UUID competitorUUID = UUID.randomUUID();
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
sailors.add(new PersonImpl("Froderik Poterson", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Oberhoschy"));
|
||||
Person coach = new PersonImpl("Lennart Hensler", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Der Lennart halt");
|
||||
Team team = new TeamImpl("Pros", sailors, coach);
|
||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||
Boat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", team, boat);
|
||||
competitors.add(competitor);
|
||||
UUID competitorToSuppressUUID = UUID.randomUUID();
|
||||
Set<Person> sailors2 = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors2 = new HashSet<DynamicPerson>();
|
||||
sailors2.add(new PersonImpl("Angela Merkel", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"segelt auch mit"));
|
||||
Person coach2 = new PersonImpl("Peer Steinbrueck", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Bester Coach");
|
||||
Team team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
Boat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
DynamicTeam team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
DynamicBoat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
CompetitorImpl competitorToSuppress = new CompetitorImpl(competitorToSuppressUUID, "Merkel", team2, boat2);
|
||||
competitors.add(competitorToSuppress);
|
||||
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta);
|
||||
@@ -1277,24 +1278,24 @@ public class MasterDataImportTest {
|
||||
// Set tracked Race with competitors
|
||||
Set<Competitor> competitors = new HashSet<Competitor>();
|
||||
UUID competitorUUID = UUID.randomUUID();
|
||||
Set<Person> sailors = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors = new HashSet<DynamicPerson>();
|
||||
sailors.add(new PersonImpl("Froderik Poterson", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Oberhoschy"));
|
||||
Person coach = new PersonImpl("Lennart Hensler", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Der Lennart halt");
|
||||
Team team = new TeamImpl("Pros", sailors, coach);
|
||||
DynamicTeam team = new TeamImpl("Pros", sailors, coach);
|
||||
BoatClass boatClass = new BoatClassImpl("H16", true);
|
||||
Boat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
DynamicBoat boat = new BoatImpl("Wingy", boatClass, "GER70133");
|
||||
CompetitorImpl competitor = new CompetitorImpl(competitorUUID, "Froderik", team, boat);
|
||||
competitors.add(competitor);
|
||||
UUID competitorToSuppressUUID = UUID.randomUUID();
|
||||
Set<Person> sailors2 = new HashSet<Person>();
|
||||
Set<DynamicPerson> sailors2 = new HashSet<DynamicPerson>();
|
||||
sailors2.add(new PersonImpl("Angela Merkel", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"segelt auch mit"));
|
||||
Person coach2 = new PersonImpl("Peer Steinbrueck", new NationalityImpl("GER"), new Date(645487200000L),
|
||||
"Bester Coach");
|
||||
Team team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
Boat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
DynamicTeam team2 = new TeamImpl("Noobs", sailors2, coach2);
|
||||
DynamicBoat boat2 = new BoatImpl("LahmeEnte", boatClass, "GER1337");
|
||||
CompetitorImpl competitorToSuppress = new CompetitorImpl(competitorToSuppressUUID, "Merkel", team2, boat2);
|
||||
competitors.add(competitorToSuppress);
|
||||
TrackedRace trackedRace = new DummyTrackedRace(competitors, regatta);
|
||||
|
||||
+9
@@ -7,6 +7,7 @@ import java.io.Serializable;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.CompetitorStore;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.domain.base.impl.DomainFactoryImpl;
|
||||
import com.sap.sailing.domain.base.impl.TransientCompetitorStoreImpl;
|
||||
import com.sap.sailing.domain.persistence.DomainObjectFactory;
|
||||
@@ -79,5 +80,13 @@ public class PersistentCompetitorStore extends TransientCompetitorStoreImpl impl
|
||||
storeTo.removeCompetitor(competitor);
|
||||
super.removeCompetitor(competitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Competitor updateCompetitor(Serializable id, String newName, String newSailId, Nationality newNationality) {
|
||||
Competitor result = super.updateCompetitor(id, newName, newSailId, newNationality);
|
||||
storeTo.storeCompetitor(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+3
-1
@@ -42,6 +42,7 @@ import com.sap.sailing.domain.base.RegattaListener;
|
||||
import com.sap.sailing.domain.base.Series;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.DynamicCompetitor;
|
||||
import com.sap.sailing.domain.base.impl.EventImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.common.LeaderboardNameConstants;
|
||||
@@ -1702,7 +1703,8 @@ public class RacingEventServiceImpl implements RacingEventService, RegattaListen
|
||||
// only copy the competitors from the deserialized competitor store; don't use it because it will have set
|
||||
// a default Mongo object factory
|
||||
for (Competitor competitor : ((CompetitorStore) ois.readObject()).getCompetitors()) {
|
||||
persistentCompetitorStore.getOrCreateCompetitor(competitor.getId(), competitor.getName(), competitor.getTeam(), competitor.getBoat());
|
||||
DynamicCompetitor dynamicCompetitor = (DynamicCompetitor) competitor;
|
||||
persistentCompetitorStore.getOrCreateCompetitor(dynamicCompetitor.getId(), dynamicCompetitor.getName(), dynamicCompetitor.getTeam(), dynamicCompetitor.getBoat());
|
||||
}
|
||||
logoutput.append("\nReceived " + persistentCompetitorStore.size() + " NEW competitors\n");
|
||||
|
||||
|
||||
+29
-33
@@ -2,46 +2,42 @@ package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sailing.domain.base.Boat;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Team;
|
||||
import com.sap.sailing.domain.base.impl.DynamicBoat;
|
||||
import com.sap.sailing.domain.base.impl.DynamicTeam;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public class CreatePersistentCompetitor extends
|
||||
AbstractRacingEventServiceOperation<Competitor> {
|
||||
|
||||
private static final long serialVersionUID = 1538753300467120249L;
|
||||
// private static final Logger logger =
|
||||
// Logger.getLogger(CreatePersistentCompetitor.class.getName());
|
||||
public class CreatePersistentCompetitor extends AbstractRacingEventServiceOperation<Competitor> {
|
||||
|
||||
private final Serializable id;
|
||||
private final String name;
|
||||
private final Team team;
|
||||
private final Boat boat;
|
||||
private static final long serialVersionUID = 1538753300467120249L;
|
||||
// private static final Logger logger =
|
||||
// Logger.getLogger(CreatePersistentCompetitor.class.getName());
|
||||
|
||||
public CreatePersistentCompetitor(Serializable id, String name, Team team,
|
||||
Boat boat) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.team = team;
|
||||
this.boat = boat;
|
||||
}
|
||||
private final Serializable id;
|
||||
private final String name;
|
||||
private final DynamicTeam team;
|
||||
private final DynamicBoat boat;
|
||||
|
||||
@Override
|
||||
public Competitor internalApplyTo(RacingEventService toState) {
|
||||
return toState.getBaseDomainFactory().getOrCreateCompetitor(id, name, team, boat);
|
||||
}
|
||||
public CreatePersistentCompetitor(Serializable id, String name, DynamicTeam team, DynamicBoat boat) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.team = team;
|
||||
this.boat = boat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(
|
||||
RacingEventServiceOperation<?> serverOp) {
|
||||
return serverOp.transformCreatePersistentCompetitorClientOp(this);
|
||||
}
|
||||
@Override
|
||||
public Competitor internalApplyTo(RacingEventService toState) {
|
||||
return toState.getBaseDomainFactory().getOrCreateCompetitor(id, name, team, boat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(
|
||||
RacingEventServiceOperation<?> clientOp) {
|
||||
return clientOp.transformCreatePersistentCompetitorServerOp(this);
|
||||
}
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(RacingEventServiceOperation<?> serverOp) {
|
||||
return serverOp.transformCreatePersistentCompetitorClientOp(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(RacingEventServiceOperation<?> clientOp) {
|
||||
return clientOp.transformCreatePersistentCompetitorServerOp(this);
|
||||
}
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.sap.sailing.server.operationaltransformation;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.sap.sailing.domain.base.Nationality;
|
||||
import com.sap.sailing.server.RacingEventService;
|
||||
import com.sap.sailing.server.RacingEventServiceOperation;
|
||||
|
||||
public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Void> {
|
||||
private static final long serialVersionUID = 1172181354320184263L;
|
||||
private final Serializable id;
|
||||
private final String newName;
|
||||
private final String newSailId;
|
||||
private final Nationality newNationality;
|
||||
|
||||
public UpdateCompetitor(Serializable id, String newName, String newSailId, Nationality newNationality) {
|
||||
super();
|
||||
this.id = id;
|
||||
this.newName = newName;
|
||||
this.newSailId = newSailId;
|
||||
this.newNationality = newNationality;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void internalApplyTo(RacingEventService toState) throws Exception {
|
||||
toState.getBaseDomainFactory().getCompetitorStore().updateCompetitor(id, newName, newSailId, newNationality);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformClientOp(RacingEventServiceOperation<?> serverOp) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RacingEventServiceOperation<?> transformServerOp(RacingEventServiceOperation<?> clientOp) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user