Пример #1
0
 public AhSignatur(HeftType heftType, string rawString)
 {
     this.heftType = heftType;
     // zuerst auf Dubletten prüfen
     doublet   = ParseNumberOfDubs(rawString);
     rawString = StripDubs(rawString);
     sigString = ConvertFromLegacySyntax(rawString);
 }
Пример #2
0
 public string ToTextFormat(HeftType heftType)
 {
     if (heftType == HeftType.Empty)
     {
         return(separator);
     }
     return(ToPlainFormat(Signatur));
 }
Пример #3
0
 public string ToLegacyFormat(HeftType heftType)
 {
     if (heftType == HeftType.Empty)
     {
         return(separator);
     }
     return(ToPlainFormat(ConvertToLegacySignatur(Signatur)));
 }
Пример #4
0
        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
        }
Пример #5
0
        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}\\");
        }