private void ArchiveContextDocumentation() { CreateDirectory(ContextDocumentationFolder); var contextDocumentCount = 0; var docCollectionCount = 0; foreach (var contextDocument in DataSource.ContextDocuments) { contextDocumentCount++; if (contextDocumentCount % 10000 == 1) { docCollectionCount++; CreateDirectory($@"{ContextDocumentationFolder}\docCollection{docCollectionCount}"); } CreateDirectory($@"{ContextDocumentationFolder}\docCollection{docCollectionCount}\{contextDocument.Id}"); var path = contextDocument.Reference; var directory = Path.GetDirectoryName(path); var extension = Path.GetExtension(path); var searchPattern = Path.GetFileName(path); if (directory == null || extension == null || searchPattern == null) { throw new DeliveryEngineRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.FileNotFound, path)); } var files = Directory.GetFiles(directory, searchPattern); var fileCount = new Dictionary <string, int>(); foreach (var file in files) { if (fileCount.ContainsKey(extension) == false) { fileCount.Add(extension, 0); } fileCount[extension]++; var destination = $@"{ContextDocumentationFolder}\docCollection{docCollectionCount}\{contextDocument.Id}\{fileCount[extension]}{extension}"; try { File.Copy(file, destination, true); } catch (Exception ex) { throw new DeliveryEngineRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.FileCopyError, file, destination, ex)); } _fileIndex.AddFile(new FileInfo(destination)); } } }
public virtual void Persist(object syncRoot = null) { Validate(); try { using (var filestream = new FileStream(FilePath.FullName, FileMode.Create, FileAccess.Write, FileShare.None)) { using (var xmlwriter = new XmlTextWriter(filestream, Encoding.UTF8)) { xmlwriter.Formatting = Formatting.Indented; Document.WriteTo(xmlwriter); } } FilePath.Refresh(); } catch (Exception ex) { throw new DeliveryEngineRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.FileWriteError, FilePath.FullName), ex); } if (this is FileIndex) { return; } FileIndex.AddFile(FilePath); }