SHA256
Initial Fill
This commit is contained in:
commit
976b651e4b
15 files changed
+1128
No files matched your search
+203
@@ -0,0 +1,203 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml.Linq;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows;
|
||||
using Microsoft.Win32;
|
||||
using System.Collections.ObjectModel;
|
||||
using TapeCatalog;
|
||||
|
||||
namespace XML
|
||||
{
|
||||
public static class Methods
|
||||
{
|
||||
public class TapeEntry
|
||||
{
|
||||
public string Medium { get; set; }
|
||||
public string Filename { get; set; }
|
||||
public string Modified { get; set; }
|
||||
}
|
||||
|
||||
public static void ExportTapeEntries(Window owner, string medium, IEnumerable<TapeEntry> entries)
|
||||
{
|
||||
if (entries == null) return;
|
||||
|
||||
var dlg = new Microsoft.Win32.SaveFileDialog()
|
||||
{
|
||||
Filter = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*",
|
||||
DefaultExt = "xml",
|
||||
AddExtension = true,
|
||||
FileName = $"tape_{medium}.xml"
|
||||
};
|
||||
|
||||
var res = dlg.ShowDialog(owner);
|
||||
if (res != true) return;
|
||||
|
||||
try
|
||||
{
|
||||
var doc = new XDocument(
|
||||
new XElement("TapeEntries",
|
||||
new XElement("Medium", medium ?? string.Empty),
|
||||
entries.Select(e => new XElement("Entry",
|
||||
new XElement("Medium", e.Medium ?? string.Empty),
|
||||
new XElement("Filename", e.Filename ?? string.Empty),
|
||||
new XElement("Modified", e.Modified ?? string.Empty)
|
||||
))
|
||||
)
|
||||
);
|
||||
|
||||
doc.Save(dlg.FileName);
|
||||
MessageBox.Show(owner, $"Export erfolgreich nach {dlg.FileName}", "Export", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(owner, $"Fehler beim Export: {ex.Message}", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
public static void CopyToTapeCatalog(Window owner, IEnumerable<FileEntry> sourceFiles, ListView targetListView)
|
||||
{
|
||||
if (sourceFiles == null || targetListView == null) return;
|
||||
|
||||
// add entries: Medium = ArcDrive, Dateiname = Filename, Änderungsdatum = SizeArc (archive size)
|
||||
foreach (var f in sourceFiles)
|
||||
{
|
||||
try
|
||||
{
|
||||
var te = new TapeEntry
|
||||
{
|
||||
Medium = f.ArcDrive ?? string.Empty,
|
||||
Filename = f.Filename ?? string.Empty,
|
||||
Modified = f.SizeArc ?? string.Empty
|
||||
};
|
||||
|
||||
// add to ListView on UI thread
|
||||
if (!targetListView.Dispatcher.CheckAccess())
|
||||
{
|
||||
targetListView.Dispatcher.Invoke(() => targetListView.Items.Add(te));
|
||||
}
|
||||
else
|
||||
{
|
||||
targetListView.Items.Add(te);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignore malformed entries
|
||||
}
|
||||
}
|
||||
}
|
||||
public static void ImportList(Window owner, ObservableCollection<FileEntry> files, TextBox sourceTextBox, TextBox archiveTextBox)
|
||||
{
|
||||
if (files == null) return;
|
||||
|
||||
if (files.Count > 0)
|
||||
{
|
||||
var ask = MessageBox.Show(owner, "Aktuelle Liste speichern?\nJa = speichern, Nein = löschen, Abbrechen = abbrechen.", "Liste vorhanden", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
|
||||
if (ask == MessageBoxResult.Cancel) return;
|
||||
|
||||
if (ask == MessageBoxResult.Yes)
|
||||
{
|
||||
// save current list
|
||||
ExportList(owner, sourceTextBox?.Text ?? string.Empty, archiveTextBox?.Text ?? string.Empty, files);
|
||||
files.Clear();
|
||||
}
|
||||
else if (ask == MessageBoxResult.No)
|
||||
{
|
||||
files.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
var dlg = new Microsoft.Win32.OpenFileDialog()
|
||||
{
|
||||
Filter = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*",
|
||||
DefaultExt = "xml",
|
||||
Multiselect = false
|
||||
};
|
||||
|
||||
var res = dlg.ShowDialog(owner);
|
||||
if (res != true) return;
|
||||
|
||||
try
|
||||
{
|
||||
var doc = XDocument.Load(dlg.FileName);
|
||||
var root = doc.Element("Files");
|
||||
if (root == null) return;
|
||||
|
||||
var src = root.Element("SourceDir")?.Value ?? string.Empty;
|
||||
var arc = root.Element("ArchiveDir")?.Value ?? string.Empty;
|
||||
if (sourceTextBox != null) sourceTextBox.Text = src;
|
||||
if (archiveTextBox != null) archiveTextBox.Text = arc;
|
||||
|
||||
foreach (var fe in root.Elements("File"))
|
||||
{
|
||||
try
|
||||
{
|
||||
var entry = new FileEntry
|
||||
{
|
||||
Filename = fe.Element("Filename")?.Value ?? string.Empty,
|
||||
FileDir = fe.Element("FileDir")?.Value ?? string.Empty,
|
||||
SizeSrc = fe.Element("SizeSrc")?.Value ?? string.Empty,
|
||||
SizeArc = fe.Element("SizeArc")?.Value ?? string.Empty,
|
||||
Status = fe.Element("Status")?.Value ?? string.Empty,
|
||||
ArcDrive = fe.Element("ArcDrive")?.Value ?? string.Empty,
|
||||
ModSrc = fe.Element("ModSrc")?.Value ?? string.Empty,
|
||||
ModArc = fe.Element("ModArc")?.Value ?? string.Empty
|
||||
};
|
||||
files.Add(entry);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignore malformed entries
|
||||
}
|
||||
}
|
||||
MessageBox.Show(owner, $"Import erfolgreich von {dlg.FileName}", "Import", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(owner, $"Fehler beim Import: {ex.Message}", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
public static void ExportList(Window owner, string sourceDir, string archiveDir, IEnumerable<FileEntry> files)
|
||||
{
|
||||
var dlg = new SaveFileDialog()
|
||||
{
|
||||
Filter = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*",
|
||||
DefaultExt = "xml",
|
||||
AddExtension = true,
|
||||
FileName = "filelist.xml"
|
||||
};
|
||||
|
||||
var res = dlg.ShowDialog(owner);
|
||||
if (res != true)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
var doc = new XDocument(
|
||||
new XElement("Files",
|
||||
new XElement("SourceDir", sourceDir ?? string.Empty),
|
||||
new XElement("ArchiveDir", archiveDir ?? string.Empty),
|
||||
files.Select(f => new XElement("File",
|
||||
new XElement("Filename", f.Filename ?? string.Empty),
|
||||
new XElement("FileDir", f.FileDir ?? string.Empty),
|
||||
new XElement("SizeSrc", f.SizeSrc ?? string.Empty),
|
||||
new XElement("SizeArc", f.SizeArc ?? string.Empty),
|
||||
new XElement("Status", f.Status ?? string.Empty),
|
||||
new XElement("ArcDrive", f.ArcDrive ?? string.Empty),
|
||||
new XElement("ModSrc", f.ModSrc ?? string.Empty),
|
||||
new XElement("ModArc", f.ModArc ?? string.Empty)
|
||||
))
|
||||
)
|
||||
);
|
||||
|
||||
doc.Save(dlg.FileName);
|
||||
MessageBox.Show(owner, $"Export erfolgreich nach {dlg.FileName}", "Export", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(owner, $"Fehler beim Export: {ex.Message}", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user