diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/ResultSet.java b/src/main/java/dev/pcvolkmer/onco/datamapper/ResultSet.java
new file mode 100644
index 0000000..013bc1a
--- /dev/null
+++ b/src/main/java/dev/pcvolkmer/onco/datamapper/ResultSet.java
@@ -0,0 +1,82 @@
+package dev.pcvolkmer.onco.datamapper;
+
+import java.sql.Date;
+import java.util.Map;
+
+/**
+ * Result set type to wrap Map
+ *
+ * @author Paul-Christian Volkmer
+ * @since 0.1
+ */
+public class ResultSet {
+
+ private final Map rawData;
+
+ private ResultSet(final Map rawData) {
+ this.rawData = rawData;
+ }
+
+ public static ResultSet from(final Map rawData) {
+ return new ResultSet(rawData);
+ }
+
+ public Map getRawData() {
+ return rawData;
+ }
+
+ /**
+ * Get column value as String and cast value if possible
+ * @param columnName The name of the column
+ * @return The column value as String
+ */
+ public String getString(String columnName) {
+ var raw = this.rawData.get(columnName);
+
+ if (raw == null) {
+ return null;
+ } else if (raw instanceof String) {
+ return raw.toString();
+ } else if (raw instanceof Integer) {
+ return ((Integer) raw).toString();
+ }
+
+ throw new IllegalArgumentException("Cannot convert " + raw.getClass() + " to String");
+ }
+
+ /**
+ * Get column value as Integer and cast value if possible
+ * @param columnName The name of the column
+ * @return The column value as Integer
+ */
+ public Integer getInteger(String columnName) {
+ var raw = this.rawData.get(columnName);
+
+ if (raw == null) {
+ return null;
+ } else if (raw instanceof Integer) {
+ return ((Integer) raw);
+ }
+
+ throw new IllegalArgumentException("Cannot convert " + raw.getClass() + " to Integer");
+ }
+
+ /**
+ * Get column value as Date and cast value if possible
+ * @param columnName The name of the column
+ * @return The column value as Date
+ */
+ public Date getDate(String columnName) {
+ var raw = this.rawData.get(columnName);
+
+ if (raw == null) {
+ return null;
+ }
+ if (raw instanceof Date) {
+ return (Date) raw;
+ }
+
+ throw new IllegalArgumentException("Cannot convert " + raw.getClass() + " to Date");
+ }
+
+}
diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/TypeMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/TypeMapper.java
deleted file mode 100644
index b99bfe0..0000000
--- a/src/main/java/dev/pcvolkmer/onco/datamapper/TypeMapper.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package dev.pcvolkmer.onco.datamapper;
-
-import java.sql.Date;
-
-public class TypeMapper {
-
- public static String asString(Object raw) {
- if (raw == null) {
- return null;
- }
- if (raw instanceof String) {
- return (String) raw;
- } else if (raw instanceof Integer) {
- return ((Integer) raw).toString();
- }
-
- throw new IllegalArgumentException("Cannot convert " + raw.getClass() + " to String");
- }
-
- public static Date asDate(Object raw) {
- if (raw == null) {
- return null;
- }
- if (raw instanceof Date) {
- return (Date) raw;
- }
-
- throw new IllegalArgumentException("Cannot convert " + raw.getClass() + " to Date");
- }
-
-}
diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/AbstractDataCatalogue.java b/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/AbstractDataCatalogue.java
index 533859b..a500125 100644
--- a/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/AbstractDataCatalogue.java
+++ b/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/AbstractDataCatalogue.java
@@ -1,5 +1,6 @@
package dev.pcvolkmer.onco.datamapper.datacatalogues;
+import dev.pcvolkmer.onco.datamapper.ResultSet;
import dev.pcvolkmer.onco.datamapper.exceptions.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
@@ -28,7 +29,7 @@ public abstract class AbstractDataCatalogue implements DataCatalogue {
* @return The procedure id
*/
@Override
- public Map getById(int id) {
+ public ResultSet getById(int id) {
var result = this.jdbcTemplate.queryForList(
String.format(
"SELECT * FROM %s JOIN prozedur ON (prozedur.id = %s.id) WHERE geloescht = 0 AND prozedur.id = ?",
@@ -43,7 +44,7 @@ public abstract class AbstractDataCatalogue implements DataCatalogue {
throw new DataAccessException("Multiple records found for id: " + id);
}
- return result.get(0);
+ return ResultSet.from(result.get(0));
}
}
diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/AbstractSubformDataCatalogue.java b/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/AbstractSubformDataCatalogue.java
index eb7dd02..581a72b 100644
--- a/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/AbstractSubformDataCatalogue.java
+++ b/src/main/java/dev/pcvolkmer/onco/datamapper/datacatalogues/AbstractSubformDataCatalogue.java
@@ -1,9 +1,10 @@
package dev.pcvolkmer.onco.datamapper.datacatalogues;
+import dev.pcvolkmer.onco.datamapper.ResultSet;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
-import java.util.Map;
+import java.util.stream.Collectors;
/**
* Common implementations for all data catalogues used in subforms
@@ -25,14 +26,17 @@ public abstract class AbstractSubformDataCatalogue extends AbstractDataCatalogue
* @param id The procedure id
* @return The procedure id
*/
- public List