From cd6025133781924b74e8632f539c14d0e8d5f07f Mon Sep 17 00:00:00 2001 From: Denny Date: Sun, 12 Feb 2017 10:59:06 -0500 Subject: [PATCH] Resolves #173 - duplicate streaming calls for patch groups. --- src/alias/Alias.java | 25 +---------- src/alias/PatchGroupAlias.java | 57 +++++++++++++++++++++---- src/audio/broadcast/BroadcastModel.java | 4 +- src/channel/metadata/Metadata.java | 40 ++++------------- 4 files changed, 60 insertions(+), 66 deletions(-) diff --git a/src/alias/Alias.java b/src/alias/Alias.java index 0747e72d..8f8b5ba5 100644 --- a/src/alias/Alias.java +++ b/src/alias/Alias.java @@ -185,27 +185,6 @@ public class Alias */ public void validate() { - //Check for duplicate broadcast channels - List broadcastChannels = getBroadcastChannels(); - - if(broadcastChannels.size() > 0) - { - Set 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 @@ -336,9 +315,9 @@ public class Alias * List of broadcast channels specified for this alias. */ @XmlTransient - public List getBroadcastChannels() + public Set getBroadcastChannels() { - List broadcastChannels = new ArrayList<>(); + Set broadcastChannels = new TreeSet<>(); for(AliasID id: getId()) { diff --git a/src/alias/PatchGroupAlias.java b/src/alias/PatchGroupAlias.java index 5831d9ea..bb7e347a 100644 --- a/src/alias/PatchGroupAlias.java +++ b/src/alias/PatchGroupAlias.java @@ -24,12 +24,20 @@ import alias.id.AliasIDType; import alias.id.broadcast.BroadcastChannel; import alias.id.priority.Priority; 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.List; +import java.util.Set; +import java.util.TreeSet; public class PatchGroupAlias extends Alias { + private final static Logger mLog = LoggerFactory.getLogger(PatchGroupAlias.class); + private Alias mPatchGroupAlias; private List mPatchedAliases = new ArrayList<>(); private List mPatchedTalkgroupIDs = new ArrayList<>(); @@ -295,9 +303,9 @@ public class PatchGroupAlias extends Alias } @Override - public List getBroadcastChannels() + public Set getBroadcastChannels() { - List broadcastChannels = new ArrayList<>(); + Set broadcastChannels = new TreeSet<>(); if(hasPatchGroupAlias()) { @@ -308,13 +316,7 @@ public class PatchGroupAlias extends Alias { if(!(alias instanceof PatchGroupAlias)) { - for(BroadcastChannel broadcastChannel: alias.getBroadcastChannels()) - { - if(!broadcastChannels.contains(broadcastChannel)) - { - broadcastChannels.add(broadcastChannel); - } - } + broadcastChannels.addAll(alias.getBroadcastChannels()); } } @@ -339,4 +341,41 @@ public class PatchGroupAlias extends Alias 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 bc = pga.getBroadcastChannels(); + + mLog.debug("Channels:" + bc); + } } diff --git a/src/audio/broadcast/BroadcastModel.java b/src/audio/broadcast/BroadcastModel.java index fa9708ed..04f64f76 100644 --- a/src/audio/broadcast/BroadcastModel.java +++ b/src/audio/broadcast/BroadcastModel.java @@ -707,9 +707,7 @@ public class BroadcastModel extends AbstractTableModel implements Listener