From 424cd63c59c8bf689f8196764bf21195b91242a4 Mon Sep 17 00:00:00 2001 From: fjc40 Date: Mon, 18 Sep 2017 12:44:10 +1200 Subject: [PATCH] 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). --- racevisionGame/src/main/java/mock/model/RaceServer.java | 7 ------- .../src/main/java/network/Messages/LatestMessages.java | 3 +-- .../src/main/java/shared/dataInput/BoatXMLReader.java | 4 ++++ .../src/main/java/shared/dataInput/RaceXMLReader.java | 4 ++++ .../src/main/java/shared/dataInput/RegattaXMLReader.java | 4 ++++ .../VisualiserRaceCommands/BoatsXMLMessageCommand.java | 6 +++--- .../VisualiserRaceCommands/RaceXMLMessageCommand.java | 4 +++- .../VisualiserRaceCommands/RegattaXMLMessageCommand.java | 5 +++-- .../VisualiserRaceCommands/XMLMessageCommandFactory.java | 9 ++++++--- 9 files changed, 28 insertions(+), 18 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/RaceServer.java b/racevisionGame/src/main/java/mock/model/RaceServer.java index 7f213a72..103e4d66 100644 --- a/racevisionGame/src/main/java/mock/model/RaceServer.java +++ b/racevisionGame/src/main/java/mock/model/RaceServer.java @@ -24,7 +24,6 @@ import java.util.logging.Logger; public class RaceServer { private MockRace race; private LatestMessages latestMessages; - private static RaceServer server; private List 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. diff --git a/racevisionGame/src/main/java/network/Messages/LatestMessages.java b/racevisionGame/src/main/java/network/Messages/LatestMessages.java index 86f02d91..8b395b1c 100644 --- a/racevisionGame/src/main/java/network/Messages/LatestMessages.java +++ b/racevisionGame/src/main/java/network/Messages/LatestMessages.java @@ -157,11 +157,10 @@ public class LatestMessages extends Observable { return false; } else { - RaceServer.staticUpdateXML(); return true; } } -} \ No newline at end of file +} diff --git a/racevisionGame/src/main/java/shared/dataInput/BoatXMLReader.java b/racevisionGame/src/main/java/shared/dataInput/BoatXMLReader.java index 25c956d9..d3e77be8 100644 --- a/racevisionGame/src/main/java/shared/dataInput/BoatXMLReader.java +++ b/racevisionGame/src/main/java/shared/dataInput/BoatXMLReader.java @@ -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++; diff --git a/racevisionGame/src/main/java/shared/dataInput/RaceXMLReader.java b/racevisionGame/src/main/java/shared/dataInput/RaceXMLReader.java index 41d60e5f..af274a9c 100644 --- a/racevisionGame/src/main/java/shared/dataInput/RaceXMLReader.java +++ b/racevisionGame/src/main/java/shared/dataInput/RaceXMLReader.java @@ -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++; diff --git a/racevisionGame/src/main/java/shared/dataInput/RegattaXMLReader.java b/racevisionGame/src/main/java/shared/dataInput/RegattaXMLReader.java index 36743105..3628c429 100644 --- a/racevisionGame/src/main/java/shared/dataInput/RegattaXMLReader.java +++ b/racevisionGame/src/main/java/shared/dataInput/RegattaXMLReader.java @@ -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++; diff --git a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatsXMLMessageCommand.java b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatsXMLMessageCommand.java index 7f56d745..ce58e8a1 100644 --- a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatsXMLMessageCommand.java +++ b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/BoatsXMLMessageCommand.java @@ -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); + } } } diff --git a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/RaceXMLMessageCommand.java b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/RaceXMLMessageCommand.java index 0b194674..dbf20544 100644 --- a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/RaceXMLMessageCommand.java +++ b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/RaceXMLMessageCommand.java @@ -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); + } } } diff --git a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/RegattaXMLMessageCommand.java b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/RegattaXMLMessageCommand.java index 6597e557..ea146d12 100644 --- a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/RegattaXMLMessageCommand.java +++ b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/RegattaXMLMessageCommand.java @@ -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); + } } } diff --git a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/XMLMessageCommandFactory.java b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/XMLMessageCommandFactory.java index b9b58f1c..c5e93d8e 100644 --- a/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/XMLMessageCommandFactory.java +++ b/racevisionGame/src/main/java/visualiser/Commands/VisualiserRaceCommands/XMLMessageCommandFactory.java @@ -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);