public Thread showSignatures(IEnumerable <String> _signatures) { if (lsSignatures != null) { lsSignatures = O2Linq.getUniqueSortedListOfStrings(_signatures, ref numberOfUniqueStrings); return(showView()); } return(null); }
// the method of calculating first the partial lists is a little bit faster than using a bit list (see getListOfUniqueSignatures_UsingUniqueList below) public static List <String> getListOfUniqueSignatures(List <IO2Finding> o2Findings) { var allSignatures = new List <String>(); foreach (var o2Finding in o2Findings) { var findingUniqueList = new List <string>(); getListOfUniqueSignatures(o2Finding.o2Traces, findingUniqueList); allSignatures.AddRange(findingUniqueList); } var numberOfUniqueSignatures = 0; var uniqueViaLinq = O2Linq.getUniqueListOfStrings(allSignatures, ref numberOfUniqueSignatures); DI.log.info("Via Linq there were {0} unique signatures calculated", numberOfUniqueSignatures); return(uniqueViaLinq.ToList()); /*var uniqueSignatures = new List<String>(); * var partialLists = new List<List<String>>(); * // calculate partial signatures * foreach (var o2Finding in o2Findings) * { * var findingUniqueList = new List<string>(); * getListOfUniqueSignatures(o2Finding.o2Traces, findingUniqueList); * partialLists.Add(findingUniqueList); * } * DI.log.info("Partial lists calculated, consolidating them"); * var itemsProcessed = 0; * var itemsToProcess = o2Findings.Count; * foreach (var partialList in partialLists) * { * foreach (var signature in partialList) * if (false == uniqueSignatures.Contains(signature)) * uniqueSignatures.Add(signature); * * if ((itemsProcessed++)%5000 == 0) * DI.log.info("on [{0}/{1}] there are {2} unique signatures", itemsProcessed, itemsToProcess, * uniqueSignatures.Count); * } * * DI.log.info("There are {0} unique signatures", uniqueSignatures.Count); * * return uniqueSignatures; */ }
private void filterByFilteredSignatures(List <FilteredSignature> filteredSignatures) { this.invokeOnThread( () => { var filterToUse = cbFilter1.Text; O2Thread.mtaThread( () => { var timer = new O2Timer("filterByFilteredSignatures").start(); List <string> listOfFilteredSignatures = O2Linq.getListOfSignatures(filteredSignatures); var newListOfO2Findings = new List <IO2Finding>(); foreach (IO2Finding o2Finding in currentO2Findings) { if (listOfFilteredSignatures.Contains(calculateTreeNodeText(o2Finding, filterToUse, ""))) { newListOfO2Findings.Add(o2Finding); } } currentO2Findings = newListOfO2Findings; timer.stop(); showCurrentO2Findings(); }); }); /* * this.invokeOnThread( * () => * { * * tvFindings.Visible = false; * var nodesToRemove = new List<TreeNode>(); * var nodesToAnalyze = new List<TreeNode>(); * foreach (TreeNode treeNode in tvFindings.Nodes) * nodesToAnalyze.Add(treeNode); * * * nodesToRemove = removeFromTreeNodeCollectionOnFilteredSignatures(nodesToAnalyze, * listOfFilteredSignatures, currentFilteredTextMappings); * * * // and update indexes * /* foreach (TreeNode currentTreeNode in tvFindings.Nodes) * if (currentTreeNode.Tag != null && currentTreeNode.Tag is List<TreeNode>) * { * var subTreeNodesCount = ((List<TreeNode>) currentTreeNode.Tag).Count; * if (subTreeNodesCount == 0) * nodesToRemove.Add(currentTreeNode); * else * { * currentTreeNode.Text += " ... after filter (" + subTreeNodesCount +")"; * currentTreeNode.Collapse(); * } * } * / * // remove nodes from current tree * foreach (TreeNode treeNodeToRemove in nodesToRemove) * tvFindings.Nodes.Remove(treeNodeToRemove); * * tvFindings.Visible = true; * tvFindings.Refresh(); * // refreshView(); * }); * });*/ }