/// <summary> /// Gets all valid child and parent edges. /// Includes both main and secondary parent/children. /// </summary> /// <param name="taxonId">The taxon id.</param> /// <param name="treeIterationMode">The tree iteration mode.</param> /// <param name="onlyValid">if set to <c>true</c> only valid relations are included.</param> /// <param name="includeChildrenSecondaryParents">if set to <c>true</c> secondary parents to children are included.</param> /// <returns> /// A set with all child and parent edges. /// </returns> public HashSet <ITaxonRelationsTreeEdge> GetAllEdges( int taxonId, TaxonRelationsTreeIterationMode treeIterationMode, bool onlyValid, bool includeChildrenSecondaryParents = true) { return(GetAllEdges( GetTreeNode(taxonId), treeIterationMode, onlyValid, includeChildrenSecondaryParents)); }
/// <summary> /// Gets all valid child and parent edges. /// Includes both main and secondary parent/children. /// </summary> /// <param name="taxonIds">The taxon ids.</param> /// <param name="treeIterationMode">The tree iteration mode.</param> /// <param name="onlyValid">if set to <c>true</c> only valid relations are included.</param> /// <param name="includeChildrenSecondaryParents">if set to <c>true</c> secondary parents to children are included.</param> /// <returns> /// A set with all child and parent edges. /// </returns> public HashSet <ITaxonRelationsTreeEdge> GetAllEdges( IEnumerable <int> taxonIds, TaxonRelationsTreeIterationMode treeIterationMode, bool onlyValid, bool includeChildrenSecondaryParents = true) { List <ITaxonRelationsTreeNode> treeNodes = GetTreeNodes(taxonIds); return(GetAllEdges( treeNodes, treeIterationMode, onlyValid, includeChildrenSecondaryParents)); }
/// <summary> /// Gets all valid child and parent edges. /// Includes both main and secondary parent/children. /// </summary> /// <param name="treeNode">The tree node.</param> /// <param name="treeIterationMode">The tree iteration mode.</param> /// <param name="onlyValid">if set to <c>true</c> only valid relations are included.</param> /// <param name="includeChildrenSecondaryParents">if set to <c>true</c> secondary parents to children are included.</param> /// <returns> /// A set with all child and parent edges. /// </returns> public HashSet <ITaxonRelationsTreeEdge> GetAllEdges( ITaxonRelationsTreeNode treeNode, TaxonRelationsTreeIterationMode treeIterationMode, bool onlyValid, bool includeChildrenSecondaryParents = true) { return(GetAllEdges( new List <ITaxonRelationsTreeNode>() { treeNode }, treeIterationMode, onlyValid, includeChildrenSecondaryParents)); }
/// <summary> /// Gets all valid child and parent edges. /// Includes both main and secondary parent/children. /// </summary> /// <param name="treeNodes">The tree nodes.</param> /// <param name="treeIterationMode">The tree iteration mode.</param> /// <param name="onlyValid">if set to <c>true</c> only valid relations are included.</param> /// <param name="includeChildrenSecondaryParents">if set to <c>true</c> secondary parents to children are included.</param> /// <returns> /// A set with all child and parent edges. /// </returns> public HashSet <ITaxonRelationsTreeEdge> GetAllEdges( ICollection <ITaxonRelationsTreeNode> treeNodes, TaxonRelationsTreeIterationMode treeIterationMode, bool onlyValid, bool includeChildrenSecondaryParents = true) { HashSet <ITaxonRelationsTreeEdge> hashEdges = new HashSet <ITaxonRelationsTreeEdge>(); if (treeIterationMode == TaxonRelationsTreeIterationMode.BothParentsAndChildren || treeIterationMode == TaxonRelationsTreeIterationMode.OnlyParents) { hashEdges = GetAllParentEdges(treeNodes, onlyValid); } if (treeIterationMode == TaxonRelationsTreeIterationMode.BothParentsAndChildren || treeIterationMode == TaxonRelationsTreeIterationMode.OnlyChildren) { var childrenEdges = GetAllChildrenEdges(treeNodes, onlyValid, includeChildrenSecondaryParents); hashEdges.UnionWith(childrenEdges); } return(hashEdges); }
/// <summary> /// Creates a graphviz format representation of the tree edges and its nodes. /// </summary> /// <param name="userContext">The user context.</param> /// <param name="tree">The tree.</param> /// <param name="treeNodes">The tree nodes.</param> /// <param name="treeIterationMode">The tree iteration mode.</param> /// <param name="onlyValid">if set to <c>true</c> only valid relations are included.</param> /// <param name="format">The format.</param> /// <returns>A GraphViz graph.</returns> public static string CreateGraphvizFormatRepresentation( IUserContext userContext, TaxonRelationsTree tree, ICollection <ITaxonRelationsTreeNode> treeNodes, TaxonRelationsTreeIterationMode treeIterationMode, bool onlyValid, GraphVizFormat format) { // Get edges. var edges = tree.GetAllEdges( treeNodes, treeIterationMode, onlyValid, treeIterationMode != TaxonRelationsTreeIterationMode.OnlyChildren); string str = CreateGraphvizFormatRepresentation( userContext, tree, edges, treeNodes, format); return(str); }