Merge branch 'master' into bug5212

This commit is contained in:
Dennis Aulenbacher committed 2020-05-15 17:37:56 +02:00
commit 1ec5a07cfb
223 files changed
+6828 -6817

No files matched your search

@@ -37,6 +37,25 @@
<servlet-name>ClientConfigurationServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<servlet>
<display-name>Sailing ServiceWrite</display-name>
<servlet-name>SailingServiceWrite</servlet-name>
<servlet-class>com.sap.sailing.gwt.ui.server.SailingServiceWriteImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SailingServiceWrite</servlet-name>
<url-pattern>/service/sailingmaster</url-pattern>
<url-pattern>/service/sailingmaster/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>LocaleInjectionFilter</filter-name>
<filter-class>com.sap.sse.security.ui.server.LocaleInjectionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LocaleInjectionFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter>
<filter-name>LocaleInjectionFilter</filter-name>
@@ -1,12 +0,0 @@
package com.sap.sailing.domain.common;
import java.io.Serializable;
import java.util.List;
import com.sap.sse.common.Util.Pair;
public interface PolarSheetsXYDiagramData extends Serializable {
List<Pair<Double, Double>> getPointsForAverageSpeedRegression(Tack tack, LegType legType);
}
@@ -57,6 +57,10 @@ public class BoatDTO extends NamedSecuredObjectDTO implements WithID, Serializab
return boatClass;
}
public void setBoatClass(BoatClassDTO boatClass) {
this.boatClass = boatClass;
}
public String getDisplayName() {
final StringBuilder sb = new StringBuilder();
final boolean hasSailId = sailId != null && !sailId.isEmpty();
@@ -1,6 +1,10 @@
package com.sap.sailing.domain.common.dto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import com.sap.sse.common.Util;
public class PairingListTemplateDTO implements Serializable {
@@ -15,7 +19,7 @@ public class PairingListTemplateDTO implements Serializable {
private int[][] pairingListTemplate;
private double quality;
private double boatAssignmentQuality;
private Iterable<String> selectedFlightNames;
private List<String> selectedFlightNames;
public PairingListTemplateDTO() { }
@@ -50,7 +54,8 @@ public class PairingListTemplateDTO implements Serializable {
this.boatAssignmentQuality = boatAssigmentQuality;
this.quality = quality;
this.pairingListTemplate = pairingListTemplate;
this.selectedFlightNames = selectedFlightNames;
this.selectedFlightNames = new ArrayList<>();
Util.addAll(selectedFlightNames, this.selectedFlightNames);
}
public void setFlightCount(int flightCount) {
@@ -69,7 +74,7 @@ public class PairingListTemplateDTO implements Serializable {
this.boatChangeFactor = tolerance;
}
public void setSelectedFlightNames(Iterable<String> selectedFlightNames) {
public void setSelectedFlightNames(List<String> selectedFlightNames) {
this.selectedFlightNames = selectedFlightNames;
}
@@ -109,7 +114,7 @@ public class PairingListTemplateDTO implements Serializable {
return boatChangeFactor;
}
public Iterable<String> getSelectedFlightNames() {
public List<String> getSelectedFlightNames() {
return selectedFlightNames;
}
@@ -1,29 +0,0 @@
package com.sap.sailing.domain.common.impl;
import java.util.List;
import java.util.Map;
import com.sap.sailing.domain.common.LegType;
import com.sap.sailing.domain.common.PolarSheetsXYDiagramData;
import com.sap.sailing.domain.common.Tack;
import com.sap.sse.common.Util.Pair;
public class PolarSheetsXYDiagramDataImpl implements PolarSheetsXYDiagramData {
private static final long serialVersionUID = 778667444303004468L;
PolarSheetsXYDiagramDataImpl() {
}
private Map<Pair<LegType, Tack>, List<Pair<Double, Double>>> pointsForAverageSpeedRegression;
public PolarSheetsXYDiagramDataImpl(
Map<Pair<LegType, Tack>, List<Pair<Double, Double>>> regressionSpeedDataLists) {
pointsForAverageSpeedRegression = regressionSpeedDataLists;
}
@Override
public List<Pair<Double, Double>> getPointsForAverageSpeedRegression(Tack tack, LegType legType) {
return pointsForAverageSpeedRegression.get(new Pair<LegType, Tack>(legType, tack));
}
}
@@ -337,10 +337,12 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
}
public static TimePoint loadTimePoint(Document object, String fieldName) {
TimePoint result = null;
final TimePoint result;
Number timePointAsNumber = (Number) object.get(fieldName);
if (timePointAsNumber != null) {
result = new MillisecondsTimePoint(timePointAsNumber.longValue());
} else {
result = null;
}
return result;
}
@@ -351,12 +353,15 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
public static TimeRange loadTimeRange(Document object, FieldNames field) {
Document timeRangeObj = (Document) object.get(field.name());
final TimeRange result;
if (timeRangeObj == null) {
return null;
result = null;
} else {
TimePoint from = loadTimePoint(timeRangeObj, FieldNames.FROM_MILLIS);
TimePoint to = loadTimePoint(timeRangeObj, FieldNames.TO_MILLIS);
result = new TimeRangeImpl(from, to);
}
TimePoint from = loadTimePoint(timeRangeObj, FieldNames.FROM_MILLIS);
TimePoint to = loadTimePoint(timeRangeObj, FieldNames.TO_MILLIS);
return new TimeRangeImpl(from, to);
return result;
}
/**
@@ -1165,7 +1170,7 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
UUID id = (UUID) eventDBObject.get(FieldNames.EVENT_ID.name());
TimePoint startDate = loadTimePoint(eventDBObject, FieldNames.EVENT_START_DATE);
TimePoint endDate = loadTimePoint(eventDBObject, FieldNames.EVENT_END_DATE);
if (endDate.before(startDate)) {
if (endDate != null && startDate != null && endDate.before(startDate)) {
logger.warning("End date "+endDate+" of event "+name+" with ID "+id+" is before its start date "+
startDate+"; adjusting such that end date equals start date.");
endDate = startDate;
@@ -70,8 +70,6 @@ public interface DomainFactory {
MarkPassing createMarkPassing(TimePoint timePoint, Waypoint waypoint, Competitor competitor);
void removeRace(String raceID);
RaceType getRaceTypeFromRaceID(String raceID);
RaceTrackingConnectivityParameters createTrackingConnectivityParameters(String hostname, int port, String raceID,
@@ -6,12 +6,10 @@ import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.logging.Logger;
@@ -401,24 +399,6 @@ public class DomainFactoryImpl implements DomainFactory {
return baseDomainFactory.createMarkPassing(timePoint, waypoint, competitor);
}
@Override
public void removeRace(String raceID) {
Regatta regatta = raceIDToRegattaCache.get(raceID);
if (regatta != null) {
Set<RaceDefinition> toRemove = new HashSet<RaceDefinition>();
RaceDefinition race = regatta.getRaceByName(raceID);
if (race != null) {
toRemove.add(race);
}
for (RaceDefinition raceToRemove : toRemove) {
regatta.removeRace(raceToRemove);
}
if (Util.isEmpty(regatta.getAllRaces())) {
raceIDToRegattaCache.remove(raceID);
}
}
}
@Override
public Nationality getOrCreateNationality(String threeLetterIOCCode) {
return baseDomainFactory.getOrCreateNationality(threeLetterIOCCode);
@@ -0,0 +1,3 @@
{"rms":[
{"NatAuth":"UKR","BIN":"UKR0267_Karina","CertNo":"0267_4","RefNo":"03600000HUH","SailNo":"UKR 267","YachtName":"Karina","Class":"Teliga 89","Builder":"im. L Teligi","Designer":"L. Teliga","Address3":"YC Obolon","C_Type":"CLUB","Family":"ORC","Division":"C","IssueDate":"2020-05-07T11:48:07.143Z","Age_Year":1975,"CrewWT":460,"LOA":8.95,"IMSL":7.354,"Draft":1.562,"MB":3.092,"Dspl_Measurement":3790,"Stability_Index":107.3,"Dynamic_Allowance":0.328,"GPH":725.4,"TMF_Inshore":0.8568,"ILCWA":787.8,"TMF_Offshore":0.849,"OSN":706.7,"CDL":6.694,"TN_Offshore_Low":0.8193,"TN_Offshore_Medium":1.0478,"TN_Offshore_High":1.1557,"TN_Inshore_Low":0.6372,"TN_Inshore_Medium":0.8543,"TN_Inshore_High":0.9652,"TND_Offshore_Low":823.9,"TND_Offshore_Medium":644.2,"TND_Offshore_High":584.1,"TND_Inshore_Low":1059.3,"TND_Inshore_Medium":790.1,"TND_Inshore_High":699.3,"OSN_Jibs":735.4,"TMF_Jibs":0.8158,"Pred_Up_TOD":708.3,"Pred_Down_TOD":650.3,"Pred_Up_TOT":0.8471,"Pred_Down_TOT":0.9227,"Dspl_Sailing":4377,"WSS":18.58,"Area_Main":17.88,"Area_Jib":33.38,"Area_Sym":71.46,"Area_ASym":56.06,"GPH_Jibs":757.5,"GPH_Jibs_TOT":0.7921,"Allowances":{"WindSpeeds":[6,8,10,12,14,16,20],"WindAngles":[52,60,75,90,110,120,135,150],"Beat":[1215.6,1032.2,921.7,859.4,840,835.1,853.2],"Run":[1102.9,886.5,746.4,655.8,596.9,564.7,518.9],"BeatAngle":[42.8,42,42.8,41.4,40.9,40.7,41.8],"GybeAngle":[148,152,150.5,162,180,180,180],"WL":[1159.2,959.4,834.1,757.6,718.4,699.9,686],"CR":[989.5,803.2,704.2,647.7,614.3,594,572.2],"OC":[1153.6,900.2,752.5,666.7,624.4,593.1,543.1],"NS":[1044.7,843.1,734.6,671.9,634.2,611.1,586],"OL":[1116.2,923.6,815.1,753.8,722.7,706.6,697.2],"R52":[796.9,680.2,617.6,591.6,581.2,577.6,579],"R60":[753.3,644.5,598.1,576.8,565.2,560.4,559.4],"R75":[723,622.2,584.2,564,549,537.5,528],"R90":[729.8,623.6,577.4,552.9,539.1,527.4,503.9],"R110":[729.1,608.7,564.9,538.7,516.9,499.7,477.8],"R120":[750.3,617.8,568.6,540.6,515,493.4,466],"R135":[817.4,671.3,588.5,556.1,530.2,505,465.1],"R150":[955.2,767.9,647,584.3,555.6,531.9,487.7]}}
]}
@@ -13,6 +13,11 @@ public class TestORCCertificateImporterJSON extends AbstractORCCertificateImport
testSimpleLocalFileRead("GER2019.json", "GER20041179");
}
@Test
public void testReadingJSONWithSpecificBins() throws IOException, ParseException {
testSimpleLocalFileRead("03600000HUH.json", "03600000HUH");
}
@FailIfNoValidOrcCertificates
@Test
public void testSimpleOnlineJSONFileRead() throws IOException, ParseException, InterruptedException {
@@ -31,36 +31,36 @@ public class CountryCodeTest {
public void convertHTML() throws IOException {
InputStream is = Util.class.getResourceAsStream("countrycodes.csv");
assertNotNull(is);
BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String line;
List<String[]> matrix = new LinkedList<String[]>();
String[] row = null;
int column = 8;
Pattern p = Pattern.compile("<TD[^>]*> *(<[pP]>)?([^<]*)(</[pP]>)? *</TD>");
while ((line=br.readLine()) != null) {
if (line.contains("<TR>")) {
assertEquals(8, column);
column = 0;
row = new String[8];
matrix.add(row);
} else {
if (line.contains("<TD")) {
Matcher m = p.matcher(line);
if (m.find()) {
String entry = m.group(2);
if (entry != null) {
entry = URLDecoder.decode(entry, "UTF-8").trim();
if (entry.startsWith(".")) {
// IANA domain name will be stripped of leading "."
entry = entry.substring(1);
try (BufferedReader br = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")))) {
String line;
String[] row = null;
int column = 8;
Pattern p = Pattern.compile("<TD[^>]*> *(<[pP]>)?([^<]*)(</[pP]>)? *</TD>");
while ((line = br.readLine()) != null) {
if (line.contains("<TR>")) {
assertEquals(8, column);
column = 0;
row = new String[8];
matrix.add(row);
} else {
if (line.contains("<TD")) {
Matcher m = p.matcher(line);
if (m.find()) {
String entry = m.group(2);
if (entry != null) {
entry = URLDecoder.decode(entry, "UTF-8").trim();
if (entry.startsWith(".")) {
// IANA domain name will be stripped of leading "."
entry = entry.substring(1);
}
}
row[column++] = entry == null || entry.length() == 0 ? null : entry;
}
row[column++] = entry == null || entry.length() == 0 ? null : entry;
}
}
}
}
br.close();
assertEquals(NUMBER_OF_COUNTRY_CODES, matrix.size());
for (String[] r : matrix) {
StringBuilder sb = new StringBuilder(" add(new CountryCodeImpl(");
@@ -111,11 +111,11 @@ public class JorgesTracTracParallelLoadingTest {
InputStream is = eventURI.toURL().openStream();
StringBuffer jsonContent = new StringBuffer();
String line = null;
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
while ((line = reader.readLine()) != null) {
jsonContent.append(line);
try (BufferedReader reader = new BufferedReader(new InputStreamReader(is));) {
while ((line = reader.readLine()) != null) {
jsonContent.append(line);
}
}
reader.close();
StringTokenizer it = new StringTokenizer(jsonContent.toString(), ",");
while (it.hasMoreElements()) {
String item = it.nextElement().toString();
@@ -334,14 +334,6 @@ public interface DomainFactory {
*/
Iterable<IControl> getControlsForCourseArea(IEvent tracTracEvent, String tracTracCourseAreaName);
/**
* Since TracAPI 3.6.1 the TracAPI provides a course area name for {@link IRace} objects. Furthermore, the
* {@link IControl} control points can now tell their {@link IControl#getCourseArea() course area}. This allows us
* to fetch the {@link IControlPoint}s for a specific course area, thereby, e.g., restricting the marks of an event
* that we offer to the Race Manager app's course designer to those available on the course area.
*/
Iterable<IControlPoint> getControlPointsForCourseArea(IEvent tracTracEvent, String tracTracCourseAreaName);
/**
* Looks for an {@link IControl} in the {@code candidates} that contains two {@link IControlPoint}s that map to the
* {@code first} and {@code second} mark.
@@ -112,7 +112,6 @@ import com.tractrac.model.lib.api.event.IEvent;
import com.tractrac.model.lib.api.event.IRace;
import com.tractrac.model.lib.api.event.IRaceCompetitor;
import com.tractrac.model.lib.api.route.IControl;
import com.tractrac.model.lib.api.route.IControlPoint;
import com.tractrac.subscription.lib.api.IEventSubscriber;
import com.tractrac.subscription.lib.api.IRaceSubscriber;
import com.tractrac.subscription.lib.api.SubscriberInitializationException;
@@ -703,15 +702,6 @@ public class DomainFactoryImpl implements DomainFactory {
}
}
@Override
public Iterable<IControlPoint> getControlPointsForCourseArea(IEvent tracTracEvent, String tracTracCourseAreaName) {
final Set<IControlPoint> result = new HashSet<>();
for (final IControl control : getControlsForCourseArea(tracTracEvent, tracTracCourseAreaName)) {
result.addAll(control.getControlPoints());
}
return result;
}
@Override
public Iterable<IControl> getControlsForCourseArea(IEvent tracTracEvent, String tracTracCourseAreaName) {
final Set<IControl> result = new HashSet<>();
@@ -34,7 +34,6 @@ import com.sap.sailing.domain.tracking.impl.RaceAbortedHandler;
import com.sap.sailing.domain.tracking.impl.StartTimeUpdateHandler;
import com.sap.sse.common.IsManagedByCache;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.util.ObjectInputStreamResolvingAgainstCache;
import com.sap.sse.util.ObjectInputStreamResolvingAgainstCache.ResolveListener;
@@ -107,12 +106,8 @@ public interface DomainFactory extends SharedDomainFactory<RaceLogAndTrackedRace
PlacemarkDTO convertToPlacemarkDTO(Placemark placemark);
List<CompetitorAndBoatDTO> getCompetitorDTOList(Map<Competitor, Boat> competitors);
List<CompetitorDTO> getCompetitorDTOList(Iterable<Competitor> competitors);
List<CompetitorAndBoatDTO> getCompetitorDTOList(List<Pair<Competitor, Boat>> competitors);
TrackedRaceDTO createTrackedRaceDTO(TrackedRace trackedRace);
TrackedRaceStatisticsDTO createTrackedRaceStatisticsDTO(TrackedRace trackedRace, Leaderboard leaderboard, RaceColumn raceColumn,
@@ -57,10 +57,6 @@ public interface Series extends SeriesBase {
RaceColumnInSeries addRaceColumn(int insertIndex, String raceColumnName, TrackedRegattaRegistry trackedRegattaRegistry);
void moveRaceColumnUp(String raceColumnName);
void moveRaceColumnDown(String raceColumnName);
void removeRaceColumn(String raceColumnName);
/**
@@ -6,7 +6,6 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.logging.Logger;
import com.sap.sailing.domain.base.Boat;
@@ -79,7 +78,6 @@ import com.sap.sailing.geocoding.ReverseGeocoder;
import com.sap.sse.common.Distance;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
import com.sap.sse.common.impl.MillisecondsTimePoint;
import com.sap.sse.util.ObjectInputStreamResolvingAgainstCache;
import com.sap.sse.util.ObjectInputStreamResolvingAgainstCache.ResolveListener;
@@ -385,15 +383,6 @@ public class DomainFactoryImpl extends SharedDomainFactoryImpl<RaceLogAndTracked
position.getLngDeg()), placemark.getPopulation());
}
@Override
public List<CompetitorAndBoatDTO> getCompetitorDTOList(Map<Competitor, Boat> competitors) {
List<CompetitorAndBoatDTO> result = new ArrayList<>();
for (Entry<Competitor, Boat> competitorAndBoatEntry : competitors.entrySet()) {
result.add(convertToCompetitorAndBoatDTO(competitorAndBoatEntry.getKey(), competitorAndBoatEntry.getValue()));
}
return result;
}
@Override
public List<CompetitorDTO> getCompetitorDTOList(Iterable<Competitor> competitors) {
List<CompetitorDTO> result = new ArrayList<>();
@@ -403,15 +392,6 @@ public class DomainFactoryImpl extends SharedDomainFactoryImpl<RaceLogAndTracked
return result;
}
@Override
public List<CompetitorAndBoatDTO> getCompetitorDTOList(List<Pair<Competitor, Boat>> competitors) {
List<CompetitorAndBoatDTO> result = new ArrayList<>();
for (Pair<Competitor, Boat> competitorAndBoat : competitors) {
result.add(convertToCompetitorAndBoatDTO(competitorAndBoat.getA(), competitorAndBoat.getB()));
}
return result;
}
@Override
public void addUpdateHandlers(DynamicTrackedRace trackedRace, CourseDesignUpdateHandler courseDesignHandler,
StartTimeUpdateHandler startTimeHandler, RaceAbortedHandler raceAbortedHandler,
@@ -209,57 +209,6 @@ public class SeriesImpl extends RenamableImpl implements Series, RaceColumnListe
}
}
@Override
public void moveRaceColumnUp(String raceColumnName) {
boolean didFirstColumnChange = false; // if it changes and the series starts scoring with zero, notify the change
// start at second element because first can't be moved up
for (int i=1; i<raceColumns.size(); i++) {
RaceColumnInSeries rc = raceColumns.get(i);
if (rc.getName().equals(raceColumnName)) {
raceColumns.remove(i);
if (i==1) {
didFirstColumnChange = true;
}
raceColumnListeners.notifyListenersAboutRaceColumnRemovedFromContainer(rc);
raceColumns.add(i-1, rc);
raceColumnListeners.notifyListenersAboutRaceColumnAddedToContainer(rc);
break;
}
}
if (didFirstColumnChange && startsWithZeroScore) {
notifyIsStartsWithZeroScoreChangedForFirstTwoColumns();
}
}
private void notifyIsStartsWithZeroScoreChangedForFirstTwoColumns() {
final RaceColumnInSeries first = raceColumns.get(0);
raceColumnListeners.notifyListenersAboutIsStartsWithZeroScoreChanged(first, first.isStartsWithZeroScore());
final RaceColumnInSeries second = raceColumns.get(1);
raceColumnListeners.notifyListenersAboutIsStartsWithZeroScoreChanged(second, second.isStartsWithZeroScore());
}
@Override
public void moveRaceColumnDown(String raceColumnName) {
boolean didFirstColumnChange = false; // if it changes and the series starts scoring with zero, notify the change
// end at second-last element because last can't be moved down
for (int i=0; i<raceColumns.size()-1; i++) {
RaceColumnInSeries rc = raceColumns.get(i);
if (rc.getName().equals(raceColumnName)) {
raceColumns.remove(i);
if (i==0) {
didFirstColumnChange = true;
}
raceColumnListeners.notifyListenersAboutRaceColumnRemovedFromContainer(rc);
raceColumns.add(i+1, rc);
raceColumnListeners.notifyListenersAboutRaceColumnAddedToContainer(rc);
break;
}
}
if (didFirstColumnChange && startsWithZeroScore) {
notifyIsStartsWithZeroScoreChangedForFirstTwoColumns();
}
}
@Override
public void removeRaceColumn(String raceColumnName) {
RaceColumnInSeries rc = getRaceColumnByName(raceColumnName);
@@ -331,8 +331,8 @@ public class DelegatingRegattaLeaderboardWithCompetitorElimination extends Abstr
@Override
public void addScoreCorrectionListener(ScoreCorrectionListener listener) {
if (fullLeaderboard != null) {
fullLeaderboard.addScoreCorrectionListener(listener);
if (getFullLeaderboard() != null) {
getFullLeaderboard().addScoreCorrectionListener(listener);
} else {
triggerWhenFullLeaderboardIsResolved.put(leaderboard->leaderboard.addScoreCorrectionListener(listener), true);
}
@@ -340,8 +340,8 @@ public class DelegatingRegattaLeaderboardWithCompetitorElimination extends Abstr
@Override
public void removeScoreCorrectionListener(ScoreCorrectionListener listener) {
if (fullLeaderboard != null) {
fullLeaderboard.removeScoreCorrectionListener(listener);
if (getFullLeaderboard() != null) {
getFullLeaderboard().removeScoreCorrectionListener(listener);
} else {
triggerWhenFullLeaderboardIsResolved.put(leaderboard->leaderboard.removeScoreCorrectionListener(listener), true);
}
@@ -63,6 +63,7 @@ public class ORCCertificatesCollectionJSON extends AbstractORCCertificatesCollec
private static final String CIRCULAR_RANDOM = "CR";
private static final String NON_SPINNAKER = "NS";
private static final String WIND_SPEEDS = "WindSpeeds";
private static final String WIND_ANGLES = "WindAngles";
/**
* Pattern to recognize a true wind angle in the allowances section. Group 1 contains
@@ -189,27 +190,28 @@ public class ORCCertificatesCollectionJSON extends AbstractORCCertificatesCollec
}
// Now read the various allowances, assuming we find values for the TWS "bins" identified above
for (final Object aKey : allowances.keySet()) {
final JSONArray array = (JSONArray) allowances.get(aKey);
final JSONArray twaArray = (JSONArray) allowances.get(aKey);
if (((String) aKey).equals(BEAT_ANGLE)) {
for (int i = 0; i < array.size(); i++) {
for (int i = 0; i < twaArray.size(); i++) {
beatAngles.put(new KnotSpeedImpl(trueWindSpeedArray[i]),
new DegreeBearingImpl(((Number) array.get(i)).doubleValue()));
new DegreeBearingImpl(((Number) twaArray.get(i)).doubleValue()));
}
continue;
}
if (((String) aKey).equals(GYBE_ANGLE)) {
for (int i = 0; i < array.size(); i++) {
for (int i = 0; i < twaArray.size(); i++) {
gybeAngles.put(new KnotSpeedImpl(trueWindSpeedArray[i]),
new DegreeBearingImpl(((Number) array.get(i)).doubleValue()));
new DegreeBearingImpl(((Number) twaArray.get(i)).doubleValue()));
}
continue;
}
Map<Speed, Duration> twsMap = new HashMap<>();
// ignore true wind angles key
if (!twaPattern.matcher((String) aKey).lookingAt()) {
for (int i = 0; i < array.size(); i++) {
if (!aKey.equals(WIND_SPEEDS) && !aKey.equals(WIND_ANGLES) &&
!twaPattern.matcher((String) aKey).lookingAt()) {
for (int i = 0; i < twaArray.size(); i++) {
twsMap.put(new KnotSpeedImpl(trueWindSpeedArray[i]),
new SecondsDurationImpl(((Number) array.get(i)).doubleValue()));
new SecondsDurationImpl(((Number) twaArray.get(i)).doubleValue()));
}
}
switch ((String) aKey) {
@@ -2,9 +2,7 @@ package com.sap.sailing.gwt.ui.test;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Test;
@@ -29,7 +27,7 @@ public class GwtTestCaseColumnToggling extends GWTTestCase {
//These objects should be created by calling GWT.create(Class c);
private LeaderboardPanelMock leaderboardPanel;
private MyTestSailingServiceAsync service;
private MyTestSailingServiceWriteAsync service;
private StringMessages stringMessages;
//Test data.
@@ -54,7 +52,7 @@ public class GwtTestCaseColumnToggling extends GWTTestCase {
@Override
protected void gwtSetUp() throws Exception {
super.gwtSetUp();
service = GWT.create(MyTestSailingService.class);
service = GWT.create(MyTestSailingServiceWrite.class);
stringMessages = GWT.create(StringMessages.class);
}
@@ -87,7 +85,7 @@ public class GwtTestCaseColumnToggling extends GWTTestCase {
}
private void trackRace(){
final Set<TracTracRaceRecordDTO> rrDAOs = new HashSet<TracTracRaceRecordDTO>();
final List<TracTracRaceRecordDTO> rrDAOs = new ArrayList<TracTracRaceRecordDTO>();
rrDAOs.add(rrDao);
service.trackWithTracTrac(/* regattaToAddTo */null, rrDAOs, tractracTunnel ? "tcp://" + tractracTunnelHost + ":"
+ TracTracConnectionConstants.PORT_TUNNEL_LIVE : "tcp://" + TracTracConnectionConstants.HOST_NAME + ":"
@@ -1,6 +0,0 @@
package com.sap.sailing.gwt.ui.test;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
public interface MyTestSailingServiceAsync extends SailingServiceAsync {
}
@@ -1,7 +1,7 @@
package com.sap.sailing.gwt.ui.test;
public class MyTestSailingServiceImpl extends SailingServiceImplMock implements MyTestSailingService {
public class MyTestSailingServiceImpl extends SailingServiceWriteImplMock implements MyTestSailingServiceWrite {
private static final long serialVersionUID = 3647254510616623048L;
public MyTestSailingServiceImpl(){
@@ -1,9 +1,9 @@
package com.sap.sailing.gwt.ui.test;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.sap.sailing.gwt.ui.client.SailingService;
import com.sap.sailing.gwt.ui.client.SailingServiceWrite;
@RemoteServiceRelativePath("testsailing")
public interface MyTestSailingService extends SailingService {
public interface MyTestSailingServiceWrite extends SailingServiceWrite {
}
@@ -0,0 +1,6 @@
package com.sap.sailing.gwt.ui.test;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
public interface MyTestSailingServiceWriteAsync extends SailingServiceWriteAsync {
}
@@ -25,14 +25,14 @@ import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sailing.server.interfaces.RacingEventService;
public class PingMarkViaRegattaLogTest {
private SailingServiceImplMock sailingService;
private SailingServiceWriteImplMock sailingService;
private RacingEventService service;
private final String columnName = "column";
private final Fleet fleet = new FleetImpl("fleet");
@Before
public void prepare() {
sailingService = new SailingServiceImplMock();
sailingService = new SailingServiceWriteImplMock();
service = sailingService.getRacingEventService();
}
@@ -24,7 +24,7 @@ import com.sap.sailing.domain.swisstimingreplayadapter.SwissTimingReplayService;
import com.sap.sailing.domain.tracking.RaceHandle;
import com.sap.sailing.domain.tracking.TrackerManager;
import com.sap.sailing.domain.tractracadapter.TracTracAdapterFactory;
import com.sap.sailing.gwt.ui.server.SailingServiceImpl;
import com.sap.sailing.gwt.ui.server.SailingServiceWriteImpl;
import com.sap.sailing.server.impl.RacingEventServiceImpl;
import com.sap.sailing.server.interfaces.RacingEventService;
import com.sap.sailing.xrr.schema.RegattaResults;
@@ -34,7 +34,7 @@ import com.sap.sse.replication.impl.AbstractReplicablesProvider;
import com.sap.sse.replication.impl.ReplicationInstancesManager;
import com.sap.sse.replication.impl.ReplicationServiceImpl;
public class SailingServiceImplMock extends SailingServiceImpl {
public class SailingServiceWriteImplMock extends SailingServiceWriteImpl {
private static final long serialVersionUID = 8564037671550730455L;
private final RacingEventService service;
@@ -45,7 +45,7 @@ public class SailingServiceImplMock extends SailingServiceImpl {
private final SwissTimingReplayService swissTimingReplayService = null;
private final RaceLogTrackingAdapterFactory raceLogTrackingAdapterFactory = RaceLogTrackingAdapterFactory.INSTANCE;
public SailingServiceImplMock() {
public SailingServiceWriteImplMock() {
super();
service = new RacingEventServiceImpl(/* clearPersistentCompetitorStore */ true, new MockSmartphoneImeiServiceFinderFactory(), /* restoreTrackedRaces */ false);
try {
@@ -62,14 +62,14 @@ public class SlicingTest {
"test1", "test", "test", null, CountryCodeFactoryImpl.INSTANCE.getFromTwoLetterISOName("de"),
1.0, null, null, "B1", boatClassName, "GER 123");
private SailingServiceImplMock sailingService;
private SailingServiceWriteImplMock sailingService;
private ThreadState threadState;
protected Subject subject;
@Before
public void setUp() throws Exception {
sailingService = new SailingServiceImplMock();
sailingService = new SailingServiceWriteImplMock();
((ClearStateTestSupport)(sailingService.getRacingEventService())).clearState();
subject = Mockito.mock(Subject.class);
@@ -86,7 +86,7 @@ public class SlicingTest {
@Test
@Ignore
/**
* Currently non functional test case for race slicing. Should be finished when SailingServiceImplMock is fixed to
* Currently non functional test case for race slicing. Should be finished when SailingServiceWriteImplMock is fixed to
* work properly for test cases. See bug 4418 for details.
*/
public void testSliceRace() throws Exception {
@@ -21,7 +21,7 @@ import com.sap.sailing.domain.common.dto.BoatClassDTO;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.LeaderboardDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.gwt.ui.server.SailingServiceImpl;
import com.sap.sailing.gwt.ui.server.SailingServiceWriteImpl;
public class TestColumnSwapping {
@@ -29,12 +29,12 @@ public class TestColumnSwapping {
private static final String LEADERBOARDNAME = "test";
private static final String DEFAULT_FLEET_NAME = "Default";
private static final FleetDTO DEFAULT_FLEET = new FleetDTO(DEFAULT_FLEET_NAME, /* ordering */ 0, /* color */ null);
private SailingServiceImpl service;
private SailingServiceWriteImpl service;
private LeaderboardDTO leaderboardOriginalDTO;
private LeaderboardDTO leaderboardDTO;
private Collection<String> leglist;
private Date leaderboardCreationDate;
private SailingServiceImpl sailingService = null;
private SailingServiceWriteImpl sailingService = null;
// Test-Data
private final String TEST_LEADERBOARD_NAME = "test_board";
@@ -43,7 +43,7 @@ public class TestColumnSwapping {
@Before
public void prepareColumnSwapping() {
service = new SailingServiceImplMock();
service = new SailingServiceWriteImplMock();
int[] disc = { 5, 8, 9, 0, 7, 5, 43 };
service.removeLeaderboard(LEADERBOARDNAME);
service.createFlexibleLeaderboard(LEADERBOARDNAME, null, disc, ScoringSchemeType.LOW_POINT, null);
@@ -80,7 +80,7 @@ public class TestColumnSwapping {
@Test
public void testSailingService() {
sailingService = new SailingServiceImplMock();
sailingService = new SailingServiceWriteImplMock();
assertNotNull("Sailingservice != NULL", sailingService);
int td[] = { 5, 8 };
sailingService.removeLeaderboard(TEST_LEADERBOARD_NAME);
@@ -91,6 +91,17 @@
<url-pattern>/service/sailing/*</url-pattern>
</servlet-mapping>
<servlet>
<display-name>Sailing ServiceWrite</display-name>
<servlet-name>SailingServiceWrite</servlet-name>
<servlet-class>com.sap.sailing.gwt.ui.server.SailingServiceWriteImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SailingServiceWrite</servlet-name>
<url-pattern>/service/sailingmaster</url-pattern>
<url-pattern>/service/sailingmaster/*</url-pattern>
</servlet-mapping>
<servlet>
<display-name>Server Configuration Service</display-name>
<servlet-name>ServerConfigurationService</servlet-name>
@@ -1,9 +1,10 @@
package com.sap.sailing.gwt.autoplay.client.app;
import com.sap.sailing.gwt.home.communication.SailingDispatchSystem;
import com.sap.sailing.gwt.home.desktop.places.user.profile.WithSailingServiceWrite;
import com.sap.sailing.gwt.ui.client.SailingClientFactory;
public interface AutoPlayClientFactory extends SailingClientFactory {
public interface AutoPlayClientFactory extends SailingClientFactory, WithSailingServiceWrite {
AutoPlayPlaceNavigator getPlaceNavigator();
void setAutoPlayContext(AutoPlayContext configurationSixtyInch);
@@ -16,12 +16,14 @@ import com.sap.sailing.gwt.ui.client.MediaServiceAsync;
import com.sap.sailing.gwt.ui.client.RemoteServiceMappingConstants;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceHelper;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sse.gwt.client.EntryPointHelper;
import com.sap.sse.security.ui.client.SecureClientFactoryImpl;
public abstract class AutoPlayClientFactoryBase
extends SecureClientFactoryImpl<ApplicationTopLevelView> implements AutoPlayClientFactory {
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final MediaServiceAsync mediaService;
private final AutoPlayPlaceNavigator navigator;
@@ -32,6 +34,7 @@ public abstract class AutoPlayClientFactoryBase
super(root, eventBus, placeController);
this.navigator = navigator;
sailingService = SailingServiceHelper.createSailingServiceInstance();
sailingServiceWrite = SailingServiceHelper.createSailingServiceWriteInstance();
mediaService = GWT.create(MediaService.class);
EntryPointHelper.registerASyncService((ServiceDefTarget) sailingService,
RemoteServiceMappingConstants.sailingServiceRemotePath);
@@ -66,6 +69,11 @@ public abstract class AutoPlayClientFactoryBase
return sailingServiceAsync;
}
}
@Override
public SailingServiceWriteAsync getSailingServiceWrite() {
return sailingServiceWrite;
}
@Override
public MediaServiceAsync getMediaService() {
@@ -77,7 +77,7 @@ public class LiveRaceBoardNode extends FiresPlaceNode implements RaceTimesInfoPr
/** leaderboardGroupName */
null, /** eventId */
null, cf.getErrorReporter(), StringMessages.INSTANCE, null, raceTimesInfoProvider, true, false,
Arrays.asList(DetailType.values()), result.getLeaderboard(), result.getRace(), result.getTrackingConnectorInfo());
Arrays.asList(DetailType.values()), result.getLeaderboard(), result.getRace(), result.getTrackingConnectorInfo(), cf.getSailingServiceWrite());
setPlaceToGo(new LiveRaceWithRaceboardPlace(raceboardPerspective));
firePlaceChangeAndStartTimer();
getBus().fireEvent(new AutoPlayHeaderEvent(cf.getAutoPlayCtxSignalError().getLifeOrPreLiveRace().getRegattaName(),
@@ -0,0 +1,8 @@
package com.sap.sailing.gwt.home.desktop.places.user.profile;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
public interface WithSailingServiceWrite {
SailingServiceWriteAsync getSailingServiceWrite();
}
@@ -18,13 +18,13 @@ import com.sap.sailing.gwt.common.client.SharedResources;
import com.sap.sailing.gwt.regattaoverview.client.RegattaRaceStatesComponent.EntryHandler;
import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaOverviewContextDefinition;
import com.sap.sailing.gwt.settings.client.regattaoverview.RegattaRaceStatesSettings;
import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint;
import com.sap.sailing.gwt.ui.client.AbstractSailingReadEntryPoint;
import com.sap.sailing.gwt.ui.shared.RegattaOverviewEntryDTO;
import com.sap.sse.gwt.client.Notification;
import com.sap.sse.gwt.client.Notification.NotificationType;
import com.sap.sse.gwt.settings.SettingsToUrlSerializer;
public class RegattaOverviewEntryPoint extends AbstractSailingEntryPoint {
public class RegattaOverviewEntryPoint extends AbstractSailingReadEntryPoint {
private static final SettingsToUrlSerializer serializer = new SettingsToUrlSerializer();
@@ -42,6 +42,7 @@ import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.domain.common.orc.ORCCertificate;
import com.sap.sailing.domain.common.orc.ORCCertificateUploadConstants;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sse.common.Util.Triple;
@@ -79,7 +80,7 @@ public abstract class AbstractBoatCertificatesPanel extends SimplePanel {
private final Map<String, BoatDTO> boatsByIdAsString;
private final CertificatesTableWrapper<RefreshableSingleSelectionModel<ORCCertificate>> certificateTable;
private final BusyIndicator busyIndicator;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final ErrorReporter errorReporter;
private final StringListEditorComposite urls;
@@ -125,10 +126,10 @@ public abstract class AbstractBoatCertificatesPanel extends SimplePanel {
/**
* After invoking this superclass constructor, and after doing any other initialization work, subclasses must call {@link #refresh}.
*/
public AbstractBoatCertificatesPanel(final SailingServiceAsync sailingService, final UserService userService,
public AbstractBoatCertificatesPanel(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final SecuredDTO objectToCheckUpdatePermissionFor, final StringMessages stringMessages,
final ErrorReporter errorReporter, Supplier<Boolean> contextUpdatePermissionCheck, String errorContext) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
this.certificateTableSelectionHandler = createCertificateTableSelectionHandler();
@@ -141,10 +142,10 @@ public abstract class AbstractBoatCertificatesPanel extends SimplePanel {
this.urls = new StringListEditorComposite(Collections.emptySet(), stringMessages, stringMessages.courseAreas(), IconResources.INSTANCE.removeIcon(),
/* suggested values */ Collections.emptySet(), stringMessages.enterURLsForCertificateDownload());
this.hiddenCertificateUrlsFields = new ArrayList<>();
this.boatTable = new BoatWithCertificateTableWrapper<>(sailingService, userService, stringMessages,
this.boatTable = new BoatWithCertificateTableWrapper<>(sailingServiceWrite, userService, stringMessages,
errorReporter, /* multiSelection */ true, /* enablePager */ true, TableWrapper.DEFAULT_PAGING_SIZE, /* allow actions */ true,
boat->unlink(boat), objectToCheckUpdatePermissionFor, boat->certificateAssignments.containsKey(boat));
this.certificateTable = new CertificatesTableWrapper<>(sailingService, userService, stringMessages,
this.certificateTable = new CertificatesTableWrapper<>(sailingServiceWrite, userService, stringMessages,
errorReporter, /* multiSelection */ false, /* enablePager */ true, TableWrapper.DEFAULT_PAGING_SIZE);
busyIndicator = new SimpleBusyIndicator(false, 0.8f);
this.form = new FormPanel();
@@ -224,7 +225,7 @@ public abstract class AbstractBoatCertificatesPanel extends SimplePanel {
searchGrid.setWidget(1, 6, boatClassNameTextBox);
searchButton.addClickHandler(e->{
busyIndicator.setBusy(true);
sailingService.searchORCBoatCertificates(DialogUtils.getSelectedCountry(issuingCountryListBox),
sailingServiceWrite.searchORCBoatCertificates(DialogUtils.getSelectedCountry(issuingCountryListBox),
yearOfIssuanceBox.getValue(), referenceNumberTextBox.getValue().trim().isEmpty() ?
null : referenceNumberTextBox.getValue(),
yachtNameTextBox.getValue() == null ? null : yachtNameTextBox.getValue(),
@@ -251,7 +252,7 @@ public abstract class AbstractBoatCertificatesPanel extends SimplePanel {
try {
final JSONObject json = (JSONObject) JSONParser.parseStrict(e.getResults());
if (json.get(ORCCertificateUploadConstants.CERTIFICATES) != null) {
sailingService.getORCCertificates(e.getResults(), new AsyncCallback<Collection<ORCCertificate>>() {
sailingServiceWrite.getORCCertificates(e.getResults(), new AsyncCallback<Collection<ORCCertificate>>() {
@Override
public void onFailure(Throwable caught) {
busyIndicator.setBusy(false);
@@ -401,7 +402,7 @@ public abstract class AbstractBoatCertificatesPanel extends SimplePanel {
final Set<BoatDTO> selectedBoats = boatTable.getSelectionModel().getSelectedSet();
if (selectedBoats != null && !selectedBoats.isEmpty()) {
busyIndicator.setBusy(true);
sailingService.getSuggestedORCBoatCertificates(new ArrayList<>(selectedBoats),
sailingServiceWrite.getSuggestedORCBoatCertificates(new ArrayList<>(selectedBoats),
new AsyncCallback<Map<BoatDTO, Set<ORCCertificate>>>() {
@Override
public void onFailure(Throwable caught) {
@@ -446,10 +447,10 @@ public abstract class AbstractBoatCertificatesPanel extends SimplePanel {
result.getB(), result.getC()), Notification.NotificationType.INFO);
}
};
assignCertificates(sailingService, certificatesByBoatIdAsString, callback);
assignCertificates(sailingServiceWrite, certificatesByBoatIdAsString, callback);
}
protected abstract void assignCertificates(SailingServiceAsync sailingService,
protected abstract void assignCertificates(SailingServiceWriteAsync sailingServiceWrite,
Map<String, ORCCertificate> certificatesByBoatIdAsString,
AsyncCallback<Triple<Integer, Integer, Integer>> callback);
@@ -495,10 +496,10 @@ public abstract class AbstractBoatCertificatesPanel extends SimplePanel {
boatTable.setBoats(boatResults);
}
};
getORCCertificateAssignemtnsByBoatIdAsString(sailingService, callbackForGetCertificates);
getORCCertificateAssignemtnsByBoatIdAsString(sailingServiceWrite, callbackForGetCertificates);
}
};
getBoats(sailingService, callbackForGetBoats);
getBoats(sailingServiceWrite, callbackForGetBoats);
}
@@ -8,6 +8,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
@@ -21,7 +22,7 @@ public abstract class AbstractCompetitorRegistrationDialog extends DataEntryDial
protected final boolean canBoatsOfCompetitorsChangePerRace;
protected final CompetitorRegistrationsPanel competitorRegistrationsPanel;
public AbstractCompetitorRegistrationDialog(SailingServiceAsync sailingService, final UserService userService, StringMessages stringMessages,
public AbstractCompetitorRegistrationDialog(SailingServiceWriteAsync sailingServiceWrite, final UserService userService, StringMessages stringMessages,
ErrorReporter errorReporter, boolean editable,
com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback<Set<CompetitorDTO>> callback,
String leaderboardName, boolean canBoatsOfCompetitorsChangePerRace, String boatClass, String okButtonMessage,
@@ -30,10 +31,10 @@ public abstract class AbstractCompetitorRegistrationDialog extends DataEntryDial
validator, callback);
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
this.sailingService = sailingService;
this.sailingService = sailingServiceWrite;
this.leaderboardName = leaderboardName;
this.canBoatsOfCompetitorsChangePerRace = canBoatsOfCompetitorsChangePerRace;
this.competitorRegistrationsPanel = new CompetitorRegistrationsPanel(sailingService, userService, stringMessages, errorReporter, editable, leaderboardName, canBoatsOfCompetitorsChangePerRace, boatClass,
this.competitorRegistrationsPanel = new CompetitorRegistrationsPanel(sailingServiceWrite, userService, stringMessages, errorReporter, editable, leaderboardName, canBoatsOfCompetitorsChangePerRace, boatClass,
()->validateAndUpdate(), getRegisteredCompetitorsRetriever(), /* restrictPoolToLeaderboard */ false, getAdditionalWidgetsToInsertAboveCompetitorTables(stringMessages));
}
@@ -3,12 +3,15 @@ package com.sap.sailing.gwt.ui.adminconsole;
import com.google.gwt.user.client.ui.FocusWidget;
import com.google.gwt.user.client.ui.SuggestBox;
import com.google.gwt.user.client.ui.TextBox;
import com.sap.sailing.domain.common.dto.BoatClassDTO;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTOImpl;
import com.sap.sailing.gwt.common.client.suggestion.BoatClassMasterdataSuggestOracle;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Color;
import com.sap.sse.common.Distance;
import com.sap.sse.gwt.client.ColorTextBox;
/**
@@ -76,45 +79,64 @@ public abstract class AbstractCompetitorWithBoatDialog extends CompetitorEditDia
}
}
/**
* The class creates the UI-dialog to type in the Data about a competitor.
*
* @param competitorToEdit
* The 'competitorToEdit' parameter contains the competitor which should be changed or initialized.
* @param competitorWithBoat
* The 'competitorWithBoat' parameter contains the competitor which should be changed or initialized.
* @param boatClass
* The boat class is the default shown boat class for new boats. Set <code>null</code> if your boat is
* already initialized or you don't want a default boat class.
* @param The
* {@link Validator} for competitor with boat
*/
public AbstractCompetitorWithBoatDialog(String dialogTitle, StringMessages stringMessages, CompetitorWithBoatDTO competitorToEdit,
DialogCallback<CompetitorWithBoatDTO> callback, String boatClass) {
super(dialogTitle, stringMessages, competitorToEdit,
new AbstractCompetitorWithBoatDialog.CompetitorWithBoatValidator(stringMessages,
competitorToEdit.getBoat()),
callback);
final BoatDTO boatToEdit = competitorToEdit.getBoat();
public AbstractCompetitorWithBoatDialog(String dialogTitle, StringMessages stringMessages,
CompetitorWithBoatDTO competitorWithBoat, DialogCallback<CompetitorWithBoatDTO> callback, String boatClass,
CompetitorWithoutBoatValidator<CompetitorWithBoatDTO> validator) {
super(dialogTitle, stringMessages, competitorWithBoat, validator, callback);
final BoatDTO boat = competitorWithBoat.getBoat();
this.boatClassNameTextBox = createSuggestBox(new BoatClassMasterdataSuggestOracle());
boatClassNameTextBox.ensureDebugId("BoatClassNameSuggestBox");
if (boatToEdit.getBoatClass() != null) {
boatClassNameTextBox.setValue(boatToEdit.getBoatClass().getName());
boatClassNameTextBox.setEnabled(false);
if (boat.getBoatClass() != null) {
boatClassNameTextBox.setValue(boat.getBoatClass().getName());
setBoatClassNameEnabled(boatClassNameTextBox, false);
} else {
boatClassNameTextBox.setValue(boatClass); // widgets have to accept null values here
}
this.boatNameTextBox = createTextBox(boatToEdit.getName());
this.boatNameTextBox = createTextBox(boat.getName());
boatNameTextBox.ensureDebugId("BoatNameTextBox");
this.boatDisplayColorTextBox = createColorTextBox(boatToEdit.getColor());
this.sailIdTextBox = createTextBox(boatToEdit.getSailId());
this.boatDisplayColorTextBox = createColorTextBox(boat.getColor());
this.sailIdTextBox = createTextBox(boat.getSailId());
sailIdTextBox.ensureDebugId("SailIdTextBox");
}
public AbstractCompetitorWithBoatDialog(String dialogTitle, StringMessages stringMessages,
CompetitorWithBoatDTO competitorWithBoat, DialogCallback<CompetitorWithBoatDTO> callback,
String boatClass) {
this(dialogTitle, stringMessages, competitorWithBoat, callback, boatClass,
new AbstractCompetitorWithBoatDialog.CompetitorWithBoatValidator(stringMessages,
competitorWithBoat.getBoat()));
}
@Override
protected FocusWidget getInitialFocusWidget() {
return super.getInitialFocusWidget();
}
protected abstract BoatDTO getBoat();
protected BoatDTO getBoat() {
BoatDTO result = null;
Color boatColor;
if (boatDisplayColorTextBox.isValid()) {
boatColor = boatDisplayColorTextBox.getColor();
} else {
boatColor = new InvalidColor(new IllegalArgumentException(boatDisplayColorTextBox.getValue()),
getStringMessages());
}
BoatClassDTO boatClass = new BoatClassDTO(boatClassNameTextBox.getValue(), Distance.NULL, Distance.NULL);
result = new BoatDTO(getCompetitorToEdit().getBoat().getIdAsString(), boatNameTextBox.getValue(), boatClass,
sailIdTextBox.getValue(), boatColor);
return result;
}
@Override
protected CompetitorWithBoatDTO getResult() {
@@ -129,4 +151,8 @@ public abstract class AbstractCompetitorWithBoatDialog extends CompetitorEditDia
return result;
}
protected void setBoatClassNameEnabled(SuggestBox boatClassNameTextBox, boolean enabled) {
boatClassNameTextBox.setEnabled(enabled);
}
}
@@ -16,7 +16,7 @@ import com.google.gwt.user.client.ui.ListBox;
import com.sap.sailing.domain.common.BoatClassMasterdata;
import com.sap.sailing.gwt.ui.client.AbstractRegattaPanel;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.RaceRecordDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
@@ -29,17 +29,17 @@ public abstract class AbstractEventManagementPanel extends AbstractRegattaPanel
private final List<RegattaDTO> availableRegattas;
private final ListBox availableRegattasListBox;
public AbstractEventManagementPanel(SailingServiceAsync sailingService, UserService userService,
public AbstractEventManagementPanel(SailingServiceWriteAsync sailingServiceWrite, UserService userService,
RegattaRefresher regattaRefresher, ErrorReporter errorReporter, boolean actionButtonsEnabled,
StringMessages stringMessages) {
super(sailingService, regattaRefresher, errorReporter, stringMessages);
super(sailingServiceWrite, regattaRefresher, errorReporter, stringMessages);
this.availableRegattas = new ArrayList<RegattaDTO>();
this.availableRegattasListBox = new ListBox();
this.availableRegattasListBox.ensureDebugId("AvailableRegattasListBox");
// TrackedEventsComposite should exist in every *ManagementPanel.
trackedRacesListComposite = new TrackedRacesListComposite(null, null, sailingService, userService,
trackedRacesListComposite = new TrackedRacesListComposite(null, null, sailingServiceWrite, userService,
errorReporter, regattaRefresher, stringMessages, /* multiselection */ true, actionButtonsEnabled);
trackedRacesListComposite.ensureDebugId("TrackedRacesListComposite");
}
@@ -42,7 +42,7 @@ import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.RaceLogDTO;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
@@ -78,7 +78,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
protected final StringMessages stringMessages;
protected final SailingServiceAsync sailingService;
protected final SailingServiceWriteAsync sailingServiceWrite;
protected final ListDataProvider<StrippedLeaderboardDTOWithSecurity> filteredLeaderboardList;
@@ -156,12 +156,12 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
}
}
public AbstractLeaderboardConfigPanel(final SailingServiceAsync sailingService, final UserService userService,
public AbstractLeaderboardConfigPanel(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
RegattaRefresher regattaRefresher,
LeaderboardsRefresher<StrippedLeaderboardDTOWithSecurity> leaderboardsRefresher,
final ErrorReporter errorReporter, StringMessages theStringConstants, boolean multiSelection) {
this.stringMessages = theStringConstants;
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.userService = userService;
filteredLeaderboardList = new ListDataProvider<StrippedLeaderboardDTOWithSecurity>();
allRegattas = new ArrayList<RegattaDTO>();
@@ -252,7 +252,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
trackedRacesCaptionPanel.setContentWidget(trackedRacesPanel);
trackedRacesCaptionPanel.setStyleName("bold");
trackedRacesListComposite = new TrackedRacesListComposite(null, null, sailingService, userService,
trackedRacesListComposite = new TrackedRacesListComposite(null, null, sailingServiceWrite, userService,
errorReporter,
regattaRefresher, stringMessages, /* multiselection */false, isActionButtonsEnabled());
refreshableTrackedRaceSelectionModel = trackedRacesListComposite.getSelectionModel();
@@ -331,7 +331,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
Label lblRaceNamesIn = new Label(stringMessages.races());
vPanel.add(lblRaceNamesIn);
raceColumnTable = new RaceTableWrapper<RefreshableSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>(
sailingService, stringMessages, errorReporter, multiSelection);
sailingServiceWrite, stringMessages, errorReporter, multiSelection);
raceColumnTable.asWidget().ensureDebugId("RaceColumnTable");
raceColumnTable.getTable().setWidth("100%");
addColumnsToRacesTable(raceColumnTable.getTable());
@@ -421,7 +421,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
+ t.getMessage());
}
});
sailingService.getLeaderboardWithSecurity(leaderboardName, callback);
sailingServiceWrite.getLeaderboardWithSecurity(leaderboardName, callback);
}
private void replaceLeaderboardInList(List<StrippedLeaderboardDTOWithSecurity> leaderboardList,
@@ -440,7 +440,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
protected void unlinkRaceColumnFromTrackedRace(final String raceColumnName, final FleetDTO fleet) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.disconnectLeaderboardColumnFromTrackedRace(selectedLeaderboardName, raceColumnName,
sailingServiceWrite.disconnectLeaderboardColumnFromTrackedRace(selectedLeaderboardName, raceColumnName,
fleet.getName(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable t) {
@@ -459,7 +459,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
protected void refreshRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleet, final boolean showAlerts) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.reloadRaceLog(selectedLeaderboardName, raceColumnDTO, fleet,
sailingServiceWrite.reloadRaceLog(selectedLeaderboardName, raceColumnDTO, fleet,
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -496,7 +496,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
final String selectedRaceColumnName = selectedRaceColumnAndFleetNameInLeaderboard.getA()
.getRaceColumnName();
final String selectedFleetName = selectedRaceColumnAndFleetNameInLeaderboard.getB().getName();
sailingService.getRegattaAndRaceNameOfTrackedRaceConnectedToLeaderboardColumn(selectedLeaderboardName,
sailingServiceWrite.getRegattaAndRaceNameOfTrackedRaceConnectedToLeaderboardColumn(selectedLeaderboardName,
selectedRaceColumnName, new MarkedAsyncCallback<Map<String, RegattaAndRaceIdentifier>>(
new AsyncCallback<Map<String, RegattaAndRaceIdentifier>>() {
@Override
@@ -593,7 +593,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
private void linkTrackedRaceToSelectedRaceColumn(final RaceColumnDTO selectedRaceInLeaderboard,
final FleetDTO fleet, final RegattaAndRaceIdentifier selectedRace) {
sailingService.connectTrackedRaceToLeaderboardColumn(getSelectedLeaderboardName(),
sailingServiceWrite.connectTrackedRaceToLeaderboardColumn(getSelectedLeaderboardName(),
selectedRaceInLeaderboard.getRaceColumnName(), fleet.getName(), selectedRace,
new MarkedAsyncCallback<Boolean>(new AsyncCallback<Boolean>() {
@Override
@@ -676,15 +676,15 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
}
};
if (rename) {
sailingService.renameLeaderboardColumn(selectedLeaderboardName, oldRaceColumnName,
sailingServiceWrite.renameLeaderboardColumn(selectedLeaderboardName, oldRaceColumnName,
result.getName(), renameLeaderboardColumnCallback);
}
if (updateIsMedalRace) {
sailingService.updateIsMedalRace(selectedLeaderboardName, result.getName(),
sailingServiceWrite.updateIsMedalRace(selectedLeaderboardName, result.getName(),
result.isMedalRace(), updateIsMedalRaceCallback);
}
if (updateFactor) {
sailingService.updateLeaderboardColumnFactor(selectedLeaderboardName, result.getName(),
sailingServiceWrite.updateLeaderboardColumnFactor(selectedLeaderboardName, result.getName(),
result.getExplicitFactor(), updateLeaderboardColumnFactorCallback);
}
}
@@ -694,7 +694,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
protected void showRaceLog(final RaceColumnDTO raceColumnDTO, final FleetDTO fleetDTO) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.getRaceLog(selectedLeaderboardName, raceColumnDTO, fleetDTO,
sailingServiceWrite.getRaceLog(selectedLeaderboardName, raceColumnDTO, fleetDTO,
new MarkedAsyncCallback<RaceLogDTO>(new AsyncCallback<RaceLogDTO>() {
@Override
public void onFailure(Throwable caught) {
@@ -723,7 +723,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
protected void showRegattaLog() {
final String selectedLeaderboardName = getSelectedLeaderboardName();
sailingService.getRegattaLog(selectedLeaderboardName,
sailingServiceWrite.getRegattaLog(selectedLeaderboardName,
new MarkedAsyncCallback<RegattaLogDTO>(new AsyncCallback<RegattaLogDTO>() {
@Override
public void onFailure(Throwable caught) {
@@ -801,13 +801,13 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
}
protected void assignCertificates(RaceColumnDTOAndFleetDTOWithNameBasedEquality object) {
BoatCertificateAssignmentDialog dialog = new BoatCertificateAssignmentDialog(sailingService, userService,
stringMessages, errorReporter, new RaceBoatCertificatesPanel(sailingService, userService, object.getC(), object.getA(), object.getB(), stringMessages, errorReporter));
BoatCertificateAssignmentDialog dialog = new BoatCertificateAssignmentDialog(sailingServiceWrite, userService,
stringMessages, errorReporter, new RaceBoatCertificatesPanel(sailingServiceWrite, userService, object.getC(), object.getA(), object.getB(), stringMessages, errorReporter));
dialog.show();
}
protected void selectScratchBoat(RaceColumnDTOAndFleetDTOWithNameBasedEquality object) {
sailingService.getORCPerformanceCurveScratchBoat(object.getC().getName(), object.getA().getName(), object.getB().getName(), new AsyncCallback<CompetitorDTO>() {
sailingServiceWrite.getORCPerformanceCurveScratchBoat(object.getC().getName(), object.getA().getName(), object.getB().getName(), new AsyncCallback<CompetitorDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(stringMessages.errorObtainingScratchBoat(caught.getMessage()), /* silent */ true);
@@ -815,12 +815,12 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
@Override
public void onSuccess(CompetitorDTO scratchBoatSoFar) {
new CompetitorSelectionDialog(sailingService, userService, errorReporter,
new CompetitorSelectionDialog(sailingServiceWrite, userService, errorReporter,
stringMessages.selectScratchBoat(), stringMessages.selectScratchBoat(), getRaceCompetitorProvider(object), stringMessages, scratchBoatSoFar,
new DialogCallback<CompetitorDTO>() {
@Override
public void ok(CompetitorDTO newScratchBoat) {
sailingService.setORCPerformanceCurveScratchBoat(object.getC().getName(), object.getA().getName(), object.getB().getName(),
sailingServiceWrite.setORCPerformanceCurveScratchBoat(object.getC().getName(), object.getA().getName(), object.getB().getName(),
newScratchBoat, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -843,7 +843,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
protected void setImpliedWind(RaceColumnDTOAndFleetDTOWithNameBasedEquality object) {
final String raceDisplayName = object.getC().getName() + "/" + object.getA().getName() + "/" + object.getB().getName();
sailingService.getImpliedWindSource(object.getC().getName(), object.getA().getName(), object.getB().getName(),
sailingServiceWrite.getImpliedWindSource(object.getC().getName(), object.getA().getName(), object.getB().getName(),
new AsyncCallback<ImpliedWindSource>() {
@Override
public void onFailure(Throwable caught) {
@@ -854,10 +854,10 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
@Override
public void onSuccess(ImpliedWindSource result) {
new ImpliedWindSourceEditDialog(object, result, availableLeaderboardList, stringMessages, errorReporter, sailingService, userService, new DialogCallback<ImpliedWindSource>() {
new ImpliedWindSourceEditDialog(object, result, availableLeaderboardList, stringMessages, errorReporter, sailingServiceWrite, userService, new DialogCallback<ImpliedWindSource>() {
@Override
public void ok(ImpliedWindSource editedObject) {
sailingService.setImpliedWindSource(object.getC().getName(), object.getA().getName(), object.getB().getName(), editedObject,
sailingServiceWrite.setImpliedWindSource(object.getC().getName(), object.getA().getName(), object.getB().getName(), editedObject,
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -889,7 +889,7 @@ public abstract class AbstractLeaderboardConfigPanel extends FormPanel
*/
protected Consumer<AsyncCallback<Iterable<? extends CompetitorDTO>>> getRaceCompetitorProvider(
RaceColumnDTOAndFleetDTOWithNameBasedEquality raceSlotIdentifier) {
return callback -> sailingService.getCompetitorsAndBoatsOfRace(raceSlotIdentifier.getC().getName(),
return callback -> sailingServiceWrite.getCompetitorsAndBoatsOfRace(raceSlotIdentifier.getC().getName(),
raceSlotIdentifier.getA().getName(), raceSlotIdentifier.getB().getName(), new AsyncCallback<Map<? extends CompetitorDTO, BoatDTO>>() {
@Override
public void onFailure(Throwable e) {
@@ -10,7 +10,7 @@ import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
import com.sap.sailing.domain.common.dto.RaceDTO;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -27,12 +27,12 @@ public abstract class AbstractRaceManagementPanel extends AbstractEventManagemen
protected final VerticalPanel selectedRaceContentPanel;
public AbstractRaceManagementPanel(final SailingServiceAsync sailingService, ErrorReporter errorReporter,
public AbstractRaceManagementPanel(final SailingServiceWriteAsync sailingService, ErrorReporter errorReporter,
RegattaRefresher regattaRefresher, boolean actionButtonsEnabled, StringMessages stringMessages) {
this(sailingService, null, errorReporter, regattaRefresher, actionButtonsEnabled, stringMessages);
}
public AbstractRaceManagementPanel(final SailingServiceAsync sailingService,
public AbstractRaceManagementPanel(final SailingServiceWriteAsync sailingService,
UserService userService, ErrorReporter errorReporter,
RegattaRefresher regattaRefresher, boolean actionButtonsEnabled, StringMessages stringMessages) {
super(sailingService, userService, regattaRefresher, errorReporter, actionButtonsEnabled, stringMessages);
@@ -18,6 +18,7 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.domain.common.racelog.tracking.MappableToDevice;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceIdentifierDTO;
import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO;
@@ -44,7 +45,7 @@ public class AbstractRegattaLogFixesAddMappingsDialog extends DataEntryDialog<Co
private BoatDTO boatToSelect;
private boolean inInstableTransitionState = false;
public AbstractRegattaLogFixesAddMappingsDialog(SailingServiceAsync sailingService, UserService userService,
public AbstractRegattaLogFixesAddMappingsDialog(SailingServiceWriteAsync sailingServiceWrite, UserService userService,
final ErrorReporter errorReporter, final StringMessages stringMessages, String leaderboardName,
DialogCallback<Collection<DeviceMappingDTO>> callback) {
super(stringMessages.add(stringMessages.deviceMappings()), stringMessages.add(stringMessages.deviceMappings()),
@@ -62,22 +63,22 @@ public class AbstractRegattaLogFixesAddMappingsDialog extends DataEntryDialog<Co
this.leaderboardName = leaderboardName;
this.stringMessages = stringMessages;
importWidgetHolder = new SimplePanel();
deviceIdTable = new TrackFileImportDeviceIdentifierTableWrapper(sailingService, stringMessages, errorReporter);
deviceIdTable = new TrackFileImportDeviceIdentifierTableWrapper(sailingServiceWrite, stringMessages, errorReporter);
registerSelectionChangeHandler(deviceIdTable.getSelectionModel(), this::deviceSelectionChanged);
competitorTable = new CompetitorTableWrapper<>(sailingService, userService, stringMessages, errorReporter,
competitorTable = new CompetitorTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter,
/* multiSelection */ false, /* enable pager */ true, /* filterCompetitorWithBoat */ false, /* filterCompetitorsWithoutBoat */ false);
markTable = new MarkTableWrapper<RefreshableSingleSelectionModel<MarkDTO>>(
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
boatTable = new BoatTableWrapper<RefreshableSingleSelectionModel<BoatDTO>>(sailingService, userService, stringMessages,
/* multiSelection */ false, sailingServiceWrite, stringMessages, errorReporter);
boatTable = new BoatTableWrapper<RefreshableSingleSelectionModel<BoatDTO>>(sailingServiceWrite, userService, stringMessages,
errorReporter, /* multiSelection */ false, /* enable Pager */ true, /* allowActions */ false);
registerSelectionChangeHandler(competitorTable.getSelectionModel(), this::mappedToSelectionChanged);
registerSelectionChangeHandler(markTable.getSelectionModel(), this::mappedToSelectionChanged);
registerSelectionChangeHandler(boatTable.getSelectionModel(), this::mappedToSelectionChanged);
getBoatRegistrations(sailingService, errorReporter);
getCompetitorRegistrations(sailingService, errorReporter);
getMarks(sailingService, errorReporter);
getBoatRegistrations(sailingServiceWrite, errorReporter);
getCompetitorRegistrations(sailingServiceWrite, errorReporter);
getMarks(sailingServiceWrite, errorReporter);
}
private void getMarks(SailingServiceAsync sailingService, final ErrorReporter errorReporter) {
@@ -17,6 +17,7 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.domain.common.racelog.tracking.MappableToDevice;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceIdentifierDTO;
import com.sap.sailing.gwt.ui.shared.TrackFileImportDeviceIdentifierDTO;
@@ -40,7 +41,7 @@ public abstract class AbstractRegattaLogSensorDataAddMappingsDialog extends Data
private BoatDTO boatToSelect;
private boolean inInstableTransitionState = false;
public AbstractRegattaLogSensorDataAddMappingsDialog(final SailingServiceAsync sailingService, final UserService userService,
public AbstractRegattaLogSensorDataAddMappingsDialog(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final ErrorReporter errorReporter, final StringMessages stringMessages, String leaderboardName,
DialogCallback<Collection<TypedDeviceMappingDTO>> callback) {
super(stringMessages.add(stringMessages.deviceMappings()), stringMessages.add(stringMessages.deviceMappings()),
@@ -52,16 +53,16 @@ public abstract class AbstractRegattaLogSensorDataAddMappingsDialog extends Data
}
}, true, callback);
this.stringMessages = stringMessages;
deviceIdTable = new TrackFileImportDeviceIdentifierTableWrapper(sailingService, stringMessages, errorReporter);
deviceIdTable = new TrackFileImportDeviceIdentifierTableWrapper(sailingServiceWrite, stringMessages, errorReporter);
deviceIdTable.removeTrackNameColumn();
importWidgetHolder = new SimplePanel();
deviceIdTable.getSelectionModel().addSelectionChangeHandler(
event -> deviceSelectionChanged(deviceIdTable.getSelectionModel().getSelectedObject()));
boatTable = new BoatTableWrapper<RefreshableSingleSelectionModel<BoatDTO>>(sailingService, userService, stringMessages,
boatTable = new BoatTableWrapper<RefreshableSingleSelectionModel<BoatDTO>>(sailingServiceWrite, userService, stringMessages,
errorReporter, /* multiSelection */ false, /* enable Pager */ true, /* allowActions */ false);
competitorTable = new CompetitorTableWrapper<>(sailingService, userService, stringMessages, errorReporter,
competitorTable = new CompetitorTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter,
/* multiSelection */ false, /* enablePager */ true, /* filterCompetitorWithBoat */ false, /* filterCompetitorsWithoutBoat */ false);
boatTable.getSelectionModel().addSelectionChangeHandler(event -> {
@@ -74,8 +75,8 @@ public abstract class AbstractRegattaLogSensorDataAddMappingsDialog extends Data
});
this.leaderboardName = leaderboardName;
getBoatRegistrations(sailingService, errorReporter);
getCompetitorRegistrations(sailingService, errorReporter);
getBoatRegistrations(sailingServiceWrite, errorReporter);
getCompetitorRegistrations(sailingServiceWrite, errorReporter);
}
private void getBoatRegistrations(final SailingServiceAsync sailingService, final ErrorReporter errorReporter) {
@@ -45,7 +45,7 @@ import com.sap.sailing.domain.common.dto.RaceDTO;
import com.sap.sailing.domain.common.security.SecuredDomainType;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
@@ -86,7 +86,7 @@ public abstract class AbstractTrackedRacesListComposite extends AbstractComposit
private Label noTrackedRacesLabel;
protected final SailingServiceAsync sailingService;
protected final SailingServiceWriteAsync sailingService;
protected final ErrorReporter errorReporter;
protected final RegattaRefresher regattaRefresher;
protected final StringMessages stringMessages;
@@ -109,11 +109,11 @@ public abstract class AbstractTrackedRacesListComposite extends AbstractComposit
}
public AbstractTrackedRacesListComposite(Component<?> parent, ComponentContext<?> context,
final SailingServiceAsync sailingService,
final SailingServiceWriteAsync sailingServiceWrite,
final ErrorReporter errorReporter, final RegattaRefresher regattaRefresher,
final StringMessages stringMessages, boolean hasMultiSelection, UserService userService) {
super(parent, context);
this.sailingService = sailingService;
this.sailingService = sailingServiceWrite;
this.errorReporter = errorReporter;
this.regattaRefresher = regattaRefresher;
this.multiSelection = hasMultiSelection;
@@ -20,7 +20,7 @@ import com.sap.sailing.gwt.ui.adminconsole.coursecreation.CourseTemplatePanel;
import com.sap.sailing.gwt.ui.adminconsole.coursecreation.MarkPropertiesPanel;
import com.sap.sailing.gwt.ui.adminconsole.coursecreation.MarkRolePanel;
import com.sap.sailing.gwt.ui.adminconsole.coursecreation.MarkTemplatePanel;
import com.sap.sailing.gwt.ui.client.AbstractSailingEntryPoint;
import com.sap.sailing.gwt.ui.client.AbstractSailingWriteEntryPoint;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsRefresher;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
@@ -61,7 +61,7 @@ import com.sap.sse.security.ui.client.component.UserGroupManagementPanel;
import com.sap.sse.security.ui.client.i18n.StringMessages;
import com.sap.sse.security.ui.client.usermanagement.UserManagementPanel;
public class AdminConsoleEntryPoint extends AbstractSailingEntryPoint
public class AdminConsoleEntryPoint extends AbstractSailingWriteEntryPoint
implements RegattaRefresher, LeaderboardsRefresher<StrippedLeaderboardDTOWithSecurity>, LeaderboardGroupsRefresher {
private final AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
@@ -15,7 +15,7 @@ import com.sap.sailing.domain.common.dto.TrackedRaceDTO;
import com.sap.sailing.domain.common.media.MediaTrack;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -32,7 +32,7 @@ public class AssignRacesToMediaDialog extends DataEntryDialog<Set<RegattaAndRace
private final VerticalPanel panel;
private Button btnRefresh;
public AssignRacesToMediaDialog(final SailingServiceAsync sailingService, final UserService userService,
public AssignRacesToMediaDialog(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final MediaTrack mediaTrack,
final ErrorReporter errorReporter, final RegattaRefresher regattaRefresher,
final StringMessages stringMessages,
@@ -42,7 +42,7 @@ public class AssignRacesToMediaDialog extends DataEntryDialog<Set<RegattaAndRace
stringMessages.ok(), stringMessages.cancel(), validator, callback);
this.stringMessages = stringMessages;
this.mediaTrack = mediaTrack;
trackedRacesListComposite = new TrackedRacesListComposite(null, null, sailingService, userService,
trackedRacesListComposite = new TrackedRacesListComposite(null, null, sailingServiceWrite, userService,
errorReporter,
regattaRefresher,
stringMessages, /* multiselection */true, /* actionButtonsEnabled */ false) {
@@ -8,7 +8,7 @@ import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
@@ -27,10 +27,10 @@ public class BoatPanel extends SimplePanel {
private final RefreshableMultiSelectionModel<BoatDTO> refreshableBoatSelectionModel;
private Button allowReloadButton;
public BoatPanel(final SailingServiceAsync sailingService, final UserService userService,
public BoatPanel(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final StringMessages stringMessages, final ErrorReporter errorReporter) {
super();
this.boatTable = new BoatTableWrapper<>(sailingService, userService, stringMessages, errorReporter,
this.boatTable = new BoatTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter,
/* multiSelection */ true, /* enablePager */ true, 100, true);
this.refreshableBoatSelectionModel = (RefreshableMultiSelectionModel<BoatDTO>) boatTable.getSelectionModel();
VerticalPanel mainPanel = new VerticalPanel();
@@ -19,7 +19,7 @@ import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -66,7 +66,7 @@ public class BoatRegistrationsPanel extends FlowPanel implements BusyDisplay {
* whether the pool of "all" boats is to be restricted to those obtained from the leaderboard, or
* to all boats in the server's boat store
*/
protected BoatRegistrationsPanel(final SailingServiceAsync sailingService, final UserService userService,
protected BoatRegistrationsPanel(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final StringMessages stringMessages, final ErrorReporter errorReporter, boolean editable,
String leaderboardName, boolean canBoatsOfCompetitorsChangePerRace, String boatClass, Runnable validator,
Consumer<AsyncCallback<Collection<BoatDTO>>> registeredBoatsRetriever,
@@ -88,9 +88,9 @@ public class BoatRegistrationsPanel extends FlowPanel implements BusyDisplay {
final HorizontalPanel boatRegistrationPanel = new HorizontalPanel();
final CaptionPanel allBoatsPanel = new CaptionPanel(stringMessages.boatPool());
final CaptionPanel registeredBoatsPanel = new CaptionPanel(stringMessages.registeredBoats());
allBoatsTable = new BoatTableWrapper<>(sailingService, userService, stringMessages, errorReporter, /* multiSelection */
allBoatsTable = new BoatTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter, /* multiSelection */
true, /* enablePager */true, 20, false);
registeredBoatsTable = new BoatTableWrapper<>(sailingService, userService, stringMessages, errorReporter, /* multiSelection */
registeredBoatsTable = new BoatTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter, /* multiSelection */
true, /* enablePager */false, 20, false);
allBoatsPanel.add(allBoatsTable);
registeredBoatsPanel.add(registeredBoatsTable);
@@ -21,7 +21,7 @@ import com.google.gwt.user.client.ui.Label;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.security.SecuredDomainType;
import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Color;
import com.sap.sse.common.Util;
@@ -44,16 +44,17 @@ import com.sap.sse.security.ui.client.component.editacl.EditACLDialog;
public class BoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO>> extends TableWrapper<BoatDTO, S> {
private final LabeledAbstractFilterablePanel<BoatDTO> filterField;
private final SailingServiceWriteAsync sailingServiceWrite;
public BoatTableWrapper(SailingServiceAsync sailingService, final UserService userService, StringMessages stringMessages,
public BoatTableWrapper(SailingServiceWriteAsync sailingServiceWrite, final UserService userService, StringMessages stringMessages,
ErrorReporter errorReporter, boolean multiSelection, boolean enablePager, boolean allowActions) {
this(sailingService, userService, stringMessages, errorReporter, multiSelection, enablePager, DEFAULT_PAGING_SIZE,
this(sailingServiceWrite, userService, stringMessages, errorReporter, multiSelection, enablePager, DEFAULT_PAGING_SIZE,
allowActions);
}
public BoatTableWrapper(SailingServiceAsync sailingService, final UserService userService, StringMessages stringMessages, ErrorReporter errorReporter,
public BoatTableWrapper(SailingServiceWriteAsync sailingServiceWrite, final UserService userService, StringMessages stringMessages, ErrorReporter errorReporter,
boolean multiSelection, boolean enablePager, int pagingSize, boolean allowActions) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager, pagingSize,
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, enablePager, pagingSize,
new EntityIdentityComparator<BoatDTO>() {
@Override
public boolean representSameEntity(BoatDTO dto1, BoatDTO dto2) {
@@ -64,6 +65,7 @@ public class BoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO>> exte
return t.getIdAsString().hashCode();
}
});
this.sailingServiceWrite = sailingServiceWrite;
ListHandler<BoatDTO> boatColumnListHandler = getColumnSortHandler();
// boats table
@@ -212,7 +214,7 @@ public class BoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO>> exte
public void refreshBoatList(boolean loadOnlyStandaloneBoats, final Callback<Iterable<BoatDTO>, Throwable> callback) {
if (loadOnlyStandaloneBoats) {
sailingService.getStandaloneBoats(new AsyncCallback<Iterable<BoatDTO>>() {
sailingServiceWrite.getStandaloneBoats(new AsyncCallback<Iterable<BoatDTO>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Remote Procedure Call getBoats() - Failure: " + caught.getMessage());
@@ -231,7 +233,7 @@ public class BoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO>> exte
}
});
} else {
sailingService.getAllBoats(new AsyncCallback<Iterable<BoatDTO>>() {
sailingServiceWrite.getAllBoats(new AsyncCallback<Iterable<BoatDTO>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Remote Procedure Call getBoats() - Failure: " + caught.getMessage());
@@ -260,7 +262,7 @@ public class BoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO>> exte
final BoatEditDialog dialog = new BoatEditDialog(getStringMessages(), originalBoat, boatClassName, new DialogCallback<BoatDTO>() {
@Override
public void ok(BoatDTO boat) {
sailingService.addOrUpdateBoat(boat, new AsyncCallback<BoatDTO>() {
sailingServiceWrite.addOrUpdateBoat(boat, new AsyncCallback<BoatDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to update boat: " + caught.getMessage());
@@ -296,7 +298,7 @@ public class BoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO>> exte
public void allowUpdate(final Iterable<BoatDTO> boats) {
List<BoatDTO> serializableSingletonList = new ArrayList<BoatDTO>();
Util.addAll(boats, serializableSingletonList);
sailingService.allowBoatResetToDefaults(serializableSingletonList, new AsyncCallback<Void>() {
sailingServiceWrite.allowBoatResetToDefaults(serializableSingletonList, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to allow resetting boats " + boats
@@ -19,7 +19,7 @@ import com.google.gwt.user.client.ui.Label;
import com.sap.sailing.domain.base.Boat;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.orc.ORCCertificate;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -43,11 +43,11 @@ public class BoatWithCertificateTableWrapper<S extends RefreshableSelectionModel
private final Consumer<BoatDTO> unlinkAction;
private final Function<BoatDTO, Boolean> isLinkedChecker;
public BoatWithCertificateTableWrapper(SailingServiceAsync sailingService, final UserService userService,
public BoatWithCertificateTableWrapper(SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
StringMessages stringMessages, ErrorReporter errorReporter, boolean multiSelection, boolean enablePager,
int pagingSize, boolean allowActions, Consumer<BoatDTO> unlinkAction,
SecuredDTO objectToCheckUpdatePermissionFor, Function<BoatDTO, Boolean> isLinkedChecker) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager, pagingSize,
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, enablePager, pagingSize,
new EntityIdentityComparator<BoatDTO>() {
@Override
public boolean representSameEntity(BoatDTO dto1, BoatDTO dto2) {
@@ -18,7 +18,7 @@ import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.orc.ORCCertificate;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.TimePoint;
import com.sap.sse.common.Util;
@@ -35,9 +35,9 @@ public class CertificatesTableWrapper<S extends RefreshableSelectionModel<ORCCer
private final LabeledAbstractFilterablePanel<ORCCertificate> filterField;
public CertificatesTableWrapper(SailingServiceAsync sailingService, final UserService userService, StringMessages stringMessages,
public CertificatesTableWrapper(SailingServiceWriteAsync sailingServiceWrite, final UserService userService, StringMessages stringMessages,
ErrorReporter errorReporter, boolean multiSelection, boolean enablePager, int pagingSize) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager, pagingSize, new EntityIdentityComparator<ORCCertificate>() {
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, enablePager, pagingSize, new EntityIdentityComparator<ORCCertificate>() {
@Override
public boolean representSameEntity(ORCCertificate cert1, ORCCertificate cert2) {
return cert1.getId().equals(cert2.getId());
@@ -21,7 +21,7 @@ import com.google.gwt.user.client.ui.Label;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Color;
import com.sap.sse.common.filter.Filter;
@@ -35,9 +35,9 @@ public class CompactBoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO
private final CustomizableFilterablePanel<BoatDTO> filterField;
private final Set<BoatDTO> boatsRegisteredWithRegatta;
public CompactBoatTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,
public CompactBoatTableWrapper(SailingServiceWriteAsync sailingServiceWrite, StringMessages stringMessages,
ErrorReporter errorReporter, boolean multiSelection, boolean enablePager) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager,
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, enablePager,
new EntityIdentityComparator<BoatDTO>() {
@Override
public boolean representSameEntity(BoatDTO dto1, BoatDTO dto2) {
@@ -206,12 +206,12 @@ public class CompactBoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO
filterBoats(result.values());
}
};
sailingService.getCompetitorsAndBoatsOfRace(leaderboardName, raceColumnName, fleetName, myCallback);
sailingServiceWrite.getCompetitorsAndBoatsOfRace(leaderboardName, raceColumnName, fleetName, myCallback);
updateBoatRegistrationsForLeaderboard(leaderboardName);
}
private void updateBoatRegistrationsForLeaderboard(String leaderboardName) {
sailingService.getBoatRegistrationsForLeaderboard(leaderboardName, new AsyncCallback<Collection<BoatDTO>>() {
sailingServiceWrite.getBoatRegistrationsForLeaderboard(leaderboardName, new AsyncCallback<Collection<BoatDTO>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(getStringMessages().unableToObtainBoatsRegisteredWith(leaderboardName, caught.getMessage()));
@@ -230,7 +230,7 @@ public class CompactBoatTableWrapper<S extends RefreshableSelectionModel<BoatDTO
* The latter will be used when the corresponding filter is activated.
*/
public void refreshBoatList(String leaderboardName) {
sailingService.getAllBoats(new AsyncCallback<Iterable<BoatDTO>>() {
sailingServiceWrite.getAllBoats(new AsyncCallback<Iterable<BoatDTO>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Remote Procedure Call getAllBoats() - Failure: " + caught.getMessage());
@@ -21,7 +21,7 @@ import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.FlagImageRenderer;
import com.sap.sailing.gwt.ui.client.FlagImageResolverImpl;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -45,9 +45,9 @@ public class CompactCompetitorTableWrapper<S extends RefreshableSelectionModel<C
private final LabeledAbstractFilterablePanel<CompetitorDTO> filterField;
private final Map<CompetitorDTO, BoatDTO> boatsForCompetitors;
public CompactCompetitorTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter,
public CompactCompetitorTableWrapper(SailingServiceWriteAsync sailingServiceWrite, StringMessages stringMessages, ErrorReporter errorReporter,
boolean multiSelection, boolean enablePager, UserService userService) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager,
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, enablePager,
new EntityIdentityComparator<CompetitorDTO>() {
@Override
public boolean representSameEntity(CompetitorDTO dto1, CompetitorDTO dto2) {
@@ -191,7 +191,7 @@ public class CompactCompetitorTableWrapper<S extends RefreshableSelectionModel<C
refreshCompetitorList(result);
}
};
sailingService.getCompetitorsAndBoatsOfRace(leaderboardName, raceColumnName, fleetName, myCallback);
sailingServiceWrite.getCompetitorsAndBoatsOfRace(leaderboardName, raceColumnName, fleetName, myCallback);
}
private void getFilteredCompetitors(Iterable<? extends CompetitorDTO> result) {
@@ -20,7 +20,7 @@ import com.sap.sailing.domain.common.CompetitorDescriptor;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.FlagImageRenderer;
import com.sap.sailing.gwt.ui.client.FlagImageResolverImpl;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.CountryCode;
import com.sap.sse.common.util.NaturalComparator;
@@ -85,9 +85,9 @@ public class CompetitorDescriptorTableWrapper<S extends RefreshableSelectionMode
}
public CompetitorDescriptorTableWrapper(CompetitorImportMatcher competitorImportMatcherParam,
SailingServiceAsync sailingService, final StringMessages stringMessages, ErrorReporter errorReporter,
SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages, ErrorReporter errorReporter,
boolean multiSelection, boolean enablePager, final CompetitorsToImportToExistingLinking unlinkCallback) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager,
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, enablePager,
new EntityIdentityComparator<CompetitorDescriptor>() {
@Override
public boolean representSameEntity(CompetitorDescriptor dto1, CompetitorDescriptor dto2) {
@@ -102,7 +102,6 @@ public abstract class CompetitorEditDialog<CompetitorType extends CompetitorDTO>
this.ensureDebugId("CompetitorEditDialog");
this.stringMessages = stringMessages;
this.competitorToEdit = competitorToEdit;
this.name = createTextBox(competitorToEdit.getName());
name.ensureDebugId("NameTextBox");
this.shortName = createTextBox(competitorToEdit.getShortName());
@@ -5,7 +5,7 @@ import java.util.Set;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sse.common.Util.Pair;
@@ -17,12 +17,12 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
public class CompetitorInvitationHelper {
private StringMessages stringMessages;
private SailingServiceAsync sailingService;
private SailingServiceWriteAsync sailingServiceWrite;
private ErrorReporter errorReporter;
public CompetitorInvitationHelper(SailingServiceAsync sailingService, StringMessages stringMessages, ErrorReporter errorReporter) {
public CompetitorInvitationHelper(SailingServiceWriteAsync sailingServiceWrite, StringMessages stringMessages, ErrorReporter errorReporter) {
this.stringMessages = stringMessages;
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
}
@@ -50,11 +50,11 @@ public class CompetitorInvitationHelper {
}
private void openChooseEventDialogAndSendMails(final Set<CompetitorDTO> competitors, final String leaderboardName) {
new SelectEventAndHostnameDialog(sailingService, stringMessages, errorReporter, leaderboardName, new DialogCallback<Pair<EventDTO, String>>() {
new SelectEventAndHostnameDialog(sailingServiceWrite, stringMessages, errorReporter, leaderboardName, new DialogCallback<Pair<EventDTO, String>>() {
@Override
public void ok(Pair<EventDTO, String> result) {
sailingService.inviteCompetitorsForTrackingViaEmail(result.getB(), result.getA(), leaderboardName,
sailingServiceWrite.inviteCompetitorsForTrackingViaEmail(result.getB(), result.getA(), leaderboardName,
competitors,
stringMessages.appstoreSapSailInsight(),
stringMessages.playstoreInsightApp(),
@@ -9,10 +9,12 @@ import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.sap.sailing.domain.common.CompetitorDescriptor;
import com.sap.sailing.domain.common.dto.BoatClassDTO;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTOImpl;
import com.sap.sailing.gwt.ui.adminconsole.CompetitorImportProviderSelectionDialog.MatchImportedCompetitorsDialogFactory;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
@@ -32,19 +34,21 @@ public class CompetitorPanel extends SimplePanel implements BusyDisplay {
private final CompetitorTableWrapper<RefreshableMultiSelectionModel<CompetitorDTO>> competitorTable;
private final RefreshableMultiSelectionModel<CompetitorDTO> refreshableCompetitorSelectionModel;
private final String leaderboardName;
private final String boatClassName;
private final BusyIndicator busyIndicator;
public CompetitorPanel(final SailingServiceAsync sailingService, final UserService userService, final StringMessages stringMessages,
public CompetitorPanel(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService, final StringMessages stringMessages,
final ErrorReporter errorReporter) {
this(sailingService, userService, null, stringMessages, errorReporter);
this(sailingServiceWrite, userService, /* leaderboardName */ null, /* boatClassName */ null, /* createWithBoatByDefault */ true,
stringMessages, errorReporter);
}
public CompetitorPanel(final SailingServiceAsync sailingService, final UserService userService, final String leaderboardName,
final StringMessages stringMessages, final ErrorReporter errorReporter) {
public CompetitorPanel(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService, final String leaderboardName,
String boatClassName, boolean createWithBoatByDefault, final StringMessages stringMessages, final ErrorReporter errorReporter) {
super();
this.leaderboardName = leaderboardName;
this.competitorTable = new CompetitorTableWrapper<>(sailingService, userService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ true,
this.boatClassName = boatClassName;
this.competitorTable = new CompetitorTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ true,
/* filterCompetitorWithBoat */ false, /* filterCompetitorsWithoutBoat */ false);
this.refreshableCompetitorSelectionModel = (RefreshableMultiSelectionModel<CompetitorDTO>) competitorTable.getSelectionModel();
busyIndicator = new SimpleBusyIndicator(false, 0.8f);
@@ -53,35 +57,30 @@ public class CompetitorPanel extends SimplePanel implements BusyDisplay {
this.setWidget(mainPanel);
final AccessControlledButtonPanel buttonPanel = new AccessControlledButtonPanel(userService, COMPETITOR);
mainPanel.add(buttonPanel);
final Button refreshButton = buttonPanel.addUnsecuredAction(stringMessages.refresh(),
this::refreshCompetitorList);
refreshButton.ensureDebugId("RefreshButton");
final Button allowReloadButton = buttonPanel.addUnsecuredAction(stringMessages.allowReload(),
() -> competitorTable.allowUpdate(refreshableCompetitorSelectionModel.getSelectedSet()));
refreshableCompetitorSelectionModel.addSelectionChangeHandler(
event -> allowReloadButton.setEnabled(!refreshableCompetitorSelectionModel.getSelectedSet().isEmpty()));
allowReloadButton.setEnabled(!refreshableCompetitorSelectionModel.getSelectedSet().isEmpty());
final Button addCompetitorButton = buttonPanel.addCreateAction(stringMessages.add(),
this::openAddCompetitorDialog);
()->openAddCompetitorDialog(createWithBoatByDefault));
addCompetitorButton.ensureDebugId("AddCompetitorButton");
buttonPanel.addUnsecuredAction(stringMessages.selectAll(), () -> {
for (CompetitorDTO c : competitorTable.getDataProvider().getList()) {
refreshableCompetitorSelectionModel.setSelected(c, true);
}
});
buttonPanel.addCreateAction(stringMessages.importCompetitors(), () -> {
sailingService.getCompetitorProviderNames(new AsyncCallback<Iterable<String>>() {
sailingServiceWrite.getCompetitorProviderNames(new AsyncCallback<Iterable<String>>() {
@Override
public void onSuccess(Iterable<String> providerNames) {
MatchImportedCompetitorsDialogFactory matchCompetitorsDialogFactory = getMatchCompetitorsDialogFactory(
sailingService, userService, stringMessages, errorReporter);
sailingServiceWrite, userService, stringMessages, errorReporter);
CompetitorImportProviderSelectionDialog dialog = new CompetitorImportProviderSelectionDialog(
matchCompetitorsDialogFactory, CompetitorPanel.this, providerNames, sailingService,
matchCompetitorsDialogFactory, CompetitorPanel.this, providerNames, sailingServiceWrite,
stringMessages, errorReporter);
dialog.show();
}
@@ -93,34 +92,31 @@ public class CompetitorPanel extends SimplePanel implements BusyDisplay {
}
});
});
// only if this competitor panel is connected to a leaderboard, we want to enable invitations
if (leaderboardName != null) {
buttonPanel.addCreateAction(stringMessages.inviteSelectedCompetitors(), () -> {
final Set<CompetitorDTO> competitors = refreshableCompetitorSelectionModel.getSelectedSet();
final CompetitorInvitationHelper helper = new CompetitorInvitationHelper(sailingService, stringMessages,
final CompetitorInvitationHelper helper = new CompetitorInvitationHelper(sailingServiceWrite, stringMessages,
errorReporter);
helper.inviteCompetitors(competitors, leaderboardName);
});
}
mainPanel.add(busyIndicator);
mainPanel.add(competitorTable);
if (leaderboardName != null) {
refreshCompetitorList();
}
}
private MatchImportedCompetitorsDialogFactory getMatchCompetitorsDialogFactory(
final SailingServiceAsync sailingService, final UserService userService, final StringMessages stringMessages,
final SailingServiceWriteAsync sailingServiceWrite, final UserService userService, final StringMessages stringMessages,
final ErrorReporter errorReporter) {
return new MatchImportedCompetitorsDialogFactory() {
@Override
public MatchImportedCompetitorsDialog createMatchImportedCompetitorsDialog(
final Iterable<CompetitorDescriptor> competitorDescriptors,
final Iterable<CompetitorDTO> competitors) {
ImportCompetitorCallback importCompetitorCallback = new ImportCompetitorCallback(sailingService, errorReporter, stringMessages) {
ImportCompetitorCallback importCompetitorCallback = new ImportCompetitorCallback(sailingServiceWrite, errorReporter, stringMessages) {
@Override
public void registerCompetitors(Set<CompetitorDTO> competitorDTOs) {
super.registerCompetitors(competitorDTOs);
@@ -128,15 +124,18 @@ public class CompetitorPanel extends SimplePanel implements BusyDisplay {
}
};
return new MatchImportedCompetitorsDialog(competitorDescriptors, competitors, stringMessages,
sailingService, userService, errorReporter, importCompetitorCallback);
sailingServiceWrite, userService, errorReporter, importCompetitorCallback);
}
};
}
private void openAddCompetitorDialog() {
private void openAddCompetitorDialog(boolean createWithBoatByDefault) {
CompetitorWithBoatDTOImpl competitorDTO = new CompetitorWithBoatDTOImpl();
competitorDTO.setBoat(null);
competitorTable.openEditCompetitorWithoutBoatDialog(competitorDTO);
BoatClassDTO boatClassDTO = new BoatClassDTO(boatClassName, /* hullLength */ null, /* hullBeam */ null);
BoatDTO boatDTO = new BoatDTO();
boatDTO.setBoatClass(boatClassDTO);
competitorDTO.setBoat(boatDTO);
competitorTable.openCompetitorWithBoatAddDialog(competitorDTO, createWithBoatByDefault);
}
public void refreshCompetitorList() {
@@ -24,7 +24,7 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTOImpl;
import com.sap.sailing.domain.common.dto.CompetitorWithToolTipDTO;
import com.sap.sailing.gwt.ui.adminconsole.CompetitorImportProviderSelectionDialog.MatchImportedCompetitorsDialogFactory;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -76,7 +76,7 @@ public class CompetitorRegistrationsPanel extends FlowPanel implements BusyDispl
* to all competitors in the server's competitor store
* @param additionalWidgetsBeforeTables widgets to be inserted above / before the competitor tables; may be {@code null} or empty
*/
protected CompetitorRegistrationsPanel(final SailingServiceAsync sailingService, final UserService userService,
protected CompetitorRegistrationsPanel(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final StringMessages stringMessages, final ErrorReporter errorReporter, boolean editable,
String leaderboardName, boolean canBoatsOfCompetitorsChangePerRace, String boatClass, Runnable validator,
Consumer<AsyncCallback<Collection<CompetitorDTO>>> registeredCompetitorsRetriever,
@@ -87,7 +87,7 @@ public class CompetitorRegistrationsPanel extends FlowPanel implements BusyDispl
this.leaderboardName = leaderboardName;
this.busyIndicator = new SimpleBusyIndicator();
this.registeredCompetitorsRetriever = registeredCompetitorsRetriever;
this.importCompetitorCallback = new RaceOrRegattaImportCompetitorCallback(this, sailingService, errorReporter, stringMessages);
this.importCompetitorCallback = new RaceOrRegattaImportCompetitorCallback(this, sailingServiceWrite, errorReporter, stringMessages);
final HorizontalPanel buttonPanel = new HorizontalPanel();
addCompetitorButton = new Button(stringMessages.add(stringMessages.competitor()));
addCompetitorButton.addClickHandler(new ClickHandler() {
@@ -112,7 +112,7 @@ public class CompetitorRegistrationsPanel extends FlowPanel implements BusyDispl
@Override
public void onClick(ClickEvent event) {
Set<CompetitorDTO> competitors = registeredCompetitorsTable.getSelectionModel().getSelectedSet();
CompetitorInvitationHelper helper = new CompetitorInvitationHelper(sailingService, stringMessages,
CompetitorInvitationHelper helper = new CompetitorInvitationHelper(sailingServiceWrite, stringMessages,
errorReporter);
helper.inviteCompetitors(competitors, leaderboardName);
}
@@ -121,13 +121,13 @@ public class CompetitorRegistrationsPanel extends FlowPanel implements BusyDispl
competitorImportButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
sailingService.getCompetitorProviderNames(new AsyncCallback<Iterable<String>>() {
sailingServiceWrite.getCompetitorProviderNames(new AsyncCallback<Iterable<String>>() {
@Override
public void onSuccess(Iterable<String> providerNames) {
MatchImportedCompetitorsDialogFactory matchCompetitorsDialogFactory = getMatchCompetitorsDialogFactory(
sailingService, userService, stringMessages, errorReporter);
sailingServiceWrite, userService, stringMessages, errorReporter);
CompetitorImportProviderSelectionDialog dialog = new CompetitorImportProviderSelectionDialog(
matchCompetitorsDialogFactory, CompetitorRegistrationsPanel.this, providerNames, sailingService,
matchCompetitorsDialogFactory, CompetitorRegistrationsPanel.this, providerNames, sailingServiceWrite,
stringMessages, errorReporter);
dialog.show();
}
@@ -143,9 +143,9 @@ public class CompetitorRegistrationsPanel extends FlowPanel implements BusyDispl
final HorizontalPanel competitorRegistrationPanel = new HorizontalPanel();
final CaptionPanel allCompetitorsPanel = new CaptionPanel(stringMessages.competitorPool());
final CaptionPanel registeredCompetitorsPanel = new CaptionPanel(stringMessages.registeredCompetitors());
allCompetitorsTable = new CompetitorTableWrapper<>(sailingService, userService, stringMessages, errorReporter, /* multiSelection */
allCompetitorsTable = new CompetitorTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter, /* multiSelection */
true, /* enablePager */true, /* filterCompetitorWithBoat */ canBoatsOfCompetitorsChangePerRace, /* filterCompetitorsWithoutBoat */ !canBoatsOfCompetitorsChangePerRace);
registeredCompetitorsTable = new CompetitorTableWrapper<>(sailingService, userService, stringMessages, errorReporter, /* multiSelection */
registeredCompetitorsTable = new CompetitorTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter, /* multiSelection */
true, /* enablePager */false, /* filterCompetitorWithBoat */ false, /* filterCompetitorsWithoutBoat */ false);
registeredCompetitorsTable.getSelectionModel().addSelectionChangeHandler(event -> validateAndUpdate());
allCompetitorsPanel.add(allCompetitorsTable);
@@ -205,7 +205,7 @@ public class CompetitorRegistrationsPanel extends FlowPanel implements BusyDispl
}
private MatchImportedCompetitorsDialogFactory getMatchCompetitorsDialogFactory(
final SailingServiceAsync sailingService, final UserService userService, final StringMessages stringMessages,
final SailingServiceWriteAsync sailingServiceWrite, final UserService userService, final StringMessages stringMessages,
final ErrorReporter errorReporter) {
return new MatchImportedCompetitorsDialogFactory() {
@Override
@@ -213,7 +213,7 @@ public class CompetitorRegistrationsPanel extends FlowPanel implements BusyDispl
final Iterable<CompetitorDescriptor> competitorDescriptors,
final Iterable<CompetitorDTO> competitors) {
return new MatchImportedCompetitorsDialog(competitorDescriptors, competitors, stringMessages,
sailingService, userService, errorReporter, importCompetitorCallback);
sailingServiceWrite, userService, errorReporter, importCompetitorCallback);
}
};
}
@@ -6,7 +6,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
@@ -32,13 +32,13 @@ import com.sap.sse.security.ui.client.UserService;
public class CompetitorSelectionDialog extends DataEntryDialog<CompetitorDTO> {
private final CompetitorTableWrapper<RefreshableSingleSelectionModel<CompetitorDTO>> competitorTable;
public CompetitorSelectionDialog(SailingServiceAsync sailingService, UserService userService,
public CompetitorSelectionDialog(SailingServiceWriteAsync sailingServiceWrite, UserService userService,
ErrorReporter errorReporter, String title, String message,
Consumer<AsyncCallback<Iterable<? extends CompetitorDTO>>> competitorProvider, StringMessages stringMessages,
CompetitorDTO initialSelection,
DialogCallback<CompetitorDTO> callback) {
super(title, message, stringMessages.ok(), stringMessages.cancel(), /* validator */ null, callback);
competitorTable = new CompetitorTableWrapper<>(sailingService, userService, stringMessages, errorReporter,
competitorTable = new CompetitorTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter,
/* multiSelection */ false, /* enablePager */ true, /* filter with boat */ false,
/* filter without boat */ false);
competitorProvider.accept(new AsyncCallback<Iterable<? extends CompetitorDTO>>() {
@@ -29,7 +29,7 @@ import com.sap.sailing.domain.common.security.SecuredDomainType;
import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever;
import com.sap.sailing.gwt.ui.client.FlagImageRenderer;
import com.sap.sailing.gwt.ui.client.FlagImageResolverImpl;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Color;
import com.sap.sse.common.Util;
@@ -82,9 +82,9 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
* to be loaded. In this case, competitors without boat will be fetched only if this flag is
* {@code false}.
*/
public CompetitorTableWrapper(SailingServiceAsync sailingService, UserService userService, StringMessages stringMessages, ErrorReporter errorReporter,
public CompetitorTableWrapper(SailingServiceWriteAsync sailingServiceWrite, UserService userService, StringMessages stringMessages, ErrorReporter errorReporter,
boolean multiSelection, boolean enablePager, boolean filterCompetitorsWithBoat, boolean filterCompetitorsWithoutBoat) {
super(sailingService, stringMessages, errorReporter, multiSelection, enablePager,
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, enablePager,
new EntityIdentityComparator<CompetitorDTO>() {
@Override
public boolean representSameEntity(CompetitorDTO dto1, CompetitorDTO dto2) {
@@ -399,9 +399,9 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
}
};
if (leaderboardName != null) {
sailingService.getCompetitorsOfLeaderboard(leaderboardName, myCallback);
sailingServiceWrite.getCompetitorsOfLeaderboard(leaderboardName, myCallback);
} else {
sailingService.getCompetitors(filterCompetitorsWithBoat, filterCompetitorsWithoutBoat, myCallback);
sailingServiceWrite.getCompetitors(filterCompetitorsWithBoat, filterCompetitorsWithoutBoat, myCallback);
}
}
@@ -429,7 +429,7 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
originalCompetitor, new DialogCallback<CompetitorWithBoatDTO>() {
@Override
public void ok(final CompetitorWithBoatDTO competitor) {
sailingService.addOrUpdateCompetitorWithBoat(competitor, new AsyncCallback<CompetitorWithBoatDTO>() {
sailingServiceWrite.addOrUpdateCompetitorWithBoat(competitor, new AsyncCallback<CompetitorWithBoatDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to update competitor with boat: " + caught.getMessage());
@@ -459,11 +459,31 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
dialog.show();
}
void openCompetitorWithBoatAddDialog(final CompetitorWithBoatDTO newCompetitor, boolean createWithBoatByDefault) {
final CompetitorWithOptionalBoatAddDialog dialog = new CompetitorWithOptionalBoatAddDialog(getStringMessages(),
newCompetitor, createWithBoatByDefault, new DialogCallback<CompetitorWithBoatDTO>() {
@Override
public void ok(final CompetitorWithBoatDTO competitor) {
if (competitor.hasBoat()) {
sailingServiceWrite.addOrUpdateCompetitorWithBoat(competitor, createAddCompetitorCallback());
} else {
sailingServiceWrite.addOrUpdateCompetitorWithoutBoat(competitor, createAddCompetitorCallback());
}
}
@Override
public void cancel() {
}
});
dialog.show();
}
void openEditCompetitorWithoutBoatDialog(final CompetitorDTO originalCompetitor) {
final CompetitorEditDialog<CompetitorDTO> dialog = CompetitorEditDialog.create(getStringMessages(), originalCompetitor, new DialogCallback<CompetitorDTO>() {
@Override
public void ok(final CompetitorDTO competitor) {
sailingService.addOrUpdateCompetitorWithoutBoat(competitor, new AsyncCallback<CompetitorDTO>() {
sailingServiceWrite.addOrUpdateCompetitorWithoutBoat(competitor, new AsyncCallback<CompetitorDTO>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to update competitor: " + caught.getMessage());
@@ -496,7 +516,7 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
protected void allowUpdate(final Iterable<CompetitorDTO> competitors) {
List<CompetitorDTO> serializableSingletonList = new ArrayList<>();
Util.addAll(competitors, serializableSingletonList);
sailingService.allowCompetitorResetToDefaults(serializableSingletonList, new AsyncCallback<Void>() {
sailingServiceWrite.allowCompetitorResetToDefaults(serializableSingletonList, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to allow resetting competitors " + competitors
@@ -534,4 +554,19 @@ public class CompetitorTableWrapper<S extends RefreshableSelectionModel<Competit
return "";
});
}
private <T extends CompetitorDTO> AsyncCallback<T> createAddCompetitorCallback() {
return new AsyncCallback<T>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to add competitor: " + caught.getMessage());
}
@Override
public void onSuccess(T addedCompetitor) {
getFilterField().add(addedCompetitor);
getDataProvider().refresh();
}
};
}
}
@@ -18,7 +18,7 @@ import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Util;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -60,15 +60,15 @@ public class CompetitorToBoatMappingsDialog extends DataEntryDialog<Map<Competit
}
}
public CompetitorToBoatMappingsDialog(final SailingServiceAsync sailingService, final StringMessages stringMessages,
public CompetitorToBoatMappingsDialog(final SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages,
final ErrorReporter errorReporter, String leaderboardName, Map<CompetitorDTO, BoatDTO> competitorsAndBoats,
DialogCallback<Map<CompetitorDTO, BoatDTO>> callback, UserService userService) {
super(stringMessages.actionEditCompetitorToBoatAssignments(), null, stringMessages.ok(), stringMessages.cancel(), new CompetitorToBoatMappingValidator(), callback);
this.stringMessages = stringMessages;
this.competitorToBoatMappings = new HashMap<>(competitorsAndBoats);
this.competitorTable = new CompactCompetitorTableWrapper<>(sailingService, stringMessages, errorReporter,
this.competitorTable = new CompactCompetitorTableWrapper<>(sailingServiceWrite, stringMessages, errorReporter,
/* multiSelection */ false, /* enablePager */ true, userService);
this.boatTable = new CompactBoatTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
this.boatTable = new CompactBoatTableWrapper<>(sailingServiceWrite, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
ImagesBarColumn<CompetitorDTO, CompactCompetitorConfigImagesBarCell> competitorActionColumn = new ImagesBarColumn<>(new CompactCompetitorConfigImagesBarCell(stringMessages));
competitorActionColumn.setFieldUpdater(new FieldUpdater<CompetitorDTO, String>() {
@Override
@@ -10,7 +10,7 @@ import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.MarkedAsyncCallback;
@@ -30,25 +30,25 @@ public class CompetitorToBoatMappingsViewPanel extends SimplePanel {
private final String leaderboardName;
private final String raceColumnName;
private final String fleetName;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final StringMessages stringMessages;
private final ErrorReporter errorReporter;
private final RefreshableSelectionModel<CompetitorDTO> refreshableCompetitorSelectionModel;
public CompetitorToBoatMappingsViewPanel(final SailingServiceAsync sailingService, final StringMessages stringMessages,
public CompetitorToBoatMappingsViewPanel(final SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages,
final ErrorReporter errorReporter, final String leaderboardName, final String raceColumnName,
final String fleetName, UserService userService) {
super();
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.stringMessages = stringMessages;
this.leaderboardName = leaderboardName;
this.raceColumnName = raceColumnName;
this.fleetName = fleetName;
this.errorReporter = errorReporter;
this.competitorTable = new CompactCompetitorTableWrapper<>(sailingService, stringMessages, errorReporter,
this.competitorTable = new CompactCompetitorTableWrapper<>(sailingServiceWrite, stringMessages, errorReporter,
/* multiSelection */ false, /* enablePager */ true, userService);
this.boatTable = new CompactBoatTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
this.boatTable = new CompactBoatTableWrapper<>(sailingServiceWrite, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true);
refreshableCompetitorSelectionModel = competitorTable.getSelectionModel();
refreshableCompetitorSelectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
public void onSelectionChange(SelectionChangeEvent event) {
@@ -94,7 +94,7 @@ public class CompetitorToBoatMappingsViewPanel extends SimplePanel {
}
private void selectBoatForCompetitor(CompetitorDTO selectedCompetitor) {
sailingService.getBoatLinkedToCompetitorForRace(leaderboardName,
sailingServiceWrite.getBoatLinkedToCompetitorForRace(leaderboardName,
raceColumnName, fleetName, selectedCompetitor.getIdAsString(), new MarkedAsyncCallback<BoatDTO>(
new AsyncCallback<BoatDTO>() {
@Override
@@ -14,7 +14,7 @@ import com.google.gwt.view.client.SelectionChangeEvent;
import com.sap.sailing.domain.common.dto.BoatClassDTO;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Color;
import com.sap.sse.common.Distance;
@@ -43,7 +43,7 @@ public class CompetitorWithBoatCreateDialog extends AbstractCompetitorWithBoatDi
* The boat class is the default shown boat class for new boats. Set <code>null</code> if your boat is
* already initialized or you don't want a default boat class.
*/
public CompetitorWithBoatCreateDialog(SailingServiceAsync sailingService, final UserService userService, StringMessages stringMessages, ErrorReporter errorReporter, CompetitorWithBoatDTO competitorToEdit,
public CompetitorWithBoatCreateDialog(SailingServiceWriteAsync sailingServiceWrite, final UserService userService, StringMessages stringMessages, ErrorReporter errorReporter, CompetitorWithBoatDTO competitorToEdit,
DialogCallback<CompetitorWithBoatDTO> callback, String boatClass) {
super("Add competitor with boat", stringMessages, competitorToEdit, callback, boatClass);
this.ensureDebugId("CompetitorWithBoatCreateDialog");
@@ -64,7 +64,7 @@ public class CompetitorWithBoatCreateDialog extends AbstractCompetitorWithBoatDi
});
newBoatPanel = new VerticalPanel();
existingBoatPanel = new VerticalPanel();
this.existingBoatsTable = new BoatTableWrapper<>(sailingService, userService, stringMessages, errorReporter, /* multiSelection */ false,
this.existingBoatsTable = new BoatTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter, /* multiSelection */ false,
/* enablePager */ true, /* pagingSize*/ 10, false);
existingBoatsTable.refreshBoatList(true, /* callback */ null);
this.existingBoatsTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@@ -4,12 +4,8 @@ import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.BoatClassDTO;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Color;
import com.sap.sse.common.Distance;
/**
* An edit for a competitor with a boat
@@ -27,24 +23,10 @@ public class CompetitorWithBoatEditDialog extends AbstractCompetitorWithBoatDial
*/
public CompetitorWithBoatEditDialog(StringMessages stringMessages, CompetitorWithBoatDTO competitorToEdit,
DialogCallback<CompetitorWithBoatDTO> callback, String boatClass) {
super("Edit competitor with boat", stringMessages, competitorToEdit, callback, boatClass);
super(stringMessages.editCompetitorWithBoat(), stringMessages, competitorToEdit, callback, boatClass);
this.ensureDebugId("CompetitorWithBoatEditDialog");
}
@Override
protected BoatDTO getBoat() {
BoatDTO result = null;
Color boatColor;
if (boatDisplayColorTextBox.isValid()) {
boatColor = boatDisplayColorTextBox.getColor();
} else {
boatColor = new InvalidColor(new IllegalArgumentException(boatDisplayColorTextBox.getValue()), getStringMessages());
}
BoatClassDTO boatClass = new BoatClassDTO(boatClassNameTextBox.getValue(), Distance.NULL, Distance.NULL);
result = new BoatDTO(getCompetitorToEdit().getBoat().getIdAsString(), boatNameTextBox.getValue(), boatClass, sailIdTextBox.getValue(), boatColor);
return result;
}
@Override
protected Widget getAdditionalWidget() {
VerticalPanel result = new VerticalPanel();
@@ -0,0 +1,134 @@
package com.sap.sailing.gwt.ui.adminconsole;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.CheckBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SuggestBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.gwt.ui.client.StringMessages;
/**
* An Add dialog for a competitor with an optional boat. If {@link #withBoatCheckBox} is checked the
* {@link #boatDataPanel} is visible and validated. While the dialog always returns a
* {@link CompetitorWithBoatDTO}, the resulting object may still have {@link CompetitorWithBoatDTO#hasBoat() hasBoat()==false}
* in which case the {@link #withBoatCheckBox} was not ticked.
*
* @author Dmitry Bilyk
*/
public class CompetitorWithOptionalBoatAddDialog extends AbstractCompetitorWithBoatDialog {
private final CheckBox withBoatCheckBox;
private final VerticalPanel boatDataPanel;
/**
* The class creates the UI-dialog to type in the Data about a competitor.
*
* @param competitorToAdd
* The 'competitorToAdd' parameter contains the competitor which should be initialized.
* @param createWithBoatByDefault
* decides the default setting of the {@link #withBoatCheckBox}.
* @param boatClass
* The boat class is the default shown boat class for new boats. Set <code>null</code> if your boat is
* already initialized or you don't want a default boat class.
*/
public CompetitorWithOptionalBoatAddDialog(StringMessages stringMessages, CompetitorWithBoatDTO competitorToAdd,
boolean createWithBoatByDefault, DialogCallback<CompetitorWithBoatDTO> callback) {
this(stringMessages, competitorToAdd, new CheckBox(stringMessages.withBoat()), createWithBoatByDefault, callback);
}
public CompetitorWithOptionalBoatAddDialog(StringMessages stringMessages, CompetitorWithBoatDTO competitorToAdd,
CheckBox withBoatCheckBox, boolean createWithBoatByDefault, DialogCallback<CompetitorWithBoatDTO> callback) {
super(stringMessages.addCompetitor(), stringMessages, competitorToAdd, callback, null,
new CompetitorWithOptionalBoatAddDialog.CompetitorWithOptionalBoatValidator(withBoatCheckBox, stringMessages));
this.withBoatCheckBox = withBoatCheckBox;
this.withBoatCheckBox.ensureDebugId("WithBoatCheckBox");
this.withBoatCheckBox.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
boatDataPanel.setVisible(withBoatCheckBox.getValue());
validateAndUpdate();
}
});
this.withBoatCheckBox.setValue(createWithBoatByDefault);
boatDataPanel = new VerticalPanel();
boatDataPanel.setVisible(createWithBoatByDefault);
this.ensureDebugId("CompetitorWithBoatAddDialog");
}
@Override
protected Widget getAdditionalWidget() {
VerticalPanel result = new VerticalPanel();
result.add(super.getAdditionalWidget());
result.add(withBoatCheckBox);
boatDataPanel.add(createHeadlineLabel(getStringMessages().boat()));
Grid grid = new Grid(5, 2);
grid.setWidget(0, 0, new Label(getStringMessages().name()));
grid.setWidget(0, 1, boatNameTextBox);
grid.setWidget(1, 0, new Label(getStringMessages().sailNumber()));
grid.setWidget(1, 1, sailIdTextBox);
grid.setWidget(2, 0, new Label(getStringMessages().boatClass()));
grid.setWidget(2, 1, boatClassNameTextBox);
grid.setWidget(3, 0, new Label(getStringMessages().color()));
grid.setWidget(3, 1, boatDisplayColorTextBox);
boatDataPanel.add(grid);
result.add(boatDataPanel);
return result;
}
@Override
protected CompetitorWithBoatDTO getResult() {
CompetitorWithBoatDTO competitorWithOptionalBoat = super.getResult();
if (!withBoatCheckBox.getValue()) {
competitorWithOptionalBoat.setBoat(null);
}
return competitorWithOptionalBoat;
}
@Override
protected void setBoatClassNameEnabled(SuggestBox boatClassNameTextBox, boolean enabled) {
super.setBoatClassNameEnabled(boatClassNameTextBox, true);
}
protected static class CompetitorWithOptionalBoatValidator
extends CompetitorWithoutBoatValidator<CompetitorWithBoatDTO> {
private final StringMessages stringMessages;
private final CheckBox withBoatCheckBox;
public CompetitorWithOptionalBoatValidator(CheckBox withBoatCheckBox, StringMessages stringMessages) {
super(stringMessages);
this.withBoatCheckBox = withBoatCheckBox;
this.stringMessages = stringMessages;
}
@Override
public String getErrorMessage(CompetitorWithBoatDTO competitorToValidate) {
String result = super.getErrorMessage(competitorToValidate);
if (withBoatCheckBox.getValue()) {
if (result == null) {
BoatDTO boatToValidate = competitorToValidate.getBoat();
boolean invalidSailId = boatToValidate.getSailId() == null || boatToValidate.getSailId().isEmpty();
boolean invalidName = boatToValidate.getName() == null || boatToValidate.getName().isEmpty();
if (invalidSailId && invalidName) {
result = stringMessages.pleaseEnterASailNumberOrABoatName();
} else if (boatToValidate.getColor() != null && boatToValidate.getColor() instanceof InvalidColor) {
result = boatToValidate.getColor().getAsHtml();
} else if (isBoatClassInvalid(boatToValidate)) {
result = stringMessages.pleaseEnterABoatClass();
}
}
}
return result;
}
private boolean isBoatClassInvalid(BoatDTO boatToValidate) {
return boatToValidate.getBoatClass().getName() == null || boatToValidate.getBoatClass().getName().isEmpty();
}
}
}
@@ -1,7 +1,7 @@
package com.sap.sailing.gwt.ui.adminconsole;
import com.google.gwt.user.cellview.client.TextColumn;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.ControlPointDTO;
import com.sap.sailing.gwt.ui.shared.GateDTO;
@@ -11,9 +11,9 @@ import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
public class ControlPointTableWrapper<S extends RefreshableSelectionModel<ControlPointDTO>> extends TableWrapper<ControlPointDTO, S> {
public ControlPointTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, final StringMessages stringMessages,
public ControlPointTableWrapper(boolean multiSelection, SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, multiSelection, /* enablePager */ true,
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, /* enablePager */ true,
new EntityIdentityComparator<ControlPointDTO>() {
@Override
public boolean representSameEntity(ControlPointDTO dto1, ControlPointDTO dto2) {
@@ -11,7 +11,7 @@ import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Distance;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -26,11 +26,11 @@ public class CopyCourseAndCompetitorsDialog extends DataEntryDialog<CourseAndCom
private final CheckBox competitorCheckBox;
private final IntegerBox priorityBox;
private final StringMessages stringMessages;
private SailingServiceAsync sailingService;
private SailingServiceWriteAsync sailingServiceWrite;
private ErrorReporter errorReporter;
public CopyCourseAndCompetitorsDialog(SailingServiceAsync sailingService, ErrorReporter errorReporter, final StringMessages stringMessages,
public CopyCourseAndCompetitorsDialog(SailingServiceWriteAsync sailingServiceWrite, ErrorReporter errorReporter, final StringMessages stringMessages,
Collection<RaceColumnDTOAndFleetDTOWithNameBasedEquality> races,
String leaderboardName, Distance buoyZoneRadius, DialogCallback<CourseAndCompetitorCopyOperation> dialogCallback) {
super(stringMessages.selectRaces(), stringMessages.selectRaces(), stringMessages.ok(), stringMessages.cancel(),
@@ -48,7 +48,7 @@ public class CopyCourseAndCompetitorsDialog extends DataEntryDialog<CourseAndCom
}, true, dialogCallback);
this.stringMessages = stringMessages;
racesTable = new RaceTableWrapper<RefreshableMultiSelectionModel<RaceColumnDTOAndFleetDTOWithNameBasedEquality>>(
sailingService, stringMessages, errorReporter, /* multiSelection */ true);
sailingServiceWrite, stringMessages, errorReporter, /* multiSelection */ true);
racesTable.setSelectedLeaderboardName(leaderboardName);
racesTable.getDataProvider().getList().addAll(races);
racesTable.getSelectionModel().addSelectionChangeHandler(new Handler() {
@@ -62,7 +62,7 @@ public class CopyCourseAndCompetitorsDialog extends DataEntryDialog<CourseAndCom
competitorCheckBox = createCheckbox(stringMessages.copyCompetitors());
competitorCheckBox.setValue(false); // competitors are usually registered on the regatta
priorityBox = createIntegerBox(/* default priority */ 1, /* visibleLength */ 1);
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
}
@@ -88,7 +88,7 @@ public class CopyCourseAndCompetitorsDialog extends DataEntryDialog<CourseAndCom
Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality> racesToCopyTo = racesTable
.getSelectionModel().getSelectedSet();
return new CourseAndCompetitorCopyOperation(racesToCopyTo, courseCheckBox.getValue(), competitorCheckBox.getValue(),
priorityBox.getValue(), sailingService, errorReporter);
priorityBox.getValue(), sailingServiceWrite, errorReporter);
}
}
@@ -4,7 +4,7 @@ import java.util.Set;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Triple;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -16,15 +16,15 @@ public class CourseAndCompetitorCopyOperation {
final boolean copyCompetitors;
final Integer priority;
final private ErrorReporter errorReporter;
final private SailingServiceAsync sailingService;
final private SailingServiceWriteAsync sailingServiceWrite;
public CourseAndCompetitorCopyOperation(
Set<RaceColumnDTOAndFleetDTOWithNameBasedEquality> racesToCopyTo,
boolean copyCourse, boolean copyCompetitors, Integer priority, SailingServiceAsync sailingService, ErrorReporter errorReporter) {
boolean copyCourse, boolean copyCompetitors, Integer priority, SailingServiceWriteAsync sailingServiceWrite, ErrorReporter errorReporter) {
this.raceLogsToCopyTo = racesToCopyTo;
this.copyCourse = copyCourse;
this.copyCompetitors = copyCompetitors;
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
this.priority = priority;
}
@@ -65,7 +65,7 @@ public class CourseAndCompetitorCopyOperation {
Set<Triple<String, String, String>> toRacelogs = convertToRacelogs(leaderboardName);
if (copyCourse) {
sailingService.copyCourseToOtherRaceLogs(fromTriple, toRacelogs, getPriority(), new AsyncCallback<Void>() {
sailingServiceWrite.copyCourseToOtherRaceLogs(fromTriple, toRacelogs, getPriority(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Could not copy course and competitors: " + caught.getMessage());
@@ -81,7 +81,7 @@ public class CourseAndCompetitorCopyOperation {
}
if (copyCompetitors) {
sailingService.copyCompetitorsToOtherRaceLogs(fromTriple, toRacelogs, new AsyncCallback<Void>() {
sailingServiceWrite.copyCompetitorsToOtherRaceLogs(fromTriple, toRacelogs, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Could not copy course and competitors: " + caught.getMessage());
@@ -29,7 +29,7 @@ import com.sap.sailing.domain.common.dto.RaceDTO;
import com.sap.sailing.domain.common.orc.ORCPerformanceCurveLegTypes;
import com.sap.sailing.domain.common.orc.impl.ORCPerformanceCurveLegImpl;
import com.sap.sailing.gwt.ui.adminconsole.WaypointCreationDialog.DefaultPassingInstructionProvider;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.ControlPointDTO;
import com.sap.sailing.gwt.ui.shared.GateDTO;
@@ -57,7 +57,7 @@ public abstract class CourseManagementWidget implements IsWidget {
protected final ControlPointTableWrapper<RefreshableSingleSelectionModel<ControlPointDTO>> multiMarkControlPoints;
protected final WaypointTableWrapper<RefreshableSingleSelectionModel<WaypointDTO>> waypoints;
protected final Grid mainPanel;
protected final SailingServiceAsync sailingService;
protected final SailingServiceWriteAsync sailingServiceWrite;
protected final ErrorReporter errorReporter;
protected final StringMessages stringMessages;
protected final HorizontalPanel waypointsBtnsPanel;
@@ -134,9 +134,9 @@ public abstract class CourseManagementWidget implements IsWidget {
* ORC PCS leg data. By default, these actions are enabled, particularly to cover the case where this
* widget is used without an existing {@code TrackedRace} and only with a race log.
*/
public CourseManagementWidget(final SailingServiceAsync sailingService, ErrorReporter errorReporter,
public CourseManagementWidget(final SailingServiceWriteAsync sailingServiceWrite, ErrorReporter errorReporter,
final StringMessages stringMessages, final UserService userService, final Supplier<Boolean> showOrcPcsLegEditActions) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
this.userService = userService;
@@ -145,11 +145,11 @@ public abstract class CourseManagementWidget implements IsWidget {
mainPanel.setCellPadding(5);
mainPanel.getRowFormatter().setVerticalAlign(0, HasVerticalAlignment.ALIGN_TOP);
waypoints = new WaypointTableWrapper<RefreshableSingleSelectionModel<WaypointDTO>>(
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
/* multiSelection */ false, sailingServiceWrite, stringMessages, errorReporter);
multiMarkControlPoints = new ControlPointTableWrapper<RefreshableSingleSelectionModel<ControlPointDTO>>(
/* multiSelection */ false, sailingService, stringMessages, errorReporter);
/* multiSelection */ false, sailingServiceWrite, stringMessages, errorReporter);
marks = new MarkTableWrapper<RefreshableMultiSelectionModel<MarkDTO>>(
/* multiSelection */ true, sailingService, stringMessages, errorReporter);
/* multiSelection */ true, sailingServiceWrite, stringMessages, errorReporter);
marks.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
@@ -359,7 +359,7 @@ public abstract class CourseManagementWidget implements IsWidget {
}
private void addMultiMarkControlPoint() {
new GateCreationDialog(sailingService, errorReporter, stringMessages, tableRes,
new GateCreationDialog(sailingServiceWrite, errorReporter, stringMessages, tableRes,
marks.getDataProvider().getList(), new DataEntryDialog.DialogCallback<GateDTO>() {
@Override
public void cancel() {}
@@ -376,7 +376,7 @@ public abstract class CourseManagementWidget implements IsWidget {
allControlPoints.addAll(multiMarkControlPoints.getDataProvider().getList());
allControlPoints.addAll(marks.getDataProvider().getList());
final int insertIndex = getInsertIndex(waypoints, beforeSelection);
new WaypointCreationDialog(sailingService, errorReporter, stringMessages, tableRes, allControlPoints,
new WaypointCreationDialog(sailingServiceWrite, errorReporter, stringMessages, tableRes, allControlPoints,
new DefaultPassingInstructionProvider() {
@Override
public PassingInstruction getDefaultPassingInstruction(int numberOfMarksInControlPoint, String controlPointIdAsString) {
@@ -418,7 +418,7 @@ public abstract class CourseManagementWidget implements IsWidget {
public abstract void refresh();
protected void updateWaypointsAndControlPoints(RaceCourseDTO raceCourseDTO, String leaderboardName) {
this.sailingService.getLeaderboardWithSecurity(leaderboardName,
this.sailingServiceWrite.getLeaderboardWithSecurity(leaderboardName,
new AsyncCallback<StrippedLeaderboardDTOWithSecurity>() {
@Override
public void onFailure(Throwable caught) {
@@ -14,7 +14,7 @@ import com.sap.sailing.domain.common.dto.RegattaCreationParametersDTO;
import com.sap.sailing.domain.common.dto.SeriesCreationParametersDTO;
import com.sap.sailing.gwt.ui.client.EventsRefresher;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
@@ -31,17 +31,17 @@ import com.sap.sse.security.ui.client.UserService;
public class CreateRegattaCallback implements DialogCallback<RegattaDTO>{
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final ErrorReporter errorReporter;
private final EventsRefresher eventsRefresher;
private final RegattaRefresher regattaRefresher;
private final StringMessages stringMessages;
private final List<EventDTO> existingEvents;
public CreateRegattaCallback(UserService userService, SailingServiceAsync sailingService,
public CreateRegattaCallback(UserService userService, SailingServiceWriteAsync sailingServiceWrite,
StringMessages stringMessages, ErrorReporter errorReporter, RegattaRefresher regattaRefresher,
EventsRefresher eventsRefresher, List<EventDTO> existingEvents) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
this.regattaRefresher = regattaRefresher;
this.eventsRefresher = eventsRefresher;
@@ -67,7 +67,7 @@ public class CreateRegattaCallback implements DialogCallback<RegattaDTO>{
seriesDTO.hasSplitFleetContiguousScoring(), seriesDTO.getMaximumNumberOfDiscards());
seriesStructure.put(seriesDTO.getName(), seriesPair);
}
sailingService.createRegatta(newRegatta.getName(),
sailingServiceWrite.createRegatta(newRegatta.getName(),
newRegatta.boatClass == null ? null : newRegatta.boatClass.getName(),
newRegatta.canBoatsOfCompetitorsChangePerRace, newRegatta.competitorRegistrationType,
newRegatta.registrationLinkSecret, newRegatta.startDate, newRegatta.endDate,
@@ -105,7 +105,7 @@ public class CreateRegattaCallback implements DialogCallback<RegattaDTO>{
// at the end, using -1 as "insertIndex."
raceColumnNamesToAddWithInsertIndex.add(new Pair<>(newRaceColumn.getName(), -1));
}
sailingService.addRaceColumnsToSeries(newRegatta.getRegattaIdentifier(), series.getName(), raceColumnNamesToAddWithInsertIndex,
sailingServiceWrite.addRaceColumnsToSeries(newRegatta.getRegattaIdentifier(), series.getName(), raceColumnNamesToAddWithInsertIndex,
new AsyncCallback<List<RaceColumnInSeriesDTO>>() {
@Override
public void onFailure(Throwable caught) {
@@ -135,11 +135,11 @@ public class CreateRegattaCallback implements DialogCallback<RegattaDTO>{
}
private void openCreateDefaultRegattaLeaderboardDialog(final RegattaDTO newRegatta, final List<EventDTO> existingEvents) {
CreateDefaultRegattaLeaderboardDialog dialog = new CreateDefaultRegattaLeaderboardDialog(sailingService,
CreateDefaultRegattaLeaderboardDialog dialog = new CreateDefaultRegattaLeaderboardDialog(sailingServiceWrite,
stringMessages, errorReporter, newRegatta, new DialogCallback<RegattaName>() {
@Override
public void ok(RegattaName regattaIdentifier) {
sailingService.createRegattaLeaderboard(regattaIdentifier,
sailingServiceWrite.createRegattaLeaderboard(regattaIdentifier,
/* displayName */ null, new int[] {},
new AsyncCallback<StrippedLeaderboardDTOWithSecurity>() {
@Override
@@ -179,7 +179,7 @@ public class CreateRegattaCallback implements DialogCallback<RegattaDTO>{
* @param eventToLinkRegattaTo an event that has at least one {@link EventDTO#getLeaderboardGroups() leaderboard group}
*/
private void openRegattaLeaderboardToLeaderboardGroupOfEventLinkingDialog(final StrippedLeaderboardDTO newRegattaLeaderboard, EventDTO eventToLinkRegattaTo) {
LinkRegattaLeaderboardToLeaderboardGroupOfEventDialog dialog = new LinkRegattaLeaderboardToLeaderboardGroupOfEventDialog(sailingService, stringMessages, errorReporter, newRegattaLeaderboard, eventToLinkRegattaTo,
LinkRegattaLeaderboardToLeaderboardGroupOfEventDialog dialog = new LinkRegattaLeaderboardToLeaderboardGroupOfEventDialog(sailingServiceWrite, stringMessages, errorReporter, newRegattaLeaderboard, eventToLinkRegattaTo,
new DialogCallback<LeaderboardGroupDTO>() {
@Override
public void ok(final LeaderboardGroupDTO selectedLeaderboardGroup) {
@@ -188,7 +188,7 @@ public class CreateRegattaCallback implements DialogCallback<RegattaDTO>{
leaderboardNames.add(leaderboard.getName());
}
leaderboardNames.add(newRegattaLeaderboard.getName());
sailingService.updateLeaderboardGroup(selectedLeaderboardGroup.getId(),
sailingServiceWrite.updateLeaderboardGroup(selectedLeaderboardGroup.getId(),
selectedLeaderboardGroup.getName(), selectedLeaderboardGroup.getName(),
selectedLeaderboardGroup.description, selectedLeaderboardGroup.getDisplayName(),
leaderboardNames, selectedLeaderboardGroup.getOverallLeaderboardDiscardThresholds(),
@@ -18,7 +18,7 @@ import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ListDataProvider;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationWithSecurityDTO;
import com.sap.sse.common.Util;
@@ -50,13 +50,13 @@ public class DeviceConfigurationListComposite extends Composite {
private final Label noConfigurationsLabel;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final ErrorReporter errorReporter;
protected final StringMessages stringMessages;
public DeviceConfigurationListComposite(SailingServiceAsync sailingService, ErrorReporter errorReporter,
public DeviceConfigurationListComposite(SailingServiceWriteAsync sailingServiceWrite, ErrorReporter errorReporter,
StringMessages stringMessages, final UserService userService) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
mainPanel = new SimplePanel();
@@ -88,7 +88,7 @@ public class DeviceConfigurationListComposite extends Composite {
}
public void refreshTable() {
sailingService.getDeviceConfigurations(new AsyncCallback<List<DeviceConfigurationWithSecurityDTO>>() {
sailingServiceWrite.getDeviceConfigurations(new AsyncCallback<List<DeviceConfigurationWithSecurityDTO>>() {
@Override
public void onSuccess(List<DeviceConfigurationWithSecurityDTO> result) {
if (configurationsDataProvider.getList().isEmpty()) {
@@ -141,7 +141,7 @@ public class DeviceConfigurationListComposite extends Composite {
new DefaultActionsImagesBarCell(stringMessages), userService);
actionColumn.addAction(ACTION_DELETE, DELETE, config -> {
if (Window.confirm(stringMessages.doYouReallyWantToRemoveDeviceConfiguration(config.getName()))) {
sailingService.removeDeviceConfiguration(config.id, new AsyncCallback<Boolean>() {
sailingServiceWrite.removeDeviceConfiguration(config.id, new AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
refreshTable();
@@ -18,6 +18,7 @@ import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.domain.common.security.SecuredDomainType;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationDTO;
import com.sap.sailing.gwt.ui.shared.DeviceConfigurationWithSecurityDTO;
@@ -29,7 +30,7 @@ import com.sap.sse.security.ui.client.UserService;
import com.sap.sse.security.ui.client.component.SelectedElementsCountingButton;
public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfigurationDetailComposite.DeviceConfigurationFactory {
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final UserService userService;
private final StringMessages stringMessages;
private final ErrorReporter errorReporter;
@@ -42,13 +43,13 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
private final RefreshableMultiSelectionModel<DeviceConfigurationWithSecurityDTO> refreshableMultiSelectionModel;
public DeviceConfigurationPanel(SailingServiceAsync sailingService, UserService userService,
public DeviceConfigurationPanel(SailingServiceWriteAsync sailingServiceWrite, UserService userService,
StringMessages stringMessages, ErrorReporter reporter) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.userService = userService;
this.stringMessages = stringMessages;
this.errorReporter = reporter;
listComposite = new DeviceConfigurationListComposite(sailingService, errorReporter, stringMessages,
listComposite = new DeviceConfigurationListComposite(sailingServiceWrite, errorReporter, stringMessages,
userService);
refreshableMultiSelectionModel = listComposite.getSelectionModel();
setupUi();
@@ -113,7 +114,7 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
grid.setWidget(0, 0, listComposite);
grid.getRowFormatter().setVerticalAlign(0, HasVerticalAlignment.ALIGN_TOP);
grid.getColumnFormatter().getElement(1).getStyle().setPaddingTop(2.0, Unit.EM);
detailComposite = new DeviceConfigurationDetailComposite(sailingService, getUserService(), errorReporter, stringMessages, this);
detailComposite = new DeviceConfigurationDetailComposite(sailingServiceWrite, getUserService(), errorReporter, stringMessages, this);
detailComposite.setVisible(false);
grid.setWidget(0, 1, detailComposite);
}
@@ -135,7 +136,7 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
@Override
public void obtainAndSetNameForConfigurationAndAdd(
final DeviceConfigurationWithSecurityDTO configurationToObtainAndSetNameForAndAdd) {
sailingService.getDeviceConfigurations(
sailingServiceWrite.getDeviceConfigurations(
new MarkedAsyncCallback<>(new AsyncCallback<List<DeviceConfigurationWithSecurityDTO>>() {
@Override
public void onSuccess(List<DeviceConfigurationWithSecurityDTO> allConfigurations) {
@@ -143,7 +144,7 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
@Override
public void ok(String nameForNewDeviceConfiguration) {
configurationToObtainAndSetNameForAndAdd.name = nameForNewDeviceConfiguration;
sailingService.createOrUpdateDeviceConfiguration(configurationToObtainAndSetNameForAndAdd,
sailingServiceWrite.createOrUpdateDeviceConfiguration(configurationToObtainAndSetNameForAndAdd,
new MarkedAsyncCallback<>(new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
@@ -178,7 +179,7 @@ public class DeviceConfigurationPanel extends SimplePanel implements DeviceConfi
private void removeConfiguration() {
detailComposite.setConfiguration(null);
for (DeviceConfigurationDTO config : refreshableMultiSelectionModel.getSelectedSet()) {
sailingService.removeDeviceConfiguration(config.id, new AsyncCallback<Boolean>() {
sailingServiceWrite.removeDeviceConfiguration(config.id, new AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean result) {
listComposite.refreshTable();
@@ -1,7 +1,7 @@
package com.sap.sailing.gwt.ui.adminconsole;
import com.google.gwt.user.cellview.client.TextColumn;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceIdentifierDTO;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -10,9 +10,9 @@ import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
public class DeviceIdentifierTableWrapper extends TableWrapper<DeviceIdentifierDTO, RefreshableMultiSelectionModel<DeviceIdentifierDTO>> {
public DeviceIdentifierTableWrapper(SailingServiceAsync sailingService, StringMessages stringMessages,
public DeviceIdentifierTableWrapper(SailingServiceWriteAsync sailingServiceWrite, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false,
super(sailingServiceWrite, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false,
new EntityIdentityComparator<DeviceIdentifierDTO>() {
@Override
public boolean representSameEntity(DeviceIdentifierDTO dto1, DeviceIdentifierDTO dto2) {
@@ -7,7 +7,7 @@ import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.gwt.ui.client.MappableToDeviceFormatter;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil;
import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO;
@@ -16,9 +16,9 @@ import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.celltable.RefreshableSingleSelectionModel;
public class DeviceMappingTableWrapper extends TableWrapper<DeviceMappingDTO, RefreshableSingleSelectionModel<DeviceMappingDTO>> {
public DeviceMappingTableWrapper(SailingServiceAsync sailingService, final StringMessages stringMessages,
public DeviceMappingTableWrapper(SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true,
super(sailingServiceWrite, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true,
/* leaving EntityIdentityComparator null, reducing comparison to equals/hashCode which is well
* defined on DeviceMappingDTO
*/ null);
@@ -4,18 +4,20 @@ import java.util.List;
import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
import com.sap.sse.security.ui.client.UserService;
public class EditCompetitorsDialog extends DataEntryDialog<List<CompetitorWithBoatDTO>> {
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final UserService userService;
private final StringMessages stringMessages;
private final ErrorReporter errorReporter;
private final String leaderboardName;
private final String boatClassName;
private final boolean createWithBoatByDefault;
protected static class CompetitorsValidator implements Validator<List<CompetitorWithBoatDTO>> {
public CompetitorsValidator() {
@@ -28,14 +30,18 @@ public class EditCompetitorsDialog extends DataEntryDialog<List<CompetitorWithBo
}
}
public EditCompetitorsDialog(final SailingServiceAsync sailingService, final UserService userService, String leaderboardName, final StringMessages stringMessages,
final ErrorReporter errorReporter, DialogCallback<List<CompetitorWithBoatDTO>> callback) {
super(stringMessages.actionEditCompetitors(), null, stringMessages.ok(), stringMessages.cancel(), new CompetitorsValidator(), callback);
this.sailingService = sailingService;
public EditCompetitorsDialog(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final String leaderboardName, final String boatClassName, boolean createWithBoatByDefault,
final StringMessages stringMessages, final ErrorReporter errorReporter, DialogCallback<List<CompetitorWithBoatDTO>> callback) {
super(stringMessages.actionEditCompetitors(), null, stringMessages.ok(), stringMessages.cancel(),
new CompetitorsValidator(), callback);
this.sailingServiceWrite = sailingServiceWrite;
this.userService = userService;
this.stringMessages = stringMessages;
this.errorReporter = errorReporter;
this.leaderboardName = leaderboardName;
this.boatClassName = boatClassName;
this.createWithBoatByDefault = createWithBoatByDefault;
}
@Override
@@ -45,7 +51,8 @@ public class EditCompetitorsDialog extends DataEntryDialog<List<CompetitorWithBo
@Override
protected Widget getAdditionalWidget() {
CompetitorPanel competitorPanel = new CompetitorPanel(sailingService, userService, leaderboardName, stringMessages, errorReporter);
return competitorPanel;
CompetitorPanel competitorPanel = new CompetitorPanel(sailingServiceWrite, userService, leaderboardName,
boatClassName, createWithBoatByDefault, stringMessages, errorReporter);
return competitorPanel;
}
}
@@ -6,7 +6,7 @@ import java.util.Date;
import java.util.List;
import com.sap.sailing.domain.common.dto.CourseAreaDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
@@ -17,8 +17,8 @@ import com.sap.sse.gwt.client.media.VideoDTO;
public class EventCreateDialog extends EventDialog {
public EventCreateDialog(Collection<EventDTO> existingEvents, List<LeaderboardGroupDTO> availableLeaderboardGroups,
SailingServiceAsync sailingService, StringMessages stringMessages, DialogCallback<EventDTO> callback) {
super(new EventParameterValidator(stringMessages, existingEvents), sailingService, stringMessages,
SailingServiceWriteAsync sailingServiceWrite, StringMessages stringMessages, DialogCallback<EventDTO> callback) {
super(new EventParameterValidator(stringMessages, existingEvents), sailingServiceWrite, stringMessages,
availableLeaderboardGroups, /* leaderboardGroups */ Collections.<LeaderboardGroupDTO>emptyList(), callback);
nameEntryField = createTextBox(null);
nameEntryField.setVisibleLength(50);
@@ -25,7 +25,7 @@ import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.CourseAreaDTO;
import com.sap.sailing.domain.common.windfinder.AvailableWindFinderSpotCollections;
import com.sap.sailing.gwt.ui.client.DataEntryDialogWithDateTimeBox;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil;
import com.sap.sailing.gwt.ui.shared.EventDTO;
@@ -128,11 +128,11 @@ public abstract class EventDialog extends DataEntryDialogWithDateTimeBox<EventDT
* @param leaderboardGroupsOfEvent even though not editable in this dialog, this parameter gives an editing subclass a chance to "park" the leaderboard group
* assignments for re-association with the new {@link EventDTO} created by the {@link #getResult} method.
*/
public EventDialog(EventParameterValidator validator, SailingServiceAsync sailingService,
public EventDialog(EventParameterValidator validator, SailingServiceWriteAsync sailingServiceWrite,
StringMessages stringMessages, List<LeaderboardGroupDTO> availableLeaderboardGroups,
Iterable<LeaderboardGroupDTO> leaderboardGroupsOfEvent, DialogCallback<EventDTO> callback) {
super(stringMessages.event(), null, stringMessages.ok(), stringMessages.cancel(), validator, callback);
this.storageServiceAvailable = new FileStorageServiceConnectionTestObservable(sailingService);
this.storageServiceAvailable = new FileStorageServiceConnectionTestObservable(sailingServiceWrite);
this.stringMessages = stringMessages;
this.availableLeaderboardGroupsByName = new HashMap<>();
for (final LeaderboardGroupDTO lgDTO : availableLeaderboardGroups) {
@@ -163,7 +163,7 @@ public abstract class EventDialog extends DataEntryDialogWithDateTimeBox<EventDT
new StringConstantsListEditorComposite.ExpandedUi(stringMessages, IconResources.INSTANCE.removeIcon(),
leaderboardGroupNames, stringMessages.selectALeaderboardGroup()));
leaderboardGroupList.addValueChangeHandler(valueChangeHandler);
imagesListComposite = new ImagesListComposite(sailingService, stringMessages, storageServiceAvailable);
imagesListComposite = new ImagesListComposite(sailingServiceWrite, stringMessages, storageServiceAvailable);
videosListComposite = new VideosListComposite(stringMessages, storageServiceAvailable);
externalLinksComposite = new ExternalLinksComposite(stringMessages);
final List<String> suggestedWindFinderSpotCollections = AvailableWindFinderSpotCollections
@@ -4,7 +4,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
@@ -12,8 +12,8 @@ import com.sap.sse.gwt.client.controls.datetime.DateTimeInput.Accuracy;
public class EventEditDialog extends EventDialog {
public EventEditDialog(EventDTO event, Collection<EventDTO> otherExistingEvents, List<LeaderboardGroupDTO> availableLeaderboardGroups,
SailingServiceAsync sailingService, StringMessages stringMessages, DialogCallback<EventDTO> callback) {
super(new EventParameterValidator(stringMessages, otherExistingEvents), sailingService, stringMessages, availableLeaderboardGroups, event.getLeaderboardGroups(), callback);
SailingServiceWriteAsync sailingServiceWrite, StringMessages stringMessages, DialogCallback<EventDTO> callback) {
super(new EventParameterValidator(stringMessages, otherExistingEvents), sailingServiceWrite, stringMessages, availableLeaderboardGroups, event.getLeaderboardGroups(), callback);
nameEntryField = createTextBox(event.getName());
nameEntryField.setVisibleLength(50);
descriptionEntryField = createTextArea(event.getDescription());
@@ -46,7 +46,7 @@ import com.sap.sailing.gwt.ui.client.EntryPointLinkFactory;
import com.sap.sailing.gwt.ui.client.EventsRefresher;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsDisplayer;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.shared.controls.MultipleLinkCell;
import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil;
@@ -85,7 +85,7 @@ import com.sap.sse.security.ui.client.component.editacl.EditACLDialog;
* @author Frank Mittag (C5163974)
*/
public class EventListComposite extends Composite implements EventsRefresher, LeaderboardGroupsDisplayer {
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final UserService userService;
private final ErrorReporter errorReporter;
private final StringMessages stringMessages;
@@ -117,10 +117,10 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
private final EventsRefresher eventsRefresher;
private final HandleTabSelectable handleTabSelectable;
public EventListComposite(final SailingServiceAsync sailingService, UserService userService, final ErrorReporter errorReporter,
public EventListComposite(final SailingServiceWriteAsync sailingServiceWrite, UserService userService, final ErrorReporter errorReporter,
RegattaRefresher regattaRefresher, EventsRefresher eventsRefresher, final HandleTabSelectable handleTabSelectable,
final StringMessages stringMessages) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.userService = userService;
this.stringMessages = stringMessages;
this.errorReporter = errorReporter;
@@ -353,7 +353,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
final MigrateGroupOwnershipDialog.DialogConfig<EventDTO> migrateDialogConfig = MigrateGroupOwnershipDialog
.create(userService.getUserManagementService(), (event, dto) -> {
sailingService.updateGroupOwnerForEventHierarchy(event.id, dto, new AsyncCallback<Void>() {
sailingServiceWrite.updateGroupOwnerForEventHierarchy(event.id, dto, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(stringMessages.errorUpdatingOwnership(event.getName()));
@@ -473,7 +473,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
for (EventDTO event : events) {
eventIds.add(event.id);
}
sailingService.removeEvents(eventIds, new AsyncCallback<Void>() {
sailingServiceWrite.removeEvents(eventIds, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to remove the events:" + caught.getMessage());
@@ -487,7 +487,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
}
private void removeEvent(final EventDTO event) {
sailingService.removeEvent(event.id, new AsyncCallback<Void>() {
sailingServiceWrite.removeEvent(event.id, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to remove event " + event.getName() + ": " + caught.getMessage());
@@ -505,7 +505,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
final List<LeaderboardGroupDTO> existingLeaderboardGroups = new ArrayList<LeaderboardGroupDTO>();
Util.addAll(availableLeaderboardGroups, existingLeaderboardGroups);
EventCreateDialog dialog = new EventCreateDialog(Collections.unmodifiableCollection(existingEvents), existingLeaderboardGroups,
sailingService, stringMessages, new DialogCallback<EventDTO>() {
sailingServiceWrite, stringMessages, new DialogCallback<EventDTO>() {
@Override
public void cancel() {
}
@@ -520,17 +520,17 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
}
private void openCreateDefaultRegattaDialog(final EventDTO createdEvent) {
CreateDefaultRegattaDialog dialog = new CreateDefaultRegattaDialog(sailingService, stringMessages, errorReporter, new DialogCallback<Void>() {
CreateDefaultRegattaDialog dialog = new CreateDefaultRegattaDialog(sailingServiceWrite, stringMessages, errorReporter, new DialogCallback<Void>() {
@Override
public void cancel() {
}
@Override
public void ok(Void editedObject) {
sailingService.getRegattas(new AsyncCallback<List<RegattaDTO>>() {
sailingServiceWrite.getRegattas(new AsyncCallback<List<RegattaDTO>>() {
@Override
public void onFailure(Throwable caught) {
sailingService.getEvents(new AsyncCallback<List<EventDTO>>() {
sailingServiceWrite.getEvents(new AsyncCallback<List<EventDTO>>() {
@Override
public void onFailure(Throwable caught) {
openCreateRegattaDialog(Collections.<RegattaDTO>emptyList(), Collections.<EventDTO>emptyList(), createdEvent);
@@ -546,7 +546,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
@Override
public void onSuccess(final List<RegattaDTO> existingRegattas) {
sailingService.getEvents(new AsyncCallback<List<EventDTO>>() {
sailingServiceWrite.getEvents(new AsyncCallback<List<EventDTO>>() {
@Override
public void onFailure(Throwable caught) {
openCreateRegattaDialog(existingRegattas, Collections.<EventDTO>emptyList(), createdEvent);
@@ -567,8 +567,8 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
private void openCreateRegattaDialog(List<RegattaDTO> existingRegattas,
List<EventDTO> existingEvents, EventDTO createdEvent) {
RegattaWithSeriesAndFleetsCreateDialog dialog = new RegattaWithSeriesAndFleetsCreateDialog(existingRegattas, existingEvents, createdEvent, sailingService, stringMessages,
new CreateRegattaCallback(userService, sailingService, stringMessages, errorReporter, regattaRefresher,
RegattaWithSeriesAndFleetsCreateDialog dialog = new RegattaWithSeriesAndFleetsCreateDialog(existingRegattas, existingEvents, createdEvent, sailingServiceWrite, stringMessages,
new CreateRegattaCallback(userService, sailingServiceWrite, stringMessages, errorReporter, regattaRefresher,
eventsRefresher, existingEvents));
dialog.ensureDebugId("RegattaCreateDialog");
dialog.show();
@@ -581,7 +581,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
LeaderboardGroupCreateDialog leaderboardGroupCreateDialog = new LeaderboardGroupCreateDialog(existingLeaderboardGroups, stringMessages, new DialogCallback<LeaderboardGroupDialog.LeaderboardGroupDescriptor>() {
@Override
public void ok(final LeaderboardGroupDescriptor newGroup) {
sailingService.createLeaderboardGroup(newGroup.getName(), newGroup.getDescription(),
sailingServiceWrite.createLeaderboardGroup(newGroup.getName(), newGroup.getDescription(),
newGroup.getDisplayName(), newGroup.isDisplayLeaderboardsInReverseOrder(),
newGroup.getOverallLeaderboardDiscardThresholds(), newGroup.getOverallLeaderboardScoringSchemeType(), new MarkedAsyncCallback<LeaderboardGroupDTO>(
new AsyncCallback<LeaderboardGroupDTO>() {
@@ -627,7 +627,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
List<LeaderboardGroupDTO> existingLeaderboardGroups = new ArrayList<LeaderboardGroupDTO>();
Util.addAll(availableLeaderboardGroups, existingLeaderboardGroups);
EventEditDialog dialog = new EventEditDialog(selectedEvent, Collections.unmodifiableCollection(existingEvents),
existingLeaderboardGroups, sailingService, stringMessages,
existingLeaderboardGroups, sailingServiceWrite, stringMessages,
new DialogCallback<EventDTO>() {
@Override
public void cancel() {
@@ -645,8 +645,8 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
Pair<List<CourseAreaDTO>, List<CourseAreaDTO>> courseAreasToAddAndRemove = getCourseAreasToAdd(oldEvent, updatedEvent);
final List<CourseAreaDTO> courseAreasToAdd = courseAreasToAddAndRemove.getA();
final List<CourseAreaDTO> courseAreasToRemove = courseAreasToAddAndRemove.getB();
final Iterable<UUID> updatedEventLeaderboardGroupIds = updatedEvent.getLeaderboardGroupIds();
sailingService.updateEvent(oldEvent.id, oldEvent.getName(), updatedEvent.getDescription(),
final List<UUID> updatedEventLeaderboardGroupIds = updatedEvent.getLeaderboardGroupIds();
sailingServiceWrite.updateEvent(oldEvent.id, oldEvent.getName(), updatedEvent.getDescription(),
updatedEvent.startDate, updatedEvent.endDate, updatedEvent.venue,
updatedEvent.isPublic, updatedEventLeaderboardGroupIds,
updatedEvent.getOfficialWebsiteURL(),
@@ -666,7 +666,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
for (CourseAreaDTO courseAreaToAdd : courseAreasToAdd) {
namesOfCourseAreasToAdd[i++] = courseAreaToAdd.getName();
}
sailingService.createCourseAreas(oldEvent.id, namesOfCourseAreasToAdd, new AsyncCallback<Void>() {
sailingServiceWrite.createCourseAreas(oldEvent.id, namesOfCourseAreasToAdd, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable t) {
errorReporter.reportError("Error trying to add course area to sailing event " + oldEvent.getName()
@@ -680,7 +680,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
for (CourseAreaDTO courseAreaToRemove : courseAreasToRemove) {
idsOfCourseAreasToRemove[j++] = courseAreaToRemove.id;
}
sailingService.removeCourseAreas(oldEvent.id, idsOfCourseAreasToRemove, new AsyncCallback<Void>() {
sailingServiceWrite.removeCourseAreas(oldEvent.id, idsOfCourseAreasToRemove, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable t) {
errorReporter.reportError("Error trying to remove course area from sailing event " + oldEvent.getName()
@@ -691,7 +691,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
public void onSuccess(Void result) {
fillEvents();
if (!oldEvent.getName().equals(updatedEvent.getName())) {
sailingService.renameEvent(oldEvent.id, updatedEvent.getName(), new AsyncCallback<Void>() {
sailingServiceWrite.renameEvent(oldEvent.id, updatedEvent.getName(), new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
}
@@ -723,7 +723,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
for (CourseAreaDTO courseAreaDTO : newEvent.venue.getCourseAreas()) {
courseAreaNames.add(courseAreaDTO.getName());
}
sailingService.createEvent(newEvent.getName(), newEvent.getDescription(), newEvent.startDate, newEvent.endDate,
sailingServiceWrite.createEvent(newEvent.getName(), newEvent.getDescription(), newEvent.startDate, newEvent.endDate,
newEvent.venue.getName(), newEvent.isPublic, courseAreaNames, newEvent.getOfficialWebsiteURL(), newEvent.getBaseURL(),
newEvent.getSailorsInfoWebsiteURLs(), newEvent.getImages(), newEvent.getVideos(), newEvent.getLeaderboardGroupIds(),
new AsyncCallback<EventDTO>() {
@@ -738,7 +738,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
if (newEvent.getLeaderboardGroups().isEmpty()) {
// show simple Dialog
DataEntryDialog<Void> dialog = new CreateDefaultLeaderboardGroupDialog(
sailingService, stringMessages, errorReporter, new DialogCallback<Void>() {
sailingServiceWrite, stringMessages, errorReporter, new DialogCallback<Void>() {
@Override
public void ok(Void editedObject) {
openLeaderboardGroupCreationDialog(existingLeaderboardGroups, newEvent);
@@ -764,7 +764,7 @@ public class EventListComposite extends Composite implements EventsRefresher, Le
@Override
public void fillEvents() {
sailingService.getEvents(new AsyncCallback<List<EventDTO>>() {
sailingServiceWrite.getEvents(new AsyncCallback<List<EventDTO>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Remote Procedure Call getEvents() - Failure: " + caught.getMessage());
@@ -11,7 +11,7 @@ import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.gwt.ui.client.EventsRefresher;
import com.sap.sailing.gwt.ui.client.LeaderboardGroupsDisplayer;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.EventDTO;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
@@ -32,7 +32,7 @@ public class EventManagementPanel extends SimplePanel implements EventsRefresher
private final CaptionPanel eventsPanel;
private final RefreshableMultiSelectionModel<EventDTO> refreshableEventSelectionModel;
public EventManagementPanel(final SailingServiceAsync sailingService, UserService userService, final ErrorReporter errorReporter,
public EventManagementPanel(final SailingServiceWriteAsync sailingServiceWrite, UserService userService, final ErrorReporter errorReporter,
RegattaRefresher regattaRefresher, final StringMessages stringMessages, final HandleTabSelectable handleTabSelectable) {
VerticalPanel mainPanel = new VerticalPanel();
setWidget(mainPanel);
@@ -43,11 +43,11 @@ public class EventManagementPanel extends SimplePanel implements EventsRefresher
VerticalPanel eventsContentPanel = new VerticalPanel();
eventsPanel.setContentWidget(eventsContentPanel);
eventListComposite = new EventListComposite(sailingService, userService, errorReporter, regattaRefresher, this, handleTabSelectable, stringMessages);
eventListComposite = new EventListComposite(sailingServiceWrite, userService, errorReporter, regattaRefresher, this, handleTabSelectable, stringMessages);
eventListComposite.ensureDebugId("EventListComposite");
eventsContentPanel.add(eventListComposite);
eventDetailsComposite = new EventDetailsComposite(sailingService, errorReporter, stringMessages);
eventDetailsComposite = new EventDetailsComposite(sailingServiceWrite, errorReporter, stringMessages);
eventDetailsComposite.ensureDebugId("EventDetailsComposite");
eventDetailsComposite.setVisible(false);
mainPanel.add(eventDetailsComposite);
@@ -10,7 +10,7 @@ import java.util.UUID;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.DeviceMappingDTO;
import com.sap.sailing.gwt.ui.shared.EventDTO;
@@ -41,7 +41,7 @@ import com.sap.sse.security.ui.client.UserService;
*/
public class ExpeditionAllInOneAfterImportHandler {
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final UserService userService;
private final ErrorReporter errorReporter;
private final StringMessages stringMessages;
@@ -60,11 +60,11 @@ public class ExpeditionAllInOneAfterImportHandler {
public ExpeditionAllInOneAfterImportHandler(UUID eventId, String regattaName, String leaderboardName,
String leaderboardGroupName, List<Triple<String, String, String>> raceEntries,
List<String> gpsDeviceIds, List<String> sensorDeviceIds, String sensorImporterType,
Iterable<TimePoint> startTimes, final SailingServiceAsync sailingService, final UserService userService, final ErrorReporter errorReporter,
Iterable<TimePoint> startTimes, final SailingServiceWriteAsync sailingServiceWrite, final UserService userService, final ErrorReporter errorReporter,
final StringMessages stringMessages) {
this.leaderboardGroupName = leaderboardGroupName;
this.sensorImporterType = sensorImporterType;
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.userService = userService;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
@@ -72,25 +72,25 @@ public class ExpeditionAllInOneAfterImportHandler {
this.regattaName = regattaName;
this.startTimes = startTimes;
// TODO from the start times, suggest the user to split the session into one session per start, with start tracking at n minutes before start
sailingService.getEventById(eventId, false, new DataLoadingCallback<EventDTO>() {
sailingServiceWrite.getEventById(eventId, false, new DataLoadingCallback<EventDTO>() {
@Override
public void onSuccess(EventDTO result) {
event = result;
sailingService.getRegattaByName(regattaName, new DataLoadingCallback<RegattaDTO>() {
sailingServiceWrite.getRegattaByName(regattaName, new DataLoadingCallback<RegattaDTO>() {
@Override
public void onSuccess(RegattaDTO result) {
regatta = result;
sailingService.getLeaderboard(leaderboardName,
sailingServiceWrite.getLeaderboard(leaderboardName,
new DataLoadingCallback<StrippedLeaderboardDTO>() {
@Override
public void onSuccess(StrippedLeaderboardDTO result) {
leaderboard = result;
sailingService.getTrackFileImportDeviceIds(gpsDeviceIds,
sailingServiceWrite.getTrackFileImportDeviceIds(gpsDeviceIds,
new DataLoadingCallback<List<TrackFileImportDeviceIdentifierDTO>>() {
@Override
public void onSuccess(List<TrackFileImportDeviceIdentifierDTO> result) {
gpsFixesDeviceIDs = result;
sailingService.getTrackFileImportDeviceIds(sensorDeviceIds,
sailingServiceWrite.getTrackFileImportDeviceIds(sensorDeviceIds,
new DataLoadingCallback<List<TrackFileImportDeviceIdentifierDTO>>() {
@Override
public void onSuccess(List<TrackFileImportDeviceIdentifierDTO> result) {
@@ -109,19 +109,19 @@ public class ExpeditionAllInOneAfterImportHandler {
}
private class RegattaLogCompetitorRegistrationAndSelectionDialog extends RegattaLogCompetitorRegistrationDialog {
public RegattaLogCompetitorRegistrationAndSelectionDialog(String boatClass, SailingServiceAsync sailingService, final UserService userService,
public RegattaLogCompetitorRegistrationAndSelectionDialog(String boatClass, SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
StringMessages stringMessages, ErrorReporter errorReporter, boolean editable, String leaderboardName,
boolean canBoatsOfCompetitorsChangePerRace) {
this(boatClass, sailingService, userService, stringMessages, errorReporter, editable, leaderboardName,
this(boatClass, sailingServiceWrite, userService, stringMessages, errorReporter, editable, leaderboardName,
canBoatsOfCompetitorsChangePerRace, new ValidatorForCompetitorRegistrationDialog(stringMessages),
new CallbackForCompetitorRegistrationDialog());
}
public RegattaLogCompetitorRegistrationAndSelectionDialog(String boatClass, SailingServiceAsync sailingService, final UserService userService,
public RegattaLogCompetitorRegistrationAndSelectionDialog(String boatClass, SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
StringMessages stringMessages, ErrorReporter errorReporter, boolean editable, String leaderboardName,
boolean canBoatsOfCompetitorsChangePerRace, ValidatorForCompetitorRegistrationDialog validator,
CallbackForCompetitorRegistrationDialog callback) {
super(boatClass, sailingService, userService, stringMessages, errorReporter, editable, leaderboardName,
super(boatClass, sailingServiceWrite, userService, stringMessages, errorReporter, editable, leaderboardName,
canBoatsOfCompetitorsChangePerRace, validator, callback);
validator.setCompetitorRegistrationsPanel(competitorRegistrationsPanel);
callback.setCompetitorRegistrationsPanel(competitorRegistrationsPanel);
@@ -154,7 +154,7 @@ public class ExpeditionAllInOneAfterImportHandler {
if (competitors.isEmpty()) {
Notification.notify(stringMessages.importCanceledNoCompetitorAdded(), NotificationType.ERROR);
} else {
sailingService.setCompetitorRegistrationsInRegattaLog(leaderboard.getName(),
sailingServiceWrite.setCompetitorRegistrationsInRegattaLog(leaderboard.getName(),
competitors, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
@@ -176,7 +176,7 @@ public class ExpeditionAllInOneAfterImportHandler {
private void showCompetitorRegistration() {
new RegattaLogCompetitorRegistrationAndSelectionDialog(regatta.boatClass == null ? null : regatta.boatClass.getName(),
sailingService, userService, stringMessages, errorReporter, true, leaderboard.getName(),
sailingServiceWrite, userService, stringMessages, errorReporter, true, leaderboard.getName(),
leaderboard.canBoatsOfCompetitorsChangePerRace).show();
}
@@ -187,7 +187,7 @@ public class ExpeditionAllInOneAfterImportHandler {
final CompetitorDTO competitor = mappedCompetitors.iterator().next();
saveCompetitorGPSMapping(mappedCompetitors, Collections.singleton(new DeviceMappingDTO(deviceIdentifierDTO, deviceIdentifierDTO.from, deviceIdentifierDTO.to, competitor, null)));
} else {
new RegattaLogFixesAddMappingsDialog(sailingService, userService, errorReporter, stringMessages,
new RegattaLogFixesAddMappingsDialog(sailingServiceWrite, userService, errorReporter, stringMessages,
leaderboard.getName(), gpsFixesDeviceIDs,
new CancelImportDialogCallback<Collection<DeviceMappingDTO>>() {
@@ -212,7 +212,7 @@ public class ExpeditionAllInOneAfterImportHandler {
final CompetitorDTO competitor = mappedCompetitors.iterator().next();
saveCompetitorSensorFixMapping(Collections.singleton(new TypedDeviceMappingDTO(deviceIdentifierDTO, deviceIdentifierDTO.from, deviceIdentifierDTO.to, competitor, null, sensorImporterType)));
} else if (sensorFixesDeviceIDs.size() > 0) {
new RegattaLogSensorDataAddMappingsDialog(sailingService, userService, errorReporter, stringMessages, leaderboard.getName(),
new RegattaLogSensorDataAddMappingsDialog(sailingServiceWrite, userService, errorReporter, stringMessages, leaderboard.getName(),
sensorFixesDeviceIDs, sensorImporterType,
new CancelImportDialogCallback<Collection<TypedDeviceMappingDTO>>() {
@@ -246,7 +246,7 @@ public class ExpeditionAllInOneAfterImportHandler {
raceNames.add(new Pair<String, String>(raceName, raceColumnName));
}
sailingService.removeAndUntrackRaces(racesToStopAndStartTrackingFor, new AsyncCallback<Void>() {
sailingServiceWrite.removeAndUntrackRaces(racesToStopAndStartTrackingFor, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Failed to track race after import!");
@@ -254,7 +254,7 @@ public class ExpeditionAllInOneAfterImportHandler {
@Override
public void onSuccess(Void result) {
sailingService.startRaceLogTracking(leaderboardRaceColumnFleetNames, /* trackWind */ false,
sailingServiceWrite.startRaceLogTracking(leaderboardRaceColumnFleetNames, /* trackWind */ false,
/* correctWindByDeclination */ true, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
@@ -280,7 +280,7 @@ public class ExpeditionAllInOneAfterImportHandler {
this.callback = callback;
for (TypedDeviceMappingDTO mapping : mappings) {
callCount++;
sailingService.addTypedDeviceMappingToRegattaLog(leaderboardName, mapping, new AsyncCallback<Void>() {
sailingServiceWrite.addTypedDeviceMappingToRegattaLog(leaderboardName, mapping, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
callCount--;
@@ -308,7 +308,7 @@ public class ExpeditionAllInOneAfterImportHandler {
this.callback = callback;
for (DeviceMappingDTO mapping : mappings) {
callCount++;
sailingService.addDeviceMappingToRegattaLog(leaderboardName, mapping, new AsyncCallback<Void>() {
sailingServiceWrite.addDeviceMappingToRegattaLog(leaderboardName, mapping, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
callCount--;
@@ -31,7 +31,7 @@ import com.sap.sailing.gwt.ui.adminconsole.resulthandling.ExpeditionDataImportRe
import com.sap.sailing.gwt.ui.adminconsole.resulthandling.ExpeditionDataImportResultsDialog;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.RegattaDTO;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -49,7 +49,7 @@ public class ExpeditionAllInOneImportPanel extends Composite implements Regattas
private final RegattaSuggestOracle regattaOracle;
public ExpeditionAllInOneImportPanel(final StringMessages stringMessages, final SailingServiceAsync sailingService, final UserService userService,
public ExpeditionAllInOneImportPanel(final StringMessages stringMessages, final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final ErrorReporter errorReporter, final RegattaRefresher regattaRefresher) {
final FormPanel formPanel = new FormPanel();
final BusyIndicator busyIndicator = new SimpleBusyIndicator();
@@ -160,7 +160,7 @@ public class ExpeditionAllInOneImportPanel extends Composite implements Regattas
new ExpeditionAllInOneAfterImportHandler(response.getEventId(), response.getRegattaName(),
response.getLeaderboardName(), response.getLeaderboardGroupName(), response.getRaceEntries(),
response.getGpsDeviceIds(), response.getSensorDeviceIds(), response.getSensorFixImporterType(),
response.getStartTimes(), sailingService, userService,
response.getStartTimes(), sailingServiceWrite, userService,
errorReporter, stringMessages);
regattaRefresher.fillRegattas();
} else {
@@ -172,7 +172,7 @@ public class ExpeditionAllInOneImportPanel extends Composite implements Regattas
public void onSelection(SelectionEvent<Suggestion> event) {
final String selected = event.getSelectedItem().getReplacementString();
if (selected != null) {
sailingService.getRegattaByName(selected, new AsyncCallback<RegattaDTO>() {
sailingServiceWrite.getRegattaByName(selected, new AsyncCallback<RegattaDTO>() {
@Override
public void onSuccess(RegattaDTO result) {
validation.run();
@@ -32,6 +32,7 @@ import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;
import com.sap.sailing.expeditionconnector.ExpeditionDeviceConfiguration;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.util.NaturalComparator;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
@@ -47,7 +48,7 @@ import com.sap.sse.gwt.client.panels.LabeledAbstractFilterablePanel;
public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
private final StringMessages stringMessages;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final ErrorReporter errorReporter;
private final CellTable<ExpeditionDeviceConfiguration> allDeviceConfigurations;
private final LabeledAbstractFilterablePanel<ExpeditionDeviceConfiguration> filterDeviceConfigurationsPanel;
@@ -76,8 +77,8 @@ public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
}
}
public ExpeditionDeviceConfigurationsPanel(final SailingServiceAsync sailingService, final ErrorReporter errorReporter, final StringMessages stringMessages) {
this.sailingService = sailingService;
public ExpeditionDeviceConfigurationsPanel(final SailingServiceWriteAsync sailingServiceWrite, final ErrorReporter errorReporter, final StringMessages stringMessages) {
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
@@ -158,13 +159,13 @@ public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
removeDeviceConfiguration(deviceConfiguration, filterDeviceConfigurationsPanel);
}
} else if (DeviceConfigurationImagesBarCell.ACTION_EDIT.equals(value)) {
new EditDeviceConfigurationDialog(filterDeviceConfigurationsPanel, sailingService, stringMessages, errorReporter, deviceConfiguration).show();
new EditDeviceConfigurationDialog(filterDeviceConfigurationsPanel, sailingServiceWrite, stringMessages, errorReporter, deviceConfiguration).show();
}
}
});
allDeviceConfigurations.addColumn(deviceConfigurationActionColumn, stringMessages.actions());
allDeviceConfigurations.addColumnSortHandler(deviceConfigurationColumnListHandler);
updateAllAccounts(sailingService, filterDeviceConfigurationsPanel, stringMessages, errorReporter);
updateAllAccounts(sailingServiceWrite, filterDeviceConfigurationsPanel, stringMessages, errorReporter);
Button addAccountButton = new Button(stringMessages.add());
addAccountButton.ensureDebugId("addExpeditionDeviceConfiguration");
addAccountButton.addClickHandler(new ClickHandler() {
@@ -185,7 +186,7 @@ public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
}
public void refresh() {
updateAllAccounts(sailingService, filterDeviceConfigurationsPanel, stringMessages, errorReporter);
updateAllAccounts(sailingServiceWrite, filterDeviceConfigurationsPanel, stringMessages, errorReporter);
}
private abstract class AbstractDeviceConfigurationDialog extends DataEntryDialog<ExpeditionDeviceConfiguration> {
@@ -232,12 +233,12 @@ public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
private class AddDeviceConfigurationDialog extends AbstractDeviceConfigurationDialog {
public AddDeviceConfigurationDialog(final LabeledAbstractFilterablePanel<ExpeditionDeviceConfiguration> filterAccountsPanel,
final SailingServiceAsync sailingService, final StringMessages stringMessages, final ErrorReporter errorReporter) {
super(filterAccountsPanel, sailingService, stringMessages, errorReporter, stringMessages.addExpeditionDeviceConfiguration(),
final SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages, final ErrorReporter errorReporter) {
super(filterAccountsPanel, sailingServiceWrite, stringMessages, errorReporter, stringMessages.addExpeditionDeviceConfiguration(),
new DialogCallback<ExpeditionDeviceConfiguration>() {
@Override
public void ok(final ExpeditionDeviceConfiguration editedObject) {
sailingService.addOrReplaceExpeditionDeviceConfiguration(editedObject, new AsyncCallback<Void>() {
sailingServiceWrite.addOrReplaceExpeditionDeviceConfiguration(editedObject, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(stringMessages.errorUpdatingExpeditionDeviceConfiguration(editedObject.getName(),
@@ -268,13 +269,13 @@ public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
private final ExpeditionDeviceConfiguration valueToEdit;
public EditDeviceConfigurationDialog(final LabeledAbstractFilterablePanel<ExpeditionDeviceConfiguration> filterAccountsPanel,
final SailingServiceAsync sailingService, final StringMessages stringMessages, final ErrorReporter errorReporter,
final SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages, final ErrorReporter errorReporter,
final ExpeditionDeviceConfiguration valueToEdit) {
super(filterAccountsPanel, sailingService, stringMessages, errorReporter, stringMessages.editExpeditionDeviceConfiguration(),
super(filterAccountsPanel, sailingServiceWrite, stringMessages, errorReporter, stringMessages.editExpeditionDeviceConfiguration(),
new DialogCallback<ExpeditionDeviceConfiguration>() {
@Override
public void ok(final ExpeditionDeviceConfiguration editedObject) {
sailingService.addOrReplaceExpeditionDeviceConfiguration(editedObject, new AsyncCallback<Void>() {
sailingServiceWrite.addOrReplaceExpeditionDeviceConfiguration(editedObject, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(stringMessages.errorUpdatingExpeditionDeviceConfiguration(editedObject.getName(),
@@ -327,12 +328,12 @@ public class ExpeditionDeviceConfigurationsPanel extends FlowPanel {
}
private void addAccount() {
new AddDeviceConfigurationDialog(filterDeviceConfigurationsPanel, sailingService, stringMessages, errorReporter).show();
new AddDeviceConfigurationDialog(filterDeviceConfigurationsPanel, sailingServiceWrite, stringMessages, errorReporter).show();
}
private void removeDeviceConfiguration(final ExpeditionDeviceConfiguration expeditionDeviceConfiguration,
final LabeledAbstractFilterablePanel<ExpeditionDeviceConfiguration> filterDeviceConfigurationsPanel) {
sailingService.removeExpeditionDeviceConfiguration(expeditionDeviceConfiguration, new AsyncCallback<Void>() {
sailingServiceWrite.removeExpeditionDeviceConfiguration(expeditionDeviceConfiguration, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(stringMessages.errorTryingToRemoveExpeditionDeviceConfiguration(expeditionDeviceConfiguration.getName(), caught.getMessage()));
@@ -5,7 +5,7 @@ import java.util.List;
import com.google.gwt.i18n.client.LocaleInfo;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sse.gwt.client.filestorage.FileStorageManagementGwtServiceAsync;
import com.sap.sse.gwt.shared.filestorage.FileStorageServicePropertyErrorsDTO;
@@ -22,9 +22,9 @@ public class FileStorageServiceConnectionTestObservable {
private List<FileStorageServiceConnectionTestObserver> observer = new ArrayList<>();
private boolean value;
public FileStorageServiceConnectionTestObservable(SailingServiceAsync sailingService) {
public FileStorageServiceConnectionTestObservable(SailingServiceWriteAsync sailingServiceWrite) {
value = false;
sailingService.testFileStorageServiceProperties(null, LocaleInfo.getCurrentLocale().getLocaleName(),
sailingServiceWrite.testFileStorageServiceProperties(null, LocaleInfo.getCurrentLocale().getLocaleName(),
new AsyncCallback<FileStorageServicePropertyErrorsDTO>() {
@Override
public void onFailure(Throwable caught) {
@@ -12,7 +12,7 @@ import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SelectionChangeEvent.Handler;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.GateDTO;
import com.sap.sailing.gwt.ui.shared.MarkDTO;
@@ -27,7 +27,7 @@ public class GateCreationDialog extends DataEntryDialog<GateDTO> {
private final TextBox shortName;
private final StringMessages stringMessages;
public GateCreationDialog(SailingServiceAsync sailingService, ErrorReporter errorReporter,
public GateCreationDialog(SailingServiceWriteAsync sailingServiceWrite, ErrorReporter errorReporter,
final StringMessages stringMessages, AdminConsoleTableResources tableRes,
List<MarkDTO> marks, DialogCallback<GateDTO> callback) {
super(stringMessages.gate(), stringMessages.gate(),
@@ -46,7 +46,7 @@ public class GateCreationDialog extends DataEntryDialog<GateDTO> {
name = createTextBox("");
shortName = createTextBox("");
marksWrapper = new MarkTableWrapper<RefreshableMultiSelectionModel<MarkDTO>>(
/* multiSelection */ true, sailingService, stringMessages, errorReporter);
/* multiSelection */ true, sailingServiceWrite, stringMessages, errorReporter);
marksWrapper.getDataProvider().getList().addAll(marks);
marksWrapper.getSelectionModel().addSelectionChangeHandler(new Handler() {
@Override
@@ -36,7 +36,7 @@ import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;
import com.sap.sailing.domain.common.security.SecuredDomainType;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.AccountWithSecurityDTO;
import com.sap.sse.gwt.adminconsole.AdminConsoleTableResources;
@@ -67,7 +67,7 @@ import com.sap.sse.security.ui.client.component.editacl.EditACLDialog;
public class IgtimiAccountsPanel extends FlowPanel {
private final StringMessages stringMessages;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final ErrorReporter errorReporter;
private final LabeledAbstractFilterablePanel<AccountWithSecurityDTO> filterAccountsPanel;
@@ -92,9 +92,9 @@ public class IgtimiAccountsPanel extends FlowPanel {
}
}
public IgtimiAccountsPanel(final SailingServiceAsync sailingService, final ErrorReporter errorReporter,
public IgtimiAccountsPanel(final SailingServiceWriteAsync sailingServiceWrite, final ErrorReporter errorReporter,
final StringMessages stringMessages, final UserService userService) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
@@ -159,7 +159,7 @@ public class IgtimiAccountsPanel extends FlowPanel {
: Window.Location.getProtocol();
final String hostname = Window.Location.getHostName();
final String port = Window.Location.getPort();
this.sailingService.getIgtimiAuthorizationUrl(protocol, hostname, port, new AsyncCallback<String>() {
this.sailingServiceWrite.getIgtimiAuthorizationUrl(protocol, hostname, port, new AsyncCallback<String>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(
@@ -255,7 +255,7 @@ public class IgtimiAccountsPanel extends FlowPanel {
}
public void refresh() {
sailingService.getAllIgtimiAccountsWithSecurity(new AsyncCallback<Iterable<AccountWithSecurityDTO>>() {
sailingServiceWrite.getAllIgtimiAccountsWithSecurity(new AsyncCallback<Iterable<AccountWithSecurityDTO>>() {
@Override
public void onSuccess(Iterable<AccountWithSecurityDTO> result) {
filterAccountsPanel.updateAll(result);
@@ -291,7 +291,7 @@ public class IgtimiAccountsPanel extends FlowPanel {
private TextBox eMail;
private PasswordTextBox password;
public AddAccountDialog(final Runnable refresher, final SailingServiceAsync sailingService,
public AddAccountDialog(final Runnable refresher, final SailingServiceWriteAsync sailingServiceWrite,
final StringMessages stringMessages, final ErrorReporter errorReporter) {
super(stringMessages.addIgtimiUser(), stringMessages.addIgtimiUser(), stringMessages.ok(),
stringMessages.cancel(), new Validator<UserData>() {
@@ -308,7 +308,7 @@ public class IgtimiAccountsPanel extends FlowPanel {
}, /* animationEnabled */ true, new DialogCallback<UserData>() {
@Override
public void ok(final UserData editedObject) {
sailingService.authorizeAccessToIgtimiUser(editedObject.geteMail(),
sailingServiceWrite.authorizeAccessToIgtimiUser(editedObject.geteMail(),
editedObject.getPassword(), new AsyncCallback<Boolean>() {
@Override
public void onFailure(Throwable caught) {
@@ -365,12 +365,12 @@ public class IgtimiAccountsPanel extends FlowPanel {
}
private void addAccount() {
new AddAccountDialog(this::refresh, sailingService, stringMessages, errorReporter).show();
new AddAccountDialog(this::refresh, sailingServiceWrite, stringMessages, errorReporter).show();
}
private void removeAccount(final AccountWithSecurityDTO account,
final ListDataProvider<AccountWithSecurityDTO> removeFrom) {
sailingService.removeIgtimiAccount(account.getEmail(), new AsyncCallback<Void>() {
sailingServiceWrite.removeIgtimiAccount(account.getEmail(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(stringMessages.errorTryingToRemoveIgtimiAccount(account.getEmail()));
@@ -29,7 +29,7 @@ import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.common.client.DateAndTimeFormatterUtil;
import com.sap.sse.common.media.MediaTagConstants;
@@ -50,7 +50,7 @@ import com.sap.sse.gwt.client.media.ImageResizingTaskDTO;
*/
public class ImagesListComposite extends Composite {
private final StringMessages stringMessages;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private CellTable<ImageDTO> imageTable;
private SingleSelectionModel<ImageDTO> imageSelectionModel;
@@ -77,9 +77,9 @@ public class ImagesListComposite extends Composite {
private final AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
public ImagesListComposite(final SailingServiceAsync sailingService, final StringMessages stringMessages,
public ImagesListComposite(final SailingServiceWriteAsync sailingServiceWrite, final StringMessages stringMessages,
final FileStorageServiceConnectionTestObservable storageServiceAvailable) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.stringMessages = stringMessages;
this.storageServiceAvailable = storageServiceAvailable;
mainPanel = new SimplePanel();
@@ -274,7 +274,7 @@ public class ImagesListComposite extends Composite {
}
private void openCreateImageDialog(String initialTag) {
ImageCreateDialog dialog = new ImageCreateDialog(initialTag, sailingService, stringMessages,
ImageCreateDialog dialog = new ImageCreateDialog(initialTag, sailingServiceWrite, stringMessages,
storageServiceAvailable, new DialogCallback<ImageResizingTaskDTO>() {
@Override
public void cancel() {
@@ -294,7 +294,7 @@ public class ImagesListComposite extends Composite {
}
private void openEditImageDialog(final ImageDTO selectedImage) {
ImageEditDialog dialog = new ImageEditDialog(selectedImage, sailingService, stringMessages,
ImageEditDialog dialog = new ImageEditDialog(selectedImage, sailingServiceWrite, stringMessages,
storageServiceAvailable, new DialogCallback<ImageResizingTaskDTO>() {
@Override
public void cancel() {
@@ -327,7 +327,7 @@ public class ImagesListComposite extends Composite {
* returned ImageDTOs
*/
protected void callResizingServiceAndUpdateTable(ImageResizingTaskDTO resizingTask, ImageDTO originalImage) {
sailingService.resizeImage(resizingTask, new AsyncCallback<Set<ImageDTO>>() {
sailingServiceWrite.resizeImage(resizingTask, new AsyncCallback<Set<ImageDTO>>() {
@Override
public void onFailure(Throwable caught) {
Notification.notify(stringMessages.resizeUnsuccessful(caught.getMessage()), NotificationType.ERROR);
@@ -20,7 +20,7 @@ import com.sap.sailing.domain.common.orc.impl.FixedSpeedImpliedWindSourceImpl;
import com.sap.sailing.domain.common.orc.impl.OtherRaceAsImpliedWindSourceImpl;
import com.sap.sailing.domain.common.orc.impl.OwnMaxImpliedWindImpl;
import com.sap.sailing.gwt.ui.adminconsole.AbstractLeaderboardConfigPanel.RaceColumnDTOAndFleetDTOWithNameBasedEquality;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTOWithSecurity;
import com.sap.sse.common.Util.Triple;
@@ -44,7 +44,7 @@ public class ImpliedWindSourceEditDialog extends DataEntryDialog<ImpliedWindSour
public ImpliedWindSourceEditDialog(RaceColumnDTOAndFleetDTOWithNameBasedEquality raceSlot,
final ImpliedWindSource previousImpliedWindSource,
Iterable<StrippedLeaderboardDTOWithSecurity> availableLeaderboards, final StringMessages stringMessages,
ErrorReporter errorReporter, SailingServiceAsync sailingService, UserService userService,
ErrorReporter errorReporter, SailingServiceWriteAsync sailingServiceWrite, UserService userService,
DialogCallback<ImpliedWindSource> callback) {
super(stringMessages.impliedWindSource(),
stringMessages.provideImpliedWindSourceForRace(
@@ -87,7 +87,7 @@ public class ImpliedWindSourceEditDialog extends DataEntryDialog<ImpliedWindSour
this.fixedImpliedWindSpeedBox = createDoubleBox(previousImpliedWindSource instanceof FixedSpeedImpliedWind &&
((FixedSpeedImpliedWind) previousImpliedWindSource).getFixedImpliedWindSpeed() != null ?
((FixedSpeedImpliedWind) previousImpliedWindSource).getFixedImpliedWindSpeed().getKnots() : null, /* visible length */ 5);
this.raceSlotSelectionPanel = new RaceSlotSelectionPanel(sailingService, userService, stringMessages,
this.raceSlotSelectionPanel = new RaceSlotSelectionPanel(sailingServiceWrite, userService, stringMessages,
errorReporter, /* multiSelection */ false, availableLeaderboards, previousImpliedWindSource instanceof OtherRaceAsImpliedWindSource ?
getLeaderboardNameAndRaceColumnNameAndFleetName((OtherRaceAsImpliedWindSource) previousImpliedWindSource, availableLeaderboards) : null);
this.raceSlotSelectionPanel.getSelectionModel().addSelectionChangeHandler(e->validateAndUpdate());
@@ -12,6 +12,7 @@ import com.sap.sailing.domain.common.CompetitorDescriptor;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
@@ -32,13 +33,13 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback;
*
*/
public class ImportCompetitorCallback implements DialogCallback<Pair<Map<CompetitorDescriptor, CompetitorDTO>, String>> {
protected final SailingServiceAsync sailingService;
protected final SailingServiceWriteAsync sailingServiceWrite;
protected final ErrorReporter errorReporter;
protected final StringMessages stringMessages;
public ImportCompetitorCallback(SailingServiceAsync sailingService, ErrorReporter errorReporter,
public ImportCompetitorCallback(SailingServiceWriteAsync sailingServiceWrite, ErrorReporter errorReporter,
StringMessages stringMessages) {
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
}
@@ -56,7 +57,7 @@ public class ImportCompetitorCallback implements DialogCallback<Pair<Map<Competi
existingCompetitorsSelected.add(existingCompetitor);
}
}
sailingService.addOrUpdateCompetitors(new ArrayList<>(existingCompetitorsSelected), new MarkedAsyncCallback<>(
sailingServiceWrite.addOrUpdateCompetitors(new ArrayList<>(existingCompetitorsSelected), new MarkedAsyncCallback<>(
new AsyncCallback<List<CompetitorDTO>>() {
@Override
public void onFailure(Throwable caught) {
@@ -83,7 +84,7 @@ public class ImportCompetitorCallback implements DialogCallback<Pair<Map<Competi
*/
private void registerCompetitorsAfterSaving(final List<CompetitorDescriptor> competitorsForSaving,
final Iterable<CompetitorDTO> competitorsForRegistration, String searchTag) {
sailingService.addCompetitors(competitorsForSaving, searchTag, new AsyncCallback<List<CompetitorWithBoatDTO>>() {
sailingServiceWrite.addCompetitors(competitorsForSaving, searchTag, new AsyncCallback<List<CompetitorWithBoatDTO>>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage());
@@ -13,7 +13,7 @@ import com.google.gwt.view.client.SingleSelectionModel;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.racelog.tracking.MappableToDevice;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -34,14 +34,14 @@ public class ItemToMapToDeviceSelectionPanel implements IsWidget {
void onSelectionChange(MarkDTO mark);
}
public ItemToMapToDeviceSelectionPanel(SailingServiceAsync sailingService, final UserService userService, StringMessages stringMessages,
public ItemToMapToDeviceSelectionPanel(SailingServiceWriteAsync sailingServiceWrite, final UserService userService, StringMessages stringMessages,
ErrorReporter errorReporter, final SelectionChangedHandler handler, MappableToDevice selected) {
this.selected = selected;
this.errorReporter = errorReporter;
competitorTable = new CompetitorTableWrapper<>(sailingService, userService, stringMessages, errorReporter, /* multiSelection */ false,
competitorTable = new CompetitorTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter, /* multiSelection */ false,
/* enablePager */ true, /* filterCompetitorWithBoat */ false, /* filterCompetitorsWithoutBoat */ false);
boatTable = new BoatTableWrapper<>(sailingService, userService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true, /* allowActions */ false);
markTable = new MarkTableWrapper<RefreshableSingleSelectionModel<MarkDTO>>(/* multiSelection */ false, sailingService,
boatTable = new BoatTableWrapper<>(sailingServiceWrite, userService, stringMessages, errorReporter, /* multiSelection */ false, /* enablePager */ true, /* allowActions */ false);
markTable = new MarkTableWrapper<RefreshableSingleSelectionModel<MarkDTO>>(/* multiSelection */ false, sailingServiceWrite,
stringMessages, errorReporter);
competitorTable.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
@@ -77,7 +77,7 @@ import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.leaderboard.LeaderboardEntryPoint;
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
@@ -136,7 +136,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
SafeHtml cell(SafeUri url, String displayName);
}
public LeaderboardConfigPanel(final SailingServiceAsync sailingService, final UserService userService,
public LeaderboardConfigPanel(final SailingServiceWriteAsync sailingService, final UserService userService,
RegattaRefresher regattaRefresher, final ErrorReporter errorReporter, StringMessages theStringConstants,
final boolean showRaceDetails,
LeaderboardsRefresher<StrippedLeaderboardDTOWithSecurity> leaderboardsRefresher) {
@@ -312,9 +312,10 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
});
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_EDIT_COMPETITORS, UPDATE,
leaderboardDTO -> {
EditCompetitorsDialog editCompetitorsDialog = new EditCompetitorsDialog(sailingService, userService,
leaderboardDTO.getName(), stringMessages, errorReporter,
new DialogCallback<List<CompetitorWithBoatDTO>>() {
EditCompetitorsDialog editCompetitorsDialog = new EditCompetitorsDialog(sailingServiceWrite, userService,
leaderboardDTO.getName(), leaderboardDTO.boatClassName,
/* createWithBoatByDefault */ !leaderboardDTO.canBoatsOfCompetitorsChangePerRace,
stringMessages, errorReporter, new DialogCallback<List<CompetitorWithBoatDTO>>() {
@Override
public void cancel() {
}
@@ -327,7 +328,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
});
leaderboardActionColumn.addAction(LeaderboardConfigImagesBarCell.ACTION_CONFIGURE_URL, READ,
leaderboardDTO -> {
sailingService.getAvailableDetailTypesForLeaderboard(leaderboardDTO.getName(), null,
sailingServiceWrite.getAvailableDetailTypesForLeaderboard(leaderboardDTO.getName(), null,
new AsyncCallback<Iterable<DetailType>>() {
@Override
public void onFailure(Throwable caught) {
@@ -420,7 +421,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
dialog.show();
break;
case RegattaLeaderboardWithEliminations:
dialog = new RegattaLeaderboardWithEliminationsEditDialog(sailingService, userService,
dialog = new RegattaLeaderboardWithEliminationsEditDialog(sailingServiceWrite, userService,
Collections.unmodifiableCollection(otherExistingLeaderboard),
Collections.unmodifiableCollection(allRegattas),
new LeaderboardDescriptorWithEliminations(
@@ -435,7 +436,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
@Override
public void ok(LeaderboardDescriptorWithEliminations result) {
updateLeaderboard(oldLeaderboardName, result);
sailingService.setEliminatedCompetitors(oldLeaderboardName,
sailingServiceWrite.setEliminatedCompetitors(oldLeaderboardName,
result.getEliminatedCompetitors(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -563,7 +564,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
protected void openUpdateFlexibleLeaderboardDialog(final StrippedLeaderboardDTO leaderboardDTO,
final List<StrippedLeaderboardDTO> otherExistingLeaderboard, final String oldLeaderboardName,
final LeaderboardDescriptor descriptor) {
sailingService.getEvents(new MarkedAsyncCallback<List<EventDTO>>(new AsyncCallback<List<EventDTO>>() {
sailingServiceWrite.getEvents(new MarkedAsyncCallback<List<EventDTO>>(new AsyncCallback<List<EventDTO>>() {
@Override
public void onSuccess(List<EventDTO> result) {
openUpdateFlexibleLeaderboardDialog(leaderboardDTO, otherExistingLeaderboard, oldLeaderboardName,
@@ -635,18 +636,18 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
final String fleetName = fleetDTO.getName();
final String raceName = LeaderboardNameConstants.DEFAULT_FLEET_NAME.equals(fleetName) ? raceColumnName
: raceColumnName + ", " + fleetName;
ShowCompetitorToBoatMappingsDialog dialog = new ShowCompetitorToBoatMappingsDialog(sailingService,
ShowCompetitorToBoatMappingsDialog dialog = new ShowCompetitorToBoatMappingsDialog(sailingServiceWrite,
stringMessages, errorReporter, selectedLeaderboardName, raceColumnName, fleetName, raceName,
userService);
dialog.center();
}
private void setStartTime(RaceColumnDTO raceColumnDTO, FleetDTO fleetDTO) {
new SetStartTimeDialog(sailingService, errorReporter, getSelectedLeaderboardName(), raceColumnDTO.getName(),
new SetStartTimeDialog(sailingServiceWrite, errorReporter, getSelectedLeaderboardName(), raceColumnDTO.getName(),
fleetDTO.getName(), stringMessages, new DialogCallback<RaceLogSetStartTimeAndProcedureDTO>() {
@Override
public void ok(RaceLogSetStartTimeAndProcedureDTO editedObject) {
sailingService.setStartTimeAndProcedure(editedObject, new AsyncCallback<Boolean>() {
sailingServiceWrite.setStartTimeAndProcedure(editedObject, new AsyncCallback<Boolean>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(caught.getMessage());
@@ -670,12 +671,12 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
}
private void setEndTime(RaceColumnDTO raceColumnDTO, FleetDTO fleetDTO) {
new SetFinishingAndFinishedTimeDialog(sailingService, errorReporter, getSelectedLeaderboardName(),
new SetFinishingAndFinishedTimeDialog(sailingServiceWrite, errorReporter, getSelectedLeaderboardName(),
raceColumnDTO.getName(), fleetDTO.getName(), stringMessages,
new DialogCallback<RaceLogSetFinishingAndFinishTimeDTO>() {
@Override
public void ok(RaceLogSetFinishingAndFinishTimeDTO editedObject) {
sailingService.setFinishingAndEndTime(editedObject,
sailingServiceWrite.setFinishingAndEndTime(editedObject,
new AsyncCallback<Pair<Boolean, Boolean>>() {
@Override
public void onFailure(Throwable caught) {
@@ -701,7 +702,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
private void removeRaceColumn(final RaceColumnDTO raceColumnDTO) {
final String selectedLeaderboardName = getSelectedLeaderboardName();
final String raceColumnString = raceColumnDTO.getRaceColumnName();
sailingService.removeLeaderboardColumn(getSelectedLeaderboardName(), raceColumnString,
sailingServiceWrite.removeLeaderboardColumn(getSelectedLeaderboardName(), raceColumnString,
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable t) {
@@ -723,7 +724,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
private void moveSelectedRaceColumnDown() {
final String selectedLeaderboardName = getSelectedLeaderboardName();
final String selectedRaceColumnName = getSelectedRaceColumnWithFleet().getA().getRaceColumnName();
sailingService.moveLeaderboardColumnDown(getSelectedLeaderboardName(), selectedRaceColumnName,
sailingServiceWrite.moveLeaderboardColumnDown(getSelectedLeaderboardName(), selectedRaceColumnName,
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -746,7 +747,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
private void moveSelectedRaceColumnUp() {
final String selectedLeaderboardName = getSelectedLeaderboardName();
final String selectedRaceColumnName = getSelectedRaceColumnWithFleet().getA().getRaceColumnName();
sailingService.moveLeaderboardColumnUp(getSelectedLeaderboardName(), selectedRaceColumnName,
sailingServiceWrite.moveLeaderboardColumnUp(getSelectedLeaderboardName(), selectedRaceColumnName,
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -778,7 +779,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
private void setIsMedalRace(String leaderboardName, final RaceColumnDTO raceInLeaderboard,
final boolean isMedalRace) {
sailingService.updateIsMedalRace(leaderboardName, raceInLeaderboard.getRaceColumnName(), isMedalRace,
sailingServiceWrite.updateIsMedalRace(leaderboardName, raceInLeaderboard.getRaceColumnName(), isMedalRace,
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -824,7 +825,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
}
}
sailingService.addColumnsToLeaderboard(leaderboardName, raceColumnsToAdd,
sailingServiceWrite.addColumnsToLeaderboard(leaderboardName, raceColumnsToAdd,
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -880,7 +881,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
}
private void createFlexibleLeaderboard() {
sailingService.getEvents(new MarkedAsyncCallback<List<EventDTO>>(new AsyncCallback<List<EventDTO>>() {
sailingServiceWrite.getEvents(new MarkedAsyncCallback<List<EventDTO>>(new AsyncCallback<List<EventDTO>>() {
@Override
public void onSuccess(List<EventDTO> result) {
createFlexibleLeaderboard(result);
@@ -904,7 +905,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
@Override
public void ok(final LeaderboardDescriptor newLeaderboard) {
sailingService.createFlexibleLeaderboard(newLeaderboard.getName(),
sailingServiceWrite.createFlexibleLeaderboard(newLeaderboard.getName(),
newLeaderboard.getDisplayName(), newLeaderboard.getDiscardThresholds(),
newLeaderboard.getScoringScheme(), newLeaderboard.getCourseAreaIds(),
new MarkedAsyncCallback<StrippedLeaderboardDTOWithSecurity>(
@@ -939,7 +940,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
@Override
public void ok(final LeaderboardDescriptor newLeaderboard) {
RegattaName regattaIdentifier = new RegattaName(newLeaderboard.getRegattaName());
sailingService.createRegattaLeaderboard(regattaIdentifier, newLeaderboard.getDisplayName(),
sailingServiceWrite.createRegattaLeaderboard(regattaIdentifier, newLeaderboard.getDisplayName(),
newLeaderboard.getDiscardThresholds(),
new AsyncCallback<StrippedLeaderboardDTOWithSecurity>() {
@Override
@@ -961,7 +962,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
private void createRegattaLeaderboardWithEliminations() {
RegattaLeaderboardWithEliminationsCreateDialog dialog = new RegattaLeaderboardWithEliminationsCreateDialog(
sailingService, userService, Collections.unmodifiableCollection(availableLeaderboardList),
sailingServiceWrite, userService, Collections.unmodifiableCollection(availableLeaderboardList),
Collections.unmodifiableCollection(allRegattas), stringMessages, errorReporter,
new DialogCallback<LeaderboardDescriptorWithEliminations>() {
@Override
@@ -970,7 +971,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
@Override
public void ok(final LeaderboardDescriptorWithEliminations newLeaderboard) {
sailingService.createRegattaLeaderboardWithEliminations(newLeaderboard.getName(),
sailingServiceWrite.createRegattaLeaderboardWithEliminations(newLeaderboard.getName(),
newLeaderboard.getDisplayName(), newLeaderboard.getRegattaName(),
new AsyncCallback<StrippedLeaderboardDTOWithSecurity>() {
@Override
@@ -982,7 +983,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
@Override
public void onSuccess(StrippedLeaderboardDTOWithSecurity result) {
addLeaderboard(result);
sailingService.setEliminatedCompetitors(newLeaderboard.getName(),
sailingServiceWrite.setEliminatedCompetitors(newLeaderboard.getName(),
newLeaderboard.getEliminatedCompetitors(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -1014,7 +1015,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
}
private void updateLeaderboard(final String oldLeaderboardName, final LeaderboardDescriptor leaderboardToUpdate) {
sailingService.updateLeaderboard(oldLeaderboardName, leaderboardToUpdate.getName(),
sailingServiceWrite.updateLeaderboard(oldLeaderboardName, leaderboardToUpdate.getName(),
leaderboardToUpdate.getDisplayName(), leaderboardToUpdate.getDiscardThresholds(),
leaderboardToUpdate.getCourseAreaIds(), new AsyncCallback<StrippedLeaderboardDTOWithSecurity>() {
@Override
@@ -1031,7 +1032,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
}
private void reloadLeaderboardForTable(final String leaderboardName) {
sailingService.getLeaderboardWithSecurity(leaderboardName,
sailingServiceWrite.getLeaderboardWithSecurity(leaderboardName,
new AsyncCallback<StrippedLeaderboardDTOWithSecurity>() {
@Override
public void onSuccess(StrippedLeaderboardDTOWithSecurity result) {
@@ -1066,7 +1067,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
for (StrippedLeaderboardDTO leaderboard : leaderboards) {
leaderboardNames.add(leaderboard.getName());
}
sailingService.removeLeaderboards(leaderboardNames, new AsyncCallback<Void>() {
sailingServiceWrite.removeLeaderboards(leaderboardNames, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError("Error trying to remove the leaderboards:" + caught.getMessage());
@@ -1085,7 +1086,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
}
private void removeLeaderboard(final StrippedLeaderboardDTOWithSecurity leaderBoard) {
sailingService.removeLeaderboard(leaderBoard.getName(),
sailingServiceWrite.removeLeaderboard(leaderBoard.getName(),
new MarkedAsyncCallback<Void>(new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -1116,7 +1117,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
public void ok(PairingListTemplateDTO editedObject) {
BusyDialog busyDialog = new BusyDialog();
busyDialog.show();
sailingService.calculatePairingListTemplate(editedObject.getFlightCount(),
sailingServiceWrite.calculatePairingListTemplate(editedObject.getFlightCount(),
editedObject.getGroupCount(), editedObject.getCompetitorCount(),
editedObject.getFlightMultiplier(), editedObject.getBoatChangeFactor(),
new AsyncCallback<PairingListTemplateDTO>() {
@@ -1146,7 +1147,7 @@ public class LeaderboardConfigPanel extends AbstractLeaderboardConfigPanel
private void openPairingListCreationDialog(StrippedLeaderboardDTOWithSecurity leaderboardDTO,
PairingListTemplateDTO template) {
PairingListCreationDialog dialog = new PairingListCreationDialog(leaderboardDTO, stringMessages, template,
sailingService, errorReporter);
sailingServiceWrite, errorReporter);
dialog.show();
}
@@ -90,7 +90,7 @@ public class LeaderboardDescriptor {
this.displayName = displayName;
}
public Iterable<UUID> getCourseAreaIds() {
public List<UUID> getCourseAreaIds() {
return courseAreaIds;
}
@@ -56,7 +56,7 @@ import com.sap.sailing.gwt.ui.client.LeaderboardGroupsRefresher;
import com.sap.sailing.gwt.ui.client.LeaderboardsDisplayer;
import com.sap.sailing.gwt.ui.client.LeaderboardsRefresher;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.leaderboard.ScoringSchemeTypeFormatter;
import com.sap.sailing.gwt.ui.shared.LeaderboardGroupDTO;
@@ -142,11 +142,11 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
private final Set<Widget> permissionRestrictedComponent = new HashSet<>();
private final Label idLabel = new Label();
public LeaderboardGroupConfigPanel(SailingServiceAsync sailingService, UserService userService,
public LeaderboardGroupConfigPanel(SailingServiceWriteAsync sailingServiceWrite, UserService userService,
RegattaRefresher regattaRefresher, LeaderboardGroupsRefresher leaderboardGroupsRefresher,
LeaderboardsRefresher<StrippedLeaderboardDTOWithSecurity> leaderboardsRefresher, ErrorReporter errorReporter,
StringMessages stringMessages) {
super(sailingService, regattaRefresher, errorReporter, stringMessages);
super(sailingServiceWrite, regattaRefresher, errorReporter, stringMessages);
this.userService = userService;
AdminConsoleTableResources tableRes = GWT.create(AdminConsoleTableResources.class);
@@ -619,7 +619,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
final MigrateGroupOwnershipDialog.DialogConfig<LeaderboardGroupDTO> migrateDialogConfig = MigrateGroupOwnershipDialog
.create(userService.getUserManagementService(), (lg, dto) -> {
sailingService.updateGroupOwnerForLeaderboardGroupHierarchy(lg.getId(), dto,
sailingServiceWrite.updateGroupOwnerForLeaderboardGroupHierarchy(lg.getId(), dto,
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
@@ -733,7 +733,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
*/
private void refreshLeaderboardsList() {
if (isSingleGroupSelected && getSelectedGroup() != null) {
sailingService.getLeaderboardsWithSecurity(new MarkedAsyncCallback<List<StrippedLeaderboardDTOWithSecurity>>(
sailingServiceWrite.getLeaderboardsWithSecurity(new MarkedAsyncCallback<List<StrippedLeaderboardDTOWithSecurity>>(
new AsyncCallback<List<StrippedLeaderboardDTOWithSecurity>>() {
@Override
public void onFailure(Throwable t) {
@@ -764,7 +764,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
}
private void createNewGroup(final LeaderboardGroupDescriptor newGroup) {
sailingService.createLeaderboardGroup(newGroup.getName(), newGroup.getDescription(),
sailingServiceWrite.createLeaderboardGroup(newGroup.getName(), newGroup.getDescription(),
newGroup.getDisplayName(), newGroup.isDisplayLeaderboardsInReverseOrder(),
newGroup.getOverallLeaderboardDiscardThresholds(), newGroup.getOverallLeaderboardScoringSchemeType(), new MarkedAsyncCallback<LeaderboardGroupDTO>(
new AsyncCallback<LeaderboardGroupDTO>() {
@@ -789,7 +789,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
for (StrippedLeaderboardDTO leaderboardDTO : groupToUpdate.leaderboards) {
leaderboardNames.add(leaderboardDTO.getName());
}
sailingService.updateLeaderboardGroup(oldGroupId, oldGroupName, updateDescriptor.getName(), updateDescriptor.getDescription(),
sailingServiceWrite.updateLeaderboardGroup(oldGroupId, oldGroupName, updateDescriptor.getName(), updateDescriptor.getDescription(),
updateDescriptor.getDisplayName(),
leaderboardNames, updateDescriptor.getOverallLeaderboardDiscardThresholds(),
updateDescriptor.getOverallLeaderboardScoringSchemeType(), new MarkedAsyncCallback<Void>(
@@ -841,7 +841,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
for (StrippedLeaderboardDTO leaderboardDTO : group.leaderboards) {
leaderboardNames.add(leaderboardDTO.getName());
}
sailingService.updateLeaderboardGroup(group.getId(), group.getName(), group.getName(), group.description,
sailingServiceWrite.updateLeaderboardGroup(group.getId(), group.getName(), group.getName(), group.description,
group.getDisplayName(),
leaderboardNames, group.getOverallLeaderboardDiscardThresholds(),
group.getOverallLeaderboardScoringSchemeType(), new MarkedAsyncCallback<Void>(
@@ -863,7 +863,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
for (LeaderboardGroupDTO group : groups) {
groupNames.add(group.getName());
}
sailingService.removeLeaderboardGroups(groupNames, new MarkedAsyncCallback<Void>(
sailingServiceWrite.removeLeaderboardGroups(groupNames, new MarkedAsyncCallback<Void>(
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable t) {
@@ -884,7 +884,7 @@ public class LeaderboardGroupConfigPanel extends AbstractRegattaPanel
private void removeLeaderboardGroup(final LeaderboardGroupDTO group) {
Set<String> groups = new HashSet<String>();
groups.add(group.getName());
sailingService.removeLeaderboardGroups(groups, new MarkedAsyncCallback<Void>(
sailingServiceWrite.removeLeaderboardGroups(groups, new MarkedAsyncCallback<Void>(
new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable t) {
@@ -7,7 +7,7 @@ import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextColumn;
import com.sap.sailing.gwt.ui.adminconsole.ColorColumn.ColorRetriever;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.MarkDTO;
import com.sap.sse.common.Color;
@@ -16,9 +16,9 @@ import com.sap.sse.gwt.client.celltable.EntityIdentityComparator;
import com.sap.sse.gwt.client.celltable.RefreshableSelectionModel;
public class MarkTableWrapper<S extends RefreshableSelectionModel<MarkDTO>> extends TableWrapper<MarkDTO, S> {
public MarkTableWrapper(boolean multiSelection, SailingServiceAsync sailingService, StringMessages stringMessages,
public MarkTableWrapper(boolean multiSelection, SailingServiceWriteAsync sailingServiceWrite, StringMessages stringMessages,
ErrorReporter errorReporter) {
super(sailingService, stringMessages, errorReporter, multiSelection, true,
super(sailingServiceWrite, stringMessages, errorReporter, multiSelection, true,
new EntityIdentityComparator<MarkDTO>() {
@Override
public boolean representSameEntity(MarkDTO dto1, MarkDTO dto2) {
@@ -19,6 +19,7 @@ import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithBoatDTO;
import com.sap.sailing.gwt.ui.adminconsole.CompetitorDescriptorTableWrapper.CompetitorsToImportToExistingLinking;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.common.Util;
import com.sap.sse.common.Util.Pair;
@@ -63,7 +64,7 @@ public class MatchImportedCompetitorsDialog extends DataEntryDialog<Pair<Map<Com
private TextBox searchTagField;
private final StringMessages stringMessages;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final UserService userService;
private final ErrorReporter errorReporter;
@@ -74,12 +75,12 @@ public class MatchImportedCompetitorsDialog extends DataEntryDialog<Pair<Map<Com
public MatchImportedCompetitorsDialog(final Iterable<CompetitorDescriptor> CompetitorDescriptors,
final Iterable<CompetitorDTO> existingCompetitor, StringMessages stringMessages,
SailingServiceAsync sailingService, final UserService userService, ErrorReporter errorReporter,
SailingServiceWriteAsync sailingServiceWrite, final UserService userService, ErrorReporter errorReporter,
DialogCallback<Pair<Map<CompetitorDescriptor, CompetitorDTO>, String>> callback) {
super(stringMessages.importCompetitors(), stringMessages.chooseWhichCompetitorsShouldBeImported(),
stringMessages.ok(), stringMessages.cancel(), /* validator */ null, callback);
this.stringMessages = stringMessages;
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.userService = userService;
this.errorReporter = errorReporter;
this.CompetitorDescriptors = CompetitorDescriptors;
@@ -93,7 +94,7 @@ public class MatchImportedCompetitorsDialog extends DataEntryDialog<Pair<Map<Com
@Override
protected Widget getAdditionalWidget() {
existingCompetitorsTable = new CompetitorTableWrapper<>(sailingService, userService, stringMessages,
existingCompetitorsTable = new CompetitorTableWrapper<>(sailingServiceWrite, userService, stringMessages,
errorReporter, /* multiSelection */
false, /* enablePager */true, /* filterCompetitorWithBoat */ false, /* filterCompetitorsWithoutBoat */ false);
final CompetitorsToImportToExistingLinking linker = new CompetitorsToImportToExistingLinking() {
@@ -111,7 +112,7 @@ public class MatchImportedCompetitorsDialog extends DataEntryDialog<Pair<Map<Com
return existingCompetitorsByImported.get(competitor);
}
};
importedCompetitorsTable = new CompetitorDescriptorTableWrapper<>(competitorImportMatcher, sailingService,
importedCompetitorsTable = new CompetitorDescriptorTableWrapper<>(competitorImportMatcher, sailingServiceWrite,
stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */false, /* unlinkCallback */ linker);
importedCompetitorsTable.refreshCompetitorDescriptorList(CompetitorDescriptors);
final RefreshableMultiSelectionModel<CompetitorDescriptor> importedCompetitorSelectionModel = importedCompetitorsTable.getSelectionModel();
@@ -54,7 +54,7 @@ import com.sap.sailing.gwt.ui.client.MediaServiceAsync;
import com.sap.sailing.gwt.ui.client.MediaTracksRefresher;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.RegattasDisplayer;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.client.media.NewMediaWithRaceSelectionDialog;
import com.sap.sailing.gwt.ui.client.media.TimeFormatUtil;
@@ -94,7 +94,7 @@ import com.sap.sse.security.ui.client.component.editacl.EditACLDialog;
public class MediaPanel extends FlowPanel implements MediaTracksRefresher {
private static AdminConsoleTableResources tableResources = GWT.create(AdminConsoleTableResources.class);
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final LabeledAbstractFilterablePanel<MediaTrackWithSecurityDTO> filterableMediaTracks;
private List<MediaTrackWithSecurityDTO> allMediaTracks;
private final RegattaRefresher regattaRefresher;
@@ -109,17 +109,17 @@ public class MediaPanel extends FlowPanel implements MediaTracksRefresher {
private RefreshableMultiSelectionModel<MediaTrackWithSecurityDTO> refreshableSelectionModel;
private final FileStorageServiceConnectionTestObservable storageServiceAvailable;
public MediaPanel(Set<RegattasDisplayer> regattasDisplayers, SailingServiceAsync sailingService,
public MediaPanel(Set<RegattasDisplayer> regattasDisplayers, SailingServiceWriteAsync sailingServiceWrite,
RegattaRefresher regattaRefresher, MediaServiceAsync mediaService, ErrorReporter errorReporter,
StringMessages stringMessages, final UserService userService) {
this.regattasDisplayers = regattasDisplayers;
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.userService = userService;
this.regattaRefresher = regattaRefresher;
this.mediaService = mediaService;
this.stringMessages = stringMessages;
this.errorReporter = errorReporter;
this.storageServiceAvailable = new FileStorageServiceConnectionTestObservable(sailingService);
this.storageServiceAvailable = new FileStorageServiceConnectionTestObservable(sailingServiceWrite);
AccessControlledButtonPanel buttonAndFilterPanel = new AccessControlledButtonPanel(userService,
SecuredDomainType.MEDIA_TRACK);
add(buttonAndFilterPanel);
@@ -140,7 +140,7 @@ public class MediaPanel extends FlowPanel implements MediaTracksRefresher {
buttonAndFilterPanel.addCreateAction(stringMessages.multiVideoLinking(), new Command() {
@Override
public void execute() {
new MultiVideoDialog(sailingService, mediaService, stringMessages, errorReporter, new Runnable() {
new MultiVideoDialog(sailingServiceWrite, mediaService, stringMessages, errorReporter, new Runnable() {
@Override
public void run() {
@@ -608,7 +608,7 @@ public class MediaPanel extends FlowPanel implements MediaTracksRefresher {
private void addUrlMediaTrack() {
NewMediaWithRaceSelectionDialog dialog = new NewMediaWithRaceSelectionDialog(mediaService,
getDefaultStartTime(), stringMessages, sailingService, userService, errorReporter, regattaRefresher,
getDefaultStartTime(), stringMessages, sailingServiceWrite, userService, errorReporter, regattaRefresher,
regattasDisplayers, storageServiceAvailable, new DialogCallback<MediaTrack>() {
@Override
@@ -649,7 +649,7 @@ public class MediaPanel extends FlowPanel implements MediaTracksRefresher {
}
private Date getLatestDate() {
sailingService.getRegattas(new MarkedAsyncCallback<List<RegattaDTO>>(new AsyncCallback<List<RegattaDTO>>() {
sailingServiceWrite.getRegattas(new MarkedAsyncCallback<List<RegattaDTO>>(new AsyncCallback<List<RegattaDTO>>() {
@Override
public void onSuccess(List<RegattaDTO> result) {
latestDate = getDateFromLatestRegatta(result);
@@ -701,7 +701,7 @@ public class MediaPanel extends FlowPanel implements MediaTracksRefresher {
public void openAssignedRacesDialog(final Context context, final Element parent,
final ValueUpdater<String> valueUpdater) {
final MediaTrackWithSecurityDTO mediaTrack = (MediaTrackWithSecurityDTO) context.getKey();
final AssignRacesToMediaDialog dialog = new AssignRacesToMediaDialog(sailingService, userService, mediaTrack,
final AssignRacesToMediaDialog dialog = new AssignRacesToMediaDialog(sailingServiceWrite, userService, mediaTrack,
errorReporter,
regattaRefresher, stringMessages, null, new DialogCallback<Set<RegattaAndRaceIdentifier>>() {
@@ -1,6 +1,6 @@
package com.sap.sailing.gwt.ui.adminconsole;
import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -23,7 +23,7 @@ import com.google.gwt.user.client.ui.Widget;
import com.sap.sailing.domain.common.dto.BoatDTO;
import com.sap.sailing.domain.common.dto.PairingListDTO;
import com.sap.sailing.domain.common.dto.PairingListTemplateDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sse.common.Util;
@@ -36,7 +36,7 @@ import com.sap.sse.gwt.client.dialog.DataEntryDialog;
public class PairingListCreationDialog extends DataEntryDialog<PairingListTemplateDTO> {
private final PairingListTemplateDTO template;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final StrippedLeaderboardDTO leaderboardDTO;
private final StringMessages stringMessages;
@@ -51,13 +51,13 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
private final Grid pairingListGrid;
public PairingListCreationDialog(StrippedLeaderboardDTO leaderboardDTO, final StringMessages stringMessages,
PairingListTemplateDTO template, SailingServiceAsync sailingService, ErrorReporter errorReporter) {
PairingListTemplateDTO template, SailingServiceWriteAsync sailingServiceWrite, ErrorReporter errorReporter) {
super(/* title */ stringMessages.pairingList(), /* message */ null, stringMessages.close(),
/* cancel button name */ null, /* validator */ null, /* callback */ null);
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
this.template = template;
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.leaderboardDTO = leaderboardDTO;
this.ensureDebugId("PairingListCreationDialog");
applyToRacelogButton = new Button(stringMessages.insertIntoRegatta());
@@ -72,7 +72,7 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
this.template.getPairingListTemplate()[0].length);
pairingListTemplateScrollPanel = new ScrollPanel(pairingListGrid);
if (template.getCompetitorCount() == leaderboardDTO.competitorsCount) {
sailingService.getPairingListFromTemplate(this.leaderboardDTO.getName(),
sailingServiceWrite.getPairingListFromTemplate(this.leaderboardDTO.getName(),
this.template.getFlightMultiplier(), this.template.getSelectedFlightNames(), this.template,
new AsyncCallback<PairingListDTO>() {
@Override
@@ -191,7 +191,7 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
applyToRacelogButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
sailingService.fillRaceLogsFromPairingListTemplate(leaderboardDTO.getName(),
sailingServiceWrite.fillRaceLogsFromPairingListTemplate(leaderboardDTO.getName(),
template.getFlightMultiplier(), template.getSelectedFlightNames(), pairingListDTO,
new AsyncCallback<Void>() {
@Override
@@ -211,7 +211,7 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
printPreViewButton.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
sailingService.getRaceDisplayNamesFromLeaderboard(leaderboardDTO.getName(),
sailingServiceWrite.getRaceDisplayNamesFromLeaderboard(leaderboardDTO.getName(),
Util.asList(template.getSelectedFlightNames()), new AsyncCallback<List<String>>() {
@Override
public void onFailure(Throwable caught) {
@@ -234,7 +234,7 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
BusyDialog busyDialog = new BusyDialog();
busyDialog.show();
try {
sailingService.calculatePairingListTemplate(template.getFlightCount(), template.getGroupCount(),
sailingServiceWrite.calculatePairingListTemplate(template.getFlightCount(), template.getGroupCount(),
template.getCompetitorCount(), template.getFlightMultiplier(),
template.getBoatChangeFactor(), new AsyncCallback<PairingListTemplateDTO>() {
@@ -249,7 +249,7 @@ public class PairingListCreationDialog extends DataEntryDialog<PairingListTempla
busyDialog.hide();
result.setSelectedFlightNames(template.getSelectedFlightNames());
PairingListCreationDialog dialog = new PairingListCreationDialog(leaderboardDTO,
stringMessages, result, sailingService, errorReporter);
stringMessages, result, sailingServiceWrite, errorReporter);
dialog.show();
}
});
@@ -9,6 +9,7 @@ import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.domain.common.dto.RaceColumnDTO;
import com.sap.sailing.domain.common.orc.ORCCertificate;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTO;
import com.sap.sailing.gwt.ui.shared.StrippedLeaderboardDTOWithSecurity;
@@ -30,11 +31,11 @@ public class RaceBoatCertificatesPanel extends AbstractBoatCertificatesPanel {
private final String raceColumnName;
private final String fleetName;
public RaceBoatCertificatesPanel(final SailingServiceAsync sailingService, final UserService userService,
public RaceBoatCertificatesPanel(final SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
final StrippedLeaderboardDTOWithSecurity leaderboard, final RaceColumnDTO raceColumn, final FleetDTO fleet,
final StringMessages stringMessages, final ErrorReporter errorReporter) {
// TODO problem: what is the secured object here? What is it for other RaceLog updates?
super(sailingService, userService, leaderboard, stringMessages, errorReporter,
super(sailingServiceWrite, userService, leaderboard, stringMessages, errorReporter,
/* context update permission check: */ () -> userService.hasPermission(leaderboard,
DefaultActions.UPDATE),
leaderboard.getName() + "/" + raceColumn.getName() + "/" + fleet.getName());
@@ -45,10 +46,10 @@ public class RaceBoatCertificatesPanel extends AbstractBoatCertificatesPanel {
}
@Override
protected void assignCertificates(SailingServiceAsync sailingService,
protected void assignCertificates(SailingServiceWriteAsync sailingServiceWrite,
Map<String, ORCCertificate> certificatesByBoatIdAsString,
AsyncCallback<Triple<Integer, Integer, Integer>> callback) {
sailingService.assignORCPerformanceCurveCertificates(leaderboardName, raceColumnName, fleetName,
sailingServiceWrite.assignORCPerformanceCurveCertificates(leaderboardName, raceColumnName, fleetName,
certificatesByBoatIdAsString, callback);
}
@@ -12,7 +12,7 @@ import com.google.gwt.user.client.ui.HorizontalPanel;
import com.sap.sailing.domain.common.RankingMetrics;
import com.sap.sailing.domain.common.orc.impl.ORCPerformanceCurveLegImpl;
import com.sap.sailing.gwt.ui.client.RegattaRefresher;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sailing.gwt.ui.shared.RaceCourseDTO;
import com.sap.sse.gwt.client.ErrorReporter;
@@ -32,14 +32,14 @@ import com.sap.sse.security.ui.client.UserService;
public class RaceCourseManagementPanel extends AbstractRaceManagementPanel {
private final CourseManagementWidget courseManagementWidget;
public RaceCourseManagementPanel(final SailingServiceAsync sailingService, final ErrorReporter errorReporter,
public RaceCourseManagementPanel(final SailingServiceWriteAsync sailingServiceWrite, final ErrorReporter errorReporter,
RegattaRefresher regattaRefresher, final StringMessages stringMessages, final UserService userService) {
super(sailingService, userService, errorReporter, regattaRefresher, /* actionButtonsEnabled */ false, stringMessages);
courseManagementWidget = new CourseManagementWidget(sailingService, errorReporter, stringMessages,
super(sailingServiceWrite, userService, errorReporter, regattaRefresher, /* actionButtonsEnabled */ false, stringMessages);
courseManagementWidget = new CourseManagementWidget(sailingServiceWrite, errorReporter, stringMessages,
userService, ()->selectedRaceHasOrcPcsRankingMetric()) {
@Override
protected void save() {
sailingService.updateRaceCourse(singleSelectedRace, createWaypointPairs(), new AsyncCallback<Void>() {
sailingServiceWrite.updateRaceCourse(singleSelectedRace, createWaypointPairs(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(stringMessages.errorUpdatingRaceCourse(caught.getMessage()));
@@ -48,7 +48,7 @@ public class RaceCourseManagementPanel extends AbstractRaceManagementPanel {
@Override
public void onSuccess(Void result) {
Notification.notify(stringMessages.successfullyUpdatedCourse(), NotificationType.INFO);
sailingService.setORCPerformanceCurveLegInfo(singleSelectedRace, getORCPerformanceCurveLegInfoByOneBasedWaypointIndex(), new AsyncCallback<Void>() {
sailingServiceWrite.setORCPerformanceCurveLegInfo(singleSelectedRace, getORCPerformanceCurveLegInfoByOneBasedWaypointIndex(), new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
errorReporter.reportError(stringMessages.errorUpdatingRaceCourse(caught.getMessage()));
@@ -66,7 +66,7 @@ public class RaceCourseManagementPanel extends AbstractRaceManagementPanel {
@Override
protected LegGeometrySupplier getLegGeometrySupplier() {
return (zeroBasedLegIndices, legTypes, callback)->
sailingService.getLegGeometry(singleSelectedRace, zeroBasedLegIndices, legTypes, callback);
sailingServiceWrite.getLegGeometry(singleSelectedRace, zeroBasedLegIndices, legTypes, callback);
}
@Override
@@ -74,7 +74,7 @@ public class RaceCourseManagementPanel extends AbstractRaceManagementPanel {
if (singleSelectedRace != null && selectedRaceDTO != null) {
mainPanel.setVisible(true);
// TODO bug 1351: never use System.currentTimeMillis() on the client when trying to compare anything with "server time"; this one is not so urgent as it is reached only in the AdminConsole and we expect administrators to have proper client-side time settings
sailingService.getRaceCourse(singleSelectedRace, new Date(), new AsyncCallback<RaceCourseDTO>() {
sailingServiceWrite.getRaceCourse(singleSelectedRace, new Date(), new AsyncCallback<RaceCourseDTO>() {
@Override
public void onSuccess(RaceCourseDTO raceCourseDTO) {
updateWaypointsAndControlPoints(raceCourseDTO, selectedRaceDTO);
@@ -96,7 +96,7 @@ public class RaceCourseManagementPanel extends AbstractRaceManagementPanel {
private void refreshORCPerformanceCurveLegs() {
if (singleSelectedRace != null) {
sailingService.getORCPerformanceCurveLegInfo(singleSelectedRace,
sailingServiceWrite.getORCPerformanceCurveLegInfo(singleSelectedRace,
new AsyncCallback<Map<Integer, ORCPerformanceCurveLegImpl>>() {
@Override
public void onSuccess(Map<Integer, ORCPerformanceCurveLegImpl> result) {
@@ -22,7 +22,7 @@ import com.sap.sailing.domain.common.dto.CompetitorAndBoatDTO;
import com.sap.sailing.domain.common.dto.CompetitorDTO;
import com.sap.sailing.domain.common.dto.CompetitorWithToolTipDTO;
import com.sap.sailing.domain.common.dto.FleetDTO;
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
import com.sap.sailing.gwt.ui.client.SailingServiceWriteAsync;
import com.sap.sailing.gwt.ui.client.StringMessages;
import com.sap.sse.gwt.client.ErrorReporter;
import com.sap.sse.gwt.client.async.ParallelExecutionCallback;
@@ -37,7 +37,7 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis
private CheckBox competitorRegistrationInRaceLogCheckBox;
private final Map<String, Set<CompetitorDTO>> fleetNameWithCompetitors;
private final ErrorReporter errorReporter;
private final SailingServiceAsync sailingService;
private final SailingServiceWriteAsync sailingServiceWrite;
private final StringMessages stringMessages;
private static class Validator implements com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator<Set<CompetitorDTO>> {
@@ -96,24 +96,24 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis
}
}
public RaceLogCompetitorRegistrationDialog(String boatClass, SailingServiceAsync sailingService, final UserService userService,
public RaceLogCompetitorRegistrationDialog(String boatClass, SailingServiceWriteAsync sailingServiceWrite, final UserService userService,
StringMessages stringMessages, ErrorReporter errorReporter, boolean editable, String leaderboardName, boolean canBoatsOfCompetitorsChangePerRace,
String raceColumnName, String fleetName, List<FleetDTO> fleets,
com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback<Set<CompetitorDTO>> callback) {
this(sailingService, userService, stringMessages, errorReporter, editable, callback, leaderboardName, canBoatsOfCompetitorsChangePerRace, boatClass,
this(sailingServiceWrite, userService, stringMessages, errorReporter, editable, callback, leaderboardName, canBoatsOfCompetitorsChangePerRace, boatClass,
raceColumnName, fleetName, fleets, new Validator(stringMessages));
}
public RaceLogCompetitorRegistrationDialog(SailingServiceAsync sailingService, final UserService userService, StringMessages stringMessages,
public RaceLogCompetitorRegistrationDialog(SailingServiceWriteAsync sailingServiceWrite, final UserService userService, StringMessages stringMessages,
ErrorReporter errorReporter, boolean editable,
com.sap.sse.gwt.client.dialog.DataEntryDialog.DialogCallback<Set<CompetitorDTO>> callback,
String leaderboardName, boolean canBoatsOfCompetitorsChangePerRace, String boatClass, String raceColumnName, String fleetName, List<FleetDTO> fleets, Validator validator) {
super(sailingService, userService, stringMessages, errorReporter, editable, callback, leaderboardName,
super(sailingServiceWrite, userService, stringMessages, errorReporter, editable, callback, leaderboardName,
canBoatsOfCompetitorsChangePerRace, boatClass,
canBoatsOfCompetitorsChangePerRace ? stringMessages.actionContinueToBoatAssignment() : stringMessages.save(), validator);
this.errorReporter = errorReporter;
this.stringMessages = stringMessages;
this.sailingService = sailingService;
this.sailingServiceWrite = sailingServiceWrite;
this.raceColumnName = raceColumnName;
this.fleetName = fleetName;
fleetNameWithCompetitors = findCompetitorsFromTheSameRaceColumn(fleets);
@@ -177,7 +177,7 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis
};
for (final Entry<String, ParallelExecutionCallback<Collection<CompetitorAndBoatDTO>>> fleetNameAndCallback : callbacksForFleetNames
.entrySet()) {
sailingService.getCompetitorRegistrationsForRace(leaderboardName, raceColumnName,
sailingServiceWrite.getCompetitorRegistrationsForRace(leaderboardName, raceColumnName,
fleetNameAndCallback.getKey(), fleetNameAndCallback.getValue());
}
}
@@ -203,9 +203,9 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis
private void getRegisteredCompetitors(AsyncCallback<Collection<CompetitorDTO>> callback) {
if (competitorRegistrationsPanel.showOnlyCompetitorsOfLog()) {
sailingService.getCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, extractCompetitorDTOFromCompetitorAndBoatDTO(callback));
sailingServiceWrite.getCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, extractCompetitorDTOFromCompetitorAndBoatDTO(callback));
} else {
sailingService.getCompetitorRegistrationsForRace(leaderboardName, raceColumnName, fleetName, extractCompetitorDTOFromCompetitorAndBoatDTO(callback));
sailingServiceWrite.getCompetitorRegistrationsForRace(leaderboardName, raceColumnName, fleetName, extractCompetitorDTOFromCompetitorAndBoatDTO(callback));
}
}
@@ -224,7 +224,7 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis
}
private void setupCompetitorRegistationsOnRaceCheckbox() {
sailingService.areCompetitorRegistrationsEnabledForRace(leaderboardName, raceColumnName, fleetName,
sailingServiceWrite.areCompetitorRegistrationsEnabledForRace(leaderboardName, raceColumnName, fleetName,
new AsyncCallback<Boolean>() {
@Override
public void onSuccess(Boolean isEnabled) {
@@ -259,7 +259,7 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis
@Override
public void ok(Void editedObject) {
if (getOrCreateCompetitorRegistrationInRaceLogCheckBox(stringMessages).getValue()) {
sailingService.enableCompetitorRegistrationsForRace(leaderboardName,
sailingServiceWrite.enableCompetitorRegistrationsForRace(leaderboardName,
raceColumnName, fleetName, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void isEnabled) {
@@ -277,7 +277,7 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis
});
} else {
sailingService.disableCompetitorRegistrationsForRace(leaderboardName,
sailingServiceWrite.disableCompetitorRegistrationsForRace(leaderboardName,
raceColumnName, fleetName, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void isEnabled) {
Loaded 100 of 223 files, more files were not shown because too many files have changed in this diff. Show more