//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); }
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)); }
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); }