示例#1
0
        //private TreeNode<KeyValuePair<string, string>> ToTreeNode(PathedCmisObjectContainer container)
        //{
        //    TreeNode<KeyValuePair<string, string>> treeNode = new TreeNode<KeyValuePair<string, string>>();
        //    if (container.ObjectInFolder.Object != null)
        //    {
        //        var id = container.ObjectInFolder.Object.Id;
        //        var name = id;
        //        var nameProperty = container.ObjectInFolder.Object.Properties.Name;
        //        if (nameProperty != null)
        //        {
        //            name = ((CmisPropertyString)nameProperty).Value[0];
        //        }
        //        treeNode.Node = new KeyValuePair<string, string>(id, name);
        //    }
        //    if (container.Children != null)
        //    {
        //        treeNode.Children = container.Children.Select(it => ToTreeNode(it));
        //    }
        //    return treeNode;
        //}
        private TreeNode <KeyValuePair <string, string> > ToTreeNode(cmisObjectInFolderContainerType container)
        {
            TreeNode <KeyValuePair <string, string> > treeNode = new TreeNode <KeyValuePair <string, string> >();

            if (container.objectInFolder.@object != null)
            {
                //var id = container.ObjectInFolder.Object.Id;
                var id         = string.Empty;
                var name       = string.Empty;
                var idProperty = [email protected](it => it.localName.Equals("Id", StringComparison.OrdinalIgnoreCase));
                if (idProperty != null)
                {
                    id = name = idProperty.stringValue;
                }
                //var nameProperty = container.ObjectInFolder.Object.Properties.Name;
                var nameProperty = [email protected](it => it.localName.Equals("Name", StringComparison.OrdinalIgnoreCase));
                if (nameProperty != null)
                {
                    name = nameProperty.stringValue;
                }
                treeNode.Node = new KeyValuePair <string, string>(id, name);
            }
            if (container.children != null)
            {
                treeNode.Children = container.children.Select(it => ToTreeNode(it));
            }
            return(treeNode);
        }
示例#2
0
        public getFolderTreeResponse GetFolderTree(getFolderTreeRequest request)
        {
            var resultList = new cmisObjectListType();
            var repository = ModelHelper.GetRepository(request.repositoryId);

            cmisObjectInFolderContainerType root = new cmisObjectInFolderContainerType();
            IEnumerable <Kooboo.CMS.Content.Models.TextFolder> childFolders = null;

            if (request.folderId == "/")
            {
                root.objectInFolder = new cmisObjectInFolderType()
                {
                    pathSegment = "/"
                };
                childFolders = _textFolderManager.All(repository, null);
            }
            else
            {
                var textFolder = ModelHelper.GetTextFolder(request.repositoryId, request.folderId);
                root.objectInFolder = ToPathedCmisObject(textFolder);
                childFolders        = _textFolderManager.ChildFolders(textFolder);
            }
            int?maxDepth = null;

            if (!string.IsNullOrEmpty(request.depth))
            {
                maxDepth = request.depth.As <int>();
            }
            root.children = childFolders.Select(it => ToPathedCmisObjectContainer(it, maxDepth)).Where(it => it != null).ToArray();

            return(new getFolderTreeResponse(new[] { root }));
        }
        private void assertObjectsTree(cmisObjectInFolderContainerType[] receivedTree, TreeNode <string> expectedTreeRoot)
        {
            Assert.IsNotNull(receivedTree, "Objects from response are null");
            Assert.IsTrue(receivedTree.Length > 0, "No one Object was returned in response");

            TreeNode <string> currentTreeNode = expectedTreeRoot;
            Stack <KeyValuePair <cmisObjectInFolderContainerType, TreeNode <string> > > elementsStack = new Stack <KeyValuePair <cmisObjectInFolderContainerType, TreeNode <string> > >();
            cmisObjectInFolderContainerType root = new cmisObjectInFolderContainerType();

            root.children = receivedTree;
            elementsStack.Push(new KeyValuePair <cmisObjectInFolderContainerType, TreeNode <string> >(root, expectedTreeRoot));

            while (elementsStack.Count > 0)
            {
                KeyValuePair <cmisObjectInFolderContainerType, TreeNode <string> > element = elementsStack.Pop();
                Assert.IsNotNull(element.Key, "Expected tree element not found");
                Assert.IsNotNull(element.Value, "Received tree element not found");
                currentTreeNode = element.Value;
                Assert.IsTrue(getSize(element.Key.children) == getSize(currentTreeNode.Children), "Count of returned childs are not equal to expected count of childs");
                if (element.Key.children != null && currentTreeNode.Children != null)
                {
                    HashSet <string> receivedIds = new HashSet <string>();
                    foreach (cmisObjectInFolderContainerType objectInFolderContainer in element.Key.children)
                    {
                        string objectId = getAndAssertObjectId(objectInFolderContainer);
                        Assert.IsFalse(receivedIds.Contains(objectId), "Returned tree childs are not equal to expected childs");
                        receivedIds.Add(objectId);
                        TreeNode <string> childTreeNode = (TreeNode <string>)currentTreeNode.Children[objectId];
                        elementsStack.Push(new KeyValuePair <cmisObjectInFolderContainerType, TreeNode <string> >(objectInFolderContainer, childTreeNode));
                    }
                }
            }
        }
        private string getAndAssertObjectId(cmisObjectInFolderContainerType objectInFolderContainer)
        {
            Assert.IsTrue(objectInFolderContainer != null && objectInFolderContainer.objectInFolder != null &&
                          objectInFolderContainer.objectInFolder.@object != null, "Object from response is null");
            cmisObjectType cmisObject = objectInFolderContainer.objectInFolder.@object;

            return((string)searchAndAssertPropertyByName(cmisObject.properties.Items, OBJECT_IDENTIFIER_PROPERTY, false));
        }
示例#5
0
        private cmisObjectInFolderContainerType ToPathedCmisObjectContainer(Kooboo.CMS.Content.Models.TextFolder textFolder, int?maxDepth)
        {
            if (maxDepth != null && textFolder.NamePaths.Length > maxDepth.Value)
            {
                return(null);
            }
            cmisObjectInFolderContainerType container = new cmisObjectInFolderContainerType();

            container.objectInFolder = ToPathedCmisObject(textFolder);
            container.children       = _textFolderManager.ChildFolders(textFolder).Select(it => ToPathedCmisObjectContainer(it, maxDepth)).Where(it => it != null).ToArray();
            return(container);
        }
        private List <cmisObjectInFolderContainerType> convertTreeToObjectsList(cmisObjectInFolderContainerType[] rootChildren)
        {
            List <cmisObjectInFolderContainerType>  result        = new List <cmisObjectInFolderContainerType>();
            Stack <cmisObjectInFolderContainerType> elementsStack = new Stack <cmisObjectInFolderContainerType>();

            foreach (cmisObjectInFolderContainerType objectInFolderContainer in rootChildren)
            {
                elementsStack.Push(objectInFolderContainer);
            }
            while (elementsStack.Count > 0)
            {
                cmisObjectInFolderContainerType element = elementsStack.Pop();
                result.Add(element);
                if (element.children != null)
                {
                    foreach (cmisObjectInFolderContainerType objectInFolderContainer in element.children)
                    {
                        elementsStack.Push(objectInFolderContainer);
                    }
                }
            }
            return(result);
        }