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);
        }
        private void assertObjectsByType(enumTypesOfFileableObjects type, string[] files, string[] folders,
                                         string[] allObjects, cmisObjectType[] actualObjects)
        {
            string[] objectsToAssert = null;
            if (enumTypesOfFileableObjects.any.Equals(type))
            {
                objectsToAssert = allObjects;
            }
            else if (enumTypesOfFileableObjects.folders.Equals(type))
            {
                objectsToAssert = folders;
            }
            else if (enumTypesOfFileableObjects.documents.Equals(type))
            {
                objectsToAssert = files;
            }

            assertObjectCollectionsConsitence(actualObjects, objectsToAssert);
        }
 public ObjectsHierarchy createAndAssertFilesHierarchy(FileableObject rootFolder, int depth, int minimalChildrenAmount, int maximumChildrenAmount, enumTypesOfFileableObjects allowedObjects)
 {
     if ((depth <= 0) || (maximumChildrenAmount <= 0) || (minimalChildrenAmount > maximumChildrenAmount))
     {
         logger.log("Invalid linear parameter(s) for Hierarchy were specified. Expected: depth > 0; maximumChildrenAmount > 0; minimalChildrenAmount <= maximumChildrenAmount. Hierarchy can't be created");
         return null;
     }
     logger.log("Creating objects hierarchy. Depth=" + depth + ", Root Folder Id='" + rootFolder.ObjectId + "', Allowed Objects Type='" + allowedObjects + "'");
     ObjectsHierarchy hierarchy = new ObjectsHierarchy(rootFolder, allowedObjects);
     List<FileableObject> folders = new List<FileableObject>();
     folders.Add(rootFolder);
     Random randomCounter = new Random();
     for (int i = 0; i < depth; i++)
     {
         List<FileableObject> nextLayerFolders = new List<FileableObject>();
         int requiredFolderContainerNumber = randomCounter.Next(folders.Count);
         int currentObjectNumber = 0;
         foreach (FileableObject currentLevelFolder in folders)
         {
             int maximum = calculateMaximumChildrenAmount(randomCounter, minimalChildrenAmount, maximumChildrenAmount);
             int foldersMaximum = randomCounter.Next(Convert.ToInt32(Math.Round(Math.Sqrt(maximum))) + 1);
             foldersMaximum = ((0 >= foldersMaximum) && (i < (depth - 1)) && (currentObjectNumber++ == requiredFolderContainerNumber)) ? (1) : (foldersMaximum);
             for (int j = 0; j < maximum; j++)
             {
                 bool folder = (enumTypesOfFileableObjects.folders == allowedObjects) || ((enumTypesOfFileableObjects.any == allowedObjects) && (j < foldersMaximum));
                 string objectTypeId = (folder) ? (getAndAssertFolderTypeId()) : (getAndAssertDocumentTypeId());
                 FileableObject currentObject = createAndAssertObject(folder, currentLevelFolder.ObjectId, objectTypeId);
                 hierarchy.tryAddObject(currentObject);
                 if (folder)
                 {
                     nextLayerFolders.Add(currentObject);
                 }
             }
         }
         folders = nextLayerFolders;
     }
     logger.log(hierarchy.getObjectsAmount() + " Object(s) were included to Hierarchy successfully");
     logger.log("");
     return hierarchy;
 }
 public ObjectsHierarchy(FileableObject rootFolder, enumTypesOfFileableObjects allowedObjects)
 {
     this.allowedObjects = allowedObjects;
     hierarchyRootFolder = rootFolder;
 }
 public FileableObject(enumTypesOfFileableObjects objectType, string objectTypeId, string objectParentId)
     : base(objectType, objectParentId, objectTypeId)
 {
 }
 public FileableObject(enumTypesOfFileableObjects objectType, string objectParentId, string objectTypeId, cmisPropertiesType objectProperties, System.Nullable<enumVersioningState> initialVersion, bool setContentStreamForcibly)
     : base(objectType, objectParentId, objectTypeId, objectProperties)
 {
     this.initialVersion = initialVersion;
     this.setContentStreamForcibly = setContentStreamForcibly;
 }
 public FileableObject(enumTypesOfFileableObjects objectType, string objectParentId, string objectTypeId, cmisPropertiesType properties, cmisAccessControlListType addACEs, cmisAccessControlListType removeACEs)
     : base(objectType, objectParentId, objectTypeId, properties)
 {
     this.addACEs = addACEs;
     this.removeACEs = removeACEs;
 }
 // TODO: <Array> policies
 // <Array> ACE addACEs
 // <Array> ACE removeACEs
 public FileableObject(enumTypesOfFileableObjects objectType, string objectParentId, string objectTypeId, cmisPropertiesType properties)
     : base(objectType, objectParentId, objectTypeId, properties)
 {
 }
 public CmisObject(enumTypesOfFileableObjects objectType, string objectParentId, string objectTypeId, cmisPropertiesType objectProperties)
     : this(objectType, objectParentId, objectTypeId)
 {
     this.objectProperties = objectProperties;
 }
 public CmisObject(enumTypesOfFileableObjects objectType, string objectParentId, string objectTypeId)
     : this(objectType)
 {
     this.objectTypeId = objectTypeId;
     this.objectParentId = objectParentId;
 }
 public CmisObject(enumTypesOfFileableObjects objectType)
 {
     this.objectType = objectType;
 }
        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("");
        }