From 4fcd676288ac4a243dfd51a2d495a71e0ae107cb Mon Sep 17 00:00:00 2001 From: Georg Herdt Date: Mon, 9 Nov 2020 11:59:50 +0100 Subject: [PATCH] issue request that shall return only races to selected incl/excl list bug5410 --- .../server/impl/RemoteSailingServerSet.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RemoteSailingServerSet.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RemoteSailingServerSet.java index 414331de777..9d73ee72d1a 100644 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RemoteSailingServerSet.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/impl/RemoteSailingServerSet.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -187,7 +188,7 @@ public class RemoteSailingServerSet { private void updateRemoteServerTrackedRacesCacheSynchronously(RemoteSailingServerReference ref) { Util.Pair, Exception> result; try { - final URL raceListURL = getRaceListURL(ref.getURL()); + final URL raceListURL = getRaceListURL(ref); logger.fine("Updating racelist for remote server " + ref + " from URL " + raceListURL); final SimpleRaceInfoJsonSerializer deserializer = new SimpleRaceInfoJsonSerializer(); final Set races = new HashSet<>(); @@ -233,8 +234,22 @@ public class RemoteSailingServerSet { new HashSet<>(remoteRaceResultReceivedCallbacks).forEach(Runnable::run); } - private URL getRaceListURL(URL remoteServerBaseURL) throws MalformedURLException { - return getEndpointUrl(remoteServerBaseURL, "/trackedRaces/getRaces?transitive=true"); + private URL getRaceListURL(RemoteSailingServerReference ref) throws MalformedURLException { + URL remoteServerBaseURL = ref.getURL(); + String endpoint = "/trackedRaces/getRaces?transitive=true"; + if (!ref.getSelectedEventIds().isEmpty()) { + endpoint += "&events="; + + Iterator iter = ref.getSelectedEventIds().iterator(); + while (iter.hasNext()) { + endpoint += iter.next().toString(); + if (iter.hasNext()) { + endpoint += ","; + } + } + endpoint += "&pred=" + (ref.isInclude() ? "incl" : "excl"); + } + return getEndpointUrl(remoteServerBaseURL, endpoint); } private URL getEndpointUrl(URL remoteServerBaseURL, final String endpoint) throws MalformedURLException {