protected TreeNode <string> createObjectsTree(string rootFolderId, enumVersioningState documentsInitialVersion, enumTypesOfFileableObjects returnObjectTypes, int depth, int minLayerSize, int maxLayerSize, int returnToLevel) { if (returnToLevel <= 0) { returnToLevel = depth + 1; } Random randomCounter = new Random(); TreeNode <string> root = new TreeNode <string>(rootFolderId, 0); if ((depth <= 0) || (maxLayerSize < 1) || (minLayerSize > maxLayerSize)) { return(root); } Stack <TreeNode <string> > foldersStack = new Stack <TreeNode <string> >(); foldersStack.Push(root); while (foldersStack.Count > 0) { TreeNode <string> element = foldersStack.Pop(); if (element.Level <= depth) { int layerSize = minLayerSize + (int)(randomCounter.NextDouble() * (maxLayerSize - minLayerSize)); int foldersOnLayer = !returnObjectTypes.Equals(enumTypesOfFileableObjects.documents) ? 1 + (int)(randomCounter.NextDouble() * (layerSize - 1)) : 0; int documentsOnLayer = layerSize - foldersOnLayer; if (layerSize > 0 && element.Children == null) { element.Children = new Hashtable(); } for (int i = 0; i < foldersOnLayer; i++) { string newFolderId = createAndAssertFolder(element.Element).ObjectId; TreeNode <string> child = new TreeNode <string>(newFolderId, element.Level + 1); if (element.Level <= returnToLevel && !returnObjectTypes.Equals(enumTypesOfFileableObjects.documents)) { element.Children.Add(newFolderId, child); } if (element.Level < depth - 1) { foldersStack.Push(child); } } for (int i = 0; i < documentsOnLayer; i++) { string newDocumentId = createAndAssertObject(element.Element, documentsInitialVersion).ObjectId; if (element.Level <= returnToLevel && !returnObjectTypes.Equals(enumTypesOfFileableObjects.folders)) { element.Children.Add(newDocumentId, new TreeNode <string>(newDocumentId, element.Level + 1)); } } } } return(root); }
private void getAndAssertDescedansts(FileableObject rootFolder, TreeNode <string> objectsTree, enumTypesOfFileableObjects type, int depth, string filter, enumVersioningState versioningState, RenditionData renditionData) { cmisObjectInFolderContainerType[] returnedObjects = null; if (!enumTypesOfFileableObjects.folders.Equals(type)) { logger.log("Receiving descendants for folder, folderId=" + rootFolder.ObjectId + "',depth='" + depth + "', filter='" + filter + "'"); logger.log("[NavigationService->getDescendants]"); returnedObjects = navigationServiceClient.getDescendants( getAndAssertRepositoryId(), rootFolder.ObjectId, Convert.ToString(depth), filter, false, enumIncludeRelationships.none, renditionData != null ? renditionData.getFilter() : null, false, null); } else { logger.log("Receiving folders tree, folderId=" + rootFolder.ObjectId + "',depth='" + depth + "', filter='" + filter + "'"); logger.log("[NavigationService->getFoldersTree]"); returnedObjects = navigationServiceClient.getFolderTree( getAndAssertRepositoryId(), rootFolder.ObjectId, Convert.ToString(depth), filter, false, enumIncludeRelationships.none, renditionData != null ? renditionData.getFilter() : null, false, null); } Assert.IsNotNull(returnedObjects, "returned ids are null"); assertObjectsTree(returnedObjects, objectsTree); List <cmisObjectInFolderContainerType> objectsList = convertTreeToObjectsList(returnedObjects); foreach (cmisObjectInFolderContainerType cmisObject in objectsList) { Assert.IsNotNull(cmisObject, "CmisObjectInFolderContainer is null"); Assert.IsNotNull(cmisObject.objectInFolder, "CmisObjectInFolder is null"); Assert.IsNotNull(cmisObject.objectInFolder.@object, "CmisObject is null"); assertObjectProperties([email protected], filter); if (renditionData != null) { assertRenditions(cmisObject.objectInFolder.@object, renditionData.getFilter(), renditionData.getExpectedKinds(), renditionData.getExpectedMimetypes()); } } logger.log("Objects were successfully received"); logger.log(""); }
private void getAndAssertDescedansts(enumTypesOfFileableObjects type, int depth, string filter, enumVersioningState versioningState) { FileableObject rootFolder = createAndAssertFolder(getAndAssertRootFolder()); TreeNode <string> objectsTree = createObjectsTree(rootFolder.ObjectId, versioningState, type, FOLDERS_DEPTH, MINIMAL_CHILDREN, MAXIMUM_CHILDREN, depth); getAndAssertDescedansts(rootFolder, objectsTree, type, depth, filter, versioningState, null); objectServiceClient.deleteTree(getAndAssertRepositoryId(), rootFolder.ObjectId, true, enumUnfileObject.delete, true, null); }