/// <summary> /// Null safe way to get meta element level /// </summary> /// <param name="source">The source.</param> /// <returns></returns> public static reportElementLevel getElementLevel(this IObjectWithReportLevel source) { if (source == null) { return(reportElementLevel.none); } return(source.elementLevel); return(reportElementLevel.none); }
/// <summary> /// Gets the parent of target element level or root if reached /// </summary> /// <param name="source">The source.</param> /// <param name="level">The level.</param> /// <param name="getLastParent">if set to <c>true</c> [get last parent].</param> /// <param name="nullForNotFound">if set to <c>true</c> [null for not found].</param> /// <param name="limit">The limit.</param> /// <returns></returns> public static IObjectWithParent getParentOfLevel(this IObjectWithParent source, reportElementLevel level, Boolean getLastParent = false, Boolean nullForNotFound = true, Int32 limit = 100) { IObjectWithParent output = source; IObjectWithReportLevel head = output as IObjectWithReportLevel; Int32 c = 0; if (limit == -1) { limit = PATHSEARCH_MAX_LIMIT; } do { head = head.parent as IObjectWithReportLevel; if (getLastParent) { if (head.elementLevel == level) { IObjectWithReportLevel parent = head.parent as IObjectWithReportLevel; if (parent != null) { if (!(parent.elementLevel == level)) { return(head); } } else { return(head); } } else { } } else { if (getElementLevel(head) == level) { return(head); } } c++; if ((c > limit) || (c > PATHSEARCH_MAX_LIMIT)) { break; } } while ((head != null)); if (head == null) { if (nullForNotFound) { } else { } } return(head); }
/// <summary> /// Determines whether [is element level] [the specified element]. /// </summary> /// <param name="obj">The object.</param> /// <param name="element">The element.</param> /// <returns> /// <c>true</c> if [is element level] [the specified element]; otherwise, <c>false</c>. /// </returns> public static Boolean isElementLevel(this IObjectWithReportLevel obj, reportElementLevel element) { reportElementLevel el = getElementLevel(obj); return(el == element); }