Should fix the race xml issues where boats get unassigned sometimes.
This removes the static raceServer stuff. The Race/Boat/Regatta XML commands only execute if they contain newer data (it checks the sequence number).
This commit is contained in:
@@ -24,7 +24,6 @@ import java.util.logging.Logger;
|
||||
public class RaceServer {
|
||||
private MockRace race;
|
||||
private LatestMessages latestMessages;
|
||||
private static RaceServer server;
|
||||
private List<YachtEvent> collisionEvents = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -50,16 +49,10 @@ public class RaceServer {
|
||||
|
||||
|
||||
public RaceServer(MockRace race, LatestMessages latestMessages) {
|
||||
server = this;
|
||||
this.race = race;
|
||||
this.latestMessages = latestMessages;
|
||||
}
|
||||
|
||||
public static void staticUpdateXML() {
|
||||
if (server != null) {
|
||||
server.updateXMLFiles();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the race to create a snapshot, and places it in latestMessages.
|
||||
|
||||
@@ -157,7 +157,6 @@ public class LatestMessages extends Observable {
|
||||
return false;
|
||||
|
||||
} else {
|
||||
RaceServer.staticUpdateXML();
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@@ -183,6 +183,10 @@ public class BoatXMLReader extends XMLReader implements BoatDataSource {
|
||||
return sequenceNumber;
|
||||
}
|
||||
|
||||
public void setSequenceNumber(int sequenceNumber) {
|
||||
this.sequenceNumber = sequenceNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementSequenceNumber() {
|
||||
sequenceNumber++;
|
||||
|
||||
@@ -499,6 +499,10 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
|
||||
return sequenceNumber;
|
||||
}
|
||||
|
||||
public void setSequenceNumber(int sequenceNumber) {
|
||||
this.sequenceNumber = sequenceNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementSequenceNumber() {
|
||||
sequenceNumber++;
|
||||
|
||||
@@ -217,6 +217,10 @@ public class RegattaXMLReader extends XMLReader implements RegattaDataSource {
|
||||
return sequenceNumber;
|
||||
}
|
||||
|
||||
public void setSequenceNumber(int sequenceNumber) {
|
||||
this.sequenceNumber = sequenceNumber;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void incrementSequenceNumber() {
|
||||
sequenceNumber++;
|
||||
|
||||
+3
-3
@@ -41,8 +41,8 @@ public class BoatsXMLMessageCommand implements Command {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
|
||||
visualiserRace.setBoatDataSource(boatDataSource);
|
||||
|
||||
if (boatDataSource.getSequenceNumber() > visualiserRace.getBoatDataSource().getSequenceNumber()) {
|
||||
visualiserRace.setBoatDataSource(boatDataSource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -38,7 +38,9 @@ public class RaceXMLMessageCommand implements Command {
|
||||
@Override
|
||||
public void execute() {
|
||||
|
||||
visualiserRace.setRaceDataSource(raceDataSource);
|
||||
if (raceDataSource.getSequenceNumber() > visualiserRace.getRaceDataSource().getSequenceNumber()) {
|
||||
visualiserRace.setRaceDataSource(raceDataSource);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -37,8 +37,9 @@ public class RegattaXMLMessageCommand implements Command {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
|
||||
visualiserRace.setRegattaDataSource(regattaDataSource);
|
||||
if (regattaDataSource.getSequenceNumber() > visualiserRace.getRegattaDataSource().getSequenceNumber()) {
|
||||
visualiserRace.setRegattaDataSource(regattaDataSource);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+6
-3
@@ -34,17 +34,20 @@ public class XMLMessageCommandFactory {
|
||||
switch (message.getXmlMsgSubType()) {
|
||||
|
||||
case BOAT:
|
||||
BoatDataSource boatDataSource = new BoatXMLReader(message.getXmlMessage(), XMLFileType.Contents);
|
||||
BoatXMLReader boatDataSource = new BoatXMLReader(message.getXmlMessage(), XMLFileType.Contents);
|
||||
boatDataSource.setSequenceNumber(message.getSequenceNumber());
|
||||
return new BoatsXMLMessageCommand(boatDataSource, visualiserRace);
|
||||
|
||||
|
||||
case RACE:
|
||||
RaceDataSource raceDataSource = new RaceXMLReader(message.getXmlMessage(), XMLFileType.Contents);
|
||||
RaceXMLReader raceDataSource = new RaceXMLReader(message.getXmlMessage(), XMLFileType.Contents);
|
||||
raceDataSource.setSequenceNumber(message.getSequenceNumber());
|
||||
return new RaceXMLMessageCommand(raceDataSource, visualiserRace);
|
||||
|
||||
|
||||
case REGATTA:
|
||||
RegattaDataSource regattaDataSource = new RegattaXMLReader(message.getXmlMessage(), XMLFileType.Contents);
|
||||
RegattaXMLReader regattaDataSource = new RegattaXMLReader(message.getXmlMessage(), XMLFileType.Contents);
|
||||
regattaDataSource.setSequenceNumber(message.getSequenceNumber());
|
||||
return new RegattaXMLMessageCommand(regattaDataSource, visualiserRace);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user