Merge branch 'master' into bug4227

This commit is contained in:
Kai Boernert committed 2017-09-18 08:23:17 +02:00
commit 034976e52e
23 files changed
+371 -76

No files matched your search

@@ -1,5 +1,5 @@
raceInRegattaOfEvent=Carrera {0} en regata ''{1}'' de evento ''{2}''
raceInFleetInRegattaOfEvent=Carrera {0} ({3})en regata ''{1}'' de evento ''{2}''
raceInFleetInRegattaOfEvent=Carrera {0} ({3}) en regata ''{1}'' de evento ''{2}''
leaderboardOfEvent=Clasificación ''{0}'' de evento ''{1}''
leaderboardShowResultsLinkTitle=Mostrar resultados
@@ -398,7 +398,6 @@ public interface RacingEventService extends TrackedRegattaRegistry, RegattaFetch
* The name of the venue of the event
* @param isPublic
* Indicates whether the event is public accessible via the publication URL or not
* @param baseURL TODO
* @return The new event
*/
void updateEvent(UUID id, String eventName, String eventDescription, TimePoint startDate, TimePoint endDate,
@@ -2,7 +2,6 @@ package com.sap.sailing.server.impl;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.net.URI;
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogResolver;
@@ -50,7 +49,7 @@ public class PersistentCompetitorStore extends TransientCompetitorStoreImpl impl
storeTo.removeAllCompetitors();
} else {
for (Competitor competitor : loadFrom.loadAllCompetitors()) {
addCompetitorToTransientStore(competitor.getId(), competitor);
super.addNewCompetitor(competitor);
}
}
}
@@ -76,14 +75,10 @@ public class PersistentCompetitorStore extends TransientCompetitorStoreImpl impl
storeTo = PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory();
}
private void addCompetitorToTransientStore(Serializable id, Competitor competitor) {
super.addNewCompetitor(id, competitor);
}
@Override
protected void addNewCompetitor(Serializable id, Competitor competitor) {
protected void addNewCompetitor(Competitor competitor) {
storeTo.storeCompetitor(competitor);
super.addNewCompetitor(id, competitor);
super.addNewCompetitor(competitor);
}
@Override
@@ -109,8 +104,8 @@ public class PersistentCompetitorStore extends TransientCompetitorStoreImpl impl
}
@Override
public void addCompetitors(Iterable<Competitor> competitors) {
public void addNewCompetitors(Iterable<Competitor> competitors) {
storeTo.storeCompetitors(competitors);
super.addCompetitors(competitors);
super.addNewCompetitors(competitors);
}
}
@@ -200,6 +200,7 @@ import com.sap.sailing.server.operationaltransformation.AddMediaTrackOperation;
import com.sap.sailing.server.operationaltransformation.AddRaceDefinition;
import com.sap.sailing.server.operationaltransformation.AddSpecificRegatta;
import com.sap.sailing.server.operationaltransformation.ConnectTrackedRaceToLeaderboardColumn;
import com.sap.sailing.server.operationaltransformation.CreateCompetitor;
import com.sap.sailing.server.operationaltransformation.CreateEvent;
import com.sap.sailing.server.operationaltransformation.CreateOrUpdateDataImportProgress;
import com.sap.sailing.server.operationaltransformation.CreateOrUpdateDeviceConfiguration;
@@ -678,11 +679,21 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
this.competitorStore.addCompetitorUpdateListener(new CompetitorUpdateListener() {
@Override
public void competitorUpdated(Competitor competitor) {
replicate(new UpdateCompetitor(competitor.getId().toString(), competitor.getName(), competitor
.getColor(), competitor.getEmail(), competitor.getBoat().getSailID(), competitor.getTeam().getNationality(),
competitor.getTeam().getImage(), competitor.getFlagImage(),
competitor.getTimeOnTimeFactor(), competitor.getTimeOnDistanceAllowancePerNauticalMile(),
competitor.getSearchTag()));
replicate(new UpdateCompetitor(competitor.getId().toString(), competitor.getName(),
competitor.getColor(), competitor.getEmail(), competitor.getBoat().getSailID(),
competitor.getTeam().getNationality(), competitor.getTeam().getImage(),
competitor.getFlagImage(), competitor.getTimeOnTimeFactor(),
competitor.getTimeOnDistanceAllowancePerNauticalMile(), competitor.getSearchTag()));
}
@Override
public void competitorCreated(Competitor competitor) {
replicate(new CreateCompetitor(competitor.getId(), competitor.getName(),
competitor.getBoat()==null?null:competitor.getBoat().getBoatClass()==null?null:competitor.getBoat().getBoatClass().getName(),
competitor.getColor(), competitor.getEmail(),
competitor.getFlagImage(), competitor.getBoat()==null?null:competitor.getBoat().getSailID(),
competitor.getTeam()==null?null:competitor.getTeam().getNationality(),
competitor.getTimeOnTimeFactor(),
competitor.getTimeOnDistanceAllowancePerNauticalMile(), competitor.getSearchTag()));
}
});
this.dataImportLock = new DataImportLockWithProgress();
@@ -0,0 +1,87 @@
package com.sap.sailing.server.operationaltransformation;
import java.io.Serializable;
import java.net.URI;
import java.util.Collections;
import com.sap.sailing.domain.base.BoatClass;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Nationality;
import com.sap.sailing.domain.base.CompetitorStore.CompetitorUpdateListener;
import com.sap.sailing.domain.base.impl.BoatImpl;
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.TeamImpl;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.RacingEventServiceOperation;
import com.sap.sailing.server.impl.RacingEventServiceImpl;
import com.sap.sse.common.Color;
import com.sap.sse.common.Duration;
public class CreateCompetitor extends AbstractRacingEventServiceOperation<Competitor> {
private static final long serialVersionUID = 1172181354320184263L;
private final Serializable competitorId;
private final String name;
private final String boatClassName;
private final Color displayColor;
private final String email;
private final URI flagImageUri;
private final String sailId;
private final Nationality nationality;
private final Double timeOnTimeFactor;
private final Duration timeOnDistanceAllowancePerNauticalMile;
private final String searchTag;
public CreateCompetitor(Serializable competitorId, String name, String boatClassName, Color displayColor,
String email, URI flagImageUri, String sailId, Nationality nationality,
Double timeOnTimeFactor, Duration timeOnDistanceAllowancePerNauticalMile, String searchTag) {
super();
this.competitorId = competitorId;
this.name = name;
this.boatClassName = boatClassName;
this.displayColor = displayColor;
this.email = email;
this.flagImageUri = flagImageUri;
this.sailId = sailId;
this.nationality = nationality;
this.timeOnTimeFactor = timeOnTimeFactor;
this.timeOnDistanceAllowancePerNauticalMile = timeOnDistanceAllowancePerNauticalMile;
this.searchTag = searchTag;
}
/**
* {@link #internalApplyTo(RacingEventService)} already replicates the effects; see {@link RacingEventServiceImpl#RacingEventServiceImpl()}
* where a {@link CompetitorUpdateListener} is registered that handles replication of competitor creations
*/
@Override
public boolean isRequiresExplicitTransitiveReplication() {
return false;
}
@Override
public Competitor internalApplyTo(RacingEventService toState) throws Exception {
BoatClass boatClass = toState.getBaseDomainFactory().getOrCreateBoatClass(boatClassName);
DynamicPerson sailor = new PersonImpl(name, nationality, null, null);
DynamicTeam team = new TeamImpl(name + " team", Collections.singleton(sailor), null);
DynamicBoat boat = new BoatImpl(name + " boat", boatClass, sailId);
final Competitor result = toState.getBaseDomainFactory().getCompetitorStore()
.getOrCreateCompetitor(competitorId, name, displayColor, email, flagImageUri,
team, boat, timeOnTimeFactor, timeOnDistanceAllowancePerNauticalMile, searchTag);
return result;
}
@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;
}
}
@@ -4,8 +4,10 @@ import java.net.URI;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.Nationality;
import com.sap.sailing.domain.base.CompetitorStore.CompetitorUpdateListener;
import com.sap.sailing.server.RacingEventService;
import com.sap.sailing.server.RacingEventServiceOperation;
import com.sap.sailing.server.impl.RacingEventServiceImpl;
import com.sap.sse.common.Color;
import com.sap.sse.common.Duration;
@@ -48,7 +50,8 @@ public class UpdateCompetitor extends AbstractRacingEventServiceOperation<Compet
}
/**
* {@link #internalApplyTo(RacingEventService)} already replicates the effects
* {@link #internalApplyTo(RacingEventService)} already replicates the effects; see {@link RacingEventServiceImpl#RacingEventServiceImpl()}
* where a {@link CompetitorUpdateListener} is registered that handles replication of any updates to a competitor.
*/
@Override
public boolean isRequiresExplicitTransitiveReplication() {