mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-14 01:27:34 -05:00
Merge pull request #196 from DSheirer/164-patched-group-streaming-duplicates
Resolves #173 - duplicate streaming calls for patch groups.
This commit is contained in:
@@ -185,27 +185,6 @@ public class Alias
|
|||||||
*/
|
*/
|
||||||
public void validate()
|
public void validate()
|
||||||
{
|
{
|
||||||
//Check for duplicate broadcast channels
|
|
||||||
List<BroadcastChannel> broadcastChannels = getBroadcastChannels();
|
|
||||||
|
|
||||||
if(broadcastChannels.size() > 0)
|
|
||||||
{
|
|
||||||
Set<String> channelNames = new TreeSet<>();
|
|
||||||
|
|
||||||
for(BroadcastChannel broadcastChannel: broadcastChannels)
|
|
||||||
{
|
|
||||||
String channelName = broadcastChannel.getChannelName();
|
|
||||||
|
|
||||||
if(channelName == null || channelName.isEmpty() || channelNames.contains(channelName))
|
|
||||||
{
|
|
||||||
removeAliasID(broadcastChannel);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
channelNames.add(channelName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Returns the priority level of this alias, if defined, or the default priority
|
* Returns the priority level of this alias, if defined, or the default priority
|
||||||
@@ -336,9 +315,9 @@ public class Alias
|
|||||||
* List of broadcast channels specified for this alias.
|
* List of broadcast channels specified for this alias.
|
||||||
*/
|
*/
|
||||||
@XmlTransient
|
@XmlTransient
|
||||||
public List<BroadcastChannel> getBroadcastChannels()
|
public Set<BroadcastChannel> getBroadcastChannels()
|
||||||
{
|
{
|
||||||
List<BroadcastChannel> broadcastChannels = new ArrayList<>();
|
Set<BroadcastChannel> broadcastChannels = new TreeSet<>();
|
||||||
|
|
||||||
for(AliasID id: getId())
|
for(AliasID id: getId())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,12 +24,20 @@ import alias.id.AliasIDType;
|
|||||||
import alias.id.broadcast.BroadcastChannel;
|
import alias.id.broadcast.BroadcastChannel;
|
||||||
import alias.id.priority.Priority;
|
import alias.id.priority.Priority;
|
||||||
import alias.id.talkgroup.TalkgroupID;
|
import alias.id.talkgroup.TalkgroupID;
|
||||||
|
import gui.SDRTrunk;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import playlist.version1.System;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
public class PatchGroupAlias extends Alias
|
public class PatchGroupAlias extends Alias
|
||||||
{
|
{
|
||||||
|
private final static Logger mLog = LoggerFactory.getLogger(PatchGroupAlias.class);
|
||||||
|
|
||||||
private Alias mPatchGroupAlias;
|
private Alias mPatchGroupAlias;
|
||||||
private List<Alias> mPatchedAliases = new ArrayList<>();
|
private List<Alias> mPatchedAliases = new ArrayList<>();
|
||||||
private List<String> mPatchedTalkgroupIDs = new ArrayList<>();
|
private List<String> mPatchedTalkgroupIDs = new ArrayList<>();
|
||||||
@@ -295,9 +303,9 @@ public class PatchGroupAlias extends Alias
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BroadcastChannel> getBroadcastChannels()
|
public Set<BroadcastChannel> getBroadcastChannels()
|
||||||
{
|
{
|
||||||
List<BroadcastChannel> broadcastChannels = new ArrayList<>();
|
Set<BroadcastChannel> broadcastChannels = new TreeSet<>();
|
||||||
|
|
||||||
if(hasPatchGroupAlias())
|
if(hasPatchGroupAlias())
|
||||||
{
|
{
|
||||||
@@ -308,13 +316,7 @@ public class PatchGroupAlias extends Alias
|
|||||||
{
|
{
|
||||||
if(!(alias instanceof PatchGroupAlias))
|
if(!(alias instanceof PatchGroupAlias))
|
||||||
{
|
{
|
||||||
for(BroadcastChannel broadcastChannel: alias.getBroadcastChannels())
|
broadcastChannels.addAll(alias.getBroadcastChannels());
|
||||||
{
|
|
||||||
if(!broadcastChannels.contains(broadcastChannel))
|
|
||||||
{
|
|
||||||
broadcastChannels.add(broadcastChannel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -339,4 +341,41 @@ public class PatchGroupAlias extends Alias
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
Alias a1 = new Alias("Alias 1");
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 1"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 2"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 3"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 4"));
|
||||||
|
|
||||||
|
Alias a2 = new Alias("Alias 1");
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 1"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 2"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 3"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 4"));
|
||||||
|
|
||||||
|
Alias a3 = new Alias("Alias 1");
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 1"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 2"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 3"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 4"));
|
||||||
|
|
||||||
|
Alias a4 = new Alias("Alias 1");
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 1"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 2"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 3"));
|
||||||
|
a1.addAliasID(new BroadcastChannel("Channel 4"));
|
||||||
|
|
||||||
|
PatchGroupAlias pga = new PatchGroupAlias();
|
||||||
|
pga.setPatchGroupAlias(a1);
|
||||||
|
pga.addPatchedAlias(a2);
|
||||||
|
pga.addPatchedAlias(a3);
|
||||||
|
pga.addPatchedAlias(a4);
|
||||||
|
|
||||||
|
Set<BroadcastChannel> bc = pga.getBroadcastChannels();
|
||||||
|
|
||||||
|
mLog.debug("Channels:" + bc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -707,9 +707,7 @@ public class BroadcastModel extends AbstractTableModel implements Listener<Audio
|
|||||||
|
|
||||||
if(metadata != null && metadata.isStreamable())
|
if(metadata != null && metadata.isStreamable())
|
||||||
{
|
{
|
||||||
List<BroadcastChannel> broadcastChannels = metadata.getBroadcastChannels();
|
for(BroadcastChannel broadcastChannel : metadata.getBroadcastChannels())
|
||||||
|
|
||||||
for(BroadcastChannel broadcastChannel : broadcastChannels)
|
|
||||||
{
|
{
|
||||||
String channelName = broadcastChannel.getChannelName();
|
String channelName = broadcastChannel.getChannelName();
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
public class Metadata
|
public class Metadata
|
||||||
{
|
{
|
||||||
@@ -61,7 +63,7 @@ public class Metadata
|
|||||||
private Integer mAudioPriority;
|
private Integer mAudioPriority;
|
||||||
protected Boolean mRecordable = false;
|
protected Boolean mRecordable = false;
|
||||||
protected Boolean mDoNotRecord;
|
protected Boolean mDoNotRecord;
|
||||||
private List<BroadcastChannel> mBroadcastChannels;
|
private Set<BroadcastChannel> mBroadcastChannels;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -166,7 +168,7 @@ public class Metadata
|
|||||||
/**
|
/**
|
||||||
* List of de-duplicated broadcast channels aggregated from the primary and secondary TO/FROM aliases.
|
* List of de-duplicated broadcast channels aggregated from the primary and secondary TO/FROM aliases.
|
||||||
*/
|
*/
|
||||||
public List<BroadcastChannel> getBroadcastChannels()
|
public Set<BroadcastChannel> getBroadcastChannels()
|
||||||
{
|
{
|
||||||
if(mBroadcastChannels == null)
|
if(mBroadcastChannels == null)
|
||||||
{
|
{
|
||||||
@@ -582,50 +584,26 @@ public class Metadata
|
|||||||
*/
|
*/
|
||||||
private void determineBroadcastChannels()
|
private void determineBroadcastChannels()
|
||||||
{
|
{
|
||||||
mBroadcastChannels = new ArrayList<>();
|
mBroadcastChannels = new TreeSet<>();
|
||||||
|
|
||||||
if(mPrimaryAddressTo.hasAlias() && mPrimaryAddressTo.getAlias().isStreamable())
|
if(mPrimaryAddressTo.hasAlias() && mPrimaryAddressTo.getAlias().isStreamable())
|
||||||
{
|
{
|
||||||
for(BroadcastChannel broadcastChannel: mPrimaryAddressTo.getAlias().getBroadcastChannels())
|
mBroadcastChannels.addAll(mPrimaryAddressTo.getAlias().getBroadcastChannels());
|
||||||
{
|
|
||||||
if(!mBroadcastChannels.contains(broadcastChannel))
|
|
||||||
{
|
|
||||||
mBroadcastChannels.add(broadcastChannel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mPrimaryAddressFrom.hasAlias() && mPrimaryAddressFrom.getAlias().isStreamable())
|
if(mPrimaryAddressFrom.hasAlias() && mPrimaryAddressFrom.getAlias().isStreamable())
|
||||||
{
|
{
|
||||||
for(BroadcastChannel broadcastChannel: mPrimaryAddressFrom.getAlias().getBroadcastChannels())
|
mBroadcastChannels.addAll(mPrimaryAddressFrom.getAlias().getBroadcastChannels());
|
||||||
{
|
|
||||||
if(!mBroadcastChannels.contains(broadcastChannel))
|
|
||||||
{
|
|
||||||
mBroadcastChannels.add(broadcastChannel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mSecondaryAddressTo.hasAlias() && mSecondaryAddressTo.getAlias().isStreamable())
|
if(mSecondaryAddressTo.hasAlias() && mSecondaryAddressTo.getAlias().isStreamable())
|
||||||
{
|
{
|
||||||
for(BroadcastChannel broadcastChannel: mSecondaryAddressTo.getAlias().getBroadcastChannels())
|
mBroadcastChannels.addAll(mSecondaryAddressTo.getAlias().getBroadcastChannels());
|
||||||
{
|
|
||||||
if(!mBroadcastChannels.contains(broadcastChannel))
|
|
||||||
{
|
|
||||||
mBroadcastChannels.add(broadcastChannel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mSecondaryAddressFrom.hasAlias() && mSecondaryAddressFrom.getAlias().isStreamable())
|
if(mSecondaryAddressFrom.hasAlias() && mSecondaryAddressFrom.getAlias().isStreamable())
|
||||||
{
|
{
|
||||||
for(BroadcastChannel broadcastChannel: mSecondaryAddressFrom.getAlias().getBroadcastChannels())
|
mBroadcastChannels.addAll(mSecondaryAddressFrom.getAlias().getBroadcastChannels());
|
||||||
{
|
|
||||||
if(!mBroadcastChannels.contains(broadcastChannel))
|
|
||||||
{
|
|
||||||
mBroadcastChannels.add(broadcastChannel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user