private void setupChannelList() { channelPathList = new Vector(); if ((channelPathPattern != null) && !channelPathPattern.equals("")) appendChannelListFromPattern(); if ((channelPathListString != null) && !channelPathListString.equals("")) appendChannelListFromString(); Iterator channels = channelPathList.iterator(); if (!channels.hasNext()) { System.out.println("DataVideoGather: No data channels to monitor."); this.printUsage(); System.exit(0); } channelPathArray = new String[channelPathList.size()]; shortNameArray = new String[channelPathList.size()]; for (int i = 0; i < channelPathArray.length; i++) { ChannelTree.Node candidate = (ChannelTree.Node) channels.next(); channelPathArray[i] = candidate.getFullName(); shortNameArray[i] = candidate.getName(); } }
public void appendChannelListFromPattern() { try { // Create a sink and connect: Sink sink = new Sink(); sink.OpenRBNBConnection(getServer(), sinkName); // get all the channel paths that match the pattern ChannelMap sMap = new ChannelMap(); sink.RequestRegistration(); sMap = sink.Fetch(-1, sMap); ChannelTree tree = ChannelTree.createFromChannelMap(sMap); Pattern p = Pattern.compile(channelPathPattern); // for each channel path, check match, collect matches... Iterator nodes = tree.iterator(); while (nodes.hasNext()) { ChannelTree.Node n = (ChannelTree.Node) nodes.next(); // System.out.println("Checking " + n.getFullName() + ";" + n.getName()); if (!includeHidden && n.getFullName().startsWith("_")) continue; if (n.getType() != ChannelTree.CHANNEL) continue; String name = n.getFullName(); Matcher m = p.matcher(name); if (m.matches()) { // System.out.println("Matches"); boolean isSource = false; ChannelTree.Node upNode = n.getParent(); while ((!isSource) || (upNode != null)) { if (upNode.getType() == ChannelTree.SOURCE) isSource = true; upNode = upNode.getParent(); } if (isSource) { // System.out.println("... and is a source."); channelPathList.add(n); } else { // System.out.println("... and is NOT a source."); } } } } catch (SAPIException se) { se.printStackTrace(); } } // appendChannelListFromPattern
public void appendChannelListFromString() { try { StringTokenizer st = new StringTokenizer(channelPathListString, ","); // Create a sink and connect: Sink sink = new Sink(); sink.OpenRBNBConnection(getServer(), sinkName); // get all the channel paths that match the pattern ChannelMap sMap = new ChannelMap(); sink.RequestRegistration(); sMap = sink.Fetch(-1, sMap); ChannelTree tree = ChannelTree.createFromChannelMap(sMap); Pattern p = Pattern.compile(channelPathPattern); // for each channel path, check match, collect matches... while (st.hasMoreTokens()) { String path = st.nextToken(); // System.out.println("Checking " + path); ChannelTree.Node n = tree.findNode(path); if (n == null) continue; if (n.getType() != ChannelTree.CHANNEL) continue; String name = n.getFullName(); // System.out.println("Found it..."); boolean isSource = false; ChannelTree.Node upNode = n.getParent(); while ((!isSource) || (upNode != null)) { if (upNode.getType() == ChannelTree.SOURCE) isSource = true; upNode = upNode.getParent(); } if (isSource) { // System.out.println("... and is a source."); channelPathList.add(n); } else { // System.out.println("... and is NOT a source."); } } // while next token } catch (SAPIException se) { se.printStackTrace(); } } // appendChannelListFromString