From d7e010c88a4f02916c7e2bdaa8d81cef106b63cf Mon Sep 17 00:00:00 2001 From: Fredrik Teschke Date: Fri, 5 Dec 2014 21:09:55 +0100 Subject: [PATCH] display mappings from RegattaLog in mappings dialog --- .../impl/RaceLogRaceTracker.java | 4 +- .../DeviceCompetitorMappingFinder.java | 2 +- .../analyzing/DeviceMarkMappingFinder.java | 2 +- .../RaceLogTrackingDeviceMappingsDialog.java | 2 +- .../sailing/gwt/ui/client/SailingService.java | 3 ++ .../gwt/ui/client/SailingServiceAsync.java | 8 +++- .../gwt/ui/server/SailingServiceImpl.java | 41 ++++++++++++++++--- 7 files changed, 51 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java index 1c8504505f8..bb0c98af620 100755 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/RaceLogRaceTracker.java @@ -228,12 +228,12 @@ public class RaceLogRaceTracker implements RaceTracker, GPSFixReceivedListener { } private Map>> getNewCompetitorMappings() { - return new MultiLogAnalyzer<>(new DeviceCompetitorMappingFinder.Factory<>(), + return new MultiLogAnalyzer<>(new DeviceCompetitorMappingFinder.Factory(), new MapWithValueCollectionReducer<>(), params.getLogHierarchy()).analyze(); } private Map>> getNewMarkMappings() { - return new MultiLogAnalyzer<>(new DeviceMarkMappingFinder.Factory<>(), new MapWithValueCollectionReducer<>(), + return new MultiLogAnalyzer<>(new DeviceMarkMappingFinder.Factory(), new MapWithValueCollectionReducer<>(), params.getLogHierarchy()).analyze(); } diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/analyzing/DeviceCompetitorMappingFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/analyzing/DeviceCompetitorMappingFinder.java index e49bc72de0a..d3193e3083f 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/analyzing/DeviceCompetitorMappingFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/analyzing/DeviceCompetitorMappingFinder.java @@ -15,7 +15,7 @@ import com.sap.sailing.domain.racelogtracking.DeviceMapping; public class DeviceCompetitorMappingFinder, EventT extends AbstractLogEvent, VisitorT> extends DeviceMappingFinder { - public static class Factory implements AnalyzerFactory>>> { + public static class Factory implements AnalyzerFactory>>> { @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public LogAnalyzer>>> createAnalyzer(AbstractLog log) { diff --git a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/analyzing/DeviceMarkMappingFinder.java b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/analyzing/DeviceMarkMappingFinder.java index 633c6c6c5df..97ac6b477fd 100644 --- a/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/analyzing/DeviceMarkMappingFinder.java +++ b/java/com.sap.sailing.domain.shared.android/src/com/sap/sailing/domain/abstractlog/shared/analyzing/DeviceMarkMappingFinder.java @@ -15,7 +15,7 @@ import com.sap.sailing.domain.racelogtracking.DeviceMapping; public class DeviceMarkMappingFinder, EventT extends AbstractLogEvent, VisitorT> extends DeviceMappingFinder { - public static class Factory implements AnalyzerFactory>>> { + public static class Factory implements AnalyzerFactory>>> { @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public LogAnalyzer>>> createAnalyzer(AbstractLog log) { diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java index 2c3ca60ccfe..c66aec4db99 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/RaceLogTrackingDeviceMappingsDialog.java @@ -256,7 +256,7 @@ public class RaceLogTrackingDeviceMappingsDialog extends RaceLogTrackingDialog { } private void refresh() { - sailingService.getDeviceMappingsFromRaceLog(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { + sailingService.getDeviceMappingsFromLogHierarchy(leaderboardName, raceColumnName, fleetName, new AsyncCallback>() { @Override public void onSuccess(List result) { mappings = result; diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java index 8b26333a095..2af81676f03 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingService.java @@ -549,4 +549,7 @@ public interface SailingService extends RemoteService { * leaderboard is coupled to. */ Collection getEventsForLeaderboard(String leaderboardName); + + List getDeviceMappingsFromLogHierarchy(String leaderboardName, String raceColumnName, + String fleetName) throws TransformationException; } diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java index 7e4e4287a2d..61b85318fb5 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/SailingServiceAsync.java @@ -597,7 +597,13 @@ public interface SailingServiceAsync extends BuildVersionRetriever { void pingMarkViaRaceLogTracking(String leaderboardName, String raceColumnName, String fleetName, MarkDTO mark, PositionDTO position, AsyncCallback callback); - void getDeserializableDeviceIdentifierTypes(AsyncCallback> callback); + void getDeserializableDeviceIdentifierTypes(AsyncCallback> callback); + + /** + * Do not only use the racelog, but also other logs (e.g. RegattaLogs) in the hierarchy of the race. + */ + void getDeviceMappingsFromLogHierarchy(String leaderboardName, String raceColumnName, String fleetName, + AsyncCallback> callback); void getDeviceMappingsFromRaceLog(String leaderboardName, String raceColumnName, String fleetName, AsyncCallback> callback); diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java index 45c2bece8d4..0d7d55eb31f 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/server/SailingServiceImpl.java @@ -54,6 +54,8 @@ import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceReference; import org.osgi.util.tracker.ServiceTracker; +import com.sap.sailing.domain.abstractlog.AbstractLog; +import com.sap.sailing.domain.abstractlog.MultiLogAnalyzer; import com.sap.sailing.domain.abstractlog.Revokable; import com.sap.sailing.domain.abstractlog.race.RaceLog; import com.sap.sailing.domain.abstractlog.race.RaceLogEvent; @@ -4943,17 +4945,33 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S deviceId), from, to, item, originalRaceLogEventUUIDs); } - @Override - public List getDeviceMappingsFromRaceLog(String leaderboardName, String raceColumnName, - String fleetName) throws TransformationException { + private List> getLogHierarchy(String leaderboardName, String raceColumnName, + String fleetName) { + List> result = new ArrayList<>(); RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); + result.add(raceLog); + Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName); + if (leaderboard instanceof HasRegattaLog) { + result.add(((HasRegattaLog) leaderboard).getRegattaLog()); + } + return result; + } + + private List getDeviceMappingsFromLogs(List> logs) + throws TransformationException { List result = new ArrayList(); - for (List> list : new DeviceCompetitorMappingFinder<>(raceLog).analyze().values()) { + for (List> list : new MultiLogAnalyzer<>( + new DeviceCompetitorMappingFinder.Factory(), + new MultiLogAnalyzer.MapWithValueCollectionReducer, List>>(), + logs).analyze().values()) { for (DeviceMapping mapping : list) { result.add(convertToDeviceMappingDTO(mapping)); } } - for (List> list : new DeviceMarkMappingFinder<>(raceLog).analyze().values()) { + for (List> list : new MultiLogAnalyzer<>( + new DeviceMarkMappingFinder.Factory(), + new MultiLogAnalyzer.MapWithValueCollectionReducer, List>>(), + logs).analyze().values()) { for (DeviceMapping mapping : list) { result.add(convertToDeviceMappingDTO(mapping)); } @@ -4961,6 +4979,19 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S return result; } + @Override + public List getDeviceMappingsFromLogHierarchy(String leaderboardName, String raceColumnName, + String fleetName) throws TransformationException { + return getDeviceMappingsFromLogs(getLogHierarchy(leaderboardName, raceColumnName, fleetName)); + } + + @Override + public List getDeviceMappingsFromRaceLog(String leaderboardName, String raceColumnName, + String fleetName) throws TransformationException { + RaceLog raceLog = getRaceLog(leaderboardName, raceColumnName, fleetName); + return getDeviceMappingsFromLogs(Collections.>singletonList(raceLog)); + } + @Override public void addDeviceMappingToRaceLog(String leaderboardName, String raceColumnName, String fleetName, DeviceMappingDTO dto) throws NoCorrespondingServiceRegisteredException, TransformationException {