mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-25 06:58:39 +00:00
some cleanup of the CompetitorDTO/BoatDTO creation methods
This commit is contained in:
+2
-2
@@ -61,7 +61,7 @@ public final class StartAnalysisDTOFactory extends AbstractStartAnalysisCreation
|
||||
}
|
||||
if (competitor != null) {
|
||||
Boat boatOfCompetitor = trackedRace.getBoatOfCompetitor(competitor);
|
||||
startAnalysisDTO.competitor = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory().getCompetitorStore().convertToCompetitorDTO(competitor, boatOfCompetitor);
|
||||
startAnalysisDTO.competitor = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory().getCompetitorStore().convertToCompetitorWithBoatDTO(competitor, boatOfCompetitor);
|
||||
logger.log(Level.INFO, "Created startanalysis for competitor"+competitor);
|
||||
}
|
||||
startAnalysisDTO.startAnalysisCompetitorDTOs = competitors;
|
||||
@@ -195,7 +195,7 @@ public final class StartAnalysisDTOFactory extends AbstractStartAnalysisCreation
|
||||
StartAnalysisCompetitorDTO startAnalysisCompetitorDTOsForRace = new StartAnalysisCompetitorDTO();
|
||||
Boat boatOfCompetitor = trackedRace.getBoatOfCompetitor(competitor);
|
||||
startAnalysisCompetitorDTOsForRace.competitorDTO = dashboardDispatchContext.getRacingEventService().getBaseDomainFactory().getCompetitorStore()
|
||||
.convertToCompetitorDTO(competitor, boatOfCompetitor);
|
||||
.convertToCompetitorWithBoatDTO(competitor, boatOfCompetitor);
|
||||
startAnalysisCompetitorDTOsForRace.rankingTableEntryDTO = createRankTableEntry(trackedRace, rank, competitor);
|
||||
return startAnalysisCompetitorDTOsForRace;
|
||||
}
|
||||
|
||||
+2
-1
@@ -132,7 +132,8 @@ public interface DomainObjectFactory {
|
||||
Collection<CompetitorWithBoat> loadAllLegacyCompetitorsWithBoat();
|
||||
|
||||
/**
|
||||
* Loads all competitors and resolves them via the domain factory.
|
||||
* Loads all competitors (with and without embedded boats) and resolves them via the domain factory.
|
||||
* Returns a collection of {@link Competitor} or {@link CompetitorWithBoat} objects.
|
||||
*/
|
||||
Collection<Competitor> loadAllCompetitors();
|
||||
|
||||
|
||||
+3
-3
@@ -86,11 +86,11 @@ public interface CompetitorStore extends CompetitorFactory, BoatFactory {
|
||||
|
||||
void addCompetitors(Iterable<Competitor> competitors);
|
||||
|
||||
CompetitorWithoutBoatDTO convertToCompetitorWithoutBoatDTO(Competitor c);
|
||||
CompetitorWithoutBoatDTO convertToCompetitorDTO(Competitor competitor);
|
||||
|
||||
<T extends Competitor> CompetitorDTO convertToCompetitorDTO(T competitor);
|
||||
CompetitorDTO convertToCompetitorWithBoatDTO(Competitor c, Boat b);
|
||||
|
||||
CompetitorDTO convertToCompetitorDTO(Competitor c, Boat b);
|
||||
CompetitorDTO convertToCompetitorWithOptionalBoatDTO(Competitor c);
|
||||
|
||||
Map<CompetitorDTO, BoatDTO> convertToCompetitorAndBoatDTOs(Map<Competitor, Boat> competitorsAndBoats);
|
||||
|
||||
|
||||
+34
-35
@@ -297,7 +297,7 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorWithoutBoatDTO convertToCompetitorWithoutBoatDTO(Competitor c) {
|
||||
public CompetitorWithoutBoatDTO convertToCompetitorDTO(Competitor c) {
|
||||
LockUtil.lockForRead(lock);
|
||||
boolean needToUnlockReadLock = true;
|
||||
try {
|
||||
@@ -330,30 +330,6 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorDTO convertToCompetitorDTO(Competitor competitor, Boat boat) {
|
||||
CompetitorWithoutBoatDTO c = convertToCompetitorWithoutBoatDTO(competitor);
|
||||
BoatDTO boatDTO = null;
|
||||
if (boat != null) {
|
||||
boatDTO = convertToBoatDTO(boat);
|
||||
}
|
||||
CompetitorDTO competitorDTO = new CompetitorDTOImpl(c, boatDTO);
|
||||
|
||||
return competitorDTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<CompetitorDTO, BoatDTO> convertToCompetitorAndBoatDTOs(Map<Competitor, Boat> competitorsAndBoats) {
|
||||
Map<CompetitorDTO, BoatDTO> result = new HashMap<>();
|
||||
for (Entry<Competitor, Boat> entry: competitorsAndBoats.entrySet()) {
|
||||
CompetitorWithoutBoatDTO c = convertToCompetitorWithoutBoatDTO(entry.getKey());
|
||||
BoatDTO boatDTO = convertToBoatDTO(entry.getValue());
|
||||
CompetitorDTO competitorDTO = new CompetitorDTOImpl(c, null);
|
||||
result.put(competitorDTO, boatDTO);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void allowCompetitorResetToDefaults(Competitor competitor) {
|
||||
LockUtil.lockForWrite(lock);
|
||||
@@ -445,15 +421,6 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
return (CompetitorWithBoat) competitor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Competitor> CompetitorDTO convertToCompetitorDTO(T competitor) {
|
||||
if (competitor instanceof CompetitorWithBoat) {
|
||||
return convertToCompetitorDTO(competitor, ((CompetitorWithBoat) competitor).getBoat());
|
||||
} else {
|
||||
return convertToCompetitorDTO(competitor, null);
|
||||
}
|
||||
}
|
||||
|
||||
/** Boat stuff starts here */
|
||||
|
||||
@Override
|
||||
@@ -492,7 +459,6 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
|
||||
@Override
|
||||
public Boat getOrCreateBoat(Serializable id, String name, BoatClass boatClass, String sailId, Color color) {
|
||||
// create compound boat ID here?
|
||||
Boat result = getExistingBoatById(id); // avoid synchronization for successful read access
|
||||
if (result == null) {
|
||||
LockUtil.lockForWrite(lock);
|
||||
@@ -689,4 +655,37 @@ public class TransientCompetitorStoreImpl implements CompetitorStore, Serializab
|
||||
LockUtil.unlockAfterWrite(lock);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorDTO convertToCompetitorWithBoatDTO(Competitor competitor, Boat boat) {
|
||||
CompetitorWithoutBoatDTO c = convertToCompetitorDTO(competitor);
|
||||
BoatDTO boatDTO = null;
|
||||
if (boat != null) {
|
||||
boatDTO = convertToBoatDTO(boat);
|
||||
}
|
||||
CompetitorDTO competitorDTO = new CompetitorDTOImpl(c, boatDTO);
|
||||
|
||||
return competitorDTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorDTO convertToCompetitorWithOptionalBoatDTO(Competitor competitor) {
|
||||
if (competitor instanceof CompetitorWithBoat) {
|
||||
return convertToCompetitorWithBoatDTO(competitor, ((CompetitorWithBoat) competitor).getBoat());
|
||||
} else {
|
||||
return convertToCompetitorWithBoatDTO(competitor, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<CompetitorDTO, BoatDTO> convertToCompetitorAndBoatDTOs(Map<Competitor, Boat> competitorsAndBoats) {
|
||||
Map<CompetitorDTO, BoatDTO> result = new HashMap<>();
|
||||
for (Entry<Competitor, Boat> entry: competitorsAndBoats.entrySet()) {
|
||||
CompetitorDTO competitorDTO = convertToCompetitorWithOptionalBoatDTO(entry.getKey());
|
||||
BoatDTO boatDTO = convertToBoatDTO(entry.getValue());
|
||||
result.put(competitorDTO, boatDTO);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.common.dto.BoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorWithoutBoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.PlacemarkDTO;
|
||||
import com.sap.sailing.domain.common.dto.RaceDTO;
|
||||
@@ -58,9 +59,11 @@ public interface DomainFactory extends SharedDomainFactory {
|
||||
|
||||
ScoringScheme createScoringScheme(ScoringSchemeType scoringSchemeType);
|
||||
|
||||
<T extends Competitor> CompetitorDTO convertToCompetitorDTO(T c);
|
||||
CompetitorWithoutBoatDTO convertToCompetitorDTO(Competitor competitor);
|
||||
|
||||
CompetitorDTO convertToCompetitorDTO(Competitor c, Boat b);
|
||||
CompetitorDTO convertToCompetitorWithOptionalBoatDTO(Competitor competitor);
|
||||
|
||||
CompetitorDTO convertToCompetitorDTO(Competitor competitor, Boat boat);
|
||||
|
||||
Map<CompetitorDTO, BoatDTO> convertToCompetitorAndBoatDTOs(Map<Competitor, Boat> competitorsAndBoats);
|
||||
|
||||
|
||||
+9
-4
@@ -28,6 +28,7 @@ import com.sap.sailing.domain.common.ScoringSchemeType;
|
||||
import com.sap.sailing.domain.common.WindSourceType;
|
||||
import com.sap.sailing.domain.common.dto.BoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorWithoutBoatDTO;
|
||||
import com.sap.sailing.domain.common.dto.FleetDTO;
|
||||
import com.sap.sailing.domain.common.dto.PlacemarkDTO;
|
||||
import com.sap.sailing.domain.common.dto.PlacemarkOrderDTO;
|
||||
@@ -147,11 +148,16 @@ public class DomainFactoryImpl extends SharedDomainFactoryImpl implements Domain
|
||||
|
||||
@Override
|
||||
public CompetitorDTO convertToCompetitorDTO(Competitor competitor, Boat boat) {
|
||||
return competitorAndBoatStore.convertToCompetitorDTO(competitor, boat);
|
||||
return competitorAndBoatStore.convertToCompetitorWithBoatDTO(competitor, boat);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends Competitor> CompetitorDTO convertToCompetitorDTO(T competitor) {
|
||||
public CompetitorDTO convertToCompetitorWithOptionalBoatDTO(Competitor competitor) {
|
||||
return competitorAndBoatStore.convertToCompetitorWithOptionalBoatDTO(competitor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompetitorWithoutBoatDTO convertToCompetitorDTO(Competitor competitor) {
|
||||
return competitorAndBoatStore.convertToCompetitorDTO(competitor);
|
||||
}
|
||||
|
||||
@@ -371,12 +377,11 @@ public class DomainFactoryImpl extends SharedDomainFactoryImpl implements Domain
|
||||
return result;
|
||||
}
|
||||
|
||||
/** TODO bug2822: Check usage of this method */
|
||||
@Override
|
||||
public List<CompetitorDTO> getCompetitorDTOList(Iterable<Competitor> competitors) {
|
||||
List<CompetitorDTO> result = new ArrayList<CompetitorDTO>();
|
||||
for (Competitor competitor : competitors) {
|
||||
result.add(convertToCompetitorDTO(competitor, null));
|
||||
result.add(convertToCompetitorWithOptionalBoatDTO(competitor));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
+2
-2
@@ -366,7 +366,7 @@ public abstract class AbstractLeaderboardWithCache implements Leaderboard {
|
||||
}
|
||||
|
||||
for (Competitor suppressedCompetitor : this.getSuppressedCompetitors()) {
|
||||
result.setSuppressed(baseDomainFactory.convertToCompetitorDTO(suppressedCompetitor), true);
|
||||
result.setSuppressed(baseDomainFactory.convertToCompetitorWithOptionalBoatDTO(suppressedCompetitor), true);
|
||||
}
|
||||
// Now create the race columns and, as a future task, set their competitorsFromBestToWorst, then wait for all these
|
||||
// futures to finish:
|
||||
@@ -453,7 +453,7 @@ public abstract class AbstractLeaderboardWithCache implements Leaderboard {
|
||||
}
|
||||
}
|
||||
for (final Competitor competitor : this.getCompetitorsFromBestToWorst(timePoint)) {
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor);
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorWithOptionalBoatDTO(competitor);
|
||||
LeaderboardRowDTO row = new LeaderboardRowDTO();
|
||||
row.competitor = competitorDTO;
|
||||
row.fieldsByRaceColumnName = new HashMap<String, LeaderboardEntryDTO>();
|
||||
|
||||
+18
-16
@@ -800,7 +800,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
}
|
||||
// Un-comment the following lines if you need to update the file used by LeaderboardDTODiffingTest, set a breakpoint
|
||||
// and toggle the storeLeaderboardForTesting flag if you found a good version. See also bug 1417.
|
||||
boolean storeLeaderboardForTesting = false;
|
||||
boolean storeLeaderboardForTesting = true;
|
||||
if (storeLeaderboardForTesting) {
|
||||
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("C:/Projekte/sailing/dev/git/java/com.sap.sailing.domain.test/resources/IncrementalLeaderboardDTO.ser")));
|
||||
oos.writeObject(leaderboardDTO);
|
||||
@@ -1097,7 +1097,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
private List<CompetitorDTO> convertToCompetitorDTOs(Iterable<? extends Competitor> iterable) {
|
||||
List<CompetitorDTO> result = new ArrayList<CompetitorDTO>();
|
||||
for (Competitor c : iterable) {
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(c);
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorWithOptionalBoatDTO(c);
|
||||
result.add(competitorDTO);
|
||||
}
|
||||
return result;
|
||||
@@ -1806,9 +1806,10 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
Map<CompetitorDTO, List<GPSFixDTOWithSpeedWindTackAndLegType>> result = new HashMap<CompetitorDTO, List<GPSFixDTOWithSpeedWindTackAndLegType>>();
|
||||
TrackedRace trackedRace = getExistingTrackedRace(raceIdentifier);
|
||||
if (trackedRace != null) {
|
||||
for (Competitor competitor : trackedRace.getRace().getCompetitors()) {
|
||||
for (Entry<Competitor, Boat> competitorAndBoat : trackedRace.getRace().getCompetitorsAndTheirBoats().entrySet()) {
|
||||
Competitor competitor = competitorAndBoat.getKey();
|
||||
if (fromPerCompetitorIdAsString.containsKey(competitor.getId().toString())) {
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor);
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor, competitorAndBoat.getValue());
|
||||
List<GPSFixDTOWithSpeedWindTackAndLegType> fixesForCompetitor = new ArrayList<GPSFixDTOWithSpeedWindTackAndLegType>();
|
||||
result.put(competitorDTO, fixesForCompetitor);
|
||||
GPSFixTrack<Competitor, GPSFixMoving> track = trackedRace.getTrack(competitor);
|
||||
@@ -2252,7 +2253,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
TrackedLegOfCompetitor trackedLeg = trackedRace.getTrackedLeg(competitor, actualTimePoint);
|
||||
if (trackedLeg != null) {
|
||||
int legNumberOneBased = race.getCourse().getLegs().indexOf(trackedLeg.getLeg()) + 1;
|
||||
QuickRankDTO quickRankDTO = new QuickRankDTO(baseDomainFactory.convertToCompetitorDTO(competitor),
|
||||
Boat boatOfCompetitor = trackedRace.getBoatOfCompetitor(competitor);
|
||||
QuickRankDTO quickRankDTO = new QuickRankDTO(baseDomainFactory.convertToCompetitorDTO(competitor, boatOfCompetitor),
|
||||
oneBasedRank, legNumberOneBased);
|
||||
result.add(quickRankDTO);
|
||||
}
|
||||
@@ -3133,7 +3135,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
List<CompetitorDTO> competitorDTOs = new ArrayList<>();
|
||||
List<Double> pointSums = new ArrayList<>();
|
||||
for (Entry<Competitor, Double> e2 : e.getValue().entrySet()) {
|
||||
competitorDTOs.add(baseDomainFactory.convertToCompetitorDTO(e2.getKey()));
|
||||
competitorDTOs.add(baseDomainFactory.convertToCompetitorWithOptionalBoatDTO(e2.getKey()));
|
||||
pointSums.add(e2.getValue());
|
||||
}
|
||||
result.add(new Triple<String, List<CompetitorDTO>, List<Double>>(e.getKey().getName(), competitorDTOs, pointSums));
|
||||
@@ -3149,7 +3151,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
List<CompetitorDTO> competitorDTOs = new ArrayList<CompetitorDTO>();
|
||||
for (Competitor competitor : e.getValue()) {
|
||||
values.add(new Double(rank));
|
||||
competitorDTOs.add(baseDomainFactory.convertToCompetitorDTO(competitor));
|
||||
competitorDTOs.add(baseDomainFactory.convertToCompetitorWithOptionalBoatDTO(competitor));
|
||||
rank++;
|
||||
}
|
||||
result.add(new Triple<String, List<CompetitorDTO>, List<Double>>(e.getKey().getName(), competitorDTOs, values));
|
||||
@@ -3202,8 +3204,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
TrackedRace trackedRace = getExistingTrackedRace(raceIdentifier);
|
||||
if (trackedRace != null) {
|
||||
MeterDistance maxDistance = new MeterDistance(meters);
|
||||
for (Competitor competitor : trackedRace.getRace().getCompetitors()) {
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor);
|
||||
for (Entry<Competitor, Boat> competitorAndBoat : trackedRace.getRace().getCompetitorsAndTheirBoats().entrySet()) {
|
||||
Competitor competitor = competitorAndBoat.getKey();
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor, competitorAndBoat.getValue());
|
||||
if (from.containsKey(competitorDTO)) {
|
||||
// get Track of competitor
|
||||
GPSFixTrack<Competitor, GPSFixMoving> gpsFixTrack = trackedRace.getTrack(competitor);
|
||||
@@ -3259,8 +3262,9 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
final TrackedRace trackedRace = getExistingTrackedRace(raceIdentifier);
|
||||
if (trackedRace != null) {
|
||||
Map<CompetitorDTO, Future<List<ManeuverDTO>>> futures = new HashMap<CompetitorDTO, Future<List<ManeuverDTO>>>();
|
||||
for (final Competitor competitor : trackedRace.getRace().getCompetitors()) {
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor);
|
||||
for (Entry<Competitor, Boat> competitorAndBoat : trackedRace.getRace().getCompetitorsAndTheirBoats().entrySet()) {
|
||||
Competitor competitor = competitorAndBoat.getKey();
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor, competitorAndBoat.getValue());
|
||||
if (from.containsKey(competitorDTO)) {
|
||||
final TimePoint timePointFrom = new MillisecondsTimePoint(from.get(competitorDTO));
|
||||
final TimePoint timePointTo = new MillisecondsTimePoint(to.get(competitorDTO));
|
||||
@@ -4851,11 +4855,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
if (raceColumn != null && fleet != null) {
|
||||
result = new ArrayList<>();
|
||||
for (Competitor competitor: leaderboard.getCompetitors(raceColumn, fleet)) {
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor);
|
||||
Boat boatOfCompetitor = competitorAndBoats.get(competitor);
|
||||
if (boatOfCompetitor != null) {
|
||||
competitorDTO.setBoat(baseDomainFactory.convertToBoatDTO(boatOfCompetitor));
|
||||
}
|
||||
CompetitorDTO competitorDTO = baseDomainFactory.convertToCompetitorDTO(competitor, boatOfCompetitor);
|
||||
result.add(competitorDTO);
|
||||
}
|
||||
}
|
||||
@@ -4943,7 +4944,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
|
||||
@Override
|
||||
public CompetitorDTO addOrUpdateCompetitorWithBoat(CompetitorDTO competitor) throws URISyntaxException {
|
||||
return getBaseDomainFactory().convertToCompetitorDTO(addOrUpdateCompetitorWithBoatInternal(competitor));
|
||||
CompetitorWithBoat competitorWithBoat = addOrUpdateCompetitorWithBoatInternal(competitor);
|
||||
return getBaseDomainFactory().convertToCompetitorWithOptionalBoatDTO(competitorWithBoat);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user