mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-09 23:27:24 -05:00
305 lines
8.9 KiB
Java
305 lines
8.9 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 alias.action.AliasAction;
|
|
import alias.action.AliasActionType;
|
|
import alias.action.beep.BeepAction;
|
|
import alias.action.beep.BeepActionEditor;
|
|
import alias.action.clip.ClipAction;
|
|
import alias.action.clip.ClipActionEditor;
|
|
import alias.action.script.ScriptAction;
|
|
import alias.action.script.ScriptActionEditor;
|
|
import alias.id.AliasID;
|
|
import alias.id.AliasIDType;
|
|
import alias.id.broadcast.BroadcastChannel;
|
|
import alias.id.broadcast.BroadcastChannelEditor;
|
|
import alias.id.esn.ESNEditor;
|
|
import alias.id.esn.Esn;
|
|
import alias.id.fleetsync.FleetsyncID;
|
|
import alias.id.fleetsync.FleetsyncIDEditor;
|
|
import alias.id.lojack.LoJackFunctionAndID;
|
|
import alias.id.lojack.LoJackIDEditor;
|
|
import alias.id.mdc.MDC1200ID;
|
|
import alias.id.mdc.MDC1200IDEditor;
|
|
import alias.id.mobileID.MINEditor;
|
|
import alias.id.mobileID.Min;
|
|
import alias.id.mpt1327.MPT1327ID;
|
|
import alias.id.mpt1327.MPT1327IDEditor;
|
|
import alias.id.nonrecordable.NonRecordable;
|
|
import alias.id.nonrecordable.NonRecordableEditor;
|
|
import alias.id.priority.Priority;
|
|
import alias.id.priority.PriorityEditor;
|
|
import alias.id.siteID.SiteID;
|
|
import alias.id.siteID.SiteIDEditor;
|
|
import alias.id.status.StatusID;
|
|
import alias.id.status.StatusIDEditor;
|
|
import alias.id.talkgroup.TalkgroupID;
|
|
import alias.id.talkgroup.TalkgroupIDEditor;
|
|
import alias.id.uniqueID.UniqueID;
|
|
import alias.id.uniqueID.UniqueIDEditor;
|
|
import audio.broadcast.BroadcastModel;
|
|
import gui.editor.Editor;
|
|
import gui.editor.EmptyEditor;
|
|
|
|
public class AliasFactory
|
|
{
|
|
public static AliasID copyOf( AliasID id )
|
|
{
|
|
switch( id.getType() )
|
|
{
|
|
case BROADCAST_CHANNEL:
|
|
BroadcastChannel originalBroadcast = (BroadcastChannel)id;
|
|
BroadcastChannel copyBroadcast = new BroadcastChannel();
|
|
copyBroadcast.setChannelName(originalBroadcast.getChannelName());
|
|
return copyBroadcast;
|
|
case ESN:
|
|
Esn originalESN = (Esn)id;
|
|
Esn copyESN = new Esn();
|
|
copyESN.setEsn( originalESN.getEsn() );
|
|
return copyESN;
|
|
case FLEETSYNC:
|
|
FleetsyncID originalFleetsyncID = (FleetsyncID)id;
|
|
FleetsyncID copyFleetsyncID = new FleetsyncID();
|
|
copyFleetsyncID.setIdent( originalFleetsyncID.getIdent() );
|
|
return copyFleetsyncID;
|
|
case LTR_NET_UID:
|
|
UniqueID originalUniqueID = (UniqueID)id;
|
|
UniqueID copyUniqueID = new UniqueID();
|
|
copyUniqueID.setUid( originalUniqueID.getUid() );
|
|
return copyUniqueID;
|
|
case LOJACK:
|
|
LoJackFunctionAndID originalLoJackFunctionAndID = (LoJackFunctionAndID)id;
|
|
LoJackFunctionAndID copyLoJackFunctionAndID = new LoJackFunctionAndID();
|
|
copyLoJackFunctionAndID.setFunction( originalLoJackFunctionAndID.getFunction() );
|
|
copyLoJackFunctionAndID.setID( originalLoJackFunctionAndID.getID() );
|
|
return copyLoJackFunctionAndID;
|
|
case MDC1200:
|
|
MDC1200ID originalMDC1200ID = (MDC1200ID)id;
|
|
MDC1200ID copyMDC1200ID = new MDC1200ID();
|
|
copyMDC1200ID.setIdent( originalMDC1200ID.getIdent() );
|
|
return copyMDC1200ID;
|
|
case MIN:
|
|
Min originalMin = (Min)id;
|
|
Min copyMin = new Min();
|
|
copyMin.setMin( originalMin.getMin() );
|
|
return copyMin;
|
|
case MPT1327:
|
|
MPT1327ID originalMPT1327ID = (MPT1327ID)id;
|
|
MPT1327ID copyMPT1327ID = new MPT1327ID();
|
|
copyMPT1327ID.setIdent( originalMPT1327ID.getIdent() );
|
|
return copyMPT1327ID;
|
|
case NON_RECORDABLE:
|
|
return new NonRecordable();
|
|
case PRIORITY:
|
|
Priority originalPriority = (Priority)id;
|
|
Priority copyPriority = new Priority();
|
|
copyPriority.setPriority( originalPriority.getPriority() );
|
|
return copyPriority;
|
|
case SITE:
|
|
SiteID originalSiteID = (SiteID)id;
|
|
SiteID copySiteID = new SiteID();
|
|
copySiteID.setSite( originalSiteID.getSite() );
|
|
return copySiteID;
|
|
case TALKGROUP:
|
|
TalkgroupID originalTalkgroupID = (TalkgroupID)id;
|
|
TalkgroupID copyTalkgroupID = new TalkgroupID();
|
|
copyTalkgroupID.setTalkgroup( originalTalkgroupID.getTalkgroup() );
|
|
return copyTalkgroupID;
|
|
case STATUS:
|
|
StatusID originalStatusID = (StatusID)id;
|
|
StatusID copyStatusID = new StatusID();
|
|
copyStatusID.setStatus( originalStatusID.getStatus() );
|
|
return copyStatusID;
|
|
default:
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static AliasAction copyOf( AliasAction action )
|
|
{
|
|
if( action instanceof BeepAction )
|
|
{
|
|
return new BeepAction();
|
|
}
|
|
else if( action instanceof ClipAction )
|
|
{
|
|
ClipAction originalClip = (ClipAction)action;
|
|
ClipAction copyClip = new ClipAction();
|
|
copyClip.setInterval( originalClip.getInterval() );
|
|
copyClip.setPath( originalClip.getPath() );
|
|
copyClip.setPeriod( originalClip.getPeriod() );
|
|
return copyClip;
|
|
}
|
|
else if( action instanceof ScriptAction )
|
|
{
|
|
ScriptAction originalScript = (ScriptAction)action;
|
|
ScriptAction copyScript = new ScriptAction();
|
|
copyScript.setInterval( originalScript.getInterval() );
|
|
copyScript.setPeriod( originalScript.getPeriod() );
|
|
copyScript.setScript( originalScript.getScript() );
|
|
return copyScript;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
public static Alias copyOf( Alias original )
|
|
{
|
|
Alias copy = new Alias( original.getName() );
|
|
copy.setList( original.getList() );
|
|
copy.setGroup( original.getGroup() );
|
|
copy.setColor( original.getColor() );
|
|
copy.setIconName( original.getIconName() );
|
|
|
|
for( AliasID id: original.getId() )
|
|
{
|
|
AliasID copyID = copyOf( id );
|
|
|
|
if( copyID != null )
|
|
{
|
|
copy.addAliasID( copyID );
|
|
}
|
|
}
|
|
|
|
for( AliasAction action: original.getAction() )
|
|
{
|
|
AliasAction copyAction = copyOf( action );
|
|
|
|
if( copyAction != null )
|
|
{
|
|
copy.addAliasAction( copyAction );
|
|
}
|
|
}
|
|
|
|
return copy;
|
|
}
|
|
|
|
public static Editor<AliasID> getEditor( AliasID aliasID, BroadcastModel broadcastModel )
|
|
{
|
|
if( aliasID != null )
|
|
{
|
|
switch( aliasID.getType() )
|
|
{
|
|
case BROADCAST_CHANNEL:
|
|
return new BroadcastChannelEditor(aliasID, broadcastModel);
|
|
case ESN:
|
|
return new ESNEditor( aliasID );
|
|
case FLEETSYNC:
|
|
return new FleetsyncIDEditor( aliasID );
|
|
case LTR_NET_UID:
|
|
return new UniqueIDEditor( aliasID );
|
|
case LOJACK:
|
|
return new LoJackIDEditor( aliasID );
|
|
case MDC1200:
|
|
return new MDC1200IDEditor( aliasID );
|
|
case MIN:
|
|
return new MINEditor( aliasID );
|
|
case MPT1327:
|
|
return new MPT1327IDEditor( aliasID );
|
|
case NON_RECORDABLE:
|
|
return new NonRecordableEditor( aliasID );
|
|
case PRIORITY:
|
|
return new PriorityEditor( aliasID );
|
|
case SITE:
|
|
return new SiteIDEditor( aliasID );
|
|
case STATUS:
|
|
return new StatusIDEditor( aliasID );
|
|
case TALKGROUP:
|
|
return new TalkgroupIDEditor( aliasID );
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
return new EmptyEditor<AliasID>();
|
|
}
|
|
|
|
public static Editor<AliasAction> getEditor( AliasAction aliasAction )
|
|
{
|
|
if( aliasAction != null )
|
|
{
|
|
switch( aliasAction.getType() )
|
|
{
|
|
case BEEP:
|
|
return new BeepActionEditor( aliasAction );
|
|
case CLIP:
|
|
return new ClipActionEditor( aliasAction );
|
|
case SCRIPT:
|
|
return new ScriptActionEditor( aliasAction );
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
return new EmptyEditor<AliasAction>();
|
|
}
|
|
|
|
public static AliasID getAliasID( AliasIDType type )
|
|
{
|
|
switch( type )
|
|
{
|
|
case BROADCAST_CHANNEL:
|
|
return new BroadcastChannel();
|
|
case ESN:
|
|
return new Esn();
|
|
case FLEETSYNC:
|
|
return new FleetsyncID();
|
|
case LTR_NET_UID:
|
|
return new UniqueID();
|
|
case LOJACK:
|
|
return new LoJackFunctionAndID();
|
|
case MDC1200:
|
|
return new MDC1200ID();
|
|
case MIN:
|
|
return new Min();
|
|
case MPT1327:
|
|
return new MPT1327ID();
|
|
case NON_RECORDABLE:
|
|
return new NonRecordable();
|
|
case PRIORITY:
|
|
return new Priority();
|
|
case SITE:
|
|
return new SiteID();
|
|
case STATUS:
|
|
return new StatusID();
|
|
case TALKGROUP:
|
|
return new TalkgroupID();
|
|
default:
|
|
throw new IllegalArgumentException( "Unrecognized Alias ID type: " + type );
|
|
}
|
|
}
|
|
|
|
public static AliasAction getAliasAction( AliasActionType type )
|
|
{
|
|
switch( type )
|
|
{
|
|
case BEEP:
|
|
return new BeepAction();
|
|
case CLIP:
|
|
return new ClipAction();
|
|
case SCRIPT:
|
|
return new ScriptAction();
|
|
default:
|
|
throw new IllegalArgumentException( "Unrecognized Alias Action type: " + type );
|
|
}
|
|
}
|
|
|
|
}
|