diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/FleetDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/FleetDTO.java index 7bb7cea1a92..ec6215dea08 100644 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/FleetDTO.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/FleetDTO.java @@ -1,17 +1,12 @@ package com.sap.sailing.domain.common.dto; import com.sap.sailing.domain.common.Color; -import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState; public class FleetDTO extends NamedDTO { private static final long serialVersionUID = 1336494392278190103L; private Color color; private int orderNo; - public RaceLogTrackingState raceLogTrackingState; - public boolean raceLogTrackerExists; - public boolean competitorRegistrationsExist; - public FleetDTO() {} public FleetDTO(String fleetName, int orderNo, Color color) { diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/RaceColumnDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/RaceColumnDTO.java index f1a6e33525f..d04714e0cc0 100755 --- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/RaceColumnDTO.java +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/RaceColumnDTO.java @@ -22,6 +22,8 @@ public class RaceColumnDTO extends NamedDTO implements Serializable { private Boolean isValidInTotalScore; private Double explicitFactor; private double effectiveFactor; + + private final Map raceLogTrackingInfos = new HashMap(); RaceColumnDTO() {} // for GWT serialization @@ -283,4 +285,12 @@ public class RaceColumnDTO extends NamedDTO implements Serializable { public double getEffectiveFactor() { return effectiveFactor; } + + public RaceLogTrackingInfoDTO getRaceLogTrackingInfo(FleetDTO fleet) { + return raceLogTrackingInfos.get(fleet); + } + + public void setRaceLogTrackingInfo(FleetDTO fleet, RaceLogTrackingInfoDTO info) { + raceLogTrackingInfos.put(fleet, info); + } } diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/RaceLogTrackingInfoDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/RaceLogTrackingInfoDTO.java new file mode 100644 index 00000000000..6ee6ab2a41b --- /dev/null +++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/RaceLogTrackingInfoDTO.java @@ -0,0 +1,16 @@ +package com.sap.sailing.domain.common.dto; + +import com.sap.sailing.domain.common.racelog.tracking.RaceLogTrackingState; + +public class RaceLogTrackingInfoDTO { + public boolean raceLogTrackerExists; + public boolean competitorRegistrationsExists; + public RaceLogTrackingState raceLogTrackingState; + + public RaceLogTrackingInfoDTO(boolean raceLogTrackerExists, boolean competitorRegistrationsExists, + RaceLogTrackingState raceLogTrackingState) { + this.raceLogTrackerExists = raceLogTrackerExists; + this.competitorRegistrationsExists = competitorRegistrationsExists; + this.raceLogTrackingState = raceLogTrackingState; + } +} diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java index 4fc45132f41..d6860615cf0 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementPanel.java @@ -82,12 +82,24 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf leaderboardTable.addColumnSortHandler(leaderboardColumnListHandler); } + private RaceLogTrackingState getTrackingState(RaceColumnDTOAndFleetDTOWithNameBasedEquality race) { + return race.getA().getRaceLogTrackingInfo(race.getB()).raceLogTrackingState; + } + + private boolean doesTrackerExist(RaceColumnDTOAndFleetDTOWithNameBasedEquality race) { + return race.getA().getRaceLogTrackingInfo(race.getB()).raceLogTrackerExists; + } + + private boolean doCompetitorResgistrationsExist(RaceColumnDTOAndFleetDTOWithNameBasedEquality race) { + return race.getA().getRaceLogTrackingInfo(race.getB()).competitorRegistrationsExists; + } + @Override protected void addColumnsToRacesTable(CellTable racesTable) { TextColumn raceLogTrackingStateColumn = new TextColumn() { @Override public String getValue(RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnAndFleetName) { - RaceLogTrackingState state = raceColumnAndFleetName.getB().raceLogTrackingState; + RaceLogTrackingState state = getTrackingState(raceColumnAndFleetName); return state.name(); } }; @@ -95,7 +107,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf TextColumn trackerStateColumn = new TextColumn() { @Override public String getValue(RaceColumnDTOAndFleetDTOWithNameBasedEquality raceColumnAndFleetName) { - return raceColumnAndFleetName.getB().raceLogTrackerExists ? "Active" : "None"; + return doesTrackerExist(raceColumnAndFleetName) ? "Active" : "None"; } }; @@ -108,8 +120,8 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf final String leaderboardName = getSelectedLeaderboardName(); final String raceColumnName = object.getA().getName(); final String fleetName = object.getB().getName(); - boolean editable = ! (object.getB().raceLogTrackerExists && - object.getB().raceLogTrackingState == RaceLogTrackingState.TRACKING); + boolean editable = ! (doesTrackerExist(object) && + getTrackingState(object) == RaceLogTrackingState.TRACKING); if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_DENOTE_FOR_RACELOG_TRACKING.equals(value)) { denoteForRaceLogTracking(object.getA(), object.getB()); } else if (RaceLogTrackingEventManagementRaceImagesBarCell.ACTION_REMOVE_DENOTATION.equals(value)) { @@ -120,7 +132,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf new Callback() { @Override public void onSuccess(Boolean result) { - object.getB().competitorRegistrationsExist = result; + object.getA().getRaceLogTrackingInfo(object.getB()).competitorRegistrationsExists = result; } @Override @@ -206,7 +218,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf private void enableStartTrackingButtonIfAppropriateRacesSelected() { boolean enable = raceColumnTableSelectionModel.getSelectedSet().size() > 0; for (RaceColumnDTOAndFleetDTOWithNameBasedEquality race : raceColumnTableSelectionModel.getSelectedSet()) { - if (! race.getB().raceLogTrackingState.isForTracking() || race.getB().raceLogTrackerExists) { + if (! getTrackingState(race).isForTracking() || doesTrackerExist(race)) { enable = false; } } @@ -297,7 +309,7 @@ public class RaceLogTrackingEventManagementPanel extends AbstractLeaderboardConf //prompt user if competitor registrations are missing for same races String namesOfRacesMissingRegistrations = ""; for (RaceColumnDTOAndFleetDTOWithNameBasedEquality race : races) { - if (! race.getB().competitorRegistrationsExist) { + if (! doCompetitorResgistrationsExist(race)) { namesOfRacesMissingRegistrations += race.getA().getName() + "/" + race.getB().getName() + " "; } } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementRaceImagesBarCell.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementRaceImagesBarCell.java index ff173a797c5..52459167fc4 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementRaceImagesBarCell.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingEventManagementRaceImagesBarCell.java @@ -29,7 +29,7 @@ public class RaceLogTrackingEventManagementRaceImagesBarCell extends ImagesBarCe protected Iterable getImageSpecs() { List result = new ArrayList(); RaceColumnDTOAndFleetDTOWithNameBasedEquality object = (RaceColumnDTOAndFleetDTOWithNameBasedEquality) getContext().getKey(); - if (! object.getB().raceLogTrackingState.isForTracking()) { + if (! object.getA().getRaceLogTrackingInfo(object.getB()).raceLogTrackingState.isForTracking()) { result.add(new ImageSpec(ACTION_DENOTE_FOR_RACELOG_TRACKING, stringMessages.denoteForRaceLogTracking(), makeImagePrototype(resources.denoteForRaceLogTracking()))); } else { result.add(new ImageSpec(ACTION_REMOVE_DENOTATION, stringMessages.removeDenotation(), makeImagePrototype(resources.unDenoteForRaceLogTracking()))); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 51460cad8b1..59c1e955fef 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -142,6 +142,7 @@ import com.sap.sailing.domain.common.dto.PositionDTO; import com.sap.sailing.domain.common.dto.RaceColumnDTO; import com.sap.sailing.domain.common.dto.RaceColumnInSeriesDTO; import com.sap.sailing.domain.common.dto.RaceDTO; +import com.sap.sailing.domain.common.dto.RaceLogTrackingInfoDTO; import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO; import com.sap.sailing.domain.common.dto.TrackedRaceDTO; import com.sap.sailing.domain.common.impl.DegreeBearingImpl; @@ -2059,15 +2060,16 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S raceDTO = baseDomainFactory.createRaceDTO(getService(), withGeoLocationData, raceIdentifier, trackedRace); } final FleetDTO fleetDTO = baseDomainFactory.convertToFleetDTO(fleet); - leaderboardDTO.addRace(raceColumn.getName(), raceColumn.getExplicitFactor(), raceColumn.getFactor(), - fleetDTO, raceColumn.isMedalRace(), raceIdentifier, raceDTO); + RaceColumnDTO raceColumnDTO = leaderboardDTO.addRace(raceColumn.getName(), raceColumn.getExplicitFactor(), + raceColumn.getFactor(), fleetDTO, raceColumn.isMedalRace(), raceIdentifier, raceDTO); RaceLog raceLog = raceColumn.getRaceLog(fleet); RaceLogTrackingState raceLogTrackingState = new RaceLogTrackingStateAnalyzer(raceLog).analyze(); - fleetDTO.raceLogTrackingState = raceLogTrackingState; - fleetDTO.raceLogTrackerExists = getService().getRaceTrackerById(raceLog.getId()) != null; - - fleetDTO.competitorRegistrationsExist = ! new RegisteredCompetitorsAnalyzer(raceLog).analyze().isEmpty(); + boolean raceLogTrackerExists = getService().getRaceTrackerById(raceLog.getId()) != null; + boolean competitorRegistrationsExist = ! new RegisteredCompetitorsAnalyzer(raceLog).analyze().isEmpty(); + RaceLogTrackingInfoDTO raceLogTrackingInfo = new RaceLogTrackingInfoDTO(raceLogTrackerExists, + competitorRegistrationsExist, raceLogTrackingState); + raceColumnDTO.setRaceLogTrackingInfo(fleetDTO, raceLogTrackingInfo); } } return leaderboardDTO;