public CreateOrUpdateProjectBasicDataWork(ProjectRepository projectRepository, ResourceSessionDirector resourceDirector) : base(projectRepository) { m_projectRepository = projectRepository; m_nullableProjectId = resourceDirector.GetSessionInfoValue <long?>(SessionInfo.ProjectId); m_bookData = resourceDirector.GetSessionInfoValue <BookData>(SessionInfo.BookData); m_userId = resourceDirector.GetSessionInfoValue <int>(SessionInfo.UserId); m_projectType = resourceDirector.GetSessionInfoValue <ProjectTypeContract>(SessionInfo.ProjectType); }
public void Process(ResourceSessionDirector resourceSessionDirector) { foreach (var resource in resourceSessionDirector.Resources) { m_fileSystemManager.SaveResource( resourceSessionDirector.GetSessionInfoValue <string>(SessionInfo.BookId), resourceSessionDirector.GetSessionInfoValue <string>(SessionInfo.VersionId), resource); } }
public void Process(ResourceSessionDirector resourceSessionDirector) { var projectId = resourceSessionDirector.GetSessionInfoValue <long>(SessionInfo.ProjectId); var versionXmlId = resourceSessionDirector.GetSessionInfoValue <string>(SessionInfo.VersionXmlId); foreach (var resource in resourceSessionDirector.Resources) { m_fileSystemManager.SaveResource(projectId, versionXmlId, resource); } }
private VersionResourceUploadContract GetVersionResourceUploadContract(FileResource resource, ResourceSessionDirector resourceDirector, Stream dataStream) { return(new VersionResourceUploadContract { BookId = resourceDirector.GetSessionInfoValue <string>(SessionInfo.BookXmlId), BookVersionId = resourceDirector.GetSessionInfoValue <string>(SessionInfo.VersionXmlId), FileName = resource.FileName, ResourceType = resource.ResourceType, DataStream = dataStream }); }
public SaveNewBookDataWork(ProjectRepository projectRepository, MetadataRepository metadataRepository, ResourceRepository resourceRepository, CatalogValueRepository catalogValueRepository, PersonRepository personRepository, ResourceSessionDirector resourceDirector) : base(projectRepository) { m_projectRepository = projectRepository; m_metadataRepository = metadataRepository; m_resourceRepository = resourceRepository; m_catalogValueRepository = catalogValueRepository; m_personRepository = personRepository; m_nullableProjectId = resourceDirector.GetSessionInfoValue <long?>(SessionInfo.ProjectId); m_bookData = resourceDirector.GetSessionInfoValue <BookData>(SessionInfo.BookData); m_message = resourceDirector.GetSessionInfoValue <string>(SessionInfo.Message); m_userId = resourceDirector.GetSessionInfoValue <int>(SessionInfo.UserId); }
public void Process(ResourceSessionDirector resourceSessionDirector) { var metaData = GetMetadataForProcessing(resourceSessionDirector); var xmlFileStream = File.Open(metaData.FullPath, FileMode.Open); BookData bookData = m_xmlMetadataProcessingManager.GetXmlMetadata(xmlFileStream); bookData.VersionDescription = resourceSessionDirector.GetSessionInfoValue <string>(SessionInfo.Message); bookData.CreateTime = resourceSessionDirector.GetSessionInfoValue <DateTime>(SessionInfo.CreateTime); resourceSessionDirector.SetSessionInfoValue(SessionInfo.BookData, bookData); resourceSessionDirector.SetSessionInfoValue(SessionInfo.BookXmlId, bookData.BookXmlId); resourceSessionDirector.SetSessionInfoValue(SessionInfo.VersionXmlId, bookData.VersionXmlId); AddBookAccessories(resourceSessionDirector, bookData); AddBookPages(resourceSessionDirector, bookData); }
public void Process(ResourceSessionDirector resourceSessionDirector) { var bookData = resourceSessionDirector.GetSessionInfoValue <BookData>(SessionInfo.BookData); if (bookData.Tracks == null) { return; } //DISCOVER all entites var recordings = ExtractAudioRecordingsInfo(bookData); //GENERATE audioArchive PackAllBookAudioArchives(resourceSessionDirector, recordings, bookData); }
public void Process(ResourceSessionDirector resourceSessionDirector) { var bookVersion = resourceSessionDirector.GetSessionInfoValue <BookVersion>(SessionInfo.BookVersionEntity); var trans = resourceSessionDirector.Resources.Where(x => x.ResourceType == ResourceType.Transformation); if (bookVersion.Transformations == null) { bookVersion.Transformations = new List <Transformation>(); } foreach (var transResource in trans) { var transformation = GetTransformationObject(transResource); bookVersion.Transformations.Add(transformation); } }
public void Process(ResourceSessionDirector resourceDirector) { var bookEntity = resourceDirector.GetSessionInfoValue <BookVersion>(SessionInfo.BookVersionEntity); var bookVersionId = m_bookVersionRepository.Create(bookEntity); var bookVersion = m_bookVersionRepository.FindById <BookVersion>(bookVersionId); var categories = m_categoryRepository.GetAllCategories(); var categoriesDictionary = categories.ToDictionary(category => category.Id); var bookVersionCategories = m_categoryRepository.GetDirectCategoriesByBookVersionId(bookVersionId); var allBookVersionCategoryIds = new List <int>(); foreach (var bookVersionCategory in bookVersionCategories) { Category category; if (categoriesDictionary.TryGetValue(bookVersionCategory.Id, out category)) { allBookVersionCategoryIds.Add(category.Id); while (category.ParentCategory != null && categoriesDictionary.TryGetValue(category.ParentCategory.Id, out category)) { allBookVersionCategoryIds.Add(category.Id); } } } var specialPermissions = m_permissionRepository.GetAutoimportPermissionsByCategoryIdList(allBookVersionCategoryIds); var groupsWithAutoimport = m_permissionRepository.GetGroupsBySpecialPermissionIds(specialPermissions.Select(x => x.Id)); var newPermissions = groupsWithAutoimport.Select(groupWithAutoimport => new Permission { Book = bookVersion.Book, Group = groupWithAutoimport }); foreach (var newPermission in newPermissions) { m_permissionRepository.CreatePermissionIfNotExist(newPermission); } }
public void Process(ResourceSessionDirector resourceDirector) { var storeType = resourceDirector.GetSessionInfoValue <FulltextStoreTypeContract>(SessionInfo.StoreType); var autoImportPermissions = resourceDirector.GetSessionInfoValue <IList <PermissionFromAuthContract> >(SessionInfo.AutoImportPermissions); var bookData = resourceDirector.GetSessionInfoValue <BookData>(SessionInfo.BookData); bookData.FileNameMapping = new Dictionary <string, FileResource>(); foreach (var fileResource in resourceDirector.Resources.Where(x => x.NewNameInStorage != null)) { bookData.FileNameMapping.Add(fileResource.FileName, fileResource); } bookData.ContainsEditionNote = true; //HACK always create new EditionNoteResource, TODO determine if edition note exists var saveNewBookDataWork = new SaveNewBookDataWork(m_projectRepository, m_metadataRepository, m_resourceRepository, m_catalogValueRepository, m_personRepository, resourceDirector); saveNewBookDataWork.Execute(); var projectId = saveNewBookDataWork.ProjectId; var userId = saveNewBookDataWork.UserId; var message = saveNewBookDataWork.Message; var resourceVersionIds = saveNewBookDataWork.ImportedResourceVersionIds; var bookVersionId = saveNewBookDataWork.BookVersionId; var createNewSnapshot = new CreateSnapshotForImportedDataWork(m_projectRepository, projectId, userId, resourceVersionIds, bookData, message, bookVersionId); createNewSnapshot.Execute(); PublishSnapshotToExternalDatabase(createNewSnapshot.SnapshotId, projectId, bookData.Pages, storeType); //var bookVersionId = m_bookVersionRepository.Create(bookData); //var bookVersion = m_bookVersionRepository.FindById<BookVersion>(bookVersionId); //var categories = m_categoryRepository.GetAllCategories(); //var categoriesDictionary = categories.ToDictionary(category => category.Id); //var bookVersionCategories = m_categoryRepository.GetDirectCategoriesByBookVersionId(bookVersionId); //var allBookVersionCategoryIds = new List<int>(); //foreach (var bookVersionCategory in bookVersionCategories) //{ // Category category; // if (categoriesDictionary.TryGetValue(bookVersionCategory.Id, out category)) // { // allBookVersionCategoryIds.Add(category.Id); // while (category.ParentCategory != null && categoriesDictionary.TryGetValue(category.ParentCategory.Id, out category)) // { // allBookVersionCategoryIds.Add(category.Id); // } // } //} var processAutoImportPermission = new ProcessAutoImportPermissionWork(m_permissionRepository, projectId, createNewSnapshot.BookTypes, autoImportPermissions); processAutoImportPermission.Execute(); //var specialPermissions = m_permissionRepository.GetAutoimportPermissionsByCategoryIdList(allBookVersionCategoryIds); //var groupsWithAutoimport = m_permissionRepository.GetGroupsBySpecialPermissionIds(specialPermissions.Select(x => x.Id)); //var newPermissions = groupsWithAutoimport.Select(groupWithAutoimport => new Permission //{ // Book = bookVersion.Book, // Group = groupWithAutoimport //}); //foreach (var newPermission in newPermissions) //{ // m_permissionRepository.CreatePermissionIfNotExist(newPermission); //} resourceDirector.SetSessionInfoValue(SessionInfo.ProjectId, projectId); }
public void Process(ResourceSessionDirector resourceSessionDirector) { var inputFilesResource = resourceSessionDirector.Resources.Where(resource => resource.ResourceType == ResourceType.SourceDocument).OrderBy(r => r.FileName, StringComparer.CurrentCultureIgnoreCase); var inputFileResource = inputFilesResource.First(); string metaDataFileName; if (resourceSessionDirector.Resources.Any(x => x.ResourceType == ResourceType.UploadedMetadata)) { metaDataFileName = string.Format("{0}_converted.xmd", Path.GetFileNameWithoutExtension(inputFileResource.FileName)); } else { metaDataFileName = string.Format("{0}.xmd", Path.GetFileNameWithoutExtension(inputFileResource.FileName)); } var metaDataResource = new Resource { FileName = metaDataFileName, FullPath = Path.Combine(resourceSessionDirector.SessionPath, metaDataFileName), ResourceType = ResourceType.ConvertedMetadata }; var tmpDirPath = Path.Combine(resourceSessionDirector.SessionPath, "tmp"); if (!Directory.Exists(tmpDirPath)) { Directory.CreateDirectory(tmpDirPath); } var message = resourceSessionDirector.GetSessionInfoValue <string>(SessionInfo.Message); var createTime = resourceSessionDirector.GetSessionInfoValue <DateTime>(SessionInfo.CreateTime); var versionProviderHelper = new VersionProviderHelper(message, createTime, m_bookRepository, m_versionIdGenerator); var settings = new DocxToTeiConverterSettings { Debug = false, InputFilesPath = inputFilesResource.Select(p => p.FullPath).ToArray(), UploadedFilesPath = resourceSessionDirector.Resources.GroupBy(resource => resource.ResourceType). ToDictionary(resourceGroup => resourceGroup.Key, resourceGroup => resourceGroup.Select(resource => resource.FullPath).ToArray()), MetadataFilePath = m_conversionMetadataPath, OutputDirectoryPath = resourceSessionDirector.SessionPath, OutputMetadataFilePath = metaDataResource.FullPath, TempDirectoryPath = tmpDirPath, GetVersionList = versionProviderHelper.GetVersionsByBookId, SplitDocumentByPageBreaks = true, DataDirectoryPath = m_dataDirectoryPath }; var converter = new DocxToTeiConverter(); var conversionResult = converter.Convert(settings); if (conversionResult.IsConverted) { resourceSessionDirector.Resources.Add(metaDataResource); } else { var exception = conversionResult.Errors.FirstOrDefault(); throw new ConversionException(string.Format("File was not converted sucessfully. See InnerException : '{0}'", exception), exception); } }
public void Process(ResourceSessionDirector resourceDirector) { var existFileResources = resourceDirector.Resources.Where( resource => resource.ResourceType == ResourceType.Book || resource.ResourceType == ResourceType.Page || resource.ResourceType == ResourceType.BibliographyDocument || resource.ResourceType == ResourceType.Transformation); var storeType = resourceDirector.GetSessionInfoValue <FulltextStoreTypeContract>(SessionInfo.StoreType); var bookData = resourceDirector.GetSessionInfoValue <BookData>(SessionInfo.BookData); var fulltextResourceProcessor = m_fulltextStoreProcessorProvider.GetByStoreType(storeType); foreach (var resource in existFileResources) { if (string.IsNullOrEmpty(resource.FileName)) { if (m_log.IsErrorEnabled) { m_log.ErrorFormat("Resource of type {0} and path {1} does not have fileName", resource.ResourceType, resource.FullPath); } continue; } using (var dataStream = File.Open(resource.FullPath, FileMode.Open, FileAccess.Read, FileShare.Read)) { var resourceUploadContract = GetVersionResourceUploadContract(resource, resourceDirector, dataStream); switch (resource.ResourceType) { case ResourceType.BibliographyDocument: fulltextResourceProcessor.UploadBibliographyFile(resourceUploadContract); break; case ResourceType.Book: fulltextResourceProcessor.UploadFullbookToBookVersion(resourceUploadContract); break; case ResourceType.Page: var pageId = fulltextResourceProcessor.UploadPageToBookVersion(resourceUploadContract); if (pageId != null) { var bookPageData = bookData.Pages.FirstOrDefault(x => x.XmlResource == resource.FileName); if (bookPageData != null) { bookPageData.XmlId = pageId; } } break; case ResourceType.Transformation: fulltextResourceProcessor.UploadTransformationResource(resourceUploadContract); break; default: throw new ArgumentException($"ResourceType: '{resource.ResourceType}' not meant for ExistDb upload"); } } } }
public void Process(ResourceSessionDirector resourceSessionDirector) { var inputFilesResource = resourceSessionDirector.Resources.Where(resource => resource.ResourceType == ResourceType.SourceDocument).OrderBy(r => r.FileName, StringComparer.CurrentCultureIgnoreCase); var inputFileResource = inputFilesResource.First(); string metaDataFileName; if (resourceSessionDirector.Resources.Any(x => x.ResourceType == ResourceType.UploadedMetadata)) { metaDataFileName = string.Format("{0}_converted.xmd", Path.GetFileNameWithoutExtension(inputFileResource.FileName)); } else { metaDataFileName = string.Format("{0}.xmd", Path.GetFileNameWithoutExtension(inputFileResource.FileName)); } var metaDataResource = new FileResource { FileName = metaDataFileName, FullPath = Path.Combine(resourceSessionDirector.SessionPath, metaDataFileName), ResourceType = ResourceType.ConvertedMetadata }; var tmpDirPath = Path.Combine(resourceSessionDirector.SessionPath, "tmp"); if (!Directory.Exists(tmpDirPath)) { Directory.CreateDirectory(tmpDirPath); } var message = resourceSessionDirector.GetSessionInfoValue <string>(SessionInfo.Message); var createTime = resourceSessionDirector.GetSessionInfoValue <DateTime>(SessionInfo.CreateTime); var projectType = (ProjectTypeEnum)resourceSessionDirector.GetSessionInfoValue <ProjectTypeContract>(SessionInfo.ProjectType); var versionProviderHelper = new VersionProviderHelper(message, createTime, m_projectRepository, m_versionIdGenerator, projectType); var settings = new DocxToTeiConverterSettings { Debug = false, InputFilesPath = inputFilesResource.Select(p => p.FullPath).ToArray(), UploadedFilesPath = resourceSessionDirector.Resources.GroupBy(resource => resource.ResourceType). ToDictionary(resourceGroup => resourceGroup.Key, resourceGroup => resourceGroup.Select(resource => resource.FullPath).ToArray()), //MetadataFilePath = null, OutputDirectoryPath = resourceSessionDirector.SessionPath, OutputMetadataFilePath = metaDataResource.FullPath, TempDirectoryPath = tmpDirPath, GetVersionList = versionProviderHelper.GetVersionsByBookXmlId, SplitDocumentByPageBreaks = true, // HttpRuntime.BinDirectory is used instead of HostingEnvironment.ApplicationPhysicalPath because all required files are in bin folder DataDirectoryPath = Path.Combine(HttpRuntime.BinDirectory, m_dataDirectoryPath) }; var evidenceFolderPath = Path.Combine(HttpRuntime.BinDirectory, m_conversionMetadataPath); var evidenceXmlFiles = Directory.GetFiles(evidenceFolderPath); ConversionResult conversionResult = null; foreach (var evidenceXmlFile in evidenceXmlFiles) { settings.MetadataFilePath = evidenceXmlFile; var converter = new DocxToTeiConverter(); conversionResult = converter.Convert(settings); if (conversionResult.Errors.Count == 0) { break; } } if (conversionResult.IsConverted) { resourceSessionDirector.Resources.Add(metaDataResource); } else { var exception = conversionResult.Errors.FirstOrDefault(); throw new ConversionException(string.Format("File was not converted sucessfully. See InnerException : '{0}'", exception), exception); } }