package de.graeb.adsbsniffer.adbsreceiver; import java.util.Date; public class Packet { public final String message; public final String icao24; public final Date internalTimestamp; public final int externalTimestamp; public final int format; public final boolean isAdsb; public final TriState checksumCorrect; protected Packet(String message, int format, String icao24, Date internalTimestamp, int externalTimestamp, boolean isAdsb, TriState checksumCorrect) { this.message = message; this.icao24 = icao24; this.internalTimestamp = internalTimestamp; this.externalTimestamp = externalTimestamp; this.format = format; this.isAdsb = isAdsb; this.checksumCorrect = checksumCorrect; } @Override public String toString() { return String.format("Packet{message='%s', icao24='%s', internalTimestamp=%s, externalTimestamp=%d}", message, icao24, internalTimestamp, externalTimestamp); } } class PacketBuilder { private String message; private String icao24; private Date internalTimestamp; private int externalTimestamp = -1; private int format; private boolean isAdsb; private TriState checksumCorrect = TriState.UNKNOWN; public PacketBuilder setMessage(String message) { this.message = message; return this; } public PacketBuilder setIcao24(String icao24) { this.icao24 = icao24.toUpperCase(); return this; } public PacketBuilder setInternalTimestamp(Date internalTimestamp) { this.internalTimestamp = internalTimestamp; return this; } public PacketBuilder setExternalTimestamp(int externalTimestamp) { this.externalTimestamp = externalTimestamp; return this; } public PacketBuilder setFormat(int format) { this.format = format; return this; } public PacketBuilder setChecksumCorrect(TriState checksumCorrect) { this.checksumCorrect = checksumCorrect; return this; } public PacketBuilder setAdsb() { this.isAdsb = true; return this; } public Packet createPacket() { return new Packet(message, format, icao24, internalTimestamp, externalTimestamp, isAdsb, checksumCorrect); } }