- csv-data sets will now be corrected, no matter if the "for"-value is: 1234567, "1234567" or '1234567' - depending on "isregex" value in csv first exact matches, second regex matches. So it is safe that if double matches occur, exact matches always wins. - debug for CSV row read implemented - updating readme to newest development
4.6 KiB
Descriptor
Beschreibung
Mit diesem Modul können einem Alarmpaket beliebige Beschreibungen in Abhängigkeit der enthaltenen Informationen hinzugefügt werden.
Unterstützte Alarmtypen
- Fms
- Pocsag
- Zvei
- Msg
Resource
descriptor
Konfiguration
Informationen zum Aufbau eines BOSWatch Pakets
Achtung: Zahlen, die führende Nullen enthalten, müssen in der YAML-Konfiguration in Anführungszeichen gesetzt werden, z.B. '0012345'. In CSV-Dateien ist dies nicht zwingend erforderlich.
| Feld | Beschreibung | Default |
|---|---|---|
| scanField | Feld des BW Pakets, welches geprüft werden soll | |
| descrField | Name des Feldes im BW Paket, in welchem die Beschreibung gespeichert werden soll | |
| wildcard | Optional: Es kann für das angelegte descrField automatisch ein Wildcard registriert werden |
None |
| descriptions | Liste der Beschreibungen | |
| csvPath | Pfad der CSV-Datei (relativ zum Projektverzeichnis) |
descriptions:
| Feld | Beschreibung | Default |
|---|---|---|
| for | Wert im scanField, der geprüft werden soll |
|
| add | Beschreibungstext, der im descrField hinterlegt werden soll |
|
| isRegex | Muss explizit auf true gesetzt werden, wenn RegEx verwendet wird |
false |
Beispiel:
- type: module
res: descriptor
config:
- scanField: tone
descrField: description
wildcard: "{DESCR}"
descriptions:
- for: 12345
add: FF DescriptorTest
- for: '05678' # führende Nullen in '' !
add: FF TestDescription
- for: '890(1[1-9]|2[0-9])' # Regex-Pattern in '' !
add: Feuerwehr Wache \\1 (BF)
isRegex: true
- scanField: status
descrField: fmsStatDescr
wildcard: "{STATUSTEXT}"
descriptions:
- for: 1
add: Frei (Funk)
- for: 2
add: Frei (Wache)
- ...
Wichtige Punkte für YAML-Regex:
- Apostroph: Regex-Pattern sollten in
'stehen, um YAML-Parsing-Probleme zu vermeiden - isRegex-Flag: Muss explizit auf
truegesetzt werden - Escaping: Backslashes müssen in YAML doppelt escaped werden (
\\1statt\1) - Regex-Gruppen: Mit
\\1,\\2etc. können Teile des Matches in der Beschreibung verwendet werden
csvPath:
Beispiel:
- type: module
res: descriptor
config:
- scanField: tone
descrField: description
wildcard: "{DESCR}"
csvPath: "config/descriptions_tone.csv"
csvPath gibt den Pfad zu einer CSV-Datei an, relativ zum Projektverzeichnis (z. B. "config/descriptions_tone.csv").
Eine neue CSV-Datei (z. B. descriptions_tone.csv) hat folgendes Format:
Beispiel
for,add,isRegex
11111,KBI Landkreis Z,false
12345,FF A-Dorf,false
23456,FF B-Dorf
^3456[0-9]$,FF Grossdorf,true
Hinweis: In CSV-Dateien müssen Werte mit führenden Nullen nicht in Anführungszeichen gesetzt werden (können aber, falls gewünscht). Die Spalte isRegex gibt an, ob der Wert in for als regulärer Ausdruck interpretiert werden soll (true/false). Falls kein Wert angegeben ist, ist die Paarung standardmäßig false, wie z.B. beim Eintrag der FF B-Dorf im obigen Beispiel.
Kombination von YAML- und CSV-Konfiguration
Beide Varianten können parallel genutzt werden. In diesem Fall werden die Beschreibungen aus der YAML-Konfiguration und aus der angegebenen CSV-Datei in einer gemeinsamen Datenbank zusammengeführt.
Matching-Reihenfolge und Priorität
Das Modul wendet folgende Prioritäten beim Matching an:
- Exakte Matches (aus YAML und CSV) werden zuerst geprüft
- Regex-Matches (aus YAML und CSV) werden nur geprüft, wenn kein exakter Match gefunden wurde
Beispiel für Kombination:
- type: module
res: descriptor
config:
- scanField: tone
descrField: description
wildcard: "{DESCR}"
descriptions:
- for: 12345
add: FF YAML-Test (exakt)
- for: '123.*'
add: FF YAML-Regex
isRegex: true
csvPath: "config/descriptions_tone.csv"
Bei einem scanField-Wert von 12345 wird immer "FF YAML-Test (exakt)" verwendet, auch wenn der Regex ebenfalls zutreffen würde. Regex-Matches werden nur verwendet, wenn kein exakter Match gefunden wurde - unabhängig davon, ob die Einträge aus YAML oder CSV stammen.
Modul Abhängigkeiten
- keine
Externe Abhängigkeiten
- keine
Paket Modifikationen
- Wenn im Paket das Feld
scanFieldvorhanden ist, wird das FelddescrFielddem Paket hinzugefügt - Wenn keine Beschreibung vorhanden ist, wird im Feld
descrFieldder Inhalt des FeldesscanFieldhinterlegt
Zusätzliche Wildcards
- Von der Konfiguration abhängig