Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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);
        }