From ff1e612cacbf87b3d9d48c5bbb83a5fcc9b30585 Mon Sep 17 00:00:00 2001
From: Andreas Romeyke <andreas.romeyke@slub-dresden.de>
Date: Wed, 19 Jul 2023 10:53:49 +0200
Subject: [PATCH] - init

---
 .../plugin/SLUBXmlValidationLogger.java       | 66 +++++++++++++++++++
 1 file changed, 66 insertions(+)
 create mode 100644 java/org/slub/rosetta/dps/repository/plugin/SLUBXmlValidationLogger.java

diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlValidationLogger.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlValidationLogger.java
new file mode 100644
index 0000000..66a4c9e
--- /dev/null
+++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBXmlValidationLogger.java
@@ -0,0 +1,66 @@
+package org.slub.rosetta.dps.repository.plugin;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SLUBXmlValidationLogger {
+    private final List<String> log = new ArrayList<>();
+    private boolean result = true;
+    private boolean isDebug;
+    public void error (String err) {
+        result = false;
+        log.add("[ERROR] " + err);
+    }
+    public void debug (String detail) {
+        log.add("[DEBUG] " + detail );
+    }
+    public void info (String detail) {
+        log.add("[INFO]  " + detail );
+    }
+    public void fatal (String detail) {
+        result = false;
+        log.add("[FATAL] " + detail );
+    }
+    public void warning (String detail) {
+        log.add("[WARN]  " + detail );
+    }
+    public void print( ValidationLevel level ) {
+        for (String e: log) {
+            switch ( level) {
+                case debug: if ( e.startsWith("[DEBUG]")) { System.out.println( e); }
+                case info: if ( e.startsWith("[INFO]")) { System.out.println( e); }
+                case warn: if ( e.startsWith("[WARN]")) { System.out.println( e); }
+                case error: if ( e.startsWith("[ERROR]")) { System.out.println( e); }
+                case fatal: if ( e.startsWith("[FATAL]")) { System.out.println( e); }
+            }
+        }
+    }
+
+    public void setResult( boolean r) {
+        this.result = r;
+    }
+    public boolean getResult( ) {
+        return this.result;
+    }
+    public void clear() {
+        log.clear();
+        this.result = true;
+    }
+    public List<String> getErrors() {
+        System.out.println("---------------->");
+        print(ValidationLevel.debug);
+        System.out.println("<----------------");
+        return log
+                .stream()
+                .filter(f -> f.startsWith("[ERROR]") || f.startsWith("FATAL"))
+                .toList()
+                ;
+    }
+    public String getLog() {
+        return log
+                .stream()
+                .filter(f -> !f.startsWith("[DEBUG]"))
+                .reduce( "\n", String::concat)
+                ;
+    }
+}
-- 
GitLab