diff options
| author | Paul-Christian Volkmer | 2023-03-28 13:33:12 +0200 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2023-03-28 13:33:12 +0200 |
| commit | cd07078df3ed6c4e0c7b7478d6701ffd169236c9 (patch) | |
| tree | 0bb3455e66222edbbfcd612c538a426a8c05fc0b /src/main/java/DNPM | |
| parent | 9b44e3660ae84db6fe118bbbccbee30e5424fff5 (diff) | |
Klasse mit Hilfsfunktionen zum Prüfen und Ermitteln von Werten hinzugefügt
Diffstat (limited to 'src/main/java/DNPM')
| -rw-r--r-- | src/main/java/DNPM/DNPMHelper.java | 29 | ||||
| -rw-r--r-- | src/main/java/DNPM/analyzer/AnalyzerUtils.java | 143 |
2 files changed, 156 insertions, 16 deletions
diff --git a/src/main/java/DNPM/DNPMHelper.java b/src/main/java/DNPM/DNPMHelper.java index c4f6baa..f964cb8 100644 --- a/src/main/java/DNPM/DNPMHelper.java +++ b/src/main/java/DNPM/DNPMHelper.java @@ -1,5 +1,6 @@ package DNPM; +import DNPM.analyzer.AnalyzerUtils; import DNPM.services.systemtherapie.SystemtherapieService; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -18,10 +19,7 @@ import org.hibernate.type.StandardBasicTypes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; public class DNPMHelper implements IProcedureAnalyzer { @@ -143,14 +141,13 @@ public class DNPMHelper implements IProcedureAnalyzer { } public List<Map<String, String>> getSystemischeTherapienFromDiagnose(final Map<String, Object> input) { - var diagnoseId = input.get("DiagnoseId"); - - if (null == diagnoseId || Integer.parseInt(diagnoseId.toString()) == 0) { + var diagnoseId = AnalyzerUtils.getRequiredId(input, "DiagnoseId"); + if (diagnoseId.isEmpty()) { logger.error("Kein Parameter 'DiagnoseId' angegeben, gebe 'null' zurück"); return null; } - return systemtherapieService.getSystemischeTherapienFromDiagnose(Integer.parseInt(diagnoseId.toString())); + return systemtherapieService.getSystemischeTherapienFromDiagnose(diagnoseId.get()); } public Object getProzedurenFromDiagnose(final Map<String, Object> input) { @@ -189,9 +186,9 @@ public class DNPMHelper implements IProcedureAnalyzer { } public Object getEmpfehlung(final Map<String, Object> input) { - var procedureID = input.get("ProcedureID"); + var procedureID = AnalyzerUtils.getRequiredId(input, "ProcedureID"); - if (null == procedureID || Integer.parseInt(procedureID.toString()) == 0) { + if (procedureID.isEmpty()) { logger.error("Kein Parameter 'ProcedureID' angegeben, gebe 'null' zurück"); return null; } @@ -202,7 +199,7 @@ public class DNPMHelper implements IProcedureAnalyzer { var sql = "SELECT prozedur.id, genname, geneid, geneidlink, empfehlung, beginndatum FROM prozedur " + "LEFT JOIN dk_mtb_einzelempfehlung em ON em.id = prozedur.id " + "JOIN data_form df ON prozedur.data_form_id = df.id AND df.name = 'MR.MTB_Einzelempfehlung' " - + "WHERE prozedur.hauptprozedur_id = " + Integer.parseInt(procedureID.toString()) + " AND prozedur.geloescht = 0 " + + "WHERE prozedur.hauptprozedur_id = " + procedureID.get() + " AND prozedur.geloescht = 0 " + "ORDER BY beginndatum"; SQLQuery query = session.createSQLQuery(sql) @@ -224,14 +221,14 @@ public class DNPMHelper implements IProcedureAnalyzer { public Object updateEmpfehlungPrio(final Map<String, Object> input) { // Auslesen und Prüfen der Parameter aus 'input' - var rid = input.get("rid"); - if (null == rid || Integer.parseInt(rid.toString()) == 0) { + var rid = AnalyzerUtils.getRequiredId(input, "rid"); + if (rid.isEmpty()) { logger.error("Kein Parameter 'rid' angegeben, gebe 'false' zurück"); return false; } - var strDate = input.get("bd"); - if (null == strDate || !strDate.toString().matches("[\\d]{4}-[\\d]{2}-[\\d]{2}")) { + var strDate = AnalyzerUtils.getRequiredValueMatching(input, "bd", "[\\d]{4}-[\\d]{2}-[\\d]{2}"); + if (strDate.isEmpty()) { logger.error("Kein oder ungültiger Parameter 'bd' angegeben, gebe 'false' zurück"); return false; } @@ -241,7 +238,7 @@ public class DNPMHelper implements IProcedureAnalyzer { //DateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd"); try { - String sql = "UPDATE prozedur SET beginndatum = '" + strDate + "' WHERE id = '" + rid + "' "; + String sql = "UPDATE prozedur SET beginndatum = '" + strDate.get() + "' WHERE id = '" + rid.get() + "' "; SQLQuery result = onkostarApi.getSessionFactory().getCurrentSession().createSQLQuery(sql); result.executeUpdate(); return true; 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(); + } + +} |
