public AhSignatur(HeftType heftType, string rawString) { this.heftType = heftType; // zuerst auf Dubletten prüfen doublet = ParseNumberOfDubs(rawString); rawString = StripDubs(rawString); sigString = ConvertFromLegacySyntax(rawString); }
public string ToTextFormat(HeftType heftType) { if (heftType == HeftType.Empty) { return(separator); } return(ToPlainFormat(Signatur)); }
public string ToLegacyFormat(HeftType heftType) { if (heftType == HeftType.Empty) { return(separator); } return(ToPlainFormat(ConvertToLegacySignatur(Signatur))); }
static void Main(string[] args) { Console.WriteLine($"This is {Assembly.GetExecutingAssembly().GetName().Name} version {Assembly.GetExecutingAssembly().GetName().Version}"); // string defaultFileName = @"/Users/michaelmatus/Projects/ArchivHefte/Daten/AH_AeS"; // mac // string defaultFileName = @"/Users/michaelmatus/Projects/ArchivHefte/Daten/AH_NS"; // mac string defaultFileName = @"C:\Users\Administrator\source\repos\ArchivHefte\Daten\AH_AeS"; // windows // string defaultFileName = @"C:\Users\Administrator\source\repos\ArchivHefte\Daten\AH_NS"; // windows // Ältere oder Neue Serie? HeftType serie = HeftType.Unknown; if (defaultFileName.Contains("_NS")) { serie = HeftType.NS; } if (defaultFileName.Contains("_AeS")) { serie = HeftType.AeS; } #region File name logic string baseInFileName = ""; string baseOutFileName = ""; if (args == null || args.Length == 0) { baseInFileName = defaultFileName; baseOutFileName = defaultFileName; } if (args.Length == 1) { baseInFileName = args[0]; baseOutFileName = baseInFileName; } if (args.Length >= 2) { baseInFileName = args[0]; baseOutFileName = args[1]; } string inFilename = Path.ChangeExtension(baseInFileName, ".txt"); string outFilename = Path.ChangeExtension(baseOutFileName, ".xml"); #endregion #region Reading and parsing the TXT-file // Einlesen und Decodierung der Text-Datei List <Heft> hefte = new List <Heft>(); AhSignatur currentSignatur; AhEntry currentHeft = new AhEntry(); currentHeft.Serie = serie; int numberTextLines = 0; string textLine; bool isFirstHeft = true; StreamReader hTxtFile = File.OpenText(inFilename); while ((textLine = hTxtFile.ReadLine()) != null) { if (!string.IsNullOrWhiteSpace(textLine)) { numberTextLines++; // start a new database entity if (textLine.Contains("#HEFT= ")) { if (!isFirstHeft) { hefte.Add(currentHeft.ArchivHeft); } isFirstHeft = false; currentSignatur = new AhSignatur(serie, textLine.Substring(7)); currentHeft = new AhEntry(currentSignatur); currentHeft.Serie = serie; } // parse attributes for the entity currentHeft.ParseAttributes(textLine); } } // the last entity must be added to the collection hefte.Add(currentHeft.ArchivHeft); hTxtFile.Close(); Console.WriteLine($"{numberTextLines} Zeilen in Datei {inFilename} -> {hefte.Count} Hefte"); #endregion #region Writing XML-file //ConsoleUI.WritingFile(outFilename); StreamWriter hXmlFile = new StreamWriter(outFilename); XmlSerializer x = new XmlSerializer(hefte.GetType()); x.Serialize(hXmlFile, hefte); hXmlFile.Close(); //ConsoleUI.Done(); Console.WriteLine($"{outFilename} written."); # endregion }
public void AddHeft(Heft heft) { // wenn Datei bereits abgeschlossen, tue nichts. if (sourceFinalized == true) { return; } // zu welcher Serie gehörig? serie = heft.Serie; // create Preamble if (!preambleCreated) { CreatePreamble(); } // Nehme Heft in Index fehlender Hefte auf AddToIndexFehlend(heft); // Nehme Heft ins Chronologisch Verzeichnis auf chronoIndex.Add(heft); // Nehme Heft ins Spezialverzeichnis auf spezialIndex.Add(heft); // Je nachdem aus welchen Verzeichnis entnommen, gibt es eine neue Überschrift InVerzeichnisHeft(heft.Signatur); // die Breiten der beiden minipages sollen der Signatur angepasst sein string leftMinipageFormat, rightMinipageFormat; switch (heft.Signatur.Length) { case 3: leftMinipageFormat = @"\begin{minipage}[t]{0.1\textwidth}\vspace{0pt}"; rightMinipageFormat = @"\begin{minipage}[t]{0.9\textwidth}\vspace{0pt}"; break; case 4: leftMinipageFormat = @"\begin{minipage}[t]{0.15\textwidth}\vspace{0pt}"; rightMinipageFormat = @"\begin{minipage}[t]{0.85\textwidth}\vspace{0pt}"; break; case 5: leftMinipageFormat = @"\begin{minipage}[t]{0.2\textwidth}\vspace{0pt}"; rightMinipageFormat = @"\begin{minipage}[t]{0.8\textwidth}\vspace{0pt}"; break; default: leftMinipageFormat = @"\begin{minipage}[t]{0.22\textwidth}\vspace{0pt}"; rightMinipageFormat = @"\begin{minipage}[t]{0.78\textwidth}\vspace{0pt}"; break; } sbLatexSource.AppendLine(@"%%%%% " + heft.Signatur + @" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"); sbLatexSource.AppendLine(@"\parbox{\textwidth}{%"); sbLatexSource.AppendLine(@"\rule{\textwidth}{1pt}\vspace*{-3mm}\\"); // Signatur sbLatexSource.AppendLine(leftMinipageFormat); sbLatexSource.AppendLine(@"\Huge\rule[-4mm]{0cm}{1cm}" + heft.Signatur); sbLatexSource.AppendLine(@"\end{minipage}"); // Titel + Beilagen sbLatexSource.AppendLine(@"\hfill"); sbLatexSource.AppendLine(rightMinipageFormat); sbLatexSource.AppendLine(@"\large " + AhEncode(heft.Inhalt) + @"\rule[-2mm]{0mm}{2mm}"); if (heft.Beilagen.Count != 0) { sbLatexSource.AppendLine(@"{\footnotesize \\{}"); for (int i = 0; i < heft.Beilagen.Count; i++) { sbLatexSource.AppendLine(string.Format("Beilage\\,B{0}: {1}\\\\", i + 1, AhEncode(heft.Beilagen[i]))); } sbLatexSource.AppendLine(@"}"); } sbLatexSource.AppendLine(@"\end{minipage}"); // Sachgebiete if (heft.Keys.Count != 0) { sbLatexSource.AppendLine(@"{\footnotesize\flushright"); for (int i = 0; i < heft.Keys.Count; i++) { sbLatexSource.AppendLine(string.Format("{0}\\\\", AhEncode(heft.Keys[i]))); } sbLatexSource.AppendLine(@"}"); } // Jahr, Amt und Status sbLatexSource.AppendLine(FormatJahr(heft.Jahr) + @"\quad---\quad " + AhEncode(heft.Organisation) + @"\quad---\quad Heft " + AhEncode(heft.Status) + @"\\"); // Bemerkungen if (heft.Bemerkungen.Count != 0) { sbLatexSource.AppendLine(@"\textcolor{blue}{Bemerkungen:\\{}"); for (int i = 0; i < heft.Bemerkungen.Count; i++) { sbLatexSource.AppendLine(string.Format("{0}", AhEncode(heft.Bemerkungen[i])) + @"\\{}"); } sbLatexSource.AppendLine(@"}"); sbLatexSource.AppendLine(@"\\[-15pt]"); } sbLatexSource.AppendLine(@"\rule{\textwidth}{1pt}"); sbLatexSource.AppendLine(@"}"); sbLatexSource.AppendLine(@"\\"); sbLatexSource.AppendLine(@"\vspace*{-2.5pt}\\"); }