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).
main
fjc40 8 years ago
parent acd99f58cd
commit 424cd63c59

@ -24,7 +24,6 @@ import java.util.logging.Logger;
public class RaceServer { public class RaceServer {
private MockRace race; private MockRace race;
private LatestMessages latestMessages; private LatestMessages latestMessages;
private static RaceServer server;
private List<YachtEvent> collisionEvents = new ArrayList<>(); private List<YachtEvent> collisionEvents = new ArrayList<>();
@ -50,16 +49,10 @@ public class RaceServer {
public RaceServer(MockRace race, LatestMessages latestMessages) { public RaceServer(MockRace race, LatestMessages latestMessages) {
server = this;
this.race = race; this.race = race;
this.latestMessages = latestMessages; this.latestMessages = latestMessages;
} }
public static void staticUpdateXML() {
if (server != null) {
server.updateXMLFiles();
}
}
/** /**
* Parses the race to create a snapshot, and places it in latestMessages. * Parses the race to create a snapshot, and places it in latestMessages.

@ -157,11 +157,10 @@ public class LatestMessages extends Observable {
return false; return false;
} else { } else {
RaceServer.staticUpdateXML();
return true; return true;
} }
} }
} }

@ -183,6 +183,10 @@ public class BoatXMLReader extends XMLReader implements BoatDataSource {
return sequenceNumber; return sequenceNumber;
} }
public void setSequenceNumber(int sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}
@Override @Override
public void incrementSequenceNumber() { public void incrementSequenceNumber() {
sequenceNumber++; sequenceNumber++;

@ -499,6 +499,10 @@ public class RaceXMLReader extends XMLReader implements RaceDataSource {
return sequenceNumber; return sequenceNumber;
} }
public void setSequenceNumber(int sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}
@Override @Override
public void incrementSequenceNumber() { public void incrementSequenceNumber() {
sequenceNumber++; sequenceNumber++;

@ -217,6 +217,10 @@ public class RegattaXMLReader extends XMLReader implements RegattaDataSource {
return sequenceNumber; return sequenceNumber;
} }
public void setSequenceNumber(int sequenceNumber) {
this.sequenceNumber = sequenceNumber;
}
@Override @Override
public void incrementSequenceNumber() { public void incrementSequenceNumber() {
sequenceNumber++; sequenceNumber++;

@ -41,8 +41,8 @@ public class BoatsXMLMessageCommand implements Command {
@Override @Override
public void execute() { public void execute() {
if (boatDataSource.getSequenceNumber() > visualiserRace.getBoatDataSource().getSequenceNumber()) {
visualiserRace.setBoatDataSource(boatDataSource); visualiserRace.setBoatDataSource(boatDataSource);
}
} }
} }

@ -38,7 +38,9 @@ public class RaceXMLMessageCommand implements Command {
@Override @Override
public void execute() { public void execute() {
visualiserRace.setRaceDataSource(raceDataSource); if (raceDataSource.getSequenceNumber() > visualiserRace.getRaceDataSource().getSequenceNumber()) {
visualiserRace.setRaceDataSource(raceDataSource);
}
} }
} }

@ -37,8 +37,9 @@ public class RegattaXMLMessageCommand implements Command {
@Override @Override
public void execute() { public void execute() {
if (regattaDataSource.getSequenceNumber() > visualiserRace.getRegattaDataSource().getSequenceNumber()) {
visualiserRace.setRegattaDataSource(regattaDataSource); visualiserRace.setRegattaDataSource(regattaDataSource);
}
} }
} }

@ -34,17 +34,20 @@ public class XMLMessageCommandFactory {
switch (message.getXmlMsgSubType()) { switch (message.getXmlMsgSubType()) {
case BOAT: 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); return new BoatsXMLMessageCommand(boatDataSource, visualiserRace);
case RACE: 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); return new RaceXMLMessageCommand(raceDataSource, visualiserRace);
case REGATTA: 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); return new RegattaXMLMessageCommand(regattaDataSource, visualiserRace);

Loading…
Cancel
Save