mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-24 04:53:54 +00:00
Merge branch 'master' into riccardo-selenium
This commit is contained in:
commit
48e20bb163
12 files changed
+278
-68
No files matched your search
+18
-3
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" original="/usr/sap/ljs/app/Converter_577915206092257625/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties" source-language="en">
|
||||
<file datatype="javapropertyresourcebundle" original="/usr/sap/ljs/app/Converter_5099745395718684415/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties" source-language="en">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="5dda908f3639fd822b6aa18b6f99c875" form="base64">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 truncated
|
||||
<internal-file crc="3e615e62ad00af43c01598ae7d448203" form="base64">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 truncated
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-11-18T09:43:04Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
<phase company-name="SAP AG" date="2016-12-09T08:12:05Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
@@ -2390,6 +2390,9 @@
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="finishAt" resname="finishAt">
|
||||
<source>Finish at</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="protestStartsAt" resname="protestStartsAt">
|
||||
<source>Protest starts at</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="protestEndsAt" resname="protestEndsAt">
|
||||
<source>Protest ends at</source>
|
||||
</trans-unit>
|
||||
@@ -2885,6 +2888,9 @@
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="rrs26Start" resname="rrs26Start">
|
||||
<source>RRS26 start</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="sailingWorldCupStart" resname="sailingWorldCupStart">
|
||||
<source>Sailing World Cup Start</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="setConfiguration" resname="setConfiguration">
|
||||
<source>Activate configuration</source>
|
||||
</trans-unit>
|
||||
@@ -3468,6 +3474,9 @@
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="windChart" resname="windChart">
|
||||
<source>Wind Chart</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="windChartLoading" resname="windChartLoading">
|
||||
<source>Loading wind data...</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="mediaNoVideosCaption" resname="mediaNoVideosCaption">
|
||||
<source>No Videos</source>
|
||||
</trans-unit>
|
||||
@@ -4401,6 +4410,12 @@
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="competitorRegistrationsOnRaceDisabled" resname="competitorRegistrationsOnRaceDisabled">
|
||||
<source>Competitor Registrations are disabled for this race. Enable by checking the checkbox to the left.</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="warningForDisabledCompetitors" resname="warningForDisabledCompetitors">
|
||||
<source>The following competitors cannot be registered to this race : <ph id="1">{0}</ph></source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="competitorToolTipMessage" resname="competitorToolTipMessage">
|
||||
<source><ph id="1">{0}</ph> has already been assigned to fleet <ph id="2">{2}</ph> in race <ph id="3">{3}</ph> and therefore cannot be assigned to fleet <ph id="4">{1}</ph> within the same race</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="addMarkToRegatta" resname="addMarkToRegatta">
|
||||
<source>Add Mark to Regatta</source>
|
||||
</trans-unit>
|
||||
|
||||
+145
@@ -0,0 +1,145 @@
|
||||
package com.sap.sailing.domain.racelogtracking.test.impl;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.ConcurrentModificationException;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.mongodb.MongoException;
|
||||
import com.sap.sailing.domain.abstractlog.AbstractLogEventAuthor;
|
||||
import com.sap.sailing.domain.abstractlog.impl.LogEventAuthorImpl;
|
||||
import com.sap.sailing.domain.abstractlog.race.RaceLog;
|
||||
import com.sap.sailing.domain.abstractlog.race.analyzing.impl.RaceLogResolver;
|
||||
import com.sap.sailing.domain.abstractlog.race.impl.RaceLogImpl;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.RegattaLog;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.events.RegattaLogDeviceMappingEvent;
|
||||
import com.sap.sailing.domain.abstractlog.regatta.impl.RegattaLogImpl;
|
||||
import com.sap.sailing.domain.base.BoatClass;
|
||||
import com.sap.sailing.domain.base.Competitor;
|
||||
import com.sap.sailing.domain.base.Course;
|
||||
import com.sap.sailing.domain.base.DomainFactory;
|
||||
import com.sap.sailing.domain.base.Mark;
|
||||
import com.sap.sailing.domain.base.RaceDefinition;
|
||||
import com.sap.sailing.domain.base.Sideline;
|
||||
import com.sap.sailing.domain.base.Waypoint;
|
||||
import com.sap.sailing.domain.base.impl.CourseImpl;
|
||||
import com.sap.sailing.domain.base.impl.RaceDefinitionImpl;
|
||||
import com.sap.sailing.domain.base.impl.RegattaImpl;
|
||||
import com.sap.sailing.domain.base.impl.WaypointImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreeBearingImpl;
|
||||
import com.sap.sailing.domain.common.impl.DegreePosition;
|
||||
import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl;
|
||||
import com.sap.sailing.domain.common.tracking.GPSFixMoving;
|
||||
import com.sap.sailing.domain.common.tracking.impl.GPSFixMovingImpl;
|
||||
import com.sap.sailing.domain.persistence.PersistenceFactory;
|
||||
import com.sap.sailing.domain.persistence.racelog.tracking.impl.MongoSensorFixStoreImpl;
|
||||
import com.sap.sailing.domain.racelog.impl.EmptyRaceLogStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.EmptySensorFixStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.SensorFixMapper;
|
||||
import com.sap.sailing.domain.racelog.tracking.SensorFixStore;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.MockSmartphoneImeiServiceFinderFactory;
|
||||
import com.sap.sailing.domain.racelog.tracking.test.mock.SmartphoneImeiIdentifier;
|
||||
import com.sap.sailing.domain.racelogsensortracking.SensorFixMapperFactory;
|
||||
import com.sap.sailing.domain.racelogtracking.DeviceIdentifier;
|
||||
import com.sap.sailing.domain.racelogtracking.impl.fixtracker.RaceLogFixTrackerManager;
|
||||
import com.sap.sailing.domain.ranking.OneDesignRankingMetric;
|
||||
import com.sap.sailing.domain.regattalog.impl.EmptyRegattaLogStore;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrack;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRace;
|
||||
import com.sap.sailing.domain.tracking.DynamicTrackedRegatta;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl;
|
||||
import com.sap.sailing.domain.tracking.impl.EmptyWindStore;
|
||||
import com.sap.sse.common.Timed;
|
||||
import com.sap.sse.common.impl.MillisecondsTimePoint;
|
||||
|
||||
public class RaceLogFixTrackerManagerTest {
|
||||
protected final MockSmartphoneImeiServiceFinderFactory serviceFinderFactory = new MockSmartphoneImeiServiceFinderFactory();
|
||||
protected final DeviceIdentifier device = new SmartphoneImeiIdentifier("a");
|
||||
protected final DeviceIdentifier deviceTest = new SmartphoneImeiIdentifier("b");
|
||||
protected RaceLog raceLog;
|
||||
protected RaceLog raceLog2;
|
||||
protected RegattaLog regattaLog;
|
||||
protected SensorFixStore store;
|
||||
protected final Competitor comp = DomainFactory.INSTANCE.getOrCreateCompetitor("comp", "comp", null, null, null,
|
||||
null, null, /* timeOnTimeFactor */ null, /* timeOnDistanceAllowanceInSecondsPerNauticalMile */ null, null);
|
||||
protected final Mark mark = DomainFactory.INSTANCE.getOrCreateMark("mark");
|
||||
protected final Mark mark2 = DomainFactory.INSTANCE.getOrCreateMark("mark2");
|
||||
private final BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("49er");
|
||||
|
||||
protected final AbstractLogEventAuthor author = new LogEventAuthorImpl("author", 0);
|
||||
private DynamicTrackedRace trackedRace;
|
||||
|
||||
protected GPSFixMoving createFix(long millis, double lat, double lng, double knots, double degrees) {
|
||||
return new GPSFixMovingImpl(new DegreePosition(lat, lng), new MillisecondsTimePoint(millis),
|
||||
new KnotSpeedWithBearingImpl(knots, new DegreeBearingImpl(degrees)));
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() throws UnknownHostException, MongoException {
|
||||
raceLog = new RaceLogImpl("racelog");
|
||||
raceLog2 = new RaceLogImpl("racelog2");
|
||||
|
||||
regattaLog = new RegattaLogImpl("regattalog");
|
||||
|
||||
store = new MongoSensorFixStoreImpl(PersistenceFactory.INSTANCE.getDefaultMongoObjectFactory(),
|
||||
PersistenceFactory.INSTANCE.getDefaultDomainObjectFactory(), serviceFinderFactory);
|
||||
|
||||
Course course = new CourseImpl("course",
|
||||
Arrays.asList(new Waypoint[] { new WaypointImpl(mark), new WaypointImpl(mark2) }));
|
||||
RaceDefinition race = new RaceDefinitionImpl("race", course, boatClass, Arrays.asList(comp));
|
||||
DynamicTrackedRegatta regatta = new DynamicTrackedRegattaImpl(new RegattaImpl(EmptyRaceLogStore.INSTANCE,
|
||||
EmptyRegattaLogStore.INSTANCE, RegattaImpl.getDefaultName("regatta", boatClass.getName()), boatClass,
|
||||
/* startDate */ null, /* endDate */null, null, null, "a", null));
|
||||
trackedRace = new DynamicTrackedRaceImpl(regatta, race, Collections.<Sideline> emptyList(),
|
||||
EmptyWindStore.INSTANCE, 0, 0, 0, /* useMarkPassingCalculator */ false, OneDesignRankingMetric::new,
|
||||
mock(RaceLogResolver.class));
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 4001: A {@link ConcurrentModificationException} was thrown when stopping tracking for a race with multiple
|
||||
* attached RaceLogs.
|
||||
*/
|
||||
@Test
|
||||
public void testThatNoExceptionIsThrownWhenStoppingTrackingForRaceWithMultipleRaceLogs_bug4001() {
|
||||
trackedRace.attachRegattaLog(regattaLog);
|
||||
trackedRace.attachRaceLog(raceLog);
|
||||
trackedRace.attachRaceLog(raceLog2);
|
||||
|
||||
RaceLogFixTrackerManager raceLogFixTrackerManager = new RaceLogFixTrackerManager(trackedRace,
|
||||
EmptySensorFixStore.INSTANCE, new SensorFixMapperFactory() {
|
||||
@Override
|
||||
public <FixT extends Timed, TrackT extends DynamicTrack<FixT>> SensorFixMapper<FixT, TrackT, Competitor> createCompetitorMapper(
|
||||
Class<? extends RegattaLogDeviceMappingEvent<?>> eventType) {
|
||||
throw new IllegalArgumentException("Unknown event type");
|
||||
}
|
||||
});
|
||||
raceLogFixTrackerManager.stop(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 4001: A {@link ConcurrentModificationException} was thrown when stopping tracking for a race with multiple
|
||||
* attached RaceLogs.
|
||||
*/
|
||||
@Test
|
||||
public void testThatNoExceptionIsThrownWhenStoppingTrackingWhenAddingSecondRaceLogWhileAlreadyTracking_bug4001() {
|
||||
trackedRace.attachRegattaLog(regattaLog);
|
||||
trackedRace.attachRaceLog(raceLog);
|
||||
|
||||
RaceLogFixTrackerManager raceLogFixTrackerManager = new RaceLogFixTrackerManager(trackedRace,
|
||||
EmptySensorFixStore.INSTANCE, new SensorFixMapperFactory() {
|
||||
@Override
|
||||
public <FixT extends Timed, TrackT extends DynamicTrack<FixT>> SensorFixMapper<FixT, TrackT, Competitor> createCompetitorMapper(
|
||||
Class<? extends RegattaLogDeviceMappingEvent<?>> eventType) {
|
||||
throw new IllegalArgumentException("Unknown event type");
|
||||
}
|
||||
});
|
||||
trackedRace.attachRaceLog(raceLog2);
|
||||
raceLogFixTrackerManager.stop(false);
|
||||
}
|
||||
}
|
||||
+4
-4
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" original="/usr/sap/ljs/app/Converter_2566045106627533633/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/TrackingStringMessages.properties" source-language="en">
|
||||
<file datatype="javapropertyresourcebundle" original="/usr/sap/ljs/app/Converter_7335190261158680380/java/com.sap.sailing.domain.racelogtrackingadapter/resources/stringmessages/TrackingStringMessages.properties" source-language="en">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="cdbdcb19e10086d34f715e2a7da26eef" form="base64">H4sIAAAAAAAAAF2RTU/DMAyG7/0VvnGZEGekHgYSUiVgY+3gnLXeajWNo9jbqBD/naQtbOLm+PXH+zgaTN2ROxTuRGqU2D1xyKs5C5c07DlkUhv3tnnkBlfhnYR0G2zFGzyQKIal5C+mQ5BjQBj4CK05IWiL8HX3DUvvgZyosRabW6hadJDmjQV7tpbPaeM0HjhAbanuRtWS6+AoSY5jA0hvgvqWXZzOEOb1YCQ7o625x4rzjymKBRmtyq1gkLzU2AfxmcxkxjWBqbmWllNqkm2c6SL7Ce0wwlYtyXO0khf7Ec9EzICmSb40atAbssATUYMnqhHOpO34TvjGpvLhcoYFCPXeDjPrDuMREpIkN/fZ7shDha7BkKcQdIwz432pHLCYxlT4qclSw+5GLzdPCwfUBXiLRvB36X1qL1jyuftyDu9n/D/p+hzJwDqSxm/2/tX0mJfLNZSROOE/JHuTnEnMFa6kQ6v/S2HOZz95rIJYdwIAAA==</internal-file>
|
||||
<internal-file crc="064477f4b22ea4cc8cbdaab36795b9a4" form="base64">H4sIAAAAAAAAAF1RQU7DQAy85xW+cakQ50o5FCSkSEBLk8J5m7iN1c16tXZbIsTf2U1SWnHzzjjjmYkGUx/I7Qt3IjVK7J455NWEwhWGHYdMauPe10/c4DJ8kJBugq14jXsSxbCQ/NUcEOQYEHo+QmtOCNoifD/8wMJ7ICdqrMXmHqoWHSS9YWHH1vI5XRzlgQPUlurDwFpyBzhKoqNsAOlMUN+yi+oMYToPRrIz2po7rDj/HKe4kNGy3AgGyUuN30F8JjOZcU1gam6pxQiNtI2aLmY/oe2HsFVL8hKt5MVuiGdizICmSb40ctAZssBjogZPVCOcSdvhneIbm9b7aw0zEOq87aesW4wlpEiS3Myz7ZH7Cl2DIU8j6DBnxvtSOWAxylT4pRdLDbs7vfaejvaoM/AWjeDl8DxJFCz5pHCtxPupgj/qtpJkYhXTxl/t/ZvpMC8XKyhj6lTBY7I40plErHAl7Vv9vwoTnv0Cs+RzW3sCAAA=</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-11-04T21:01:36Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
<phase company-name="SAP AG" date="2016-12-16T08:45:26Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
@@ -33,7 +33,7 @@
|
||||
<source>buoy tender</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appStoreInstallText" resname="appStoreInstallText">
|
||||
<source>If don't have the App yet, please install:</source>
|
||||
<source>If you don't have the App yet, please install:</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="appIos" resname="appIos">
|
||||
<source>Install iOS App</source>
|
||||
|
||||
+61
-2
@@ -7,6 +7,7 @@ import com.google.gwt.core.client.Callback;
|
||||
import com.google.gwt.event.dom.client.ClickEvent;
|
||||
import com.google.gwt.event.dom.client.ClickHandler;
|
||||
import com.google.gwt.user.client.Window;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Button;
|
||||
import com.google.gwt.user.client.ui.CaptionPanel;
|
||||
import com.google.gwt.user.client.ui.CheckBox;
|
||||
@@ -15,16 +16,21 @@ 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.google.gwt.user.client.ui.Widget;
|
||||
import com.sap.sailing.domain.common.CompetitorDescriptor;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTOImpl;
|
||||
import com.sap.sailing.gwt.ui.adminconsole.CompetitorImportProviderSelectionDialog.MatchImportedCompetitorsDialogFactory;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.common.Util;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
import com.sap.sse.gwt.client.celltable.RefreshableMultiSelectionModel;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.BusyDisplay;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.BusyIndicator;
|
||||
import com.sap.sse.gwt.client.controls.busyindicator.SimpleBusyIndicator;
|
||||
import com.sap.sse.gwt.client.dialog.DataEntryDialog;
|
||||
|
||||
public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDialog<Set<CompetitorDTO>> {
|
||||
public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDialog<Set<CompetitorDTO>> implements BusyDisplay {
|
||||
protected CompetitorTableWrapper<RefreshableMultiSelectionModel<CompetitorDTO>> allCompetitorsTable;
|
||||
protected CompetitorTableWrapper<RefreshableMultiSelectionModel<CompetitorDTO>> registeredCompetitorsTable;
|
||||
protected final boolean filterByLeaderBoardInitially = false;
|
||||
@@ -40,6 +46,8 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
private String boatClass;
|
||||
|
||||
protected String leaderboardName;
|
||||
private final BusyIndicator busyIndicator;
|
||||
private final ImportCompetitorCallback importCompetitorCallback;
|
||||
|
||||
/**
|
||||
* @param boatClass
|
||||
@@ -47,7 +55,7 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
* <code>boatClass</code> parameter is <code>null</code>, if you want to edit a competitor or there is no
|
||||
* boat class for the new competitor.
|
||||
*/
|
||||
public AbstractCompetitorRegistrationsDialog(final SailingServiceAsync sailingService,
|
||||
protected AbstractCompetitorRegistrationsDialog(final SailingServiceAsync sailingService,
|
||||
final StringMessages stringMessages, final ErrorReporter errorReporter, boolean editable,
|
||||
DialogCallback<Set<CompetitorDTO>> callback, String leaderboardName, String boatClass,
|
||||
com.sap.sse.gwt.client.dialog.DataEntryDialog.Validator<Set<CompetitorDTO>> validator) {
|
||||
@@ -58,6 +66,8 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
this.editable = editable;
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.boatClass = boatClass;
|
||||
this.busyIndicator = new SimpleBusyIndicator();
|
||||
this.importCompetitorCallback = new RaceOrRegattaImportCompetitorCallback(this, sailingService, errorReporter, stringMessages);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -82,6 +92,29 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
helper.inviteCompetitors(competitors, leaderboardName);
|
||||
}
|
||||
});
|
||||
final Button competitorImportButton = new Button(stringMessages.importCompetitors());
|
||||
competitorImportButton.addClickHandler(new ClickHandler() {
|
||||
@Override
|
||||
public void onClick(ClickEvent event) {
|
||||
sailingService.getCompetitorProviderNames(new AsyncCallback<Iterable<String>>() {
|
||||
@Override
|
||||
public void onSuccess(Iterable<String> providerNames) {
|
||||
MatchImportedCompetitorsDialogFactory matchCompetitorsDialogFactory = getMatchCompetitorsDialogFactory(
|
||||
sailingService, stringMessages, errorReporter);
|
||||
CompetitorImportProviderSelectionDialog dialog = new CompetitorImportProviderSelectionDialog(
|
||||
matchCompetitorsDialogFactory, AbstractCompetitorRegistrationsDialog.this, providerNames, sailingService,
|
||||
stringMessages, errorReporter);
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter
|
||||
.reportError(stringMessages.errorLoadingCompetitorImportProviders(caught.getMessage()));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
final HorizontalPanel competitorRegistrationPanel = new HorizontalPanel();
|
||||
final CaptionPanel allCompetitorsPanel = new CaptionPanel(stringMessages.competitorPool());
|
||||
final CaptionPanel registeredCompetitorsPanel = new CaptionPanel(stringMessages.registeredCompetitors());
|
||||
@@ -116,6 +149,8 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
competitorRegistrationPanel.add(allCompetitorsPanel);
|
||||
buttonPanel.add(addCompetitorButton);
|
||||
buttonPanel.add(inviteCompetitorsButton);
|
||||
buttonPanel.add(competitorImportButton);
|
||||
buttonPanel.add(busyIndicator);
|
||||
mainPanel.add(buttonPanel);
|
||||
showOnlyCompetitorsOfLogCheckBox = new CheckBox(stringMessages.showOnlyCompetitorsOfLog());
|
||||
showOnlyCompetitorsOfLogCheckBox.setValue(false);
|
||||
@@ -135,6 +170,25 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
refreshCompetitors();
|
||||
return mainPanel;
|
||||
}
|
||||
|
||||
private MatchImportedCompetitorsDialogFactory getMatchCompetitorsDialogFactory(
|
||||
final SailingServiceAsync sailingService, final StringMessages stringMessages,
|
||||
final ErrorReporter errorReporter) {
|
||||
return new MatchImportedCompetitorsDialogFactory() {
|
||||
@Override
|
||||
public MatchImportedCompetitorsDialog createMatchImportedCompetitorsDialog(
|
||||
final Iterable<CompetitorDescriptor> competitorDescriptors,
|
||||
final Iterable<CompetitorDTO> competitors) {
|
||||
return new MatchImportedCompetitorsDialog(competitorDescriptors, competitors, stringMessages,
|
||||
sailingService, errorReporter, importCompetitorCallback);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBusy(boolean isBusy) {
|
||||
busyIndicator.setBusy(isBusy);
|
||||
}
|
||||
|
||||
public abstract void addAdditionalWidgets(FlowPanel mainPanel);
|
||||
|
||||
@@ -142,6 +196,11 @@ public abstract class AbstractCompetitorRegistrationsDialog extends DataEntryDia
|
||||
from.getFilterField().removeAll(toMove);
|
||||
to.getFilterField().addAll(toMove);
|
||||
}
|
||||
|
||||
protected void addImportedCompetitorsToRegisteredCompetitorsTableAndRemoveFromAllCompetitorsTable(Iterable<CompetitorDTO> competitorsImported) {
|
||||
allCompetitorsTable.getFilterField().removeAll(competitorsImported);
|
||||
registeredCompetitorsTable.getFilterField().addAll(competitorsImported);
|
||||
}
|
||||
|
||||
private void moveSelected(CompetitorTableWrapper<RefreshableMultiSelectionModel<CompetitorDTO>> from,
|
||||
CompetitorTableWrapper<RefreshableMultiSelectionModel<CompetitorDTO>> to) {
|
||||
|
||||
+2
-2
@@ -54,10 +54,10 @@ public class CompetitorImportProviderSelectionDialog extends DataEntryDialog<Com
|
||||
private final LinkedHashMap<String, Pair<String, String>> eventRegattaNamesByCompetitorListItem;
|
||||
|
||||
public CompetitorImportProviderSelectionDialog(MatchImportedCompetitorsDialogFactory matchCompetitorsDialogFactory,
|
||||
BusyDisplay busynessPanel, Iterable<String> competitorProviderNames, SailingServiceAsync sailingService,
|
||||
BusyDisplay busyDisplay, Iterable<String> competitorProviderNames, SailingServiceAsync sailingService,
|
||||
StringMessages stringMessages, ErrorReporter errorReporter) {
|
||||
super(stringMessages.importCompetitors(), null, stringMessages.ok(), stringMessages.cancel(), null,
|
||||
new Callback(matchCompetitorsDialogFactory, sailingService, busynessPanel, errorReporter,
|
||||
new Callback(matchCompetitorsDialogFactory, sailingService, busyDisplay, errorReporter,
|
||||
stringMessages));
|
||||
this.sailingService = sailingService;
|
||||
this.stringMessages = stringMessages;
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ public class CompetitorPanel extends SimplePanel implements BusyDisplay {
|
||||
final StringMessages stringMessages, final ErrorReporter errorReporter) {
|
||||
super();
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ false);
|
||||
this.competitorTable = new CompetitorTableWrapper<>(sailingService, stringMessages, errorReporter, /* multiSelection */ true, /* enablePager */ true);
|
||||
this.refreshableCompetitorSelectionModel = (RefreshableMultiSelectionModel<CompetitorDTO>) competitorTable.getSelectionModel();
|
||||
|
||||
busyIndicator = new SimpleBusyIndicator(false, 0.8f);
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ public class ImportCompetitorCallback implements DialogCallback<Pair<Map<Competi
|
||||
}));
|
||||
registerCompetitorsAfterSaving(competitorsForRegisteringAndSearchTag.getA().entrySet().stream().filter((e->e.getValue() == null)).map(e->e.getKey()).
|
||||
collect(Collectors.toList()),
|
||||
competitorsForRegisteringAndSearchTag.getA().values(), competitorsForRegisteringAndSearchTag.getB());
|
||||
competitorsForRegisteringAndSearchTag.getA().values().stream().filter(e->e!=null).collect(Collectors.toList()), competitorsForRegisteringAndSearchTag.getB());
|
||||
}
|
||||
|
||||
private void registerCompetitorsAfterSaving(final List<CompetitorDescriptor> competitorsForSaving,
|
||||
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
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.StringMessages;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
|
||||
public class RaceImportCompetitorCallback extends ImportCompetitorCallback {
|
||||
private final String leaderboardName;
|
||||
private final String raceColumnName;
|
||||
private final String fleetName;
|
||||
|
||||
public RaceImportCompetitorCallback(String leaderboardName, String raceColumnName, String fleetName,
|
||||
SailingServiceAsync sailingService, ErrorReporter errorReporter, StringMessages stringMessages) {
|
||||
super(sailingService, errorReporter, stringMessages);
|
||||
this.leaderboardName = leaderboardName;
|
||||
this.raceColumnName = raceColumnName;
|
||||
this.fleetName = fleetName;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerCompetitors(Set<CompetitorDTO> competitors) {
|
||||
sailingService.setCompetitorRegistrationsInRaceLog(leaderboardName, raceColumnName, fleetName, competitors,
|
||||
new AsyncCallback<Void>() {
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
errorReporter.reportError(stringMessages.couldNotSaveCompetitorRegistrations(caught.getMessage()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+16
-13
@@ -130,21 +130,24 @@ public class RaceLogCompetitorRegistrationDialog extends AbstractCompetitorRegis
|
||||
});
|
||||
}
|
||||
}
|
||||
new ParallelExecutionHolder(callbacksForFleetNames.values().toArray(new ParallelExecutionCallback<?>[0])) {
|
||||
@Override
|
||||
protected void handleSuccess() {
|
||||
// if the data was gained completely then gray out specific rows
|
||||
grayOutRows();
|
||||
}
|
||||
if (!callbacksForFleetNames.isEmpty()) {
|
||||
new ParallelExecutionHolder(callbacksForFleetNames.values().toArray(new ParallelExecutionCallback<?>[0])) {
|
||||
@Override
|
||||
protected void handleSuccess() {
|
||||
// if the data was gained completely then gray out specific rows
|
||||
grayOutRows();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleFailure(Throwable t) {
|
||||
errorReporter.reportError(
|
||||
"Could not load already registered competitors: " + t.getMessage());
|
||||
@Override
|
||||
protected void handleFailure(Throwable t) {
|
||||
errorReporter.reportError("Could not load already registered competitors: " + t.getMessage());
|
||||
}
|
||||
};
|
||||
for (final Entry<String, ParallelExecutionCallback<Collection<CompetitorDTO>>> fleetNameAndCallback : callbacksForFleetNames
|
||||
.entrySet()) {
|
||||
sailingService.getCompetitorRegistrationsForRace(leaderboardName, raceColumnName,
|
||||
fleetNameAndCallback.getKey(), fleetNameAndCallback.getValue());
|
||||
}
|
||||
};
|
||||
for (final Entry<String, ParallelExecutionCallback<Collection<CompetitorDTO>>> fleetNameAndCallback : callbacksForFleetNames.entrySet()) {
|
||||
sailingService.getCompetitorRegistrationsForRace(leaderboardName, raceColumnName, fleetNameAndCallback.getKey(), fleetNameAndCallback.getValue());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.sap.sailing.gwt.ui.adminconsole;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import com.sap.sailing.domain.common.dto.CompetitorDTO;
|
||||
import com.sap.sailing.gwt.ui.client.SailingServiceAsync;
|
||||
import com.sap.sailing.gwt.ui.client.StringMessages;
|
||||
import com.sap.sse.gwt.client.ErrorReporter;
|
||||
|
||||
public class RaceOrRegattaImportCompetitorCallback extends ImportCompetitorCallback {
|
||||
private final AbstractCompetitorRegistrationsDialog registrationsDialog;
|
||||
|
||||
public RaceOrRegattaImportCompetitorCallback(AbstractCompetitorRegistrationsDialog registrationsDialog, SailingServiceAsync sailingService, ErrorReporter errorReporter,
|
||||
StringMessages stringMessages) {
|
||||
super(sailingService, errorReporter, stringMessages);
|
||||
this.registrationsDialog = registrationsDialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerCompetitors(Set<CompetitorDTO> competitors) {
|
||||
registrationsDialog.addImportedCompetitorsToRegisteredCompetitorsTableAndRemoveFromAllCompetitorsTable(competitors);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -46,7 +46,7 @@ public class CompetitorImportTest extends AbstractEventResultJsonServiceTest {
|
||||
assertTrue(competitorImporter.getHasCompetitorsForRegattasInEvent().get("YES - Young Europeans Sailing 2013").contains("29er"));
|
||||
final Iterable<CompetitorDescriptor> competitorDescriptors = competitorImporter.getCompetitorDescriptors("YES - Young Europeans Sailing 2013", null); // get competitors for all regattas in event
|
||||
assertNotNull(competitorDescriptors);
|
||||
assertEquals(933, Util.size(competitorDescriptors));
|
||||
assertEquals(1270, Util.size(competitorDescriptors));
|
||||
final Iterable<CompetitorDescriptor> competitorDescriptors29er = competitorImporter.getCompetitorDescriptors("YES - Young Europeans Sailing 2013", "29er"); // get competitors only for 29er regatta
|
||||
assertNotNull(competitorDescriptors29er);
|
||||
assertEquals(134, Util.size(competitorDescriptors29er));
|
||||
|
||||
+6
-3
@@ -1,12 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||
<file datatype="javapropertyresourcebundle" original="/usr/sap/ljs/app/Converter_2566045106627533633/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties" source-language="en">
|
||||
<file datatype="javapropertyresourcebundle" original="/usr/sap/ljs/app/Converter_5099745395718684415/java/com.sap.sse.security.ui/src/main/java/com/sap/sse/security/ui/client/i18n/StringMessages.properties" source-language="en">
|
||||
<header>
|
||||
<skl>
|
||||
<internal-file crc="d38efe4badae12b0c22cb2104d135a30" form="base64">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</internal-file>
|
||||
<internal-file crc="1a97a5a016bf3357b3f0613d523b2ebc" form="base64">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</internal-file>
|
||||
</skl>
|
||||
<phase-group>
|
||||
<phase company-name="SAP AG" date="2016-11-04T21:01:36Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
<phase company-name="SAP AG" date="2016-12-09T08:12:06Z" phase-name="file-creation" process-name="file-creation" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter"/>
|
||||
</phase-group>
|
||||
<tool tool-company="SAP AG" tool-id="urn:x-sap:sls-mlt:java:properties-flexible-converter" tool-name="TEW: Javascript .properties Flexible File Converter" tool-version="1.1.0"/>
|
||||
</header>
|
||||
@@ -302,6 +302,9 @@
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="preferredLanguage" resname="preferredLanguage">
|
||||
<source>Preferred language</source>
|
||||
</trans-unit>
|
||||
<trans-unit datatype="x-urn:x-sap:sls-mlt:java:flexible-converter:messageformat" id="cannotResetInvalidURL" resname="cannotResetInvalidURL">
|
||||
<source>Invalid reset URL...</source>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
Reference in new issue
Block a user