From c1a847c7001ec6038e3ddc409dd057dc07a51a23 Mon Sep 17 00:00:00 2001 From: "Begerad, Stefan" Date: Mon, 24 Jan 2022 06:21:21 -0500 Subject: [PATCH] feat: enable empty telegrams --- pom.xml | 2 +- .../swingbe/ifleet/model/Communication.java | 10 +++--- .../java/de/swingbe/ifleet/model/Entity.java | 23 ++++++------ .../java/de/swingbe/ifleet/model/Header.java | 9 ++--- .../swingbe/ifleet/model/LocationMessage.java | 7 ++-- .../de/swingbe/ifleet/model/Receiver.java | 7 ++-- .../java/de/swingbe/ifleet/model/Sender.java | 7 ++-- .../de/swingbe/ifleet/model/Telegram.java | 9 ++--- .../swingbe/ifleet/parser/ComParserImpl.java | 9 +---- .../ifleet/parser/EntityParserImpl.java | 15 ++++---- .../ifleet/parser/HeaderParserImpl.java | 8 +---- .../ifleet/parser/LocationMsgParserImpl.java | 12 +------ .../ifleet/parser/PositionParserImpl.java | 36 +++++++++++-------- .../ifleet/parser/TelegramHdrParserImpl.java | 7 ++-- .../ifleet/parser/TelegramParserImpl.java | 10 ++---- 15 files changed, 78 insertions(+), 93 deletions(-) diff --git a/pom.xml b/pom.xml index f9d4bc9..15d196e 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ de.swingbe.ifleet tgp - 0.0.4 + 0.0.6 This project is a library for parsing ifleet telegrams in Java. diff --git a/src/main/java/de/swingbe/ifleet/model/Communication.java b/src/main/java/de/swingbe/ifleet/model/Communication.java index 32b2ed0..8b58cd9 100644 --- a/src/main/java/de/swingbe/ifleet/model/Communication.java +++ b/src/main/java/de/swingbe/ifleet/model/Communication.java @@ -20,10 +20,12 @@ public class Communication { @Override public String toString() { - return "Communication{" + - "header=" + header + - ", telegram=" + telegram + - '}'; + String ccString = "Communication{"; + ccString += header != null ? "header=" + header : ""; + ccString += telegram != null ? "telegram=" + telegram : ""; + ccString += '}'; + return ccString; + } } diff --git a/src/main/java/de/swingbe/ifleet/model/Entity.java b/src/main/java/de/swingbe/ifleet/model/Entity.java index d2dfce6..f6e18e6 100644 --- a/src/main/java/de/swingbe/ifleet/model/Entity.java +++ b/src/main/java/de/swingbe/ifleet/model/Entity.java @@ -61,17 +61,18 @@ public class Entity { @Override public String toString() { - return "Entity{" + - "date='" + date + '\'' + - ", time='" + time + '\'' + - ", logLevel='" + logLevel + '\'' + - ", addressPartA='" + addressPartA + '\'' + - ", addressPartB='" + addressPartB + '\'' + - ", peer='" + peer + '\'' + - ", addressNext='" + addressNext + '\'' + - ", direction='" + direction + '\'' + - ", cc=" + cc + - '}'; + String eString = "Entity{"; + eString += date != null ? "date='" + date + '\'' : ""; + eString += time != null ? ", time='" + time + '\'' : ""; + eString += logLevel != null ? ", logLevel='" + logLevel + '\'' : ""; + eString += addressPartA != null ? ", addressPartA='" + addressPartA + '\'' : ""; + eString += addressPartB != null ? ", addressPartB='" + addressPartB + '\'' : ""; + eString += peer != null ? ", peer='" + peer + '\'' : ""; + eString += addressNext != null ? ", addressNext='" + addressNext + '\'' : ""; + eString += direction != null ? ", direction='" + direction + '\'' : ""; + eString += cc != null ? ", cc=" + cc : ""; + eString += '}'; + return eString; } } diff --git a/src/main/java/de/swingbe/ifleet/model/Header.java b/src/main/java/de/swingbe/ifleet/model/Header.java index 5dc7355..d18aba5 100644 --- a/src/main/java/de/swingbe/ifleet/model/Header.java +++ b/src/main/java/de/swingbe/ifleet/model/Header.java @@ -20,9 +20,10 @@ public class Header { @Override public String toString() { - return "Header{" + - "sender=" + sender + - ", receiver=" + receiver + - '}'; + String hString = "Header{"; + hString += sender != null ? "sender=" + sender : ""; + hString += receiver != null ? ", receiver=" + receiver : ""; + hString += '}'; + return hString; } } diff --git a/src/main/java/de/swingbe/ifleet/model/LocationMessage.java b/src/main/java/de/swingbe/ifleet/model/LocationMessage.java index 547042a..a0c4c7a 100644 --- a/src/main/java/de/swingbe/ifleet/model/LocationMessage.java +++ b/src/main/java/de/swingbe/ifleet/model/LocationMessage.java @@ -14,8 +14,9 @@ public class LocationMessage { @Override public String toString() { - return "LocationMessage{" + - "position=" + position + - '}'; + String positionString = "LocationMessage{"; + positionString += position != null ? "position=" + position : ""; + positionString += '}'; + return positionString; } } diff --git a/src/main/java/de/swingbe/ifleet/model/Receiver.java b/src/main/java/de/swingbe/ifleet/model/Receiver.java index a3d4961..a306391 100644 --- a/src/main/java/de/swingbe/ifleet/model/Receiver.java +++ b/src/main/java/de/swingbe/ifleet/model/Receiver.java @@ -14,8 +14,9 @@ public class Receiver { @Override public String toString() { - return "Receiver{" + - "receiver='" + receiver + '\'' + - '}'; + String rString = "Receiver{"; + rString += receiver != null ? "receiver='" + receiver + '\'' : ""; + rString += '}'; + return rString; } } diff --git a/src/main/java/de/swingbe/ifleet/model/Sender.java b/src/main/java/de/swingbe/ifleet/model/Sender.java index 1a8272d..2666106 100644 --- a/src/main/java/de/swingbe/ifleet/model/Sender.java +++ b/src/main/java/de/swingbe/ifleet/model/Sender.java @@ -14,8 +14,9 @@ public class Sender { @Override public String toString() { - return "Sender{" + - "sender='" + sender + '\'' + - '}'; + String sString = "Sender{"; + sString += sender != null ? "sender='" + sender + '\'' : ""; + sString += '}'; + return sString; } } diff --git a/src/main/java/de/swingbe/ifleet/model/Telegram.java b/src/main/java/de/swingbe/ifleet/model/Telegram.java index 13e20ff..f4545ea 100644 --- a/src/main/java/de/swingbe/ifleet/model/Telegram.java +++ b/src/main/java/de/swingbe/ifleet/model/Telegram.java @@ -20,9 +20,10 @@ public class Telegram { @Override public String toString() { - return "Telegram{" + - "teleHeader=" + teleHeader + - ", locationMessage=" + locationMessage + - '}'; + String telegramString = "Telegram{"; + telegramString += teleHeader != null ? "teleHeader=" + teleHeader : ""; + telegramString += locationMessage != null ? ", locationMessage=" + locationMessage : ""; + telegramString += '}'; + return telegramString; } } diff --git a/src/main/java/de/swingbe/ifleet/parser/ComParserImpl.java b/src/main/java/de/swingbe/ifleet/parser/ComParserImpl.java index 56d4262..5a2f4b8 100644 --- a/src/main/java/de/swingbe/ifleet/parser/ComParserImpl.java +++ b/src/main/java/de/swingbe/ifleet/parser/ComParserImpl.java @@ -40,7 +40,6 @@ class ComParserImpl implements ComParser { @Override public Communication parse(final String input) { - Communication com = null; Header header = null; Telegram telegram = null; @@ -59,12 +58,6 @@ class ComParserImpl implements ComParser { LOG.warn("telegram NOT included"); } - //create Communication - if (telegram != null && header != null) { - com = new Communication(header, telegram); - } else { - LOG.warn("telegram NOT available"); - } - return com; + return new Communication(header, telegram); } } diff --git a/src/main/java/de/swingbe/ifleet/parser/EntityParserImpl.java b/src/main/java/de/swingbe/ifleet/parser/EntityParserImpl.java index ca2ac98..2b753ab 100644 --- a/src/main/java/de/swingbe/ifleet/parser/EntityParserImpl.java +++ b/src/main/java/de/swingbe/ifleet/parser/EntityParserImpl.java @@ -13,7 +13,6 @@ class EntityParserImpl implements EntityParser { @Override public Entity parse(final String input) { - Entity entity = null; String[] splits = input.split(" "); //parse date @@ -39,13 +38,14 @@ class EntityParserImpl implements EntityParser { //parse addressPartA String addressPartA = null; if (splits.length > 4) { - addressPartA = splits[4]; + addressPartA = splits[4].replaceFirst("\\[", ""); } //parse addressPartB String addressPartB = null; if (splits.length > 5) { - addressPartB = splits[5]; + addressPartB = splits[5].replaceFirst("/", "") + .replaceFirst("\\]", ""); } //parse peer @@ -56,7 +56,7 @@ class EntityParserImpl implements EntityParser { //parse address next String addressNext = null; if (splits.length > 7) { - addressNext = splits[7]; + addressNext = splits[7].replaceFirst("/", ""); } //parse direction String direction = null; @@ -71,10 +71,7 @@ class EntityParserImpl implements EntityParser { communication = ComParserFactory.createComParser().parse(inputSup); } - if (date != null && time != null && logLevel != null && addressPartA != null && addressPartB != null && peer != null && addressNext != null && direction != null && communication != null) { - entity = new Entity(date, time, logLevel, addressPartA, addressPartB, peer, addressNext, direction, communication); - } - - return entity; + return new Entity(date, time, logLevel, addressPartA, addressPartB, peer, + addressNext, direction, communication); } } diff --git a/src/main/java/de/swingbe/ifleet/parser/HeaderParserImpl.java b/src/main/java/de/swingbe/ifleet/parser/HeaderParserImpl.java index 8122ad9..d1cbe8e 100644 --- a/src/main/java/de/swingbe/ifleet/parser/HeaderParserImpl.java +++ b/src/main/java/de/swingbe/ifleet/parser/HeaderParserImpl.java @@ -13,20 +13,14 @@ class HeaderParserImpl implements HeaderParser { public Header parse(final String input) { - Header header = null; Sender sender; - Receiver receiver; //parse Sender sender = SenderParserFactory.createSenderParser().parse(input); //parse Receiver String inputPop = popFieldFromCom(input, 2); - receiver = ReceiverParserFactory.createReceiverParser().parse(inputPop); - if (sender != null && receiver != null) { - header = new Header(sender, receiver); - } - return header; + return new Header(sender, ReceiverParserFactory.createReceiverParser().parse(inputPop)); } } diff --git a/src/main/java/de/swingbe/ifleet/parser/LocationMsgParserImpl.java b/src/main/java/de/swingbe/ifleet/parser/LocationMsgParserImpl.java index ed846e3..4a13d3f 100644 --- a/src/main/java/de/swingbe/ifleet/parser/LocationMsgParserImpl.java +++ b/src/main/java/de/swingbe/ifleet/parser/LocationMsgParserImpl.java @@ -1,20 +1,10 @@ package de.swingbe.ifleet.parser; import de.swingbe.ifleet.model.LocationMessage; -import de.swingbe.ifleet.model.Position; class LocationMsgParserImpl implements LocationMsgParser { public LocationMessage parse(String input) { - - LocationMessage locationMessage = null; - - Position position = PositionParserFactory.createPositionParser().parse(input); - if (position != null) { - locationMessage = new LocationMessage(position); - } - - return locationMessage; - + return new LocationMessage(PositionParserFactory.createPositionParser().parse(input)); } } diff --git a/src/main/java/de/swingbe/ifleet/parser/PositionParserImpl.java b/src/main/java/de/swingbe/ifleet/parser/PositionParserImpl.java index f187ab9..dc3380d 100644 --- a/src/main/java/de/swingbe/ifleet/parser/PositionParserImpl.java +++ b/src/main/java/de/swingbe/ifleet/parser/PositionParserImpl.java @@ -21,41 +21,47 @@ public class PositionParserImpl implements PositionParser { //parse NetPoint //parse RelPosition //parse lat - String lat = null; + String lat = ""; if (splits.length > 2) { lat = splits[2]; + } else { + LOG.warn("lat unavailable"); } //parse lon - String lon = null; + String lon = ""; if (splits.length > 3) { lon = splits[3]; + } else { + LOG.warn("lon unavailable"); } //parse vel - String vel = null; + String vel = ""; if (splits.length > 4) { vel = splits[4]; + } else { + LOG.warn("vel unavailable"); } //parse hdg - String hdg = null; + String hdg = ""; if (splits.length > 5) { hdg = splits[5]; + } else { + LOG.warn("hdg unavailable"); } - if (lat != null && lon != null && vel != null && hdg != null) { - boolean latIsNumeric = isNumeric(lat); - boolean lonIsNumeric = isNumeric(lon); - boolean velIsNumeric = isNumeric(vel); - boolean hdgIsNumeric = isNumeric(hdg); + boolean latIsNumeric = isNumeric(lat); + boolean lonIsNumeric = isNumeric(lon); + boolean velIsNumeric = isNumeric(vel); + boolean hdgIsNumeric = isNumeric(hdg); - if (latIsNumeric && lonIsNumeric && velIsNumeric && hdgIsNumeric) { - try { - position = new Position(Long.parseLong(lat), Long.parseLong(lon), Integer.parseInt(vel), Integer.parseInt(hdg)); - } catch (NumberFormatException e) { - LOG.error("parsing position failed, message: " + e.getMessage() + ", trace: " + Arrays.toString(e.getStackTrace())); - } + if (latIsNumeric && lonIsNumeric && velIsNumeric && hdgIsNumeric) { + try { + position = new Position(Long.parseLong(lat), Long.parseLong(lon), Integer.parseInt(vel), Integer.parseInt(hdg)); + } catch (NumberFormatException e) { + LOG.error("parsing position failed, message: " + e.getMessage() + ", trace: " + Arrays.toString(e.getStackTrace())); } } return position; diff --git a/src/main/java/de/swingbe/ifleet/parser/TelegramHdrParserImpl.java b/src/main/java/de/swingbe/ifleet/parser/TelegramHdrParserImpl.java index 2ef98bd..b0ba401 100644 --- a/src/main/java/de/swingbe/ifleet/parser/TelegramHdrParserImpl.java +++ b/src/main/java/de/swingbe/ifleet/parser/TelegramHdrParserImpl.java @@ -47,9 +47,12 @@ class TelegramHdrParserImpl implements TelegramHdrParser { if (typeIsNumeric && idIsNumeric) { try { - teleHeader = new TelegramHdr(Integer.parseInt(type), version, Integer.parseInt(id)); + teleHeader = new TelegramHdr(Integer.parseInt(type), version, + Integer.parseInt(id)); } catch (NumberFormatException e) { - LOG.error("parsing telegram header failed, message: " + e.getMessage() + ", trace: " + Arrays.toString(e.getStackTrace())); + LOG.error("parsing telegram header failed, message: " + + e.getMessage() + ", trace: " + + Arrays.toString(e.getStackTrace())); } } } diff --git a/src/main/java/de/swingbe/ifleet/parser/TelegramParserImpl.java b/src/main/java/de/swingbe/ifleet/parser/TelegramParserImpl.java index d357d4d..987da9d 100644 --- a/src/main/java/de/swingbe/ifleet/parser/TelegramParserImpl.java +++ b/src/main/java/de/swingbe/ifleet/parser/TelegramParserImpl.java @@ -1,6 +1,5 @@ package de.swingbe.ifleet.parser; -import de.swingbe.ifleet.model.LocationMessage; import de.swingbe.ifleet.model.Telegram; import de.swingbe.ifleet.model.TelegramHdr; @@ -13,17 +12,12 @@ class TelegramParserImpl implements TelegramParser { public Telegram parse(final String input) { - Telegram telegram = null; TelegramHdr teleHeader = TelegramHdrParserFactory.createTelegramHdrParser().parse(input); String inputNew = popFieldFromCom(input, 3); - LocationMessage locationMessage = LocationMsgParserFactory.createLocationMsgParer().parse(inputNew); - - if (teleHeader != null && locationMessage != null) { - telegram = new Telegram(teleHeader, locationMessage); - } - return telegram; + return new Telegram(teleHeader, + LocationMsgParserFactory.createLocationMsgParer().parse(inputNew)); } }