diff --git a/src/main/java/seng302/models/parsers/StreamPacket.java b/src/main/java/seng302/models/parsers/StreamPacket.java index 1392f4d4..fa79763d 100644 --- a/src/main/java/seng302/models/parsers/StreamPacket.java +++ b/src/main/java/seng302/models/parsers/StreamPacket.java @@ -18,11 +18,24 @@ public class StreamPacket { this.timeStamp = timeStamp; this.payload = payload; // System.out.println("type = " + type); - if (this.type == PacketType.BOAT_LOCATION){ - StreamParser.extractBoatLocation(payload); + if (this.type == PacketType.OTHER){ + System.out.println("type = " + type); +// StreamParser.extractBoatLocation(payload); } } + public PacketType getType() { + return type; + } + + public long getMessageLength() { + return messageLength; + } + + public byte[] getPayload() { + return payload; + } + public long getTimeStamp() { return timeStamp; } diff --git a/src/main/java/seng302/models/parsers/StreamParser.java b/src/main/java/seng302/models/parsers/StreamParser.java index 6dbe2d86..d29d49c8 100644 --- a/src/main/java/seng302/models/parsers/StreamParser.java +++ b/src/main/java/seng302/models/parsers/StreamParser.java @@ -19,62 +19,112 @@ import java.util.Map; */ public class StreamParser { - private static boolean isWithinTag; - public static ArrayList ids = new ArrayList<>(); + static void parseLine(StreamPacket packet) { + switch (packet.getType()){ + case HEARTBEAT: + extractHeartBeat(packet); + case RACE_STATUS: + extractRaceStatus(packet); + case DISPLAY_TEXT_MESSAGE: + extractDisplayMessage(packet); + case XML_MESSAGE: + extractXmlMessage(packet); + case RACE_START_STATUS: + extractRaceStartStatus(packet); + case YACHT_EVENT_CODE: + extractYachtEventCode(packet); + case YACHT_ACTION_CODE: + extractYachtActionCode(packet); + case CHATTER_TEXT: + extractChatterText(packet); + case BOAT_LOCATION: + extractBoatLocation(packet); + case MARK_ROUNDING: + extractMarkRounding(packet); + case COURSE_WIND: + extractCourseWind(packet); + case AVG_WIND: + extractAvgWind(packet); + } + - static void parseLine(byte[] bytes) { - //TODO overhaul all of this to treat packets as appropriate - String line = new String(bytes); - if (line.startsWith("<")){ - isWithinTag = true; - } -// System.out.println("line = ---------------------------------------------\n" + line); - if (isWithinTag) { -// try { -// Element node = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(line.getBytes())).getDocumentElement(); -// if (node.getAttributes().getNamedItem("Type") != null) { -// System.out.println(node.getAttributes().getNamedItem("Type") ); -// System.out.println(line); -// } -// } catch (Throwable e){ -//// e.printStackTrace(); -// } - } - if (line.startsWith("