Example #1
0
        /// <summary>
        /// The method creates tree from path strings - used for AreaPath and IterationPath
        /// </summary>
        /// <param name="paths">All paths to use to create tree.</param>
        /// <returns>Created tree from given paths.</returns>
        private static IEnumerable <PathElement> CreatePathTree(IEnumerable <string> paths)
        {
            var retVal = new List <PathElement>();

            if (paths == null)
            {
                return(retVal);
            }
            foreach (var path in paths)
            {
                var parts     = new List <string>(path.Split(PathElement.ConstDelimiter[0]));
                var firstPart = parts[0];
                parts.RemoveAt(0);
                string newParts = string.Empty;
                if (parts.Count > 0)
                {
                    newParts = string.Join(PathElement.ConstDelimiter, parts.ToArray());
                }
                var child = retVal.FirstOrDefault(pe => pe.PathPart == firstPart);
                if (child == null)
                {
                    var pe = new PathElement(null, firstPart);
                    pe.Add(newParts);
                    retVal.Add(pe);
                }
                else
                {
                    child.Add(newParts);
                }
            }
            retVal.Sort((a, b) =>
                        string.Compare(a.PathPart, b.PathPart, CultureInfo.CurrentCulture, CompareOptions.OrdinalIgnoreCase));
            return(retVal);
        }