mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-09 23:27:24 -05:00
355 lines
6.6 KiB
Java
355 lines
6.6 KiB
Java
/*******************************************************************************
|
|
* SDR Trunk
|
|
* Copyright (C) 2014-2016 Dennis Sheirer
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
******************************************************************************/
|
|
package alias;
|
|
|
|
import java.awt.Color;
|
|
import java.util.ArrayList;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.TreeSet;
|
|
|
|
import javax.xml.bind.annotation.XmlAttribute;
|
|
import javax.xml.bind.annotation.XmlElement;
|
|
import javax.xml.bind.annotation.XmlRootElement;
|
|
import javax.xml.bind.annotation.XmlSeeAlso;
|
|
import javax.xml.bind.annotation.XmlTransient;
|
|
|
|
import alias.action.AliasAction;
|
|
import alias.id.AliasID;
|
|
import alias.id.AliasIDType;
|
|
import alias.id.broadcast.BroadcastChannel;
|
|
import alias.id.nonrecordable.NonRecordable;
|
|
import alias.id.priority.Priority;
|
|
|
|
@XmlSeeAlso( { AliasID.class, AliasAction.class } )
|
|
@XmlRootElement( name = "alias" )
|
|
public class Alias
|
|
{
|
|
private String mList;
|
|
private String mGroup;
|
|
private String mName;
|
|
private int mColor;
|
|
private String mIconName;
|
|
private List<AliasID> mAliasIDs = new ArrayList<AliasID>();
|
|
private List<AliasAction> mAliasActions = new ArrayList<AliasAction>();
|
|
|
|
public Alias()
|
|
{
|
|
}
|
|
|
|
public Alias( String name )
|
|
{
|
|
mName = name;
|
|
}
|
|
|
|
public String toString()
|
|
{
|
|
return getName();
|
|
}
|
|
|
|
@XmlAttribute( name="name" )
|
|
public String getName()
|
|
{
|
|
return mName;
|
|
}
|
|
|
|
public void setName( String name )
|
|
{
|
|
mName = name;
|
|
}
|
|
|
|
@XmlAttribute( name="list" )
|
|
public String getList()
|
|
{
|
|
return mList;
|
|
}
|
|
|
|
public void setList( String list )
|
|
{
|
|
mList = list;
|
|
}
|
|
|
|
public boolean hasList()
|
|
{
|
|
return mList != null;
|
|
}
|
|
|
|
@XmlAttribute( name="group" )
|
|
public String getGroup()
|
|
{
|
|
return mGroup;
|
|
}
|
|
|
|
public void setGroup( String group )
|
|
{
|
|
mGroup = group;
|
|
}
|
|
|
|
public boolean hasGroup()
|
|
{
|
|
return mGroup != null;
|
|
}
|
|
|
|
@XmlAttribute
|
|
public int getColor()
|
|
{
|
|
return mColor;
|
|
}
|
|
|
|
public void setColor( int color )
|
|
{
|
|
mColor = color;
|
|
}
|
|
|
|
public Color getDisplayColor()
|
|
{
|
|
return new Color( getColor() );
|
|
}
|
|
|
|
@XmlAttribute
|
|
public String getIconName()
|
|
{
|
|
return mIconName;
|
|
}
|
|
|
|
public void setIconName( String iconName )
|
|
{
|
|
mIconName = iconName;
|
|
}
|
|
|
|
@XmlElement( name="id" )
|
|
public List<AliasID> getId()
|
|
{
|
|
return mAliasIDs;
|
|
}
|
|
|
|
public void setId( ArrayList<AliasID> id )
|
|
{
|
|
mAliasIDs = id;
|
|
}
|
|
|
|
public void addAliasID( AliasID id )
|
|
{
|
|
mAliasIDs.add( id );
|
|
}
|
|
|
|
public void removeAliasID( AliasID id )
|
|
{
|
|
mAliasIDs.remove( id );
|
|
}
|
|
|
|
@XmlElement( name="action" )
|
|
public List<AliasAction> getAction()
|
|
{
|
|
return mAliasActions;
|
|
}
|
|
|
|
public void setAction( List<AliasAction> actions )
|
|
{
|
|
mAliasActions = actions;
|
|
}
|
|
|
|
public void addAliasAction( AliasAction action )
|
|
{
|
|
mAliasActions.add( action );
|
|
}
|
|
|
|
public void removeAliasAction( AliasAction action )
|
|
{
|
|
mAliasActions.remove( action );
|
|
}
|
|
|
|
public boolean hasActions()
|
|
{
|
|
return !mAliasActions.isEmpty();
|
|
}
|
|
|
|
/**
|
|
* Perform any validation/cleanup actions on this alias.
|
|
*/
|
|
public void validate()
|
|
{
|
|
}
|
|
/**
|
|
* Returns the priority level of this alias, if defined, or the default priority
|
|
*/
|
|
@XmlTransient
|
|
public int getCallPriority()
|
|
{
|
|
for( AliasID id: mAliasIDs )
|
|
{
|
|
if( id.getType() == AliasIDType.PRIORITY)
|
|
{
|
|
return ((Priority)id).getPriority();
|
|
}
|
|
}
|
|
|
|
return Priority.DEFAULT_PRIORITY;
|
|
}
|
|
|
|
public boolean hasCallPriority()
|
|
{
|
|
for( AliasID id: mAliasIDs )
|
|
{
|
|
if( id.getType() == AliasIDType.PRIORITY)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Sets or updates the call priority
|
|
*/
|
|
public void setCallPriority( int priority )
|
|
{
|
|
if( priority == Priority.DO_NOT_MONITOR ||
|
|
( Priority.MIN_PRIORITY <= priority && priority <= Priority.MAX_PRIORITY ) )
|
|
{
|
|
for( AliasID id: mAliasIDs )
|
|
{
|
|
if( id.getType() == AliasIDType.PRIORITY)
|
|
{
|
|
((Priority)id).setPriority( priority );
|
|
return;
|
|
}
|
|
}
|
|
|
|
//If we don't find a priority id, create one
|
|
Priority p = new Priority();
|
|
p.setPriority( priority );
|
|
addAliasID( p );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Inspects the alias for a non-recordable alias id. Default is true;
|
|
*/
|
|
@XmlTransient
|
|
public boolean isRecordable()
|
|
{
|
|
for( AliasID id: getId() )
|
|
{
|
|
if( id.getType() == AliasIDType.NON_RECORDABLE)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Sets or removes the non-recordable alias ID for this alias.
|
|
*/
|
|
public void setRecordable( boolean recordable )
|
|
{
|
|
if( recordable )
|
|
{
|
|
AliasID toRemove = null;
|
|
|
|
for( AliasID id: getId() )
|
|
{
|
|
if( id.getType() == AliasIDType.NON_RECORDABLE)
|
|
{
|
|
toRemove = id;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( toRemove != null )
|
|
{
|
|
removeAliasID( toRemove );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
for( AliasID id: getId() )
|
|
{
|
|
if( id.getType() == AliasIDType.NON_RECORDABLE)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
addAliasID( new NonRecordable() );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Inspects the alias for broadcast channel/streamable alias ids. Default is false;
|
|
*/
|
|
@XmlTransient
|
|
public boolean isStreamable()
|
|
{
|
|
for( AliasID id: getId() )
|
|
{
|
|
if( id.getType() == AliasIDType.BROADCAST_CHANNEL)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* List of broadcast channels specified for this alias.
|
|
*/
|
|
@XmlTransient
|
|
public Set<BroadcastChannel> getBroadcastChannels()
|
|
{
|
|
Set<BroadcastChannel> broadcastChannels = new TreeSet<>();
|
|
|
|
for(AliasID id: getId())
|
|
{
|
|
if(id.getType() == AliasIDType.BROADCAST_CHANNEL)
|
|
{
|
|
broadcastChannels.add((BroadcastChannel)id);
|
|
}
|
|
}
|
|
|
|
return broadcastChannels;
|
|
}
|
|
|
|
/**
|
|
* Indicates if this alias contains a broadcast channel alias id with the channel name.
|
|
*/
|
|
public boolean hasBroadcastChannel(String channel)
|
|
{
|
|
if(channel == null || channel.isEmpty())
|
|
{
|
|
return false;
|
|
}
|
|
|
|
for(AliasID id: getId())
|
|
{
|
|
if(id.getType() == AliasIDType.BROADCAST_CHANNEL &&
|
|
((BroadcastChannel)id).getChannelName().contentEquals(channel))
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|