/// <summary>
        ///     Gets the archive record from the indexRecords collection that matches the given dossier.
        /// </summary>
        /// <param name="folder">The folder.</param>
        /// <param name="indexRecords">The index records.</param>
        /// <returns>ElasticArchiveRecord.</returns>
        /// <exception cref="ArgumentOutOfRangeException">folder - Folder must be of type 'Dossier'</exception>
        private ElasticArchiveRecord GetArchiveRecordFromDossier(FolderInfo folder, List <ElasticArchiveRecord> indexRecords)
        {
            if (folder.FolderType != PackageFolderType.Dossier)
            {
                throw new ArgumentOutOfRangeException(nameof(folder), "Folder must be of type 'Dossier'");
            }

            var extensions = folder.CmisFolder.GetExtensions(ExtensionLevel.Object);

            var packageId     = metadataAccess.GetExtendedPropertyValue(extensions, "AIP-ID_Dossier-ID");
            var archiveRecord = indexRecords.FirstOrDefault(a => a.PrimaryDataLink.Equals(packageId, StringComparison.InvariantCultureIgnoreCase));

            if (archiveRecord != null)
            {
                Log.Verbose("Found archive record to dossier folder with id {id}. Archive record id is {ArchiveRecordId}", folder.Id,
                            archiveRecord.ArchiveRecordId);
            }
            else
            {
                Log.Verbose("Unable to find archive record to dossier folder with id {id}.", folder.Id);
            }

            return(archiveRecord);
        }
Exemple #2
0
        public List <RepositoryFolder> GetFolders(string folderId)
        {
            var retVal = new List <RepositoryFolder>();

            var folder = GetCmisFolder(folderId);

            if (folder != null)
            {
                var items = folder.GetChildren();
                foreach (var item in items)
                {
                    var subFolder = item as IFolder;
                    if (subFolder != null)
                    {
                        var extensions = subFolder.GetExtensions(ExtensionLevel.Object);
                        var isDossier  = !string.IsNullOrEmpty(metadataAccess.GetExtendedPropertyValue(extensions, "ARELDA:dossier/dossier@id"));
                        retVal.Add(GetRepositoryFolder(subFolder, extensions, isDossier));
                    }
                }
            }

            return(retVal);
        }