diff --git a/src/main/java/io/github/dsheirer/map/PlottableEntityHistory.java b/src/main/java/io/github/dsheirer/map/PlottableEntityHistory.java index c25e4f68f..5f43074c0 100644 --- a/src/main/java/io/github/dsheirer/map/PlottableEntityHistory.java +++ b/src/main/java/io/github/dsheirer/map/PlottableEntityHistory.java @@ -87,20 +87,17 @@ public IdentifierCollection getIdentifierCollection() */ public void add(PlottableDecodeEvent event) { - if(event.isValidLocation()) + TimestampedGeoPosition mostRecentPosition = getLatestPosition(); + TimestampedGeoPosition latest = new TimestampedGeoPosition(event.getLocation(), event.getTimeStart()); + + if(isUnique(latest, mostRecentPosition)) { - TimestampedGeoPosition mostRecentPosition = getLatestPosition(); - TimestampedGeoPosition latest = new TimestampedGeoPosition(event.getLocation(), event.getTimeStart()); + mCurrentEvent = event; + mLocationHistory.add(0, latest); - if(isUnique(latest, mostRecentPosition)) + while(mLocationHistory.size() > MAX_LOCATION_HISTORY) { - mCurrentEvent = event; - mLocationHistory.add(0, latest); - - while(mLocationHistory.size() > MAX_LOCATION_HISTORY) - { - mLocationHistory.remove(mLocationHistory.size() - 1); - } + mLocationHistory.remove(mLocationHistory.size() - 1); } } } diff --git a/src/main/java/io/github/dsheirer/map/PlottableEntityModel.java b/src/main/java/io/github/dsheirer/map/PlottableEntityModel.java index 1d9e44035..50722888e 100644 --- a/src/main/java/io/github/dsheirer/map/PlottableEntityModel.java +++ b/src/main/java/io/github/dsheirer/map/PlottableEntityModel.java @@ -101,45 +101,42 @@ public void delete(List tracksToDelete) @Override public void receive(PlottableDecodeEvent plottableDecodeEvent) { - if(plottableDecodeEvent.isValidLocation()) - { - //Add or update the event on the swing event thread - EventQueue.invokeLater(() -> { - Identifier from = plottableDecodeEvent.getIdentifierCollection().getFromIdentifier(); + //Add or update the event on the swing event thread + EventQueue.invokeLater(() -> { + Identifier from = plottableDecodeEvent.getIdentifierCollection().getFromIdentifier(); - if(from != null && from.getForm() != Form.LOCATION) - { - AliasListConfigurationIdentifier aliasList = plottableDecodeEvent.getIdentifierCollection().getAliasListConfiguration(); - String key = (aliasList != null ? aliasList.toString() : KEY_NO_ALIAS_LIST) + from; + if(from != null && from.getForm() != Form.LOCATION) + { + AliasListConfigurationIdentifier aliasList = plottableDecodeEvent.getIdentifierCollection().getAliasListConfiguration(); + String key = (aliasList != null ? aliasList.toString() : KEY_NO_ALIAS_LIST) + from; - PlottableEntityHistory entityHistory = mEntityHistoryMap.get(key); + PlottableEntityHistory entityHistory = mEntityHistoryMap.get(key); - if(entityHistory == null) - { - entityHistory = new PlottableEntityHistory(from, plottableDecodeEvent); - mEntityHistories.add(entityHistory); - mEntityHistoryMap.put(key, entityHistory); - int index = mEntityHistories.indexOf(entityHistory); - fireTableRowsInserted(index, index); - } - else - { - entityHistory.add(plottableDecodeEvent); - int index = mEntityHistories.indexOf(entityHistory); - fireTableRowsUpdated(index, index); - } - - for(IPlottableUpdateListener listener : mPlottableUpdateListeners) - { - listener.addPlottableEntity(entityHistory); - } + if(entityHistory == null) + { + entityHistory = new PlottableEntityHistory(from, plottableDecodeEvent); + mEntityHistories.add(entityHistory); + mEntityHistoryMap.put(key, entityHistory); + int index = mEntityHistories.indexOf(entityHistory); + fireTableRowsInserted(index, index); } else { - LOGGER.warn("Received plottable decode event that does not contain a FROM identifier - cannot plot"); + entityHistory.add(plottableDecodeEvent); + int index = mEntityHistories.indexOf(entityHistory); + fireTableRowsUpdated(index, index); } - }); - } + + for(IPlottableUpdateListener listener : mPlottableUpdateListeners) + { + listener.addPlottableEntity(entityHistory); + } + } + else + { + LOGGER.warn("Received plottable decode event that does not contain a FROM identifier - cannot plot"); + } + }); } @Override diff --git a/src/main/java/io/github/dsheirer/module/decode/event/PlottableDecodeEvent.java b/src/main/java/io/github/dsheirer/module/decode/event/PlottableDecodeEvent.java index aae77a7f1..719cf3b7c 100644 --- a/src/main/java/io/github/dsheirer/module/decode/event/PlottableDecodeEvent.java +++ b/src/main/java/io/github/dsheirer/module/decode/event/PlottableDecodeEvent.java @@ -62,16 +62,6 @@ public GeoPosition getLocation() return mGeoPosition; } - /** - * Indicates if the location is non-null and either latitude or longitude is not at the zero axis. If the location - * coordinates are zero or both are very small values close to zero, then the location is flagged as invalid. - */ - public boolean isValidLocation() - { - return mGeoPosition != null && - ((Math.abs(mGeoPosition.getLatitude()) > 0.01) || (Math.abs(mGeoPosition.getLongitude()) > 0.01)); - } - /** * Sets the heading for the mobile plottable event * @param heading