@Override public void accept(AisPacket packet) { if (out == null) { // Open new output stream out = getNextOutputStram(); } end = System.currentTimeMillis(); if (start == 0) { start = end; } for (IPacketFilter filter : filters) { if (filter.rejectedByFilter(packet)) { return; } } Integer baseMMSI = -1; String country = ""; String region = ""; Vdm vdm = packet.getVdm(); if (vdm == null) { return; } // Get source tag properties IProprietarySourceTag sourceTag = vdm.getSourceTag(); if (sourceTag != null) { baseMMSI = sourceTag.getBaseMmsi(); if (sourceTag.getCountry() != null) { country = sourceTag.getCountry().getTwoLetter(); } if (sourceTag.getRegion() != null) { region = sourceTag.getRegion(); } } if (region.equals("")) { region = "0"; } // Maybe check for start date Date timestamp = vdm.getTimestamp(); if (filter.getStartDate() != null && timestamp != null) { if (timestamp.before(filter.getStartDate())) { return; } } // Maybe check for end date if (filter.getEndDate() != null && timestamp != null) { if (timestamp.after(filter.getEndDate())) { System.exit(0); } } // Maybe check for base station MMSI if (filter.getBaseStations().size() > 0) { if (!filter.getBaseStations().contains(baseMMSI)) { return; } } // Maybe check for country if (filter.getCountries().size() > 0) { if (!filter.getCountries().contains(country)) { return; } } // Maybe check for region if (filter.getRegions().size() > 0) { if (!filter.getRegions().contains(region)) { return; } } if (stop) { return; } // Count message msgCount++; // Print tag line packet out.print(packet.getStringMessage() + "\r\n"); // Count bytes bytes += packet.getStringMessage().length() + 2; currentFileBytes += packet.getStringMessage().length() + 2; // Maybe print parsed if (dumpParsed) { if (timestamp != null) { out.println("+ timetamp " + timestampFormat.format(timestamp)); } if (vdm.getTags() != null) { for (IProprietaryTag tag : vdm.getTags()) { out.println("+ " + tag.toString()); } } AisMessage aisMessage = packet.tryGetAisMessage(); if (aisMessage != null) { out.println("+ " + aisMessage.toString()); } else { out.println("+ AIS message could not be parsed"); } // Check for binary message if (aisMessage instanceof AisBinaryMessage) { AisBinaryMessage binaryMessage = (AisBinaryMessage) aisMessage; try { AisApplicationMessage appMessage = binaryMessage.getApplicationMessage(); out.println(appMessage); } catch (SixbitException e) { } } out.println("---------------------------"); } // Maybe time for new outfile if (splitSize != null && currentFileBytes >= splitSize) { out.close(); out = null; currentFileBytes = 0; } }