mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-15 14:56:41 +00:00
remoteurl is only transmitted once, filled with remoteserver if not
transitivly filled (not used yet, but for future compability)
This commit is contained in:
1 parent
87019ad480
commit
f39eb531db
7 files changed
+91
-23
No files matched your search
+5
-5
@@ -1648,7 +1648,7 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
newValue.append("leaderboardName", anniversary.getValue().getLeaderboardName());
|
||||
newValue.append("startOfRace", anniversary.getValue().getStartOfRace());
|
||||
newValue.append("eventID", anniversary.getValue().getEventID().toString());
|
||||
newValue.append("remoteUrl", anniversary.getValue().getRemoteName());
|
||||
newValue.append("remoteUrl", anniversary.getValue().getRemoteUrl());
|
||||
anniversarysStored.update(currentProxy, newValue, true, false);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@@ -1670,13 +1670,13 @@ public class MongoObjectFactoryImpl implements MongoObjectFactory {
|
||||
String race = toLoad.get("race").toString();
|
||||
String regatta = toLoad.get("regatta").toString();
|
||||
Object rurl = toLoad.get("remoteUrl");
|
||||
final String remoteName;
|
||||
final String remoteUrlOrNull;
|
||||
if (rurl != null) {
|
||||
remoteName = rurl.toString();
|
||||
remoteUrlOrNull = rurl.toString();
|
||||
} else {
|
||||
remoteName = null;
|
||||
remoteUrlOrNull = null;
|
||||
}
|
||||
DetailedRaceInfo loadedAnniversary = new DetailedRaceInfo(new RegattaNameAndRaceName(regatta, race), leaderboardName , startOfRace, UUID.fromString(eventID), remoteName);
|
||||
DetailedRaceInfo loadedAnniversary = new DetailedRaceInfo(new RegattaNameAndRaceName(regatta, race), leaderboardName , startOfRace, UUID.fromString(eventID), remoteUrlOrNull);
|
||||
int anniversary = ((Number) toLoad.get("anniversary")).intValue();
|
||||
fromDb.put(anniversary, loadedAnniversary);
|
||||
}
|
||||
|
||||
+2
-2
@@ -14,8 +14,8 @@ public class DetailedRaceInfo extends SimpleRaceInfo {
|
||||
private final UUID eventID;
|
||||
|
||||
public DetailedRaceInfo(RegattaAndRaceIdentifier identifier, String leaderboardName, Date startOfRace,
|
||||
UUID eventId, String remoteName) {
|
||||
super(identifier, startOfRace, remoteName);
|
||||
UUID eventId, String remoteUrl) {
|
||||
super(identifier, startOfRace,remoteUrl);
|
||||
if (leaderboardName == null || eventId == null) {
|
||||
throw new IllegalStateException("DetailedRaceInfo Data is not allowed to contain any null values!");
|
||||
}
|
||||
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
package com.sap.sailing.server.gateway.serialization.impl;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.anniversary.DetailedRaceInfo;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class DetailedRaceInfoJsonSerializer implements JsonSerializer<DetailedRaceInfo>, JsonDeserializer<DetailedRaceInfo> {
|
||||
|
||||
public static final String FIELD_EVENT_ID = "eventID";
|
||||
public static final String FIELD_LEADERBOARD_NAME = "leaderboardName";
|
||||
private static final String FIELD_REMOTEURL = "remoteUrl";
|
||||
|
||||
@Override
|
||||
public JSONObject serialize(DetailedRaceInfo object) {
|
||||
JSONObject result = new JSONObject();
|
||||
result.put(FIELD_EVENT_ID, object.getEventID().toString());
|
||||
result.put(SimpleRaceInfoJsonSerializer.FIELD_RACE_NAME, object.getIdentifier().getRaceName());
|
||||
result.put(SimpleRaceInfoJsonSerializer.FIELD_REGATTA_NAME, object.getIdentifier().getRegattaName());
|
||||
result.put(FIELD_LEADERBOARD_NAME, object.getLeaderboardName());
|
||||
result.put(SimpleRaceInfoJsonSerializer.FIELD_START_OF_RACE, object.getStartOfRace());
|
||||
result.put(FIELD_REMOTEURL, object.getRemoteUrl());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DetailedRaceInfo deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
String eventId = object.get(FIELD_EVENT_ID).toString();
|
||||
String raceName = object.get(SimpleRaceInfoJsonSerializer.FIELD_RACE_NAME).toString();
|
||||
String regattaName = object.get(SimpleRaceInfoJsonSerializer.FIELD_REGATTA_NAME).toString();
|
||||
String leaderboardName = object.get(FIELD_LEADERBOARD_NAME).toString();
|
||||
Date startOfRace = (Date) object.get(SimpleRaceInfoJsonSerializer.FIELD_START_OF_RACE);
|
||||
String remoteUrl = (String) object.get(FIELD_REMOTEURL);
|
||||
return new DetailedRaceInfo(new RegattaNameAndRaceName(regattaName, raceName), leaderboardName, startOfRace, UUID.fromString(eventId),remoteUrl);
|
||||
}
|
||||
}
|
||||
+3
-5
@@ -7,10 +7,9 @@ import org.json.simple.JSONObject;
|
||||
import com.sap.sailing.domain.anniversary.SimpleRaceInfo;
|
||||
import com.sap.sailing.domain.common.RegattaNameAndRaceName;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException;
|
||||
import com.sap.sailing.server.gateway.deserialization.JsonDeserializer;
|
||||
import com.sap.sailing.server.gateway.serialization.JsonSerializer;
|
||||
|
||||
public class SimpleRaceInfoJsonSerializer implements JsonSerializer<SimpleRaceInfo>,JsonDeserializer<SimpleRaceInfo> {
|
||||
public class SimpleRaceInfoJsonSerializer implements JsonSerializer<SimpleRaceInfo> {
|
||||
|
||||
public static final String FIELD_RACE_NAME = "raceName";
|
||||
public static final String FIELD_REGATTA_NAME = "regattaName";
|
||||
@@ -25,11 +24,10 @@ public class SimpleRaceInfoJsonSerializer implements JsonSerializer<SimpleRaceIn
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SimpleRaceInfo deserialize(JSONObject object) throws JsonDeserializationException {
|
||||
public SimpleRaceInfo deserialize(JSONObject object,String remoteUrl) throws JsonDeserializationException {
|
||||
String raceName = object.get(SimpleRaceInfoJsonSerializer.FIELD_RACE_NAME).toString();
|
||||
String regattaName = object.get(SimpleRaceInfoJsonSerializer.FIELD_REGATTA_NAME).toString();
|
||||
Date startOfRace = new Date(((Number)object.get(SimpleRaceInfoJsonSerializer.FIELD_START_OF_RACE)).longValue());
|
||||
return new SimpleRaceInfo(new RegattaNameAndRaceName(regattaName, raceName), startOfRace, /* remoteName */ null);
|
||||
return new SimpleRaceInfo(new RegattaNameAndRaceName(regattaName, raceName), startOfRace,remoteUrl);
|
||||
}
|
||||
}
|
||||
+22
-3
@@ -4,7 +4,9 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.Path;
|
||||
@@ -14,6 +16,7 @@ import javax.ws.rs.core.Response;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONAware;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import com.sap.sailing.domain.anniversary.SimpleRaceInfo;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
@@ -32,11 +35,26 @@ public class TrackedRaceListResource extends AbstractSailingServerResource {
|
||||
*/
|
||||
@GET
|
||||
@Produces(CONTENT_TYPE_JSON_UTF8)
|
||||
@Path("localRaces")
|
||||
@Path("getRaces")
|
||||
public Response raceList() {
|
||||
JSONArray json = new JSONArray();
|
||||
HashMap<String,List<SimpleRaceInfo>> raceData = new HashMap<>();
|
||||
//replace with transitive call later!
|
||||
for (SimpleRaceInfo entry : getService().getLocalRaceList().values()) {
|
||||
json.add(simpleRaceListJsonSerializer.serialize(entry));
|
||||
String remoteUrl = entry.getRemoteUrl();
|
||||
List<SimpleRaceInfo> remoteList = raceData.get(remoteUrl);
|
||||
if(remoteList == null){
|
||||
remoteList = new ArrayList<>();
|
||||
raceData.put(remoteUrl, remoteList);
|
||||
}
|
||||
remoteList.add(entry);
|
||||
}
|
||||
JSONObject json = new JSONObject();
|
||||
for(Entry<String, List<SimpleRaceInfo>> raced:raceData.entrySet()){
|
||||
JSONArray list = new JSONArray();
|
||||
for(SimpleRaceInfo simpleRaceInfo:raced.getValue()){
|
||||
list.add(simpleRaceListJsonSerializer.serialize(simpleRaceInfo));
|
||||
}
|
||||
json.put(raced.getKey() , list);
|
||||
}
|
||||
return getJsonResponse(json);
|
||||
}
|
||||
@@ -65,6 +83,7 @@ public class TrackedRaceListResource extends AbstractSailingServerResource {
|
||||
SimpleRaceInfo current = sorted.get(i);
|
||||
JSONArray single = new JSONArray();
|
||||
single.add(String.valueOf(i));
|
||||
single.add(current.getRemoteUrl());
|
||||
single.add(simpleRaceListJsonSerializer.serialize(current));
|
||||
json.add(single);
|
||||
|
||||
|
||||
+1
-1
@@ -3849,7 +3849,7 @@ public class RacingEventServiceImpl implements RacingEventService, ClearStateTes
|
||||
RegattaAndRaceIdentifier raceIdentifier = trackedRace.getRaceIdentifier();
|
||||
final TimePoint startOfRace = trackedRace.getStartOfRace();
|
||||
if (startOfRace != null) {
|
||||
SimpleRaceInfo raceInfo = new SimpleRaceInfo(raceIdentifier, startOfRace.asDate(), /* remoteName */ null);
|
||||
SimpleRaceInfo raceInfo = new SimpleRaceInfo(raceIdentifier, startOfRace.asDate(), "");
|
||||
store.put(raceInfo.getIdentifier(), raceInfo);
|
||||
}
|
||||
}
|
||||
|
||||
+16
-7
@@ -12,6 +12,7 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
@@ -134,15 +135,23 @@ public class RemoteSailingServerSet {
|
||||
logger.fine("Updating racelist for remote server " + ref + " from URL " + raceListURL);
|
||||
URLConnection urlConnection = HttpUrlConnectionHelper.redirectConnection(raceListURL);
|
||||
bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));
|
||||
JSONParser parser = new JSONParser();
|
||||
Object racesAsObject = parser.parse(bufferedReader);
|
||||
SimpleRaceInfoJsonSerializer deserializer = new SimpleRaceInfoJsonSerializer();
|
||||
JSONArray racesAsJsonArray = (JSONArray) racesAsObject;
|
||||
|
||||
final Set<SimpleRaceInfo> races = new HashSet<>();
|
||||
for (Object raceAsObject : racesAsJsonArray) {
|
||||
JSONObject raceAsJson = (JSONObject) raceAsObject;
|
||||
SimpleRaceInfo event = deserializer.deserialize(raceAsJson);
|
||||
races.add(event);
|
||||
|
||||
JSONParser parser = new JSONParser();
|
||||
JSONObject racesGroupedByRemoteAsObject = (JSONObject) parser.parse(bufferedReader);
|
||||
for(Entry<Object, Object> racesGroupdByRemote:racesGroupedByRemoteAsObject.entrySet()){
|
||||
String remoteUrl = (String) racesGroupdByRemote.getKey();
|
||||
if(remoteUrl.isEmpty()){
|
||||
remoteUrl = ref.getURL().toExternalForm();
|
||||
}
|
||||
JSONArray raceListForOneRemote = (JSONArray) racesGroupdByRemote.getValue();
|
||||
for(Object remoteRace:raceListForOneRemote){
|
||||
JSONObject remoteRaceAsJson = (JSONObject) remoteRace;
|
||||
SimpleRaceInfo event = deserializer.deserialize(remoteRaceAsJson,remoteUrl);
|
||||
races.add(event);
|
||||
}
|
||||
}
|
||||
result = new Util.Pair<Iterable<SimpleRaceInfo>, Exception>(races, /* exception */ null);
|
||||
} finally {
|
||||
|
||||
Reference in new issue
Block a user