feat: add build config according to example docu, introduce factory classes
This commit is contained in:
parent
099ccb0722
commit
69a0dff31e
84
pom.xml
84
pom.xml
|
@ -7,10 +7,10 @@
|
|||
|
||||
<groupId>de.swingbe.ifleet</groupId>
|
||||
<artifactId>tgp</artifactId>
|
||||
<version>0.0.2</version>
|
||||
<version>0.0.3</version>
|
||||
|
||||
<description>
|
||||
Parse ifleet telegrams.
|
||||
This project is a library for parsing ifleet telegrams in Java.
|
||||
</description>
|
||||
|
||||
<url>https://swingbe.de</url>
|
||||
|
@ -160,47 +160,47 @@
|
|||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<version>2.2.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-sources</id>
|
||||
<goals>
|
||||
<goal>jar-no-fork</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>2.9.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadocs</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-source-plugin</artifactId>
|
||||
<version>2.2.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-sources</id>
|
||||
<goals>
|
||||
<goal>jar-no-fork</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-javadoc-plugin</artifactId>
|
||||
<version>2.9.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>attach-javadocs</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>sign-artifacts</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-gpg-plugin</artifactId>
|
||||
<version>1.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>sign-artifacts</id>
|
||||
<phase>verify</phase>
|
||||
<goals>
|
||||
<goal>sign</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
|
||||
<plugin>
|
||||
<artifactId>maven-clean-plugin</artifactId>
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
package de.swingbe.ifleet;
|
||||
|
||||
import de.swingbe.ifleet.model.Entity;
|
||||
|
||||
import static de.swingbe.ifleet.model.EntityParser.parseLogEntry;
|
||||
|
||||
/**
|
||||
* Parse telegram.
|
||||
*
|
||||
* Note that this class is package-private, so that the client can not use it.
|
||||
*/
|
||||
class TelegramParserImpl implements TelegramParser {
|
||||
TelegramParserImpl() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Entity parse(String input) {
|
||||
return parseLogEntry(input);
|
||||
}
|
||||
}
|
|
@ -2,8 +2,6 @@ package de.swingbe.ifleet.model;
|
|||
|
||||
public class Communication {
|
||||
|
||||
private static final String SEP = "#";
|
||||
private static final String END = System.getProperty("line.separator");
|
||||
private final Header header;
|
||||
private final Telegram telegram;
|
||||
|
||||
|
@ -12,14 +10,6 @@ public class Communication {
|
|||
this.telegram = telegram;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Communication{" +
|
||||
"header=" + header +
|
||||
", telegram=" + telegram +
|
||||
'}';
|
||||
}
|
||||
|
||||
public Header getHeader() {
|
||||
return header;
|
||||
}
|
||||
|
@ -28,12 +18,12 @@ public class Communication {
|
|||
return telegram;
|
||||
}
|
||||
|
||||
public enum PeerType {
|
||||
I,
|
||||
B,
|
||||
C,
|
||||
K,
|
||||
G,
|
||||
R
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Communication{" +
|
||||
"header=" + header +
|
||||
", telegram=" + telegram +
|
||||
'}';
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,28 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
|
||||
public class Entity {
|
||||
private final String date;
|
||||
private final String time;
|
||||
private final String logLevel;
|
||||
private final String addressPartA;
|
||||
private final String addressPartB;
|
||||
private final String peer;
|
||||
private final String addressNext;
|
||||
private final String direction;
|
||||
private final Communication cc;
|
||||
|
||||
public Entity(String date, String time, String logLevel, String addressPartA, String addressPartB, String peer, String addressNext, String direction, Communication cc) {
|
||||
this.date = date;
|
||||
this.time = time;
|
||||
this.logLevel = logLevel;
|
||||
this.addressPartA = addressPartA;
|
||||
this.addressPartB = addressPartB;
|
||||
this.peer = peer;
|
||||
this.addressNext = addressNext;
|
||||
this.direction = direction;
|
||||
this.cc = cc;
|
||||
}
|
||||
|
||||
public String getDate() {
|
||||
return date;
|
||||
}
|
||||
|
@ -37,11 +59,6 @@ public class Entity {
|
|||
return cc;
|
||||
}
|
||||
|
||||
private final String date;
|
||||
private final String time;
|
||||
private final String logLevel;
|
||||
private final String addressPartA;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Entity{" +
|
||||
|
@ -57,22 +74,4 @@ public class Entity {
|
|||
'}';
|
||||
}
|
||||
|
||||
public Entity(String date, String time, String logLevel, String addressPartA, String addressPartB, String peer, String addressNext, String direction, Communication cc) {
|
||||
this.date = date;
|
||||
this.time = time;
|
||||
this.logLevel = logLevel;
|
||||
this.addressPartA = addressPartA;
|
||||
this.addressPartB = addressPartB;
|
||||
this.peer = peer;
|
||||
this.addressNext = addressNext;
|
||||
this.direction = direction;
|
||||
this.cc = cc;
|
||||
}
|
||||
|
||||
private final String addressPartB;
|
||||
private final String peer;
|
||||
private final String addressNext;
|
||||
private final String direction;
|
||||
private final Communication cc;
|
||||
|
||||
}
|
||||
|
|
|
@ -10,14 +10,6 @@ public class Header {
|
|||
this.receiver = receiver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Header{" +
|
||||
"sender=" + sender +
|
||||
", receiver=" + receiver +
|
||||
'}';
|
||||
}
|
||||
|
||||
public Sender getSender() {
|
||||
return sender;
|
||||
}
|
||||
|
@ -25,4 +17,12 @@ public class Header {
|
|||
public Receiver getReceiver() {
|
||||
return receiver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Header{" +
|
||||
"sender=" + sender +
|
||||
", receiver=" + receiver +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import static de.swingbe.ifleet.model.ComParser.popFieldFromCom;
|
||||
import static de.swingbe.ifleet.model.ReceiverParser.parseReceiver;
|
||||
import static de.swingbe.ifleet.model.SenderParser.parseSender;
|
||||
|
||||
public class HeaderParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(HeaderParser.class);
|
||||
|
||||
public static Header parseHeader(final String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
|
||||
Header header = null;
|
||||
Sender sender;
|
||||
Receiver receiver;
|
||||
|
||||
//parse Sender
|
||||
sender = parseSender(input);
|
||||
|
||||
//parse Receiver
|
||||
String inputPop = popFieldFromCom(input, 2);
|
||||
LOG.debug("inputPop: " + inputPop);
|
||||
receiver = parseReceiver(inputPop);
|
||||
|
||||
if (sender != null && receiver != null) {
|
||||
header = new Header(sender, receiver);
|
||||
}
|
||||
return header;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
|
||||
public class LocationMessage {
|
||||
|
||||
private final Position position;
|
||||
|
||||
public LocationMessage(Position position) {
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import static de.swingbe.ifleet.model.PositionParser.parsePosition;
|
||||
|
||||
public class LocationMessageParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(LocationMessageParser.class);
|
||||
|
||||
public static LocationMessage parseLocationMessage(String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
|
||||
LocationMessage locationMessage = null;
|
||||
|
||||
Position position = parsePosition(input);
|
||||
if (position != null) {
|
||||
locationMessage = new LocationMessage(position);
|
||||
}
|
||||
|
||||
return locationMessage;
|
||||
|
||||
}
|
||||
}
|
|
@ -14,16 +14,6 @@ public class Position {
|
|||
this.heading = heading;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Position{" +
|
||||
"longitude=" + longitude +
|
||||
", latitude=" + latitude +
|
||||
", velocity=" + velocity +
|
||||
", heading=" + heading +
|
||||
'}';
|
||||
}
|
||||
|
||||
public long getLongitude() {
|
||||
return longitude;
|
||||
}
|
||||
|
@ -39,4 +29,15 @@ public class Position {
|
|||
public int getHeading() {
|
||||
return heading;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Position{" +
|
||||
"longitude=" + longitude +
|
||||
", latitude=" + latitude +
|
||||
", velocity=" + velocity +
|
||||
", heading=" + heading +
|
||||
'}';
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -2,24 +2,20 @@ package de.swingbe.ifleet.model;
|
|||
|
||||
public class Receiver {
|
||||
|
||||
private final String receiver;
|
||||
|
||||
public Receiver(String receiver) {
|
||||
this.receiver = receiver;
|
||||
}
|
||||
|
||||
public String getReceiver() {
|
||||
return receiver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Receiver{" +
|
||||
"receiver='" + receiver + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
public String getReceiver() {
|
||||
return receiver;
|
||||
}
|
||||
|
||||
public void setReceiver(String receiver) {
|
||||
this.receiver = receiver;
|
||||
}
|
||||
|
||||
public Receiver(String receiver) {
|
||||
this.receiver = receiver;
|
||||
}
|
||||
|
||||
private String receiver;
|
||||
}
|
||||
|
|
|
@ -2,7 +2,15 @@ package de.swingbe.ifleet.model;
|
|||
|
||||
public class Sender {
|
||||
|
||||
private String sender;
|
||||
private final String sender;
|
||||
|
||||
public Sender(String sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public String getSender() {
|
||||
return sender;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
@ -10,16 +18,4 @@ public class Sender {
|
|||
"sender='" + sender + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
public String getSender() {
|
||||
return sender;
|
||||
}
|
||||
|
||||
public void setSender(String sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
|
||||
public Sender(String sender) {
|
||||
this.sender = sender;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import static de.swingbe.ifleet.model.ComParser.popFieldFromCom;
|
||||
import static de.swingbe.ifleet.model.LocationMessageParser.parseLocationMessage;
|
||||
import static de.swingbe.ifleet.model.TeleHeaderParser.parseTeleHeader;
|
||||
|
||||
public class TeleParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(TeleParser.class);
|
||||
|
||||
public static Telegram parseTelegram(final String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
|
||||
Telegram telegram = null;
|
||||
TeleHeader teleHeader = parseTeleHeader(input);
|
||||
|
||||
String inputNew = popFieldFromCom(input, 3);
|
||||
LOG.debug("inputNew: " + inputNew);
|
||||
|
||||
LocationMessage locationMessage = parseLocationMessage(inputNew);
|
||||
|
||||
if (teleHeader != null && locationMessage != null) {
|
||||
telegram = new Telegram(teleHeader, locationMessage);
|
||||
}
|
||||
return telegram;
|
||||
|
||||
}
|
||||
}
|
|
@ -2,15 +2,15 @@ package de.swingbe.ifleet.model;
|
|||
|
||||
public class Telegram {
|
||||
|
||||
private final TeleHeader teleHeader;
|
||||
private final TelegramHdr teleHeader;
|
||||
private final LocationMessage locationMessage;
|
||||
|
||||
public Telegram(TeleHeader teleHeader, LocationMessage locationMessage) {
|
||||
public Telegram(TelegramHdr teleHeader, LocationMessage locationMessage) {
|
||||
this.teleHeader = teleHeader;
|
||||
this.locationMessage = locationMessage;
|
||||
}
|
||||
|
||||
public TeleHeader getTeleHeader() {
|
||||
public TelegramHdr getTeleHeader() {
|
||||
return teleHeader;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
|
||||
public class TeleHeader {
|
||||
public class TelegramHdr {
|
||||
|
||||
private final int teleType;
|
||||
private final String teleVersion;
|
||||
private final int teleId;
|
||||
|
||||
public TeleHeader(int teleType, String teleVersion, int teleId) {
|
||||
public TelegramHdr(int teleType, String teleVersion, int teleId) {
|
||||
this.teleType = teleType;
|
||||
this.teleVersion = teleVersion;
|
||||
this.teleId = teleId;
|
||||
|
@ -26,7 +26,7 @@ public class TeleHeader {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TeleHeader{" +
|
||||
return "TelegramHdr{" +
|
||||
"teleType=" + teleType +
|
||||
", teleVersion='" + teleVersion + '\'' +
|
||||
", teleId=" + teleId +
|
|
@ -0,0 +1,17 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Communication;
|
||||
|
||||
/**
|
||||
* Parses a {@link Communication}.
|
||||
*/
|
||||
interface ComParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link Communication} that holds the parses telegram.
|
||||
*
|
||||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link Communication}
|
||||
*/
|
||||
Communication parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link ComParser}.
|
||||
*/
|
||||
class ComParserFactory {
|
||||
|
||||
private ComParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link ComParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static ComParser createComParser() {
|
||||
return new ComParserImpl();
|
||||
}
|
||||
}
|
|
@ -1,18 +1,44 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Communication;
|
||||
import de.swingbe.ifleet.model.Header;
|
||||
import de.swingbe.ifleet.model.Telegram;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static de.swingbe.ifleet.model.HeaderParser.parseHeader;
|
||||
import static de.swingbe.ifleet.model.TeleParser.parseTelegram;
|
||||
class ComParserImpl implements ComParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(ComParserImpl.class);
|
||||
private static final String SEP = "#";
|
||||
private static final String END = System.getProperty("line.separator");
|
||||
|
||||
public class ComParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(ComParser.class);
|
||||
ComParserImpl() {
|
||||
}
|
||||
|
||||
public static Communication parseCc(final String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
public static String popFieldFromCom(final String com, final int numberOfFields) {
|
||||
String comNew = com;
|
||||
String comSup = null;
|
||||
for (int i = 0; i < numberOfFields; i++) {
|
||||
//TODO Method call indexOf may produce NullPointerException!
|
||||
int indexChar;
|
||||
if (comNew != null) {
|
||||
indexChar = comNew.indexOf('#');
|
||||
try {
|
||||
comSup = comNew.substring(indexChar + 1);
|
||||
} catch (IndexOutOfBoundsException e) {
|
||||
LOG.error("poping field from communication failed, message: " + e.getMessage() + ", trace: " + Arrays.toString(e.getStackTrace()));
|
||||
}
|
||||
comNew = comSup;
|
||||
} else {
|
||||
LOG.error("input unavailable");
|
||||
}
|
||||
}
|
||||
return comNew;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Communication parse(final String input) {
|
||||
|
||||
Communication com = null;
|
||||
Header header = null;
|
||||
|
@ -24,12 +50,11 @@ public class ComParser {
|
|||
input.lastIndexOf(">"));
|
||||
|
||||
//parse Header
|
||||
header = parseHeader(input);
|
||||
header = HeaderParserFactory.createHeaderParser().parse(input);
|
||||
|
||||
//parse Telegram
|
||||
String inputSupPop = popFieldFromCom(inputSup, 4);
|
||||
LOG.debug("inputSupPop: " + inputSupPop);
|
||||
telegram = parseTelegram(inputSupPop);
|
||||
telegram = TelegramParserFactory.createTelegramParser().parse(inputSupPop);
|
||||
} else {
|
||||
LOG.warn("telegram NOT included");
|
||||
}
|
||||
|
@ -42,27 +67,4 @@ public class ComParser {
|
|||
}
|
||||
return com;
|
||||
}
|
||||
|
||||
public static String popFieldFromCom(final String com, final int numberOfFields) {
|
||||
String comNew = com;
|
||||
String comSup = null;
|
||||
for (int i = 0; i < numberOfFields; i++) {
|
||||
//TODO Method call indexOf may produce NullPointerException!
|
||||
int indexChar;
|
||||
if (comNew != null) {
|
||||
indexChar = comNew.indexOf('#');
|
||||
LOG.debug("indexChar: " + indexChar);
|
||||
try {
|
||||
comSup = comNew.substring(indexChar + 1);
|
||||
LOG.debug("comSup: " + comSup);
|
||||
} catch (IndexOutOfBoundsException e) {
|
||||
LOG.error("poping field from communication failed, message: " + e.getMessage() + ", trace: " + Arrays.toString(e.getStackTrace()));
|
||||
}
|
||||
comNew = comSup;
|
||||
} else {
|
||||
LOG.error("input unavailable");
|
||||
}
|
||||
}
|
||||
return comNew;
|
||||
}
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
package de.swingbe.ifleet;
|
||||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Entity;
|
||||
|
||||
/**
|
||||
* Parses an {@link de.swingbe.ifleet.model.Entity}.
|
||||
* Parses an {@link Entity}.
|
||||
*/
|
||||
public interface TelegramParser {
|
||||
public interface EntityParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link Entity} that holds the parses telegram.
|
||||
|
@ -13,5 +13,5 @@ public interface TelegramParser {
|
|||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link Entity}
|
||||
*/
|
||||
Entity parse(String input);
|
||||
Entity parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link EntityParser}.
|
||||
*/
|
||||
public class EntityParserFactory {
|
||||
|
||||
private EntityParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link EntityParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static EntityParser createEntityParser() {
|
||||
return new EntityParserImpl();
|
||||
}
|
||||
}
|
|
@ -1,22 +1,20 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import de.swingbe.ifleet.model.Communication;
|
||||
import de.swingbe.ifleet.model.Entity;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static de.swingbe.ifleet.model.ComParser.parseCc;
|
||||
class EntityParserImpl implements EntityParser {
|
||||
|
||||
public class EntityParser {
|
||||
EntityParserImpl() {
|
||||
}
|
||||
|
||||
private final static Logger LOG = LoggerFactory.getLogger(EntityParser.class);
|
||||
@Override
|
||||
public Entity parse(final String input) {
|
||||
|
||||
public static Entity parseLogEntry(String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
|
||||
Entity logEntry = null;
|
||||
Entity entity = null;
|
||||
String[] splits = input.split(" ");
|
||||
LOG.debug("splits: " + splits.length);
|
||||
|
||||
//parse date
|
||||
String date = null;
|
||||
|
@ -70,13 +68,13 @@ public class EntityParser {
|
|||
if (splits.length > 9) {
|
||||
String[] splitsSup = Arrays.copyOfRange(splits, 9, splits.length);
|
||||
String inputSup = String.join(" ", splitsSup);
|
||||
communication = parseCc(inputSup);
|
||||
communication = ComParserFactory.createComParser().parse(inputSup);
|
||||
}
|
||||
|
||||
if (date != null && time != null && logLevel != null && addressPartA != null && addressPartB != null && peer != null && addressNext != null && direction != null && communication != null) {
|
||||
logEntry = new Entity(date, time, logLevel, addressPartA, addressPartB, peer, addressNext, direction, communication);
|
||||
entity = new Entity(date, time, logLevel, addressPartA, addressPartB, peer, addressNext, direction, communication);
|
||||
}
|
||||
|
||||
return logEntry;
|
||||
return entity;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Header;
|
||||
|
||||
/**
|
||||
* Parses a {@link de.swingbe.ifleet.model.Header}.
|
||||
*/
|
||||
interface HeaderParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link de.swingbe.ifleet.model.Header} that holds the parses telegram.
|
||||
*
|
||||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link de.swingbe.ifleet.model.Header}
|
||||
*/
|
||||
Header parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link HeaderParser}.
|
||||
*/
|
||||
class HeaderParserFactory {
|
||||
|
||||
private HeaderParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link HeaderParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static HeaderParser createHeaderParser() {
|
||||
return new HeaderParserImpl();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Header;
|
||||
import de.swingbe.ifleet.model.Receiver;
|
||||
import de.swingbe.ifleet.model.Sender;
|
||||
|
||||
import static de.swingbe.ifleet.parser.ComParserImpl.popFieldFromCom;
|
||||
|
||||
class HeaderParserImpl implements HeaderParser {
|
||||
|
||||
HeaderParserImpl() {
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.LocationMessage;
|
||||
|
||||
/**
|
||||
* Parses a {@link de.swingbe.ifleet.model.LocationMessage}.
|
||||
*/
|
||||
interface LocationMsgParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link de.swingbe.ifleet.model.LocationMessage} that holds the parses telegram.
|
||||
*
|
||||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link de.swingbe.ifleet.model.LocationMessage}
|
||||
*/
|
||||
LocationMessage parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link LocationMsgParser}.
|
||||
*/
|
||||
class LocationMsgParserFactory {
|
||||
|
||||
private LocationMsgParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link LocationMsgParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static LocationMsgParser createLocationMsgParer() {
|
||||
return new LocationMsgParserImpl();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
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;
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Position;
|
||||
|
||||
/**
|
||||
* Parses a {@link de.swingbe.ifleet.model.Position}.
|
||||
*/
|
||||
interface PositionParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link de.swingbe.ifleet.model.Position} that holds the parses telegram.
|
||||
*
|
||||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link de.swingbe.ifleet.model.Position}
|
||||
*/
|
||||
Position parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link PositionParser}.
|
||||
*/
|
||||
class PositionParserFactory {
|
||||
|
||||
private PositionParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link PositionParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static PositionParser createPositionParser() {
|
||||
return new PositionParserImpl();
|
||||
}
|
||||
}
|
|
@ -1,22 +1,22 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Position;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static de.swingbe.ifleet.model.TeleHeaderParser.isNumeric;
|
||||
import static de.swingbe.ifleet.parser.TelegramHdrParserImpl.isNumeric;
|
||||
|
||||
public class PositionParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(PositionParser.class);
|
||||
public class PositionParserImpl implements PositionParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(PositionParserImpl.class);
|
||||
|
||||
public static Position parsePosition(String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
@Override
|
||||
public Position parse(final String input) {
|
||||
|
||||
Position position = null;
|
||||
|
||||
String[] splits = input.split("#");
|
||||
LOG.debug("splits: " + splits.length);
|
||||
|
||||
//parse NetPoint
|
||||
//parse RelPosition
|
||||
|
@ -26,21 +26,18 @@ public class PositionParser {
|
|||
lat = splits[2];
|
||||
}
|
||||
|
||||
|
||||
//parse lon
|
||||
String lon = null;
|
||||
if (splits.length > 3) {
|
||||
lon = splits[3];
|
||||
}
|
||||
|
||||
|
||||
//parse vel
|
||||
String vel = null;
|
||||
if (splits.length > 4) {
|
||||
vel = splits[4];
|
||||
}
|
||||
|
||||
|
||||
//parse hdg
|
||||
String hdg = null;
|
||||
if (splits.length > 5) {
|
|
@ -0,0 +1,17 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Receiver;
|
||||
|
||||
/**
|
||||
* Parses a {@link de.swingbe.ifleet.model.Receiver}.
|
||||
*/
|
||||
interface ReceiverParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link de.swingbe.ifleet.model.Receiver} that holds the parses telegram.
|
||||
*
|
||||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link de.swingbe.ifleet.model.Receiver}
|
||||
*/
|
||||
Receiver parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link ReceiverParser}.
|
||||
*/
|
||||
class ReceiverParserFactory {
|
||||
|
||||
private ReceiverParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link ReceiverParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static ReceiverParser createReceiverParser() {
|
||||
return new ReceiverParserImpl();
|
||||
}
|
||||
}
|
|
@ -1,17 +1,14 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import de.swingbe.ifleet.model.Receiver;
|
||||
|
||||
public class ReceiverParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(ReceiverParser.class);
|
||||
class ReceiverParserImpl implements ReceiverParser {
|
||||
|
||||
public static Receiver parseReceiver(final String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
@Override
|
||||
public Receiver parse(final String input) {
|
||||
|
||||
Receiver receiver = null;
|
||||
String[] splits = input.split("#");
|
||||
LOG.debug("splits: " + splits.length);
|
||||
|
||||
//parse receiver part A
|
||||
String receiverPartA = null;
|
||||
|
@ -30,4 +27,5 @@ public class ReceiverParser {
|
|||
}
|
||||
return receiver;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Sender;
|
||||
|
||||
/**
|
||||
* Parses a {@link Sender}.
|
||||
*/
|
||||
interface SenderParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link Sender} that holds the parses telegram.
|
||||
*
|
||||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link Sender}
|
||||
*/
|
||||
Sender parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link ReceiverParser}.
|
||||
*/
|
||||
class SenderParserFactory {
|
||||
|
||||
private SenderParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link ReceiverParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static SenderParser createSenderParser() {
|
||||
return new SenderParserImpl();
|
||||
}
|
||||
}
|
|
@ -1,18 +1,14 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import de.swingbe.ifleet.model.Sender;
|
||||
|
||||
public class SenderParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(SenderParser.class);
|
||||
class SenderParserImpl implements SenderParser {
|
||||
|
||||
public static Sender parseSender(final String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
public Sender parse(final String input) {
|
||||
|
||||
Sender sender = null;
|
||||
|
||||
String[] splits = input.split("#");
|
||||
LOG.debug("splits: " + splits.length);
|
||||
|
||||
//parse sender part A
|
||||
String senderPartA = null;
|
|
@ -0,0 +1,17 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.TelegramHdr;
|
||||
|
||||
/**
|
||||
* Parses a {@link TelegramHdr}.
|
||||
*/
|
||||
interface TelegramHdrParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link de.swingbe.ifleet.model.TelegramHdr} that holds the parses telegram.
|
||||
*
|
||||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link de.swingbe.ifleet.model.TelegramHdr}
|
||||
*/
|
||||
TelegramHdr parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link TelegramHdrParser}.
|
||||
*/
|
||||
class TelegramHdrParserFactory {
|
||||
|
||||
private TelegramHdrParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link TelegramHdrParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static TelegramHdrParser createTelegramHdrParser() {
|
||||
return new TelegramHdrParserImpl();
|
||||
}
|
||||
}
|
|
@ -1,20 +1,27 @@
|
|||
package de.swingbe.ifleet.model;
|
||||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.TelegramHdr;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class TeleHeaderParser {
|
||||
private final static Logger LOG = LoggerFactory.getLogger(TeleHeaderParser.class);
|
||||
class TelegramHdrParserImpl implements TelegramHdrParser {
|
||||
|
||||
public static TeleHeader parseTeleHeader(String input) {
|
||||
LOG.debug("input: {}", input);
|
||||
private final static Logger LOG = LoggerFactory.getLogger(TelegramHdrParserImpl.class);
|
||||
|
||||
TeleHeader teleHeader = null;
|
||||
TelegramHdrParserImpl() {
|
||||
}
|
||||
|
||||
public static boolean isNumeric(String str) {
|
||||
return str != null && str.matches("[0-9.]+");
|
||||
}
|
||||
|
||||
public TelegramHdr parse(final String input) {
|
||||
|
||||
TelegramHdr teleHeader = null;
|
||||
|
||||
String[] splits = input.split("#");
|
||||
LOG.debug("splits: " + splits.length);
|
||||
|
||||
//parse id
|
||||
String type = null;
|
||||
|
@ -40,7 +47,7 @@ public class TeleHeaderParser {
|
|||
|
||||
if (typeIsNumeric && idIsNumeric) {
|
||||
try {
|
||||
teleHeader = new TeleHeader(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()));
|
||||
}
|
||||
|
@ -50,8 +57,4 @@ public class TeleHeaderParser {
|
|||
return teleHeader;
|
||||
|
||||
}
|
||||
|
||||
public static boolean isNumeric(String str) {
|
||||
return str != null && str.matches("[0-9.]+");
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.Telegram;
|
||||
|
||||
/**
|
||||
* Parses a {@link de.swingbe.ifleet.model.Telegram}.
|
||||
*/
|
||||
interface TelegramParser {
|
||||
|
||||
/**
|
||||
* Returns a new {@link de.swingbe.ifleet.model.Telegram} that holds the parses telegram.
|
||||
*
|
||||
* @param input the {@link String} to be parsed
|
||||
* @return the parsed {@link de.swingbe.ifleet.model.Telegram}
|
||||
*/
|
||||
Telegram parse(final String input);
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
/**
|
||||
* Factory for creating instances of {@link TelegramParser}.
|
||||
*/
|
||||
class TelegramParserFactory {
|
||||
|
||||
private TelegramParserFactory() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an instance of {@link TelegramParser}.
|
||||
*
|
||||
* @return the new instance
|
||||
*/
|
||||
public static TelegramParser createTelegramParser() {
|
||||
return new TelegramParserImpl();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package de.swingbe.ifleet.parser;
|
||||
|
||||
import de.swingbe.ifleet.model.LocationMessage;
|
||||
import de.swingbe.ifleet.model.Telegram;
|
||||
import de.swingbe.ifleet.model.TelegramHdr;
|
||||
|
||||
import static de.swingbe.ifleet.parser.ComParserImpl.popFieldFromCom;
|
||||
|
||||
class TelegramParserImpl implements TelegramParser {
|
||||
|
||||
TelegramParserImpl() {
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
}
|
|
@ -7,7 +7,7 @@
|
|||
filePattern="log-%d{yyyy-MM-dd}-%i.txt.gz"
|
||||
ignoreExceptions="false">
|
||||
<PatternLayout>
|
||||
<Pattern>[%-5p] %d{yyyy-MM-dd HH:mm:ss.SSS} %p %c{1} %m%n
|
||||
<Pattern>[%-5p] %d{yyyy-MM-dd HH:mm:ss.SSS} %c{1} %m%n
|
||||
</Pattern>
|
||||
</PatternLayout>
|
||||
<Policies>
|
||||
|
@ -19,7 +19,7 @@
|
|||
# Console appender
|
||||
<Console name="console" target="SYSTEM_OUT">
|
||||
# Pattern of log message for console appender
|
||||
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %p %c{1} - %msg%n"/>
|
||||
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %c{1} - %msg%n"/>
|
||||
</Console>
|
||||
</Appenders>
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package de.swingbe.ifleet;
|
||||
|
||||
import de.swingbe.ifleet.parser.EntityParserFactory;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
@ -11,11 +12,10 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
*/
|
||||
class TelegramParserImplTest {
|
||||
|
||||
private final TelegramParserImpl parser = new TelegramParserImpl();
|
||||
|
||||
@Test
|
||||
void padLeft() {
|
||||
assertThat(parser.parse("TODO"))
|
||||
|
||||
assertThat(EntityParserFactory.createEntityParser().parse("TODO"))
|
||||
.isEqualTo(null);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue