public static IXMindWriter ResolveContentFile(XMindWriterContext context, List <IXMindWriter> writers) { var fileLabel = "output:definition:content"; var writerFound = context.ResolveWriterByOutputName(writers, fileLabel); return(writerFound); }
/// <summary> /// Save the current XMind workbook file to disk. /// </summary> public override async Task Save() { var requestId = $"SaveWorkBook-{SmallGuidGenerator.NewGuid()}"; Logger.Log.RequestStart(requestId); var manifestFileName = _xMindSettings[XMindConfiguration.ManifestLabel]; var metaFileName = _xMindSettings[XMindConfiguration.MetaLabel]; var contentFileName = _xMindSettings[XMindConfiguration.ContentLabel]; var files = new Dictionary <string, XDocument>(3) { [metaFileName] = _documentBuilder.MetaFile, [manifestFileName] = _documentBuilder.ManifestFile, [contentFileName] = _documentBuilder.ContentFile }; var writerJobs = new List <Task>(3); var writerContexts = new List <XMindWriterContext>(); foreach (var kvp in files) { var currentWriterContext = new XMindWriterContext() { FileName = kvp.Key, FileEntries = new XDocument[1] { kvp.Value } }; var selectedWriters = _bookConfiguration .WriteTo .ResolveWriters(currentWriterContext); if (selectedWriters == null) { var errorMessage = "XMindBook.Save: Writer is not selected"; Logger.Log.Error(errorMessage); throw new InvalidOperationException(errorMessage); } foreach (var writer in selectedWriters) { writerJobs.Add(writer.WriteToStorage(kvp.Value, kvp.Key)); } writerContexts.Add(currentWriterContext); } try { await Task.WhenAll(writerJobs); Logger.Log.RequestPhase(requestId, "WritersCompleted"); _bookConfiguration.WriteTo.FinalizeAction?.Invoke(writerContexts, this); Logger.Log.RequestPhase(requestId, "FinalizerExecuted"); } catch (Exception e) { Logger.Log.Error(e.Message); throw; } finally { Logger.Log.RequestStop(requestId); } }
/// <summary> /// Save the current XMind workbook file to disk. /// </summary> public void Save() { var manifestFileName = _xMindSettings.XMindConfigCollection["output:definition:manifest"]; var metaFileName = _xMindSettings.XMindConfigCollection["output:definition:meta"]; var contentFileName = _xMindSettings.XMindConfigCollection["output:definition:content"]; var files = new Dictionary <string, XDocument>(3) { [metaFileName] = _metaData, [manifestFileName] = _manifestData, [contentFileName] = _contentData }; var writerContexts = new List <XMindWriterContext>(); foreach (var kvp in files) { var currentWriterContext = new XMindWriterContext() { FileName = kvp.Key, FileEntries = new XDocument[1] { kvp.Value } }; var selectedWriters = _globalConfiguration .WriteTo .ResolveWriters(currentWriterContext); if (selectedWriters == null) { throw new InvalidOperationException("XMindBook.Save: Writer is not selected"); } selectedWriters.ForEach(w => w.WriteToStorage(kvp.Value, kvp.Key)); writerContexts.Add(currentWriterContext); } _globalConfiguration.WriteTo.FinalizeAction?.Invoke(writerContexts); // if (_fileName == null) // { throw new InvalidOperationException("Nothing to save!"); } // String tempPath = Path.GetTempPath() + Guid.NewGuid() + "\\"; // Directory.CreateDirectory(tempPath); // Directory.CreateDirectory(tempPath + "META-INF"); // Directory.CreateDirectory(tempPath + "Thumbnails"); // File.WriteAllText(tempPath + "META-INF\\manifest.xml", _manifestData.ToString()); // File.WriteAllText(tempPath + "meta.xml", _metaData.ToString()); // File.WriteAllText(tempPath + "content.xml", _contentData.ToString()); // using (ZipStorer zip = ZipStorer.Create(_fileName, string.Empty)) // { // zip.AddFile(ZipStorer.Compression.Deflate, tempPath + "META-INF\\manifest.xml", "manifest.xml", string.Empty); // zip.AddFile(ZipStorer.Compression.Deflate, tempPath + "meta.xml", "meta.xml", string.Empty); // zip.AddFile(ZipStorer.Compression.Deflate, tempPath + "content.xml", "content.xml", string.Empty); // } // Directory.Delete(tempPath, true); }
private static IXMindWriter ResolveWriterByOutputName( this XMindWriterContext context, List <IXMindWriter> writers, string fileLabel) { var xMindSettings = XMindConfigurationCache.Configuration.XMindConfigCollection; var file = xMindSettings[fileLabel]; var writerFound = writers .FirstOrDefault(w => context.FileName.Equals(file) && w.GetOutputConfig().OutputName.Equals(file)); return(writerFound); }
internal List <IXMindWriter> ResolveWriters(XMindWriterContext context) { if (_writers == null || !_writers.Any()) { throw new InvalidOperationException("XMindConfiguration.ResolveWriter: Writer is not specified"); } if (_criteria == null) { // Logger.WarnFormat("XMindConfiguration.ResolveWriter: default writer is assigned"); return(_writers.Take(1).ToList()); } var writersFound = _criteria.Select(w => w.Invoke(context, _writers)).Where(w => w != null); // Logger.Debug($"For context.FileName: {context.FileName} ResolveWriters.writersFound: {writersFound.Count()}"); return(writersFound.ToList()); }
/// <summary> /// Save the current XMind workbook file to disk. /// </summary> public override async Task Save() { var manifestFileName = _xMindSettings[XMindConfiguration.ManifestLabel]; var metaFileName = _xMindSettings[XMindConfiguration.MetaLabel]; var contentFileName = _xMindSettings[XMindConfiguration.ContentLabel]; var files = new Dictionary <string, XDocument>(3) { [metaFileName] = _documentBuilder.MetaFile, [manifestFileName] = _documentBuilder.ManifestFile, [contentFileName] = _documentBuilder.ContentFile }; var writerContexts = new List <XMindWriterContext>(); foreach (var kvp in files) { var currentWriterContext = new XMindWriterContext() { FileName = kvp.Key, FileEntries = new XDocument[1] { kvp.Value } }; var selectedWriters = _bookConfiguration .WriteTo .ResolveWriters(currentWriterContext); if (selectedWriters == null) { throw new InvalidOperationException("XMindBook.Save: Writer is not selected"); } foreach (var writer in selectedWriters) { writer.WriteToStorage(kvp.Value, kvp.Key); } writerContexts.Add(currentWriterContext); } _bookConfiguration.WriteTo.FinalizeAction?.Invoke(writerContexts, this); }