mirror of
https://github.com/Theodor-Springmann-Stiftung/lenz-web.git
synced 2025-10-29 01:05:32 +00:00
BUGFIX: read XML data
This commit is contained in:
@@ -2,7 +2,9 @@ package xmlmodels
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
@@ -11,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
REFERENCES_PATH = "data/xml/akteure.xml"
|
||||
REFERENCES_PATH = "data/xml/references.xml"
|
||||
LETTERS_PATH = "data/xml/briefe.xml"
|
||||
META_PATH = "data/xml/meta.xml"
|
||||
TRADITIONS_PATH = "data/xml/traditions.xml"
|
||||
@@ -32,7 +34,33 @@ type Library struct {
|
||||
|
||||
func (l *Library) String() string {
|
||||
// TODO:
|
||||
return ""
|
||||
sb := strings.Builder{}
|
||||
|
||||
sb.WriteString("Persons: ")
|
||||
sb.WriteString(strconv.Itoa(len(l.Persons.Array)))
|
||||
sb.WriteString("\n")
|
||||
|
||||
sb.WriteString("Places: ")
|
||||
sb.WriteString(strconv.Itoa(len(l.Places.Array)))
|
||||
sb.WriteString("\n")
|
||||
|
||||
sb.WriteString("AppDefs: ")
|
||||
sb.WriteString(strconv.Itoa(len(l.AppDefs.Array)))
|
||||
sb.WriteString("\n")
|
||||
|
||||
sb.WriteString("Letters: ")
|
||||
sb.WriteString(strconv.Itoa(len(l.Letters.Array)))
|
||||
sb.WriteString("\n")
|
||||
|
||||
sb.WriteString("Traditions: ")
|
||||
sb.WriteString(strconv.Itoa(len(l.Traditions.Array)))
|
||||
sb.WriteString("\n")
|
||||
|
||||
sb.WriteString("Metas: ")
|
||||
sb.WriteString(strconv.Itoa(len(l.Metas.Array)))
|
||||
sb.WriteString("\n")
|
||||
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
// INFO: this is the only place where the providers are created. There is no need for locking on access.
|
||||
@@ -68,6 +96,7 @@ func (l *Library) Parse(source xmlparsing.ParseSource, baseDir, commit string) e
|
||||
err := l.Persons.Serialize(&PersonDefs{}, filepath.Join(meta.BaseDir, REFERENCES_PATH), meta)
|
||||
if err != nil {
|
||||
metamu.Lock()
|
||||
slog.Error("Failed to serialize persons:", "error", err)
|
||||
meta.FailedPaths = append(meta.FailedPaths, filepath.Join(meta.BaseDir, REFERENCES_PATH))
|
||||
metamu.Unlock()
|
||||
}
|
||||
@@ -79,6 +108,7 @@ func (l *Library) Parse(source xmlparsing.ParseSource, baseDir, commit string) e
|
||||
err := l.Places.Serialize(&LocationDefs{}, filepath.Join(meta.BaseDir, REFERENCES_PATH), meta)
|
||||
if err != nil {
|
||||
metamu.Lock()
|
||||
slog.Error("Failed to serialize places:", "error", err)
|
||||
meta.FailedPaths = append(meta.FailedPaths, filepath.Join(meta.BaseDir, REFERENCES_PATH))
|
||||
metamu.Unlock()
|
||||
}
|
||||
@@ -90,6 +120,7 @@ func (l *Library) Parse(source xmlparsing.ParseSource, baseDir, commit string) e
|
||||
err := l.AppDefs.Serialize(&AppDefs{}, filepath.Join(meta.BaseDir, REFERENCES_PATH), meta)
|
||||
if err != nil {
|
||||
metamu.Lock()
|
||||
slog.Error("Failed to serialize appdefs:", "error", err)
|
||||
meta.FailedPaths = append(meta.FailedPaths, filepath.Join(meta.BaseDir, REFERENCES_PATH))
|
||||
metamu.Unlock()
|
||||
}
|
||||
@@ -101,6 +132,7 @@ func (l *Library) Parse(source xmlparsing.ParseSource, baseDir, commit string) e
|
||||
err := l.Letters.Serialize(&DocumentsRoot{}, filepath.Join(meta.BaseDir, LETTERS_PATH), meta)
|
||||
if err != nil {
|
||||
metamu.Lock()
|
||||
slog.Error("Failed to serialize letters:", "error", err)
|
||||
meta.FailedPaths = append(meta.FailedPaths, filepath.Join(meta.BaseDir, LETTERS_PATH))
|
||||
metamu.Unlock()
|
||||
}
|
||||
@@ -112,6 +144,7 @@ func (l *Library) Parse(source xmlparsing.ParseSource, baseDir, commit string) e
|
||||
err := l.Traditions.Serialize(&TraditionsRoot{}, filepath.Join(meta.BaseDir, TRADITIONS_PATH), meta)
|
||||
if err != nil {
|
||||
metamu.Lock()
|
||||
slog.Error("Failed to serialize traditions:", "error", err)
|
||||
meta.FailedPaths = append(meta.FailedPaths, filepath.Join(meta.BaseDir, TRADITIONS_PATH))
|
||||
metamu.Unlock()
|
||||
}
|
||||
@@ -123,6 +156,7 @@ func (l *Library) Parse(source xmlparsing.ParseSource, baseDir, commit string) e
|
||||
err := l.Metas.Serialize(&MetaRoot{}, filepath.Join(meta.BaseDir, META_PATH), meta)
|
||||
if err != nil {
|
||||
metamu.Lock()
|
||||
slog.Error("Failed to serialize meta:", "error", err)
|
||||
meta.FailedPaths = append(meta.FailedPaths, filepath.Join(meta.BaseDir, META_PATH))
|
||||
metamu.Unlock()
|
||||
}
|
||||
|
||||
@@ -4,22 +4,16 @@ import "encoding/xml"
|
||||
|
||||
type MetaRoot struct {
|
||||
XMLName xml.Name `xml:"opus"`
|
||||
Metas []Meta `xml:"letterDesc"`
|
||||
Metas []Meta `xml:"descriptions>letterDesc"`
|
||||
}
|
||||
|
||||
func (m MetaRoot) Children() []Meta {
|
||||
return m.Metas
|
||||
}
|
||||
|
||||
type DefinitionsRoot struct {
|
||||
XMLName xml.Name `xml:"definitions"`
|
||||
Persons PersonDefs `xml:"personDefs"`
|
||||
Locations LocationDefs `xml:"locationDefs"`
|
||||
Apparatuses AppDefs `xml:"appDefs"`
|
||||
}
|
||||
|
||||
type PersonDefs struct {
|
||||
Persons []PersonDef `xml:"personDef"`
|
||||
xml.Name `xml:"opus"`
|
||||
Persons []PersonDef `xml:"definitions>personDefs>personDef"`
|
||||
}
|
||||
|
||||
func (p PersonDefs) Children() []PersonDef {
|
||||
@@ -27,7 +21,8 @@ func (p PersonDefs) Children() []PersonDef {
|
||||
}
|
||||
|
||||
type LocationDefs struct {
|
||||
Locations []LocationDef `xml:"locationDef"`
|
||||
xml.Name `xml:"opus"`
|
||||
Locations []LocationDef `xml:"definitions>locationDefs>locationDef"`
|
||||
}
|
||||
|
||||
func (l LocationDefs) Children() []LocationDef {
|
||||
@@ -35,7 +30,8 @@ func (l LocationDefs) Children() []LocationDef {
|
||||
}
|
||||
|
||||
type AppDefs struct {
|
||||
Apps []AppDef `xml:"appDef"`
|
||||
xml.Name `xml:"opus"`
|
||||
Apps []AppDef `xml:"definitions>appDefs>appDef"`
|
||||
}
|
||||
|
||||
func (a AppDefs) Children() []AppDef {
|
||||
@@ -43,8 +39,8 @@ func (a AppDefs) Children() []AppDef {
|
||||
}
|
||||
|
||||
type TraditionsRoot struct {
|
||||
XMLName xml.Name `xml:"traditions"`
|
||||
Traditions []Tradition `xml:"tradition"`
|
||||
xml.Name `xml:"opus"`
|
||||
Traditions []Tradition `xml:"traditions>letterTradition"`
|
||||
}
|
||||
|
||||
func (t TraditionsRoot) Children() []Tradition {
|
||||
@@ -52,10 +48,10 @@ func (t TraditionsRoot) Children() []Tradition {
|
||||
}
|
||||
|
||||
type DocumentsRoot struct {
|
||||
XMLName xml.Name `xml:"document"`
|
||||
Documents []Letter `xml:"letterText"`
|
||||
xml.Name `xml:"opus"`
|
||||
Document []Letter `xml:"document>letterText"`
|
||||
}
|
||||
|
||||
func (d DocumentsRoot) Children() []Letter {
|
||||
return d.Documents
|
||||
return d.Document
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user