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));
                }
            }
        }
Beispiel #2
0
        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);
        }