/// <summary> /// Adds the child resources. /// </summary> /// <param name="extractionPath">The extraction path.</param> /// <param name="document">The document.</param> /// <param name="resource">The resource.</param> /// <param name="zentityContext">The zentity context.</param> private static void AddChildResources( string extractionPath, MetsDocument document, ScholarlyWork resource, ZentityContext zentityContext) { resource.Container = new ScholarlyWorkContainer(); ScholarlyWorkContainer childContainer = null; string[] fileNames = Directory.GetFiles(extractionPath) .Select(path => GetFileName(path)) .Where(name => SwordConstants.MetsDocumentName != name) .ToArray(); if (0 < fileNames.Length) { childContainer = new ScholarlyWorkContainer(); resource.Container.ContainedWorks.Add(childContainer); } // Loop though all files which are extracted. foreach (string fileName in fileNames) { // Get the extension int dotIndex = fileName.LastIndexOf('.'); string fileExtension = (0 < dotIndex) ? fileName.Substring(dotIndex + 1) : string.Empty; #region Upload Zip File Contents // Get Metadata for the specified fileName MetadataSection dataSection = document.Files[fileName]; // Create resource against each type as specified in the METS document. ScholarlyWork individualResource = CreateResouceUsingMetsMetadata(dataSection); UpdateResourceProeprties(zentityContext, individualResource, dataSection); // Create Media and Upload file contents. Core.File individualMediaResource = AddFileResource(zentityContext, individualResource, extractionPath + "\\" + fileName); individualMediaResource.MimeType = AtomPubHelper.GetMimeTypeFromFileExtension(fileExtension); individualMediaResource.FileExtension = fileExtension; // Save file name in notes for future references. individualMediaResource.Description = fileName; // Associate with the main resource. childContainer.ContainedWorks.Add(individualResource); #endregion AuthenticatedToken authenticatedToken = CoreHelper.GetAuthenticationToken(); individualResource.GrantDefaultPermissions(zentityContext, authenticatedToken); individualMediaResource.GrantDefaultPermissions(zentityContext, authenticatedToken); } }