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;
}
}