diff --git a/sdr-trunk.ipr b/sdr-trunk.ipr index 28efe348..f3b4d0ec 100644 --- a/sdr-trunk.ipr +++ b/sdr-trunk.ipr @@ -383,15 +383,15 @@ - + - + - + - + @@ -476,15 +476,15 @@ - + - + - + - + @@ -619,82 +619,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + - + - + - + - + - + - + diff --git a/sdrtrunk.iml b/sdrtrunk.iml deleted file mode 100644 index 390626c0..00000000 --- a/sdrtrunk.iml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/io/github/dsheirer/alias/AliasEditor.java b/src/main/java/io/github/dsheirer/alias/AliasEditor.java index a6df0774..7becf5b5 100644 --- a/src/main/java/io/github/dsheirer/alias/AliasEditor.java +++ b/src/main/java/io/github/dsheirer/alias/AliasEditor.java @@ -31,8 +31,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -public class AliasEditor extends Editor - implements ActionListener, Listener +public class AliasEditor extends Editor implements ActionListener, Listener { private static final long serialVersionUID = 1L; diff --git a/src/main/java/io/github/dsheirer/alias/AliasFactory.java b/src/main/java/io/github/dsheirer/alias/AliasFactory.java index 102007cb..2cb19ba9 100644 --- a/src/main/java/io/github/dsheirer/alias/AliasFactory.java +++ b/src/main/java/io/github/dsheirer/alias/AliasFactory.java @@ -45,22 +45,22 @@ import io.github.dsheirer.alias.id.legacy.talkgroup.LegacyTalkgroupID; import io.github.dsheirer.alias.id.legacy.talkgroup.LegacyTalkgroupIDEditor; import io.github.dsheirer.alias.id.lojack.LoJackFunctionAndID; import io.github.dsheirer.alias.id.lojack.LoJackIDEditor; -import io.github.dsheirer.alias.id.mobileID.MINEditor; -import io.github.dsheirer.alias.id.mobileID.Min; +import io.github.dsheirer.alias.id.legacy.mobileID.MINEditor; +import io.github.dsheirer.alias.id.legacy.mobileID.Min; import io.github.dsheirer.alias.id.priority.Priority; import io.github.dsheirer.alias.id.priority.PriorityEditor; import io.github.dsheirer.alias.id.record.Record; import io.github.dsheirer.alias.id.record.RecordEditor; -import io.github.dsheirer.alias.id.siteID.SiteID; -import io.github.dsheirer.alias.id.siteID.SiteIDEditor; +import io.github.dsheirer.alias.id.legacy.siteID.SiteID; +import io.github.dsheirer.alias.id.legacy.siteID.SiteIDEditor; import io.github.dsheirer.alias.id.status.StatusID; import io.github.dsheirer.alias.id.status.StatusIDEditor; import io.github.dsheirer.alias.id.talkgroup.Talkgroup; import io.github.dsheirer.alias.id.talkgroup.TalkgroupEditor; import io.github.dsheirer.alias.id.talkgroup.TalkgroupRange; import io.github.dsheirer.alias.id.talkgroup.TalkgroupRangeEditor; -import io.github.dsheirer.alias.id.uniqueID.UniqueID; -import io.github.dsheirer.alias.id.uniqueID.UniqueIDEditor; +import io.github.dsheirer.alias.id.legacy.uniqueID.UniqueID; +import io.github.dsheirer.alias.id.legacy.uniqueID.UniqueIDEditor; import io.github.dsheirer.audio.broadcast.BroadcastModel; import io.github.dsheirer.gui.editor.Editor; import io.github.dsheirer.gui.editor.EmptyEditor; diff --git a/src/main/java/io/github/dsheirer/alias/AliasList.java b/src/main/java/io/github/dsheirer/alias/AliasList.java index 221797e8..62a5af96 100644 --- a/src/main/java/io/github/dsheirer/alias/AliasList.java +++ b/src/main/java/io/github/dsheirer/alias/AliasList.java @@ -21,15 +21,12 @@ package io.github.dsheirer.alias; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import io.github.dsheirer.alias.id.AliasID; -import io.github.dsheirer.alias.id.WildcardID; import io.github.dsheirer.alias.id.broadcast.BroadcastChannel; import io.github.dsheirer.alias.id.esn.Esn; import io.github.dsheirer.alias.id.priority.Priority; -import io.github.dsheirer.alias.id.siteID.SiteID; import io.github.dsheirer.alias.id.status.StatusID; import io.github.dsheirer.alias.id.talkgroup.Talkgroup; import io.github.dsheirer.alias.id.talkgroup.TalkgroupRange; -import io.github.dsheirer.alias.id.uniqueID.UniqueID; import io.github.dsheirer.identifier.Identifier; import io.github.dsheirer.identifier.IdentifierCollection; import io.github.dsheirer.identifier.esn.ESNIdentifier; @@ -42,8 +39,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.TreeMap; @@ -51,19 +48,10 @@ import java.util.TreeMap; public class AliasList implements Listener { private final static Logger mLog = LoggerFactory.getLogger(AliasList.class); - public static final String WILDCARD = "*"; - - private Map mESN = new HashMap<>(); - private Map mSiteID = new HashMap<>(); - private Map mStatus = new HashMap<>(); - private Map mUniqueID = new HashMap<>(); - - private List mESNWildcards = new ArrayList<>(); - private List mSiteWildcards = new ArrayList<>(); - private boolean mHasAliasActions = false; - private Map mTalkgroupProtocolMap = new HashMap<>(); - + private Map mESNMap = new HashMap<>(); + private Map mStatusMap = new HashMap<>(); + private boolean mHasAliasActions = false; private String mName; /** @@ -136,45 +124,13 @@ public class AliasList implements Listener case ESN: String esn = ((Esn) id).getEsn(); - if(esn != null) + if(esn != null && !esn.isEmpty()) { - if(esn.contains(WILDCARD)) - { - mESNWildcards.add(new WildcardID(esn)); - Collections.sort(mESNWildcards); - } - - mESN.put(esn, alias); - } - break; - case LTR_NET_UID: - mUniqueID.put(((UniqueID) id).getUid(), alias); - break; - case SITE: - String siteID = ((SiteID) id).getSite(); - - if(siteID != null) - { - if(siteID.contains(WILDCARD)) - { - mSiteWildcards.add(new WildcardID(siteID)); - Collections.sort(mSiteWildcards); - } - - mSiteID.put(siteID, alias); + mESNMap.put(esn.toLowerCase(), alias); } break; case STATUS: - mStatus.put(((StatusID) id).getStatus(), alias); - break; - case BROADCAST_CHANNEL: - case NON_RECORDABLE: - case RECORD: - case PRIORITY: - //We don't maintain lookups for these items - break; - default: - mLog.warn("Unrecognized Alias ID Type:" + id.getType().name() + " - can't ADD to lookup table"); + mStatusMap.put(((StatusID) id).getStatus(), alias); break; } } @@ -190,155 +146,13 @@ public class AliasList implements Listener */ public void removeAlias(Alias alias) { - if(alias != null) + for(TalkgroupAliasList talkgroupAliasList: mTalkgroupProtocolMap.values()) { - for(AliasID aliasID : alias.getId()) - { - removeAliasID(aliasID, alias); - } - } - } - - private void removeWildcard(String value, List wildcards) - { - if(value != null) - { - for(WildcardID wildcardID : wildcards) - { - if(wildcardID.value().equals(value)) - { - wildcards.remove(wildcardID); - } - } - } - } - - /** - * Removes the alias and alias identifier from internal mappings. - */ - private void removeAliasID(AliasID id, Alias alias) - { - if(id.isValid()) - { - switch(id.getType()) - { - case TALKGROUP: - Talkgroup talkgroup = (Talkgroup)id; - - TalkgroupAliasList talkgroupAliasList = mTalkgroupProtocolMap.get(talkgroup.getProtocol()); - - if(talkgroupAliasList != null) - { - talkgroupAliasList.remove(talkgroup); - } - break; - case TALKGROUP_RANGE: - TalkgroupRange talkgroupRange = (TalkgroupRange)id; - - TalkgroupAliasList talkgroupRangeAliasList = mTalkgroupProtocolMap.get(talkgroupRange.getProtocol()); - - if(talkgroupRangeAliasList != null) - { - talkgroupRangeAliasList.remove(talkgroupRange); - } - break; - case ESN: - String esn = ((Esn) id).getEsn(); - - if(esn != null) - { - if(esn.contains(WILDCARD)) - { - removeWildcard(esn, mESNWildcards); - } - } - - mESN.remove(esn); - break; - case LTR_NET_UID: - mUniqueID.remove(((UniqueID) id).getUid()); - break; - case SITE: - mSiteID.remove(((SiteID) id).getSite()); - break; - case STATUS: - mStatus.remove(((StatusID) id).getStatus()); - break; - case NON_RECORDABLE: - case PRIORITY: - case BROADCAST_CHANNEL: - //We don't maintain lookups for these items - break; - default: - mLog.warn("Unrecognized Alias ID Type:" + id.getType().name() + " - can't REMOVE from lookup table"); - break; - } - } - } - - /** - * Returns the first matching regex wildcard from the list of wildcards that matches the - * identifier. - * - * @param id to match - * @param wildcards to match against - * @return matching wildcard ID or null - */ - private String getWildcardMatch(String id, List wildcards) - { - if(id != null) - { - for(WildcardID wildcard : wildcards) - { - if(wildcard.matches(id)) - { - return wildcard.value(); - } - } + talkgroupAliasList.remove(alias); } - return null; - } - - /** - * Lookup alias by site ID - */ - public Alias getSiteID(String siteID) - { - Alias alias = null; - - if(siteID != null) - { - alias = mSiteID.get(siteID); - - if(alias == null) - { - String wildcard = getWildcardMatch(siteID, mSiteWildcards); - - if(wildcard != null) - { - alias = mSiteID.get(wildcard); - } - } - } - - return alias; - } - - /** - * Lookup alias by status ID - */ - public Alias getStatus(int status) - { - return mStatus.get(status); - } - - /** - * Lookup alias by Unique ID (UID) - */ - public Alias getUniqueID(int uniqueID) - { - return mUniqueID.get(uniqueID); + remove(alias, mStatusMap); + remove(alias, mESNMap); } /** @@ -350,17 +164,7 @@ public class AliasList implements Listener if(esn != null) { - alias = mESN.get(esn); - - if(alias == null) - { - String wildcard = getWildcardMatch(esn, mESNWildcards); - - if(wildcard != null) - { - alias = mESN.get(wildcard); - } - } + alias = mESNMap.get(esn); } return alias; @@ -412,6 +216,7 @@ public class AliasList implements Listener case CHANGE: if(alias.getList() != null && getName().equalsIgnoreCase(alias.getList())) { + removeAlias(alias); addAlias(alias); } break; @@ -588,6 +393,23 @@ public class AliasList implements Listener return channels; } + /** + * Removes the alias (as a value) from the specified map + */ + public static void remove(Alias alias, Map map) + { + Iterator it = map.entrySet().iterator(); + + while(it.hasNext()) + { + if(it.next().getKey().equals(alias)) + { + it.remove(); + } + } + } + + /** * Listing of talkgroups and ranges for a specific protocol */ @@ -639,5 +461,14 @@ public class AliasList implements Listener { mTalkgroupRangeMap.remove(talkgroupRange); } + + /** + * Removes the alias from all internal maps + */ + public void remove(Alias alias) + { + AliasList.remove(alias, mTalkgroupAliasMap); + AliasList.remove(alias, mTalkgroupRangeMap); + } } } diff --git a/src/main/java/io/github/dsheirer/alias/id/AliasID.java b/src/main/java/io/github/dsheirer/alias/id/AliasID.java index 935c764e..37aacdc9 100644 --- a/src/main/java/io/github/dsheirer/alias/id/AliasID.java +++ b/src/main/java/io/github/dsheirer/alias/id/AliasID.java @@ -29,14 +29,14 @@ import io.github.dsheirer.alias.id.legacy.mpt1327.MPT1327ID; import io.github.dsheirer.alias.id.legacy.nonrecordable.NonRecordable; import io.github.dsheirer.alias.id.legacy.talkgroup.LegacyTalkgroupID; import io.github.dsheirer.alias.id.lojack.LoJackFunctionAndID; -import io.github.dsheirer.alias.id.mobileID.Min; +import io.github.dsheirer.alias.id.legacy.mobileID.Min; import io.github.dsheirer.alias.id.priority.Priority; import io.github.dsheirer.alias.id.record.Record; -import io.github.dsheirer.alias.id.siteID.SiteID; +import io.github.dsheirer.alias.id.legacy.siteID.SiteID; import io.github.dsheirer.alias.id.status.StatusID; import io.github.dsheirer.alias.id.talkgroup.Talkgroup; import io.github.dsheirer.alias.id.talkgroup.TalkgroupRange; -import io.github.dsheirer.alias.id.uniqueID.UniqueID; +import io.github.dsheirer.alias.id.legacy.uniqueID.UniqueID; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") @JsonSubTypes({ diff --git a/src/main/java/io/github/dsheirer/alias/id/AliasIdentifierEditor.java b/src/main/java/io/github/dsheirer/alias/id/AliasIdentifierEditor.java index e6bb7b9d..16193713 100644 --- a/src/main/java/io/github/dsheirer/alias/id/AliasIdentifierEditor.java +++ b/src/main/java/io/github/dsheirer/alias/id/AliasIdentifierEditor.java @@ -125,11 +125,7 @@ public class AliasIdentifierEditor extends Editor menu.add(new AddAliasIdentifierItem(AliasIDType.TALKGROUP)); menu.add(new AddAliasIdentifierItem(AliasIDType.TALKGROUP_RANGE)); menu.add(new AddAliasIdentifierItem(AliasIDType.ESN)); - menu.add(new AddAliasIdentifierItem(AliasIDType.LOJACK)); - menu.add(new AddAliasIdentifierItem(AliasIDType.LTR_NET_UID)); - menu.add(new AddAliasIdentifierItem(AliasIDType.MDC1200)); - menu.add(new AddAliasIdentifierItem(AliasIDType.MIN)); - menu.add(new AddAliasIdentifierItem(AliasIDType.SITE)); +// menu.add(new AddAliasIdentifierItem(AliasIDType.LOJACK)); menu.add(new AddAliasIdentifierItem(AliasIDType.STATUS)); menu.addSeparator(); diff --git a/src/main/java/io/github/dsheirer/alias/id/mobileID/MINEditor.java b/src/main/java/io/github/dsheirer/alias/id/legacy/mobileID/MINEditor.java similarity index 98% rename from src/main/java/io/github/dsheirer/alias/id/mobileID/MINEditor.java rename to src/main/java/io/github/dsheirer/alias/id/legacy/mobileID/MINEditor.java index ff2a4f8d..f50b831a 100644 --- a/src/main/java/io/github/dsheirer/alias/id/mobileID/MINEditor.java +++ b/src/main/java/io/github/dsheirer/alias/id/legacy/mobileID/MINEditor.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package io.github.dsheirer.alias.id.mobileID; +package io.github.dsheirer.alias.id.legacy.mobileID; import io.github.dsheirer.alias.id.AliasID; import io.github.dsheirer.gui.editor.DocumentListenerEditor; diff --git a/src/main/java/io/github/dsheirer/alias/id/mobileID/Min.java b/src/main/java/io/github/dsheirer/alias/id/legacy/mobileID/Min.java similarity index 95% rename from src/main/java/io/github/dsheirer/alias/id/mobileID/Min.java rename to src/main/java/io/github/dsheirer/alias/id/legacy/mobileID/Min.java index 89282fc6..4cd2e203 100644 --- a/src/main/java/io/github/dsheirer/alias/id/mobileID/Min.java +++ b/src/main/java/io/github/dsheirer/alias/id/legacy/mobileID/Min.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package io.github.dsheirer.alias.id.mobileID; +package io.github.dsheirer.alias.id.legacy.mobileID; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; @@ -52,7 +52,7 @@ public class Min extends AliasID public String toString() { - return "MIN: " + (mMin != null ? mMin : "(empty)") + (isValid() ? "" : " **NOT VALID**"); + return "MIN: " + (mMin != null ? mMin : "(empty)") + (isValid() ? "" : " **INVALID - USE TALKGROUP INSTEAD"); } @Override diff --git a/src/main/java/io/github/dsheirer/alias/id/siteID/SiteID.java b/src/main/java/io/github/dsheirer/alias/id/legacy/siteID/SiteID.java similarity index 97% rename from src/main/java/io/github/dsheirer/alias/id/siteID/SiteID.java rename to src/main/java/io/github/dsheirer/alias/id/legacy/siteID/SiteID.java index f4bdbca8..a7616e7e 100644 --- a/src/main/java/io/github/dsheirer/alias/id/siteID/SiteID.java +++ b/src/main/java/io/github/dsheirer/alias/id/legacy/siteID/SiteID.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package io.github.dsheirer.alias.id.siteID; +package io.github.dsheirer.alias.id.legacy.siteID; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import io.github.dsheirer.alias.id.AliasID; diff --git a/src/main/java/io/github/dsheirer/alias/id/siteID/SiteIDEditor.java b/src/main/java/io/github/dsheirer/alias/id/legacy/siteID/SiteIDEditor.java similarity index 98% rename from src/main/java/io/github/dsheirer/alias/id/siteID/SiteIDEditor.java rename to src/main/java/io/github/dsheirer/alias/id/legacy/siteID/SiteIDEditor.java index aa87fcee..e7184ba5 100644 --- a/src/main/java/io/github/dsheirer/alias/id/siteID/SiteIDEditor.java +++ b/src/main/java/io/github/dsheirer/alias/id/legacy/siteID/SiteIDEditor.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package io.github.dsheirer.alias.id.siteID; +package io.github.dsheirer.alias.id.legacy.siteID; import io.github.dsheirer.alias.id.AliasID; import io.github.dsheirer.gui.editor.DocumentListenerEditor; diff --git a/src/main/java/io/github/dsheirer/alias/id/legacy/talkgroup/LegacyTalkgroupID.java b/src/main/java/io/github/dsheirer/alias/id/legacy/talkgroup/LegacyTalkgroupID.java index bc925e83..8eb9553f 100644 --- a/src/main/java/io/github/dsheirer/alias/id/legacy/talkgroup/LegacyTalkgroupID.java +++ b/src/main/java/io/github/dsheirer/alias/id/legacy/talkgroup/LegacyTalkgroupID.java @@ -59,7 +59,7 @@ public class LegacyTalkgroupID extends AliasID { StringBuilder sb = new StringBuilder(); - sb.append("Legacy Talkgroup:").append(mTalkgroup).append(" *Disabled - Please Convert"); + sb.append("Legacy Talkgroup:").append(mTalkgroup).append(" *Disabled - Please use Talkgroup instead"); return sb.toString(); } diff --git a/src/main/java/io/github/dsheirer/alias/id/uniqueID/UniqueID.java b/src/main/java/io/github/dsheirer/alias/id/legacy/uniqueID/UniqueID.java similarity index 93% rename from src/main/java/io/github/dsheirer/alias/id/uniqueID/UniqueID.java rename to src/main/java/io/github/dsheirer/alias/id/legacy/uniqueID/UniqueID.java index 5b2e1f77..249a66ee 100644 --- a/src/main/java/io/github/dsheirer/alias/id/uniqueID/UniqueID.java +++ b/src/main/java/io/github/dsheirer/alias/id/legacy/uniqueID/UniqueID.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package io.github.dsheirer.alias.id.uniqueID; +package io.github.dsheirer.alias.id.legacy.uniqueID; import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; import io.github.dsheirer.alias.id.AliasID; @@ -48,7 +48,7 @@ public class UniqueID extends AliasID public String toString() { - return "UniqueID: " + mUid; + return "UniqueID: " + mUid + " **INVALID - USE TALKGROUP INSTEAD"; } @Override diff --git a/src/main/java/io/github/dsheirer/alias/id/uniqueID/UniqueIDEditor.java b/src/main/java/io/github/dsheirer/alias/id/legacy/uniqueID/UniqueIDEditor.java similarity index 98% rename from src/main/java/io/github/dsheirer/alias/id/uniqueID/UniqueIDEditor.java rename to src/main/java/io/github/dsheirer/alias/id/legacy/uniqueID/UniqueIDEditor.java index 01053c51..41dcb6fa 100644 --- a/src/main/java/io/github/dsheirer/alias/id/uniqueID/UniqueIDEditor.java +++ b/src/main/java/io/github/dsheirer/alias/id/legacy/uniqueID/UniqueIDEditor.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see ******************************************************************************/ -package io.github.dsheirer.alias.id.uniqueID; +package io.github.dsheirer.alias.id.legacy.uniqueID; import io.github.dsheirer.alias.id.AliasID; import io.github.dsheirer.gui.editor.DocumentListenerEditor; diff --git a/src/main/java/io/github/dsheirer/module/decode/ltrnet/LTRNetDecoderState.java b/src/main/java/io/github/dsheirer/module/decode/ltrnet/LTRNetDecoderState.java index 333e5c28..a73c1fc7 100644 --- a/src/main/java/io/github/dsheirer/module/decode/ltrnet/LTRNetDecoderState.java +++ b/src/main/java/io/github/dsheirer/module/decode/ltrnet/LTRNetDecoderState.java @@ -37,7 +37,7 @@ import io.github.dsheirer.message.MessageDirection; import io.github.dsheirer.module.decode.DecoderType; import io.github.dsheirer.module.decode.event.DecodeEvent; import io.github.dsheirer.module.decode.ltrnet.channel.LtrNetChannel; -import io.github.dsheirer.module.decode.ltrnet.identifier.UniqueIdentifier; +import io.github.dsheirer.module.decode.ltrnet.identifier.LtrNetRadioIdentifier; import io.github.dsheirer.module.decode.ltrnet.message.LtrNetMessage; import io.github.dsheirer.module.decode.ltrnet.message.isw.IswCallEnd; import io.github.dsheirer.module.decode.ltrnet.message.isw.IswCallStart; @@ -82,7 +82,7 @@ public class LTRNetDecoderState extends DecoderState private SiteId mCurrentSite; private int mCurrentChannelNumber; private Set mTalkgroups = new TreeSet<>(); - private Set mUniqueIdentifiers = new TreeSet<>(); + private Set mLtrNetRadioIdentifiers = new TreeSet<>(); private Set mESNIdentifiers = new TreeSet<>(); private DecodeEvent mCurrentCallEvent; private LTRTalkgroup mCurrentCallTalkgroup; @@ -121,7 +121,7 @@ public class LTRNetDecoderState extends DecoderState mCurrentSite = null; mCurrentChannelNumber = 0; mTalkgroups.clear(); - mUniqueIdentifiers.clear(); + mLtrNetRadioIdentifiers.clear(); mESNIdentifiers.clear(); resetState(); } @@ -388,7 +388,7 @@ public class LTRNetDecoderState extends DecoderState { IswUniqueId iswUniqueId = (IswUniqueId)message; getIdentifierCollection().update(iswUniqueId.getUniqueID()); - mUniqueIdentifiers.add(iswUniqueId.getUniqueID()); + mLtrNetRadioIdentifiers.add(iswUniqueId.getUniqueID()); updateCurrentCallIdentifiers(); broadcast(new DecoderStateEvent(this, Event.CONTINUATION, State.DATA)); } @@ -462,7 +462,7 @@ public class LTRNetDecoderState extends DecoderState if(message instanceof RegistrationAccept) { RegistrationAccept registrationAccept = (RegistrationAccept)message; - mUniqueIdentifiers.add(registrationAccept.getUniqueID()); + mLtrNetRadioIdentifiers.add(registrationAccept.getUniqueID()); MutableIdentifierCollection ic = new MutableIdentifierCollection(getIdentifierCollection().getIdentifiers()); ic.remove(IdentifierClass.USER); ic.update(message.getIdentifiers()); @@ -580,18 +580,18 @@ public class LTRNetDecoderState extends DecoderState sb.append("\nActive Radio Unique IDs\n"); - if(mUniqueIdentifiers.isEmpty()) + if(mLtrNetRadioIdentifiers.isEmpty()) { sb.append(" None\n"); } else { - List uniqueIdentifiers = new ArrayList<>(mUniqueIdentifiers); - Collections.sort(uniqueIdentifiers, Comparator.comparingInt(Identifier::getValue)); + List ltrNetRadioIdentifiers = new ArrayList<>(mLtrNetRadioIdentifiers); + Collections.sort(ltrNetRadioIdentifiers, Comparator.comparingInt(Identifier::getValue)); - for(UniqueIdentifier uniqueIdentifier: uniqueIdentifiers) + for(LtrNetRadioIdentifier ltrNetRadioIdentifier : ltrNetRadioIdentifiers) { - sb.append(" ").append(uniqueIdentifier).append("\n"); + sb.append(" ").append(ltrNetRadioIdentifier).append("\n"); } } diff --git a/src/main/java/io/github/dsheirer/module/decode/ltrnet/identifier/UniqueIdentifier.java b/src/main/java/io/github/dsheirer/module/decode/ltrnet/identifier/LtrNetRadioIdentifier.java similarity index 70% rename from src/main/java/io/github/dsheirer/module/decode/ltrnet/identifier/UniqueIdentifier.java rename to src/main/java/io/github/dsheirer/module/decode/ltrnet/identifier/LtrNetRadioIdentifier.java index b0d53d53..e4263396 100644 --- a/src/main/java/io/github/dsheirer/module/decode/ltrnet/identifier/UniqueIdentifier.java +++ b/src/main/java/io/github/dsheirer/module/decode/ltrnet/identifier/LtrNetRadioIdentifier.java @@ -20,20 +20,18 @@ package io.github.dsheirer.module.decode.ltrnet.identifier; -import io.github.dsheirer.identifier.Form; -import io.github.dsheirer.identifier.IdentifierClass; import io.github.dsheirer.identifier.Role; -import io.github.dsheirer.identifier.integer.IntegerIdentifier; +import io.github.dsheirer.identifier.talkgroup.TalkgroupIdentifier; import io.github.dsheirer.protocol.Protocol; /** * Unique ID or radio ID for LTR-Net radios is a 16-bit logical network radio identifier value. */ -public class UniqueIdentifier extends IntegerIdentifier implements Comparable +public class LtrNetRadioIdentifier extends TalkgroupIdentifier implements Comparable { - public UniqueIdentifier(int value, Role role) + public LtrNetRadioIdentifier(int value, Role role) { - super(value, IdentifierClass.USER, Form.UNIQUE_ID, role); + super(value, role, false); } @Override @@ -45,21 +43,21 @@ public class UniqueIdentifier extends IntegerIdentifier implements Comparable mIdentifiers; /** @@ -50,14 +50,14 @@ public class IswUniqueId extends LtrNetIswMessage return LtrNetMessageType.ISW_UNIQUE_ID; } - public UniqueIdentifier getUniqueID() + public LtrNetRadioIdentifier getUniqueID() { - if(mUniqueIdentifier == null) + if(mLtrNetRadioIdentifier == null) { - mUniqueIdentifier = UniqueIdentifier.createFrom(getMessage().getInt(SIXTEEN_BITS)); + mLtrNetRadioIdentifier = LtrNetRadioIdentifier.createFrom(getMessage().getInt(SIXTEEN_BITS)); } - return mUniqueIdentifier; + return mLtrNetRadioIdentifier; } diff --git a/src/main/java/io/github/dsheirer/module/decode/ltrnet/message/osw/RegistrationAccept.java b/src/main/java/io/github/dsheirer/module/decode/ltrnet/message/osw/RegistrationAccept.java index b63b3afc..b4ee1a81 100644 --- a/src/main/java/io/github/dsheirer/module/decode/ltrnet/message/osw/RegistrationAccept.java +++ b/src/main/java/io/github/dsheirer/module/decode/ltrnet/message/osw/RegistrationAccept.java @@ -22,7 +22,7 @@ package io.github.dsheirer.module.decode.ltrnet.message.osw; import io.github.dsheirer.bits.CorrectedBinaryMessage; import io.github.dsheirer.identifier.Identifier; import io.github.dsheirer.module.decode.ltrnet.LtrNetMessageType; -import io.github.dsheirer.module.decode.ltrnet.identifier.UniqueIdentifier; +import io.github.dsheirer.module.decode.ltrnet.identifier.LtrNetRadioIdentifier; import java.util.ArrayList; import java.util.List; @@ -32,7 +32,7 @@ import java.util.List; */ public class RegistrationAccept extends LtrNetOswMessage { - private UniqueIdentifier mUniqueIdentifier; + private LtrNetRadioIdentifier mLtrNetRadioIdentifier; private List mIdentifiers; /** @@ -49,14 +49,14 @@ public class RegistrationAccept extends LtrNetOswMessage return LtrNetMessageType.OSW_REGISTRATION_ACCEPT; } - public UniqueIdentifier getUniqueID() + public LtrNetRadioIdentifier getUniqueID() { - if(mUniqueIdentifier == null) + if(mLtrNetRadioIdentifier == null) { - mUniqueIdentifier = UniqueIdentifier.createTo(getMessage().getInt(SIXTEEN_BITS)); + mLtrNetRadioIdentifier = LtrNetRadioIdentifier.createTo(getMessage().getInt(SIXTEEN_BITS)); } - return mUniqueIdentifier; + return mLtrNetRadioIdentifier; } diff --git a/src/main/java/io/github/dsheirer/playlist/PlaylistManager.java b/src/main/java/io/github/dsheirer/playlist/PlaylistManager.java index 05755b9a..1bde42fd 100644 --- a/src/main/java/io/github/dsheirer/playlist/PlaylistManager.java +++ b/src/main/java/io/github/dsheirer/playlist/PlaylistManager.java @@ -51,7 +51,7 @@ public class PlaylistManager implements Listener { private final static Logger mLog = LoggerFactory.getLogger(PlaylistManager.class); - public static final int PLAYLIST_CURRENT_VERSION = 2; + public static final int PLAYLIST_CURRENT_VERSION = 3; private AliasModel mAliasModel; private BroadcastModel mBroadcastModel; diff --git a/src/main/java/io/github/dsheirer/playlist/PlaylistUpdater.java b/src/main/java/io/github/dsheirer/playlist/PlaylistUpdater.java index 0b907961..9add67fd 100644 --- a/src/main/java/io/github/dsheirer/playlist/PlaylistUpdater.java +++ b/src/main/java/io/github/dsheirer/playlist/PlaylistUpdater.java @@ -27,8 +27,9 @@ import io.github.dsheirer.alias.id.legacy.fleetsync.FleetsyncID; import io.github.dsheirer.alias.id.legacy.mdc.MDC1200ID; import io.github.dsheirer.alias.id.legacy.mpt1327.MPT1327ID; import io.github.dsheirer.alias.id.legacy.talkgroup.LegacyTalkgroupID; -import io.github.dsheirer.alias.id.mobileID.Min; +import io.github.dsheirer.alias.id.legacy.mobileID.Min; import io.github.dsheirer.alias.id.talkgroup.Talkgroup; +import io.github.dsheirer.alias.id.legacy.uniqueID.UniqueID; import io.github.dsheirer.controller.channel.Channel; import io.github.dsheirer.module.log.EventLogType; import io.github.dsheirer.module.log.config.EventLogConfiguration; @@ -77,10 +78,12 @@ public class PlaylistUpdater switch(playlist.getVersion()) { case 1: + case 2: mLog.info("Updating playlist from version [1] to version [" + PlaylistManager.PLAYLIST_CURRENT_VERSION + "]"); removeVersion1AudioRecordType(playlist); removeVersion1BinaryMessageLogger(playlist); removeVersion1NonRecordableAliasIdentifiers(playlist); + removeVersion1SiteIdentifiers(playlist); updateVersion1Talkgroups(playlist); updated = true; break; @@ -184,7 +187,34 @@ public class PlaylistUpdater } /** - * Converts legacy version 1talkgroups to the new talkgroup format. Previously, each protocol had a talkgroup + * Removes site identifiers from all aliases. These are no longer supported + */ + private static void removeVersion1SiteIdentifiers(PlaylistV2 playlist) + { + int removed = 0; + + for(Alias alias : playlist.getAliases()) + { + Iterator it = alias.getId().iterator(); + + while(it.hasNext()) + { + if(it.next().getType() == AliasIDType.SITE) + { + it.remove(); + removed++; + } + } + } + + if(removed > 0) + { + mLog.info("Removed [" + removed + "] site identifiers from aliases"); + } + } + + /** + * Converts legacy version 1 talkgroups to the new talkgroup format. Previously, each protocol had a talkgroup * flavor and now there is a generic talkgroup identifier with a protocol specifier. * * @param playlist to update @@ -426,6 +456,12 @@ public class PlaylistUpdater } } break; + case LTR_NET_UID: + int uid = ((UniqueID)next).getUid(); + toAdd.add(new Talkgroup(Protocol.LTR_NET, uid)); + it.remove(); + updated++; + break; } }