diff --git a/.idea/dictionaries/denny.xml b/.idea/dictionaries/denny.xml
new file mode 100644
index 00000000..a9760811
--- /dev/null
+++ b/.idea/dictionaries/denny.xml
@@ -0,0 +1,10 @@
+
+
+
+ fleetsync
+ ident
+ talkgroup
+ tgid
+
+
+
\ No newline at end of file
diff --git a/sdrtrunk.iml b/sdrtrunk.iml
index d954fbbe..740623a3 100644
--- a/sdrtrunk.iml
+++ b/sdrtrunk.iml
@@ -8,5 +8,14 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/alias/AliasList.java b/src/alias/AliasList.java
index 59f7dc9a..9c7c6d05 100644
--- a/src/alias/AliasList.java
+++ b/src/alias/AliasList.java
@@ -17,19 +17,6 @@
******************************************************************************/
package alias;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.annotation.XmlAttribute;
-
-import module.decode.lj1200.LJ1200Message.Function;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import sample.Listener;
import alias.id.AliasID;
import alias.id.esn.Esn;
import alias.id.fleetsync.FleetsyncID;
@@ -42,12 +29,22 @@ import alias.id.status.StatusID;
import alias.id.talkgroup.TalkgroupID;
import alias.id.uniqueID.UniqueID;
import audio.metadata.MetadataType;
+import module.decode.lj1200.LJ1200Message.Function;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import sample.Listener;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
public class AliasList implements Listener
{
- private final static Logger mLog = LoggerFactory.getLogger( AliasList.class );
+ private final static Logger mLog = LoggerFactory.getLogger( AliasList.class );
+ public static final String WILDCARD = "*";
- private List mAliases = new ArrayList<>();
private Map mESN = new HashMap<>();
private Map mFleetsync = new HashMap<>();
private Map mLoJack = new HashMap<>();
@@ -58,15 +55,15 @@ public class AliasList implements Listener
private Map mStatus = new HashMap<>();
private Map mTalkgroup = new HashMap<>();
private Map mUniqueID = new HashMap<>();
-
- private boolean mESNWildcard = false;
- private boolean mMobileIDWildcard = false;
- private boolean mFleetsyncWildcard = false;
- private boolean mMDC1200Wildcard = false;
- private boolean mMPT1327Wildcard = false;
- private boolean mSiteWildcard = false;
- private boolean mTalkgroupWildcard = false;
-
+
+ private List mESNWildcards = new ArrayList<>();
+ private List mMobileIDWildcards = new ArrayList<>();
+ private List mFleetsyncWildcards = new ArrayList<>();
+ private List mMDC1200Wildcards = new ArrayList<>();
+ private List mMPT1327Wildcards = new ArrayList<>();
+ private List mSiteWildcards = new ArrayList<>();
+ private List mTalkgroupWildcards = new ArrayList<>();
+
private String mName;
/**
@@ -87,8 +84,6 @@ public class AliasList implements Listener
{
if( alias != null )
{
- mAliases.add( alias );
-
for( AliasID aliasID: alias.getId() )
{
addAliasID( aliasID, alias );
@@ -101,131 +96,140 @@ public class AliasList implements Listener
*/
private void addAliasID( AliasID id, Alias alias )
{
- switch( id.getType() )
- {
- case ESN:
- Esn esn = (Esn)id;
- if( esn.getEsn().contains( "*" ) )
- {
- mESNWildcard = true;
+ if(id.isValid())
+ {
+ switch( id.getType() )
+ {
+ case ESN:
+ Esn esn = (Esn)id;
+ if( esn.getEsn().contains(WILDCARD) )
+ {
+ String regexESN = convertToRegex(esn.getEsn());
- mESN.put( fixWildcard( esn.getEsn() ), alias );
- }
- else
- {
- mESN.put( esn.getEsn(), alias );
- }
- break;
- case Fleetsync:
- FleetsyncID fs = (FleetsyncID)id;
-
- if( fs.getIdent().contains( "*" ) )
- {
- mFleetsyncWildcard = true;
-
- mFleetsync.put( fixWildcard( fs.getIdent() ), alias );
- }
- else
- {
- mFleetsync.put( fs.getIdent(), alias );
- }
- break;
- case LoJack:
- mLoJack.put( (LoJackFunctionAndID)id, alias );
- break;
- case MDC1200:
- MDC1200ID mdc = (MDC1200ID)id;
-
- if( mdc.getIdent().contains( "*" ) )
- {
- mMDC1200Wildcard = true;
-
- //Replace (*) wildcard with regex wildcard (.)
- mMDC1200.put( fixWildcard( mdc.getIdent() ), alias );
- }
- else
- {
- mMDC1200.put( mdc.getIdent(), alias );
- }
- break;
- case MPT1327:
- MPT1327ID mpt = (MPT1327ID)id;
-
- String ident = mpt.getIdent();
-
- if( ident != null )
- {
- if( ident.contains( "*" ) )
- {
- mMPT1327Wildcard = true;
-
- //Replace (*) wildcard with regex wildcard (.)
- mMPT1327.put( fixWildcard( ident ), alias );
- }
- else
- {
- mMPT1327.put( ident, alias );
- }
- }
- break;
- case MIN:
- Min min = (Min)id;
-
- if( min.getMin().contains( "*" ) )
- {
- mMobileIDWildcard = true;
- mMobileID.put( fixWildcard( min.getMin() ), alias );
- }
- else
- {
- mMobileID.put( min.getMin(), alias );
- }
- break;
- case LTRNetUID:
- UniqueID uid = (UniqueID)id;
-
- mUniqueID.put( uid.getUid(), alias );
- break;
- case Site:
- SiteID siteID = (SiteID)id;
+ mESNWildcards.add(regexESN);
+ mESN.put( regexESN, alias );
+ }
+ else
+ {
+ mESN.put( esn.getEsn(), alias );
+ }
+ break;
+ case Fleetsync:
+ FleetsyncID fs = (FleetsyncID)id;
- if( siteID.getSite().contains( "*" ) )
- {
- mSiteWildcard = true;
- mSiteID.put( fixWildcard( siteID.getSite() ), alias );
- }
- else
- {
- mSiteID.put( siteID.getSite(), alias );
- }
-
- break;
- case Status:
- mStatus.put( ((StatusID)id).getStatus(), alias );
- break;
- case Talkgroup:
- TalkgroupID tgid = (TalkgroupID)id;
-
- if( tgid.getTalkgroup().contains( "*" ) )
- {
- mTalkgroupWildcard = true;
-
- //Replace (*) wildcard with regex wildcard (.)
- mTalkgroup.put( fixWildcard( tgid.getTalkgroup() ), alias );
- }
- else
- {
- mTalkgroup.put( tgid.getTalkgroup(), alias );
- }
- break;
- case NonRecordable:
- case Priority:
- //We don't maintain lookups for these items
- break;
- default:
- mLog.warn( "Unrecognized Alias ID Type:" + id.getType().name() );
- break;
- }
+ if( fs.getIdent().contains(WILDCARD) )
+ {
+ String regexFleetsync = convertToRegex( fs.getIdent() );
+
+ mFleetsyncWildcards.add(regexFleetsync);
+ mFleetsync.put( regexFleetsync, alias );
+ }
+ else
+ {
+ mFleetsync.put( fs.getIdent(), alias );
+ }
+ break;
+ case LoJack:
+ mLoJack.put( (LoJackFunctionAndID)id, alias );
+ break;
+ case MDC1200:
+ MDC1200ID mdc = (MDC1200ID)id;
+
+ if( mdc.getIdent().contains(WILDCARD) )
+ {
+ String regexMDC = convertToRegex(mdc.getIdent());
+
+ mMDC1200Wildcards.add(regexMDC);
+ mMDC1200.put(regexMDC, alias);
+ }
+ else
+ {
+ mMDC1200.put( mdc.getIdent(), alias );
+ }
+ break;
+ case MPT1327:
+ MPT1327ID mpt = (MPT1327ID)id;
+
+ String ident = mpt.getIdent();
+
+ if( ident != null )
+ {
+ if( ident.contains(WILDCARD) )
+ {
+ String regexMPT1327 = convertToRegex(ident);
+
+ mMPT1327Wildcards.add(regexMPT1327);
+ mMPT1327.put(regexMPT1327, alias);
+ }
+ else
+ {
+ mMPT1327.put( ident, alias );
+ }
+ }
+ break;
+ case MIN:
+ Min min = (Min)id;
+
+ if( min.getMin().contains(WILDCARD) )
+ {
+ String regexMIN = convertToRegex(min.getMin());
+
+ mMobileIDWildcards.add(regexMIN);
+ mMobileID.put( regexMIN, alias );
+ }
+ else
+ {
+ mMobileID.put( min.getMin(), alias );
+ }
+ break;
+ case LTRNetUID:
+ UniqueID uid = (UniqueID)id;
+
+ mUniqueID.put( uid.getUid(), alias );
+ break;
+ case Site:
+ SiteID siteID = (SiteID)id;
+
+ if( siteID.getSite().contains(WILDCARD) )
+ {
+ String regexSiteID = convertToRegex(siteID.getSite());
+
+ mSiteWildcards.add(regexSiteID);
+ mSiteID.put( regexSiteID, alias );
+ }
+ else
+ {
+ mSiteID.put( siteID.getSite(), alias );
+ }
+
+ break;
+ case Status:
+ mStatus.put( ((StatusID)id).getStatus(), alias );
+ break;
+ case Talkgroup:
+ TalkgroupID tgid = (TalkgroupID)id;
+
+ if( tgid.getTalkgroup().contains(WILDCARD) )
+ {
+ String regexTalkgroup = convertToRegex(tgid.getTalkgroup());
+
+ mTalkgroupWildcards.add(regexTalkgroup);
+ mTalkgroup.put( regexTalkgroup, alias );
+ }
+ else
+ {
+ mTalkgroup.put( tgid.getTalkgroup(), alias );
+ }
+ break;
+ case NonRecordable:
+ case Priority:
+ //We don't maintain lookups for these items
+ break;
+ default:
+ mLog.warn( "Unrecognized Alias ID Type:" + id.getType().name() );
+ break;
+ }
+ }
}
/**
@@ -239,8 +243,6 @@ public class AliasList implements Listener
{
removeAliasID( aliasID, alias );
}
-
- mAliases.remove( alias );
}
}
@@ -249,185 +251,178 @@ public class AliasList implements Listener
*/
private void removeAliasID( AliasID id, Alias alias )
{
- switch( id.getType() )
- {
- case ESN:
- Esn esn = (Esn)id;
- if( mESN.containsKey( esn.getEsn() ) )
- {
- Alias esnAlias = mESN.get( esn.getEsn() );
-
- if( esnAlias != null && esnAlias == alias )
- {
- mESN.remove( esn.getEsn() );
- }
- }
- break;
- case Fleetsync:
- FleetsyncID fs = (FleetsyncID)id;
+ if(id.isValid())
+ {
+ switch( id.getType() )
+ {
+ case ESN:
+ Esn esn = (Esn)id;
- if( mFleetsync.containsKey( fs.getIdent() ) )
- {
- Alias fsAlias = mFleetsync.get( fs.getIdent() );
-
- if( fsAlias != null && fsAlias == alias )
- {
- mFleetsync.remove( fs.getIdent() );
- }
- }
- break;
- case LoJack:
- LoJackFunctionAndID lj = (LoJackFunctionAndID)id;
-
- if( mLoJack.containsKey( lj ) )
- {
- Alias ljAlias = mLoJack.get( lj );
-
- if( ljAlias != null && ljAlias == alias )
- {
- mLoJack.remove( lj );
- }
- }
- break;
- case MDC1200:
- MDC1200ID mdc = (MDC1200ID)id;
+ if( esn.getEsn().contains(WILDCARD))
+ {
+ String regexESN = convertToRegex(esn.getEsn());
+ mESN.remove(regexESN);
+ mESNWildcards.remove(regexESN);
+ }
+ else if( mESN.containsKey( esn.getEsn() ) )
+ {
+ mESN.remove(esn.getEsn());
+ }
+ break;
+ case Fleetsync:
+ FleetsyncID fs = (FleetsyncID)id;
- if( mMDC1200.containsKey( mdc.getIdent() ) )
- {
- Alias mdcAlias = mMDC1200.get( mdc.getIdent() );
-
- if( mdcAlias != null && mdcAlias == alias )
- {
- mMDC1200.remove( mdc.getIdent() );
- }
- }
- break;
- case MPT1327:
- MPT1327ID mpt = (MPT1327ID)id;
-
- if( mMPT1327.containsKey( mpt.getIdent() ) )
- {
- Alias mptAlias = mMDC1200.get( mpt.getIdent() );
-
- if( mptAlias != null && mptAlias == alias )
- {
- mMPT1327.remove( mpt.getIdent() );
- }
- }
- break;
- case MIN:
- Min min = (Min)id;
-
- if( mMobileID.containsKey( min.getMin() ) )
- {
- Alias minAlias = mMobileID.get( min.getMin() );
-
- if( minAlias != null && minAlias == alias )
- {
- mMobileID.remove( min.getMin() );
- }
- }
- break;
- case LTRNetUID:
- UniqueID uid = (UniqueID)id;
-
- if( mUniqueID.containsKey( uid.getUid() ) )
- {
- Alias uidAlias = mUniqueID.get( uid.getUid() );
-
- if( uidAlias != null && uidAlias == alias )
- {
- mUniqueID.remove( uid.getUid() );
- }
- }
- break;
- case Site:
- SiteID sid = (SiteID)id;
+ if(fs.getIdent().contains(WILDCARD))
+ {
+ String regexFleetsync = convertToRegex(fs.getIdent());
+ mFleetsync.remove(regexFleetsync);
+ mFleetsyncWildcards.remove(regexFleetsync);
+ }
+ else
+ {
+ mFleetsync.remove( fs.getIdent() );
+ }
+ break;
+ case LoJack:
+ mLoJack.remove((LoJackFunctionAndID)id);
+ break;
+ case MDC1200:
+ MDC1200ID mdc = (MDC1200ID)id;
- if( mSiteID.containsKey( sid.getSite() ) )
- {
- Alias sidAlias = mSiteID.get( sid.getSite() );
-
- if( sidAlias != null && sidAlias == alias )
- {
- mSiteID.remove( sid.getSite() );
- }
- }
- break;
- case Status:
- StatusID stat = (StatusID)id;
-
- if( mStatus.containsKey( stat.getStatus() ) )
- {
- Alias statAlias = mStatus.get( stat.getStatus() );
-
- if( statAlias != null && statAlias == alias )
- {
- mStatus.remove( stat.getStatus() );
- }
- }
- break;
- case Talkgroup:
- TalkgroupID tg = (TalkgroupID)id;
-
- if( mTalkgroup.containsKey( tg.getTalkgroup() ) )
- {
- Alias tgAlias = mTalkgroup.get( tg.getTalkgroup() );
-
- if( tgAlias != null && tgAlias == alias )
- {
- mTalkgroup.remove( tg.getTalkgroup() );
- }
- }
- break;
- case NonRecordable:
- case Priority:
- //We don't maintain lookups for these items
- break;
- default:
- mLog.warn( "Unrecognized Alias ID Type:" + id.getType().name() );
- break;
- }
+ if(mdc.getIdent().contains(WILDCARD))
+ {
+ String regexMDC1200 = convertToRegex(mdc.getIdent());
+ mMDC1200.remove(regexMDC1200);
+ mMDC1200Wildcards.remove(regexMDC1200);
+ }
+ else
+ {
+ mMDC1200.remove( mdc.getIdent() );
+ }
+ break;
+ case MPT1327:
+ MPT1327ID mpt = (MPT1327ID)id;
+
+ if(mpt.getIdent().contains(WILDCARD))
+ {
+ String regexMPT1327 = convertToRegex(mpt.getIdent());
+ mMPT1327.remove(regexMPT1327);
+ mMPT1327Wildcards.remove(regexMPT1327);
+ }
+ else
+ {
+ mMPT1327.remove( mpt.getIdent() );
+ }
+ break;
+ case MIN:
+ Min min = (Min)id;
+
+ if(min.getMin().contains(WILDCARD))
+ {
+ String regexMIN = convertToRegex(min.getMin());
+ mMobileID.remove(regexMIN);
+ mMobileIDWildcards.remove(regexMIN);
+ }
+ else
+ {
+ mMobileID.remove( min.getMin() );
+ }
+ break;
+ case LTRNetUID:
+ mUniqueID.remove( ((UniqueID)id).getUid() );
+ break;
+ case Site:
+ mSiteID.remove( ((SiteID)id).getSite() );
+ break;
+ case Status:
+ mStatus.remove( ((StatusID)id).getStatus() );
+ break;
+ case Talkgroup:
+ TalkgroupID tg = (TalkgroupID)id;
+
+ if(tg.getTalkgroup().contains(WILDCARD))
+ {
+ String regexTalkgroup = convertToRegex(tg.getTalkgroup());
+ mTalkgroup.remove(regexTalkgroup);
+ mTalkgroupWildcards.remove(regexTalkgroup);
+ }
+ else
+ {
+ mTalkgroup.remove( tg.getTalkgroup() );
+ }
+ break;
+ case NonRecordable:
+ case Priority:
+ //We don't maintain lookups for these items
+ break;
+ default:
+ mLog.warn( "Unrecognized Alias ID Type:" + id.getType().name() );
+ break;
+ }
+ }
}
/**
* Converts user wildcard character (*) to regex single character wildcard (.)
* but ignores a regex multi-character wildcard (.*)
*/
- private String fixWildcard( String value )
+ private String convertToRegex(String value )
{
- if( value.contains( "*" ) && !value.contains( ".*" ) )
+ if( value.contains(WILDCARD) && !value.contains( ".*" ) )
{
- return value.replace( "*", "." );
+ return value.replace(WILDCARD, "." );
}
return value;
}
+ /**
+ * 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(String wildcard: wildcards)
+ {
+ if(wildcard.matches(id))
+ {
+ return wildcard;
+ }
+ }
+ }
+
+ return null;
+ }
+
/**
* Lookup alias by site ID
*/
public Alias getSiteID( String siteID )
{
- if( siteID != null )
- {
- if( mSiteWildcard )
- {
- for( String regex: mSiteID.keySet() )
- {
- if( siteID.matches( regex ) )
- {
- return mSiteID.get( regex );
- }
- }
- }
- else
- {
- return mSiteID.get( siteID );
- }
- }
-
- return null;
+ 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;
}
/**
@@ -445,31 +440,30 @@ public class AliasList implements Listener
{
return mUniqueID.get( uniqueID );
}
-
+
/**
* Lookup alias by ESN
*/
public Alias getESNAlias( String esn )
{
- if( esn != null )
- {
- if( mESNWildcard )
- {
- for( String regex: mESN.keySet() )
- {
- if( esn.matches( regex ) )
- {
- return mESN.get( regex );
- }
- }
- }
- else
- {
- return mESN.get( esn );
- }
- }
-
- return null;
+ Alias alias = null;
+
+ if(esn != null)
+ {
+ alias = mESN.get(esn);
+
+ if(alias == null)
+ {
+ String wildcard = getWildcardMatch(esn, mESNWildcards);
+
+ if(wildcard != null)
+ {
+ alias = mESN.get(wildcard);
+ }
+ }
+ }
+
+ return alias;
}
/**
@@ -477,25 +471,24 @@ public class AliasList implements Listener
*/
public Alias getFleetsyncAlias( String ident )
{
+ Alias alias = null;
+
if( ident != null )
{
- if( mFleetsyncWildcard )
- {
- for( String regex: mFleetsync.keySet() )
- {
- if( ident.matches( regex ) )
- {
- return mFleetsync.get( regex );
- }
- }
- }
- else
- {
- return mFleetsync.get( ident );
- }
+ alias = mFleetsync.get(ident);
+
+ if(alias == null)
+ {
+ String wildcard = getWildcardMatch(ident, mFleetsyncWildcards);
+
+ if(wildcard != null)
+ {
+ alias = mFleetsync.get(wildcard);
+ }
+ }
}
- return null;
+ return alias;
}
/**
@@ -522,25 +515,24 @@ public class AliasList implements Listener
*/
public Alias getMDC1200Alias( String ident )
{
+ Alias alias = null;
+
if( ident != null )
{
- if( mMDC1200Wildcard )
- {
- for( String regex: mMDC1200.keySet() )
- {
- if( ident.matches( regex ) )
- {
- return mMDC1200.get( regex );
- }
- }
- }
- else
- {
- return mMDC1200.get( ident );
- }
+ alias = mMDC1200.get(ident);
+
+ if(alias == null)
+ {
+ String wildcard = getWildcardMatch(ident, mMDC1200Wildcards);
+
+ if(wildcard != null)
+ {
+ alias = mMDC1200.get(wildcard);
+ }
+ }
}
- return null;
+ return alias;
}
/**
@@ -548,25 +540,24 @@ public class AliasList implements Listener
*/
public Alias getMPT1327Alias( String ident )
{
+ Alias alias = null;
+
if( ident != null )
{
- if( mMPT1327Wildcard )
- {
- for( String regex: mMPT1327.keySet() )
- {
- if( ident.matches( regex ) )
- {
- return mMPT1327.get( regex );
- }
- }
- }
- else
- {
- return mMPT1327.get( ident );
- }
+ alias = mMPT1327.get(ident);
+
+ if(alias == null)
+ {
+ String wildcard = getWildcardMatch(ident, mMPT1327Wildcards);
+
+ if(wildcard != null)
+ {
+ alias = mMPT1327.get(wildcard);
+ }
+ }
}
- return null;
+ return alias;
}
/**
@@ -574,25 +565,24 @@ public class AliasList implements Listener
*/
public Alias getMobileIDNumberAlias( String ident )
{
+ Alias alias = null;
+
if( ident != null )
{
- if( mMobileIDWildcard )
- {
- for( String regex: mMobileID.keySet() )
- {
- if( ident.matches( regex ) )
- {
- return mMobileID.get( regex );
- }
- }
- }
- else
- {
- return mMobileID.get( ident );
- }
+ alias = mMobileID.get(ident);
+
+ if(alias == null)
+ {
+ String wildcard = getWildcardMatch(ident, mMobileIDWildcards);
+
+ if(wildcard != null)
+ {
+ alias = mMobileID.get(wildcard);
+ }
+ }
}
- return null;
+ return alias;
}
/**
@@ -600,25 +590,24 @@ public class AliasList implements Listener
*/
public Alias getTalkgroupAlias( String tgid )
{
+ Alias alias = null;
+
if( tgid != null )
{
- if( mTalkgroupWildcard )
- {
- for( String regex: mTalkgroup.keySet() )
- {
- if( tgid.matches( regex ) )
- {
- return mTalkgroup.get( regex );
- }
- }
- }
- else
- {
- return mTalkgroup.get( tgid );
- }
+ alias = mTalkgroup.get(tgid);
+
+ if(alias == null)
+ {
+ String wildcard = getWildcardMatch(tgid, mTalkgroupWildcards);
+
+ if(wildcard != null)
+ {
+ alias = mTalkgroup.get(wildcard);
+ }
+ }
}
- return null;
+ return alias;
}
/**
@@ -704,30 +693,19 @@ public class AliasList implements Listener
switch( event.getEvent() )
{
case ADD:
- if( alias.getList() != null &&
- getName().equalsIgnoreCase( alias.getList() ) )
+ if( alias.getList() != null && getName().equalsIgnoreCase( alias.getList() ) )
{
addAlias( alias );
}
break;
case CHANGE:
- if( alias.getList() != null &&
- getName().equalsIgnoreCase( alias.getList() ) )
+ if( alias.getList() != null && getName().equalsIgnoreCase( alias.getList() ) )
{
- if( !mAliases.contains( alias ) )
- {
- //Alias was moved to this list - add it
- addAlias( alias );
- }
- }
- else if( mAliases.contains( alias ) )
- {
- //An alias in this list was moved to another list
- removeAlias( alias );
+ addAlias( alias );
}
break;
case DELETE:
- if( mAliases.contains( alias ) )
+ if( alias.getList() != null && getName().equalsIgnoreCase( alias.getList() ) )
{
removeAlias( alias );
}
diff --git a/src/alias/id/AliasID.java b/src/alias/id/AliasID.java
index 688004d9..b310330c 100644
--- a/src/alias/id/AliasID.java
+++ b/src/alias/id/AliasID.java
@@ -19,6 +19,7 @@ package alias.id;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlTransient;
import playlist.version1.Group;
import alias.id.esn.Esn;
@@ -49,4 +50,7 @@ public abstract class AliasID
public abstract AliasIDType getType();
public abstract boolean matches( AliasID id );
+
+ @XmlTransient
+ public abstract boolean isValid();
}
diff --git a/src/alias/id/esn/Esn.java b/src/alias/id/esn/Esn.java
index 91d5396d..5e2b5fc1 100644
--- a/src/alias/id/esn/Esn.java
+++ b/src/alias/id/esn/Esn.java
@@ -36,7 +36,13 @@ public class Esn extends AliasID
return mEsn;
}
- public void setEsn( String esn )
+ @Override
+ public boolean isValid()
+ {
+ return mEsn != null;
+ }
+
+ public void setEsn(String esn )
{
mEsn = esn;
}
diff --git a/src/alias/id/fleetsync/FleetsyncID.java b/src/alias/id/fleetsync/FleetsyncID.java
index 57de648e..bf402f1b 100644
--- a/src/alias/id/fleetsync/FleetsyncID.java
+++ b/src/alias/id/fleetsync/FleetsyncID.java
@@ -42,6 +42,12 @@ public class FleetsyncID extends AliasID
mID = ident;
}
+ @Override
+ public boolean isValid()
+ {
+ return mID != null;
+ }
+
public String toString()
{
return "Fleetsync: " + mID;
diff --git a/src/alias/id/lojack/LoJackFunctionAndID.java b/src/alias/id/lojack/LoJackFunctionAndID.java
index 065db0f4..038c1444 100644
--- a/src/alias/id/lojack/LoJackFunctionAndID.java
+++ b/src/alias/id/lojack/LoJackFunctionAndID.java
@@ -55,6 +55,12 @@ public class LoJackFunctionAndID extends AliasID
mFunction = function;
}
+ @Override
+ public boolean isValid()
+ {
+ return mFunction != null && mID != null;
+ }
+
public String toString()
{
return "LoJack FUNC: " + mFunction.getLabel() + " ID:" + ( mID == null ? "" : mID );
diff --git a/src/alias/id/mdc/MDC1200ID.java b/src/alias/id/mdc/MDC1200ID.java
index af0ed12e..731b1153 100644
--- a/src/alias/id/mdc/MDC1200ID.java
+++ b/src/alias/id/mdc/MDC1200ID.java
@@ -42,6 +42,12 @@ public class MDC1200ID extends AliasID
mID = ident;
}
+ @Override
+ public boolean isValid()
+ {
+ return mID != null;
+ }
+
public String toString()
{
return "MDC-1200: " + mID;
diff --git a/src/alias/id/mobileID/Min.java b/src/alias/id/mobileID/Min.java
index c6f8e4c2..bba33fdd 100644
--- a/src/alias/id/mobileID/Min.java
+++ b/src/alias/id/mobileID/Min.java
@@ -43,7 +43,13 @@ public class Min extends AliasID
{
mMin = min;
}
-
+
+ @Override
+ public boolean isValid()
+ {
+ return mMin != null;
+ }
+
public String toString()
{
return "MIN: " + mMin;
diff --git a/src/alias/id/mpt1327/MPT1327ID.java b/src/alias/id/mpt1327/MPT1327ID.java
index 57535dbb..12b45d52 100644
--- a/src/alias/id/mpt1327/MPT1327ID.java
+++ b/src/alias/id/mpt1327/MPT1327ID.java
@@ -41,6 +41,12 @@ public class MPT1327ID extends AliasID
mID = ident;
}
+ @Override
+ public boolean isValid()
+ {
+ return mID != null;
+ }
+
public String toString()
{
return "MPT-1327: " + mID;
diff --git a/src/alias/id/nonrecordable/NonRecordable.java b/src/alias/id/nonrecordable/NonRecordable.java
index 97128880..a72d8e12 100644
--- a/src/alias/id/nonrecordable/NonRecordable.java
+++ b/src/alias/id/nonrecordable/NonRecordable.java
@@ -11,6 +11,12 @@ public class NonRecordable extends AliasID
return AliasIDType.NonRecordable;
}
+ @Override
+ public boolean isValid()
+ {
+ return true;
+ }
+
@Override
public boolean matches( AliasID id )
{
diff --git a/src/alias/id/priority/Priority.java b/src/alias/id/priority/Priority.java
index e29be8a0..caef53b5 100644
--- a/src/alias/id/priority/Priority.java
+++ b/src/alias/id/priority/Priority.java
@@ -39,6 +39,12 @@ public class Priority extends AliasID
{
}
+ @Override
+ public boolean isValid()
+ {
+ return true;
+ }
+
/**
* Indicates the associated alias should not be monitored or tracked.
*/
diff --git a/src/alias/id/siteID/SiteID.java b/src/alias/id/siteID/SiteID.java
index a36d2fd5..04d6d20c 100644
--- a/src/alias/id/siteID/SiteID.java
+++ b/src/alias/id/siteID/SiteID.java
@@ -40,7 +40,13 @@ public class SiteID extends AliasID
{
mSite = site;
}
-
+
+ @Override
+ public boolean isValid()
+ {
+ return mSite != null;
+ }
+
public String toString()
{
return "Site: " + mSite;
diff --git a/src/alias/id/status/StatusID.java b/src/alias/id/status/StatusID.java
index b93e0ad8..ebc8f133 100644
--- a/src/alias/id/status/StatusID.java
+++ b/src/alias/id/status/StatusID.java
@@ -40,7 +40,13 @@ public class StatusID extends AliasID
{
this.mStatus = status;
}
-
+
+ @Override
+ public boolean isValid()
+ {
+ return true;
+ }
+
public String toString()
{
return "Status: " + String.format( "%03d", mStatus );
diff --git a/src/alias/id/talkgroup/TalkgroupID.java b/src/alias/id/talkgroup/TalkgroupID.java
index 71764535..78cae9fd 100644
--- a/src/alias/id/talkgroup/TalkgroupID.java
+++ b/src/alias/id/talkgroup/TalkgroupID.java
@@ -42,6 +42,12 @@ public class TalkgroupID extends AliasID
mTalkgroup = talkgroup;
}
+ @Override
+ public boolean isValid()
+ {
+ return mTalkgroup != null;
+ }
+
public String toString()
{
StringBuilder sb = new StringBuilder();
diff --git a/src/alias/id/uniqueID/UniqueID.java b/src/alias/id/uniqueID/UniqueID.java
index ab7aedd0..29e074c6 100644
--- a/src/alias/id/uniqueID/UniqueID.java
+++ b/src/alias/id/uniqueID/UniqueID.java
@@ -41,6 +41,12 @@ public class UniqueID extends AliasID
this.mUid = uid;
}
+ @Override
+ public boolean isValid()
+ {
+ return true;
+ }
+
public String toString()
{
return "UniqueID: " + mUid;