Files
hamann-ausgabe-core/HaDocumentV6/Reactors/PersonDefsReactor.cs
2023-09-16 15:43:11 +02:00

66 lines
2.0 KiB
C#

using System;
using HaXMLReader.EvArgs;
using HaXMLReader.Interfaces;
using HaDocument.Models;
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace HaDocument.Reactors {
class PersonDefsReactor : Reactor {
internal Dictionary<string, Person> CreatedInstances;
// State
private string Index;
private string Name;
private string Prename = "";
private string Surname = "";
private string? Reference;
private string? Komm;
internal PersonDefsReactor(IReader reader, IntermediateLibrary lib) : base(reader, lib) {
lib.Persons = new Dictionary<string, Person>();
CreatedInstances = lib.Persons;
reader.Tag += Listen;
}
protected override void Listen(object sender, Tag tag) {
if (!tag.EndTag &&
tag.IsEmpty &&
tag.Name == "personDef" &&
!String.IsNullOrWhiteSpace(tag["index"]) &&
!String.IsNullOrWhiteSpace(tag["name"])
) {
Activate(_reader, tag);
}
}
protected override void Activate(IReader reader, Tag tag) {
if (!_active && reader != null && tag != null) {
Reset();
_active = true;
Index = tag["index"];
Name = tag["name"];
Prename = tag["vorname"];
Surname = tag["nachname"];
Reference = String.IsNullOrWhiteSpace(tag["ref"]) ? null : tag["ref"];
if (!String.IsNullOrWhiteSpace(tag["komm"])) Komm = tag["komm"];
Add();
_active = false;
}
}
protected override void Reset() {
Index = "";
Name = "";
Prename = "";
Surname = "";
Reference = null;
Komm = null;
}
public void Add() {
CreatedInstances.Add(Index, new Person(Index, Name, Prename, Surname, Komm, Reference));
}
}
}