summaryrefslogtreecommitdiff
path: root/src/main/java/DNPM/analyzer
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2023-03-28 13:33:12 +0200
committerPaul-Christian Volkmer2023-03-28 13:33:12 +0200
commitcd07078df3ed6c4e0c7b7478d6701ffd169236c9 (patch)
tree0bb3455e66222edbbfcd612c538a426a8c05fc0b /src/main/java/DNPM/analyzer
parent9b44e3660ae84db6fe118bbbccbee30e5424fff5 (diff)
Klasse mit Hilfsfunktionen zum Prüfen und Ermitteln von Werten hinzugefügt
Diffstat (limited to 'src/main/java/DNPM/analyzer')
-rw-r--r--src/main/java/DNPM/analyzer/AnalyzerUtils.java143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/main/java/DNPM/analyzer/AnalyzerUtils.java b/src/main/java/DNPM/analyzer/AnalyzerUtils.java
new file mode 100644
index 0000000..96af781
--- /dev/null
+++ b/src/main/java/DNPM/analyzer/AnalyzerUtils.java
@@ -0,0 +1,143 @@
+package DNPM.analyzer;
+
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * Klasse mit Hilfsfunktionen für Analyzer
+ *
+ * @since 0.1.0
+ */
+public class AnalyzerUtils {
+
+ /**
+ * Prüft, ob ein Optional mit Wert, wenn in InputMap ein Eintrag mit key <code>key</code> und Typ <code>type</code>
+ * gefunden wurde.
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @param type Typ des Werts
+ * @return <code>true</code>>, wenn ein Wert von dem Typ gefunden wurde
+ */
+ public static boolean requiredValuePresent(final Map<String, Object> input, final String key, final Class<?> type) {
+ var value = input.get(key);
+
+ if (null == value) {
+ return false;
+ }
+
+ return type.isInstance(value);
+ }
+
+ /**
+ * Übergibt ein Optional mit Wert, wenn in InputMap ein Eintrag mit key <code>key</code> und Typ <code>type</code>
+ * gefunden wurde. Anderenfalls ein leeres Optional
+ *
+ * <p><b>Beispiel</b>
+ * <pre>
+ * var id = AnalyzerUtils.getRequiredValue(input, "id", Integer.class);
+ * if (id.isEmpty()) {
+ * logger.error("Keine ID angegeben!");
+ * return false;
+ * }
+ *
+ * var idNummer = id.get();
+ * ...
+ * </pre>
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @param type Typ des Werts
+ * @return Optional mit entsprechendem Wert oder leeres Optional
+ */
+ public static <T> Optional<T> getRequiredValue(final Map<String, Object> input, final String key, final Class<T> type) {
+ if (! requiredValuePresent(input, key, type)) {
+ return Optional.empty();
+ }
+
+ @SuppressWarnings("unchecked")
+ var result = Optional.of((T)input.get(key));
+
+ return result;
+ }
+
+ /**
+ * Prüft, ob ein Wert als Zeichenkette dem angegebenen RegExp entspricht
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @param regexp Der zu prüfende reguläre Ausdruck
+ * @return <code>true</code>>, wenn ein Wert gefunden wurde, der dem RegExp entspricht
+ */
+ public static boolean requiredValueMatches(final Map<String, Object> input, final String key, final String regexp) {
+ var value = input.get(key);
+
+ if (null == value) {
+ return false;
+ }
+
+ return value.toString().matches(regexp);
+ }
+
+ /**
+ * Übergibt ein Optional mit dem Wert als Zeichenkette, wenn er dem angegebenen RegExp entspricht.
+ * Hierzu wird die Methode <code>toString()</code> auf den Wert angewendet.
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @param regexp Der zu prüfende reguläre Ausdruck
+ * @return Optional mit entsprechendem Wert als Zeichenkette oder leeres Optional
+ */
+ public static Optional<String> getRequiredValueMatching(final Map<String, Object> input, final String key, final String regexp) {
+ if (! requiredValueMatches(input, key, regexp)) {
+ return Optional.empty();
+ }
+
+ return Optional.of(input.get(key).toString());
+ }
+
+ /**
+ * Prüft, ob ein Wert eine ID ist und damit eine Zahl größer Null ist.
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @return <code>true</code>>, wenn ein Wert gefunden wurde, der dem RegExp entspricht
+ */
+ public static boolean requiredValueIsId(final Map<String, Object> input, final String key) {
+ return requiredValuePresent(input, key, Integer.class) && Integer.valueOf(input.get(key).toString()) > 0;
+ }
+
+ /**
+ * Übergibt ein Optional, wenn der Wert eine ID ist und damit eine Zahl größer Null ist.
+ * <p><b>Beispiel</b>
+ * <pre>
+ * var id = AnalyzerUtils.getRequiredId(input, "id");
+ * if (id.isEmpty()) {
+ * logger.error("Keine gültige ID angegeben!");
+ * return false;
+ * }
+ *
+ * // Ist hier immer größer als Null
+ * var idNummer = id.get();
+ * ...
+ * </pre>
+ *
+ * @param input InputMap
+ * @param key Key des Werts
+ * @return Optional mit entsprechendem Wert oder leeres Optional
+ */
+ public static Optional<Integer> getRequiredId(final Map<String, Object> input, final String key) {
+ if (! requiredValuePresent(input, key, Integer.class)) {
+ return Optional.empty();
+ }
+
+ var id = (int)input.get(key);
+
+ if (id > 0) {
+ return Optional.of(id);
+ }
+
+ return Optional.empty();
+ }
+
+}