示例#1
0
        public static string[] MakeItemList(string[] items, bool categoryOnly)
        {
            var query = from item in items
                        from parent in QueryParents(item)
                        select parent;

            var result = query.Concat(items)
                         .Distinct()
                         .Where(item => categoryOnly == true ? NameValidator.VerifyCategoryPath(item) : true)
                         .OrderBy(item => item)
                         .ToArray();

            if (result.Any() == true)
            {
                return(result);
            }
            return(new string[] { PathUtility.Separator, });

            IEnumerable <string> QueryParents(string path)
            {
                return(EnumerableUtility.Ancestors(path, item =>
                {
                    if (item == PathUtility.Separator)
                    {
                        return null;
                    }
                    if (NameValidator.VerifyItemPath(item) == true)
                    {
                        return new ItemName(item).CategoryPath;
                    }
                    return new CategoryName(item).ParentPath;
                }));
            }
        }
示例#2
0
        public void PrivateTypeFailTest()
        {
            var typeContext = this.dataBase.TypeContext;
            var type        = typeContext.Types.RandomSample();
            var category    = EnumerableUtility.Ancestors(type as IItem).Random(item => item.Parent != null) as ITypeCategory;

            type.SetPrivate(this.admin);

            try
            {
                this.InvokeFail <PermissionDeniedException>(() => type.SetPublic(this.member));
                this.InvokeFail <PermissionException>(() => type.SetPrivate(this.member));
                this.InvokeFail <PermissionDeniedException>(() => type.AddAccessMember(this.member, this.someone.UserID, AccessType.ReadWrite));
                this.InvokeFail <PermissionDeniedException>(() => type.RemoveAccessMember(this.member, this.someone.UserID));
                this.InvokeFail <PermissionDeniedException>(() => type.Lock(this.member, RandomUtility.NextString()));
                this.InvokeFail <PermissionException>(() => type.Unlock(this.member));
                this.InvokeFail <PermissionDeniedException>(() => type.RenameTest(this.member));
                this.InvokeFail <PermissionDeniedException>(() => type.MoveTest(this.member));
                this.InvokeFail <PermissionDeniedException>(() => type.Delete(this.member));
            }
            finally
            {
                type.SetPublic(this.admin);
            }
        }
 public static TreeViewItemViewModel GetRoot(TreeViewItemViewModel viewModel)
 {
     if (viewModel.Parent == null)
     {
         return(viewModel);
     }
     return(EnumerableUtility.Ancestors(viewModel, item => item.Parent).First());
 }
        private string GetPath(TreeViewItemViewModel viewModel)
        {
            var ancestors = EnumerableUtility.Ancestors(viewModel, item => item.Parent);

            var items = EnumerableUtility.Friends(viewModel, ancestors)
                        .Reverse()
                        .Select(item => item.DisplayName.EscapeChar(PathUtility.SeparatorChar));

            return(string.Join(PathUtility.Separator, items));
        }
        public void Show()
        {
            this.IsVisible = true;
            var items = EnumerableUtility.Ancestors(this, item => item.Parent);

            foreach (var item in items)
            {
                item.IsVisible  = true;
                item.IsExpanded = true;
            }
        }
 public void ExpandAncestors()
 {
     foreach (var item in EnumerableUtility.Ancestors(this, i => i.Parent))
     {
         if (item == null)
         {
             continue;
         }
         item.IsExpanded = true;
     }
 }
示例#7
0
        public PSDItemViewModel GetDocumentViewModel()
        {
            var items = EnumerableUtility.Ancestors <TreeViewItemViewModel>(this, item => item.Parent);

            foreach (var item in items)
            {
                if (item is PSDItemViewModel viewModel)
                {
                    return(viewModel);
                }
            }
            return(null);
        }
 static IEnumerable <string> QueryParents(string path)
 {
     return(EnumerableUtility.Ancestors(path, item =>
     {
         if (item == PathUtility.Separator)
         {
             return null;
         }
         if (NameValidator.VerifyItemPath(item) == true)
         {
             return new ItemName(item).CategoryPath;
         }
         return new CategoryName(item).ParentPath;
     }));
 }
示例#9
0
        public void LockedTableFailTest()
        {
            var tableContext = this.dataBase.TableContext;
            var table        = tableContext.Tables.RandomSample();
            var child        = table.Childs.Random();
            var category     = EnumerableUtility.Ancestors(table as IItem).Random(item => item.Parent != null) as ITableCategory;

            table.Lock(this.admin, string.Empty);

            try
            {
                this.InvokeFail <PermissionException>(() => table.SetPublic(this.member));
                this.InvokeFail <PermissionDeniedException>(() => table.SetPrivate(this.member));
                this.InvokeFail <PermissionException>(() => table.AddAccessMember(this.member, this.someone.UserID, AccessType.ReadWrite));
                this.InvokeFail <PermissionException>(() => table.RemoveAccessMember(this.member, this.someone.UserID));
                this.InvokeFail <PermissionException>(() => table.Lock(this.member, RandomUtility.NextString()));
                this.InvokeFail <PermissionDeniedException>(() => table.Unlock(this.member));
                this.InvokeFail <PermissionDeniedException>(() => table.RenameTest(this.member));
                this.InvokeFail <PermissionDeniedException>(() => table.MoveTest(this.member));
                this.InvokeFail <PermissionDeniedException>(() => table.Delete(this.member));
                this.InvokeFail <PermissionDeniedException>(() => table.NewTable(this.member));
                this.InvokeFail <PermissionDeniedException>(() => table.Revert(this.member, 0));

                this.InvokeFail <CremaException>(() => category.SetPublic(this.member));
                this.InvokeFail <CremaException>(() => category.SetPrivate(this.member));
                this.InvokeFail <CremaException>(() => category.AddAccessMember(this.member, this.someone.UserID, AccessType.ReadWrite));
                this.InvokeFail <CremaException>(() => category.RemoveAccessMember(this.member, this.someone.UserID));
                this.InvokeFail <CremaException>(() => category.Lock(this.member, RandomUtility.NextString()));
                this.InvokeFail <CremaException>(() => category.Unlock(this.member));
                this.InvokeFail <CremaException>(() => category.RenameTest(this.member));
                this.InvokeFail <CremaException>(() => category.MoveTest(this.member));
                this.InvokeFail <CremaException>(() => category.Delete(this.member));

                this.InvokeFail <PermissionException>(() => child.SetPublic(this.member));
                this.InvokeFail <PermissionDeniedException>(() => child.SetPrivate(this.member));
                this.InvokeFail <PermissionException>(() => child.AddAccessMember(this.member, this.someone.UserID, AccessType.ReadWrite));
                this.InvokeFail <PermissionException>(() => child.RemoveAccessMember(this.member, this.someone.UserID));
                this.InvokeFail <PermissionException>(() => child.Lock(this.member, RandomUtility.NextString()));
                this.InvokeFail <PermissionException>(() => child.Unlock(this.member));
                this.InvokeFail <PermissionDeniedException>(() => child.RenameTest(this.member));
                this.InvokeFail <PermissionDeniedException>(() => child.MoveTest(this.member));
                this.InvokeFail <PermissionDeniedException>(() => child.Delete(this.member));
            }
            finally
            {
                table.Unlock(this.admin);
            }
        }