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 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); } }