private bool CheckLineageTree(LineageNode node, string val) { bool result = false; if (node.Name == val) { return(true); } else { if (node.Items != null && node.Items.Any()) { foreach (LineageNode n in node.Items) { if (!result) { result = CheckLineageTree(n, val); } } } else { return(false); } } return(result); }
private void AddLineageTree(LineageNode node, IList <string> lineage) { int index = 0; LineageNode lastNode = node; while (CheckLineageTree(node, lineage[index]) && lineage.Count - 1 > index) { index++; } if (index == 0) { node.Name = lineage[0]; } else { lastNode = GetLastKnownNode(node, lineage[index - 1]); if (lastNode.Items == null) { lastNode.Items = new List <LineageNode>(); } if (!lastNode.Items.Select(x => x.Name).Contains(lineage[index])) { lastNode.Items.Add(new LineageNode() { Name = lineage[index], BranchNo = index }); } } if (index < lineage.Count - 1) { AddLineageTree(node, lineage); } }
public string GetLineage() { LineageNode lineageTree = bioService.GetLineageTree(GetActualUserProject().ProjectId); var list = Newtonsoft.Json.JsonConvert.SerializeObject(lineageTree); return(list); }
public LineageNode GetLineageTree(ObjectId projectId) { LineageNode lineage = new LineageNode(); IList <CazyItem> items = GetSequenceData(projectId); foreach (CazyItem item in items.Where(x => x.Lineage != null)) { int index = 0; IList <string> hlpLineage = new List <string>(); while (!item.Lineage[index].EndsWith("idea") && item.Lineage.Count - 1 > index) { hlpLineage.Add(item.Lineage[index++]); } AddLineageTree(lineage, hlpLineage); } return(lineage); }
private LineageNode GetLastKnownNode(LineageNode node, string val) { if (node.Name == val) { return(node); } else { if (node.Items != null && node.Items.Any()) { foreach (LineageNode n in node.Items) { node = GetLastKnownNode(n, val); } } } return(node); }