From 86d4bdea462fad4939b558d2c377f410801b9bd4 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Wed, 16 Jul 2014 17:18:14 +0200 Subject: [PATCH] let RecordCompetitorGPSFix only transmit competitor ID instead of full competitor, reducing message size for mass data --- .../sap/sailing/domain/base/RaceDefinition.java | 4 ++++ .../domain/base/impl/RaceDefinitionImpl.java | 17 ++++++++++------- .../gwt/ui/adminconsole/ReplicationPanel.java | 2 +- .../RecordCompetitorGPSFix.java | 7 +++++-- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceDefinition.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceDefinition.java index 9cde39936a9..40e7bddd570 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceDefinition.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/RaceDefinition.java @@ -1,5 +1,7 @@ package com.sap.sailing.domain.base; +import java.io.Serializable; + import com.sap.sailing.domain.common.WithID; import com.sap.sse.common.Named; @@ -21,4 +23,6 @@ public interface RaceDefinition extends Named, WithID { Course getCourse(); Iterable getCompetitors(); + + Competitor getCompetitorById(Serializable competitorID); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceDefinitionImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceDefinitionImpl.java index 672c5879e8f..26b86e85960 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceDefinitionImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/base/impl/RaceDefinitionImpl.java @@ -1,8 +1,7 @@ package com.sap.sailing.domain.base.impl; import java.io.Serializable; -import java.util.LinkedHashSet; -import java.util.Set; +import java.util.LinkedHashMap; import com.sap.sailing.domain.base.BoatClass; import com.sap.sailing.domain.base.Competitor; @@ -13,7 +12,7 @@ import com.sap.sailing.domain.common.impl.NamedImpl; public class RaceDefinitionImpl extends NamedImpl implements RaceDefinition { private static final long serialVersionUID = -1900955198751393727L; private final Course course; - private final Iterable competitors; + private final LinkedHashMap competitorsById; private final BoatClass boatClass; private final Serializable id; @@ -26,11 +25,10 @@ public class RaceDefinitionImpl extends NamedImpl implements RaceDefinition { assert name != null; this.course = course; - Set competitorsAsLinkedHashSet = new LinkedHashSet(); + this.competitorsById = new LinkedHashMap<>(); for (Competitor competitor : competitors) { - competitorsAsLinkedHashSet.add(competitor); + competitorsById.put(competitor.getId(), competitor); } - this.competitors = competitorsAsLinkedHashSet; this.boatClass = boatClass; this.id = id; } @@ -47,7 +45,12 @@ public class RaceDefinitionImpl extends NamedImpl implements RaceDefinition { @Override public Iterable getCompetitors() { - return competitors; + return competitorsById.values(); + } + + @Override + public Competitor getCompetitorById(Serializable competitorID) { + return competitorsById.get(competitorID); } @Override diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ReplicationPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ReplicationPanel.java index 3b141672ecc..eed1683ec07 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ReplicationPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ReplicationPanel.java @@ -234,7 +234,7 @@ public class ReplicationPanel extends FlowPanel { i++; registeredReplicas.insertRow(i); registeredReplicas.setWidget(i, 1, new Label(stringMessages.totalSize())); - registeredReplicas.setWidget(i, 2, new Label(""+replica.getNumberOfBytesSent()+"b ("+replica.getNumberOfBytesSent()/1000.0+"kB)")); + registeredReplicas.setWidget(i, 2, new Label(""+replica.getNumberOfBytesSent()+"B ("+replica.getNumberOfBytesSent()/1024.0/1024.0+"MB)")); i++; for (Map.Entry e : replica.getOperationCountByOperationClassName().entrySet()) { registeredReplicas.insertRow(i); diff --git a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java index 9b674d723d6..d36e67c31bd 100755 --- a/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java +++ b/java/com.sap.sailing.server/src/com/sap/sailing/server/operationaltransformation/RecordCompetitorGPSFix.java @@ -1,5 +1,7 @@ package com.sap.sailing.server.operationaltransformation; +import java.io.Serializable; + import com.sap.sailing.domain.base.Competitor; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.tracking.DynamicTrackedRace; @@ -9,12 +11,12 @@ import com.sap.sailing.server.RacingEventServiceOperation; public class RecordCompetitorGPSFix extends AbstractRaceOperation { private static final long serialVersionUID = 5847067037829132465L; - private final Competitor competitor; + private final Serializable competitorID; private final GPSFixMoving gpsFix; public RecordCompetitorGPSFix(RegattaAndRaceIdentifier raceIdentifier, Competitor competitor, GPSFixMoving gpsFix) { super(raceIdentifier); - this.competitor = competitor; + this.competitorID = competitor.getId(); this.gpsFix = gpsFix; } @@ -30,6 +32,7 @@ public class RecordCompetitorGPSFix extends AbstractRaceOperation { @Override public Void internalApplyTo(RacingEventService toState) throws Exception { DynamicTrackedRace trackedRace = (DynamicTrackedRace) toState.getTrackedRace(getRaceIdentifier()); + Competitor competitor = trackedRace.getRace().getCompetitorById(competitorID); trackedRace.recordFix(competitor, gpsFix); return null; }