diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractKpaTherapieverlaufDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractKpaTherapieverlaufDataMapper.java index 4a99f4c..46ad72c 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractKpaTherapieverlaufDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractKpaTherapieverlaufDataMapper.java @@ -1,6 +1,7 @@ package dev.pcvolkmer.onco.datamapper.mapper; import dev.pcvolkmer.mv64e.mtb.*; +import dev.pcvolkmer.onco.datamapper.datacatalogues.AbstractSubformDataCatalogue; import java.io.IOException; import java.util.Arrays; @@ -12,7 +13,11 @@ import java.util.stream.Collectors; * @author Paul-Christian Volkmer * @since 0.1 */ -public abstract class AbstractKpaTherapieverlaufDataMapper implements SubformDataMapper { +public abstract class AbstractKpaTherapieverlaufDataMapper extends AbstractSubformDataMapper { + + AbstractKpaTherapieverlaufDataMapper(AbstractSubformDataCatalogue catalogue) { + super(catalogue); + } protected MtbTherapyIntentCoding getMtbTherapyIntentCoding(String value) { if (value == null || !Arrays.stream(MtbTherapyIntentCodingCode.values()).map(MtbTherapyIntentCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { @@ -125,7 +130,7 @@ public abstract class AbstractKpaTherapieverlaufDataMapper implements Subform } protected OncoProcedureCoding getOncoProcedureCoding(String value) { - if (value == null || ! Arrays.stream(OncoProcedureCodingCode.values()).map(OncoProcedureCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { + if (value == null || !Arrays.stream(OncoProcedureCodingCode.values()).map(OncoProcedureCodingCode::toValue).collect(Collectors.toSet()).contains(value)) { return null; } diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractSubformDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractSubformDataMapper.java new file mode 100644 index 0000000..135ae7f --- /dev/null +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/AbstractSubformDataMapper.java @@ -0,0 +1,44 @@ +package dev.pcvolkmer.onco.datamapper.mapper; + +import dev.pcvolkmer.onco.datamapper.ResultSet; +import dev.pcvolkmer.onco.datamapper.datacatalogues.AbstractSubformDataCatalogue; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * Abstract common implementation for all subform data mappers + * + * @since 0.1 + * @author Paul-Christian Volkmer + * @param The destination type + */ +public abstract class AbstractSubformDataMapper implements SubformDataMapper { + + protected AbstractSubformDataCatalogue catalogue; + + protected AbstractSubformDataMapper(AbstractSubformDataCatalogue catalogue) { + this.catalogue = catalogue; + } + + /** + * Loads a data set from database and maps it into destination data type + * @param parentId The database id of the parent procedure data set + * @return The data set to be loaded + */ + @Override + public List getByParentId(final int parentId) { + return catalogue.getAllByParentId(parentId) + .stream() + .map(this::map) + .collect(Collectors.toList()); + } + + /** + * Maps a single result set into destination object + * @param resultSet The result set to start from + * @return The destination object + */ + protected abstract T map(ResultSet resultSet); + +} diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaEcogDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaEcogDataMapper.java index 5296514..3ef2de4 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaEcogDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaEcogDataMapper.java @@ -19,12 +19,10 @@ import java.util.stream.Collectors; * @author Paul-Christian Volkmer * @since 0.1 */ -public class KpaEcogDataMapper implements SubformDataMapper { - - private final EcogCatalogue catalogue; +public class KpaEcogDataMapper extends AbstractSubformDataMapper { public KpaEcogDataMapper(final EcogCatalogue catalogue) { - this.catalogue = catalogue; + super(catalogue); } /** @@ -48,7 +46,8 @@ public class KpaEcogDataMapper implements SubformDataMapper { .collect(Collectors.toList()); } - private PerformanceStatus map(final ResultSet resultSet) { + @Override + protected PerformanceStatus map(final ResultSet resultSet) { var builder = PerformanceStatus.builder(); builder .id(resultSet.getProcedureId().toString()) diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaProzedurDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaProzedurDataMapper.java index a97e63e..634e8df 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaProzedurDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaProzedurDataMapper.java @@ -1,14 +1,11 @@ package dev.pcvolkmer.onco.datamapper.mapper; -import dev.pcvolkmer.mv64e.mtb.*; +import dev.pcvolkmer.mv64e.mtb.OncoProcedure; +import dev.pcvolkmer.mv64e.mtb.PeriodDate; +import dev.pcvolkmer.mv64e.mtb.Reference; import dev.pcvolkmer.onco.datamapper.ResultSet; import dev.pcvolkmer.onco.datamapper.datacatalogues.ProzedurCatalogue; -import java.io.IOException; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - /** * Mapper class to load and map prozedur data from database table 'dk_dnpm_uf_prozedur' * @@ -17,10 +14,8 @@ import java.util.stream.Collectors; */ public class KpaProzedurDataMapper extends AbstractKpaTherapieverlaufDataMapper { - private final ProzedurCatalogue catalogue; - public KpaProzedurDataMapper(final ProzedurCatalogue catalogue) { - this.catalogue = catalogue; + super(catalogue); } /** @@ -36,14 +31,7 @@ public class KpaProzedurDataMapper extends AbstractKpaTherapieverlaufDataMapper< } @Override - public List getByParentId(final int parentId) { - return catalogue.getAllByParentId(parentId) - .stream() - .map(this::map) - .collect(Collectors.toList()); - } - - private OncoProcedure map(final ResultSet resultSet) { + protected OncoProcedure map(final ResultSet resultSet) { var diseases = catalogue.getDiseases(resultSet.getProcedureId()); if (diseases.size() != 1) { diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTherapielinieDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTherapielinieDataMapper.java index aacc699..211fe1f 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTherapielinieDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTherapielinieDataMapper.java @@ -6,9 +6,6 @@ import dev.pcvolkmer.mv64e.mtb.Reference; import dev.pcvolkmer.onco.datamapper.ResultSet; import dev.pcvolkmer.onco.datamapper.datacatalogues.TherapielinieCatalogue; -import java.util.List; -import java.util.stream.Collectors; - /** * Mapper class to load and map prozedur data from database table 'dk_dnpm_therapielinie' * @@ -17,10 +14,8 @@ import java.util.stream.Collectors; */ public class KpaTherapielinieDataMapper extends AbstractKpaTherapieverlaufDataMapper { - private final TherapielinieCatalogue catalogue; - public KpaTherapielinieDataMapper(final TherapielinieCatalogue catalogue) { - this.catalogue = catalogue; + super(catalogue); } /** @@ -36,14 +31,7 @@ public class KpaTherapielinieDataMapper extends AbstractKpaTherapieverlaufDataMa } @Override - public List getByParentId(final int parentId) { - return catalogue.getAllByParentId(parentId) - .stream() - .map(this::map) - .collect(Collectors.toList()); - } - - private MtbSystemicTherapy map(final ResultSet resultSet) { + protected MtbSystemicTherapy map(final ResultSet resultSet) { var diseases = catalogue.getDiseases(resultSet.getProcedureId()); if (diseases.size() != 1) { diff --git a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTumorausbreitungDataMapper.java b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTumorausbreitungDataMapper.java index ca175d2..aa1c111 100644 --- a/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTumorausbreitungDataMapper.java +++ b/src/main/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTumorausbreitungDataMapper.java @@ -6,7 +6,6 @@ import dev.pcvolkmer.onco.datamapper.datacatalogues.TumorausbreitungCatalogue; import java.io.IOException; import java.util.Arrays; -import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; @@ -16,12 +15,10 @@ import java.util.stream.Collectors; * @author Paul-Christian Volkmer * @since 0.1 */ -public class KpaTumorausbreitungDataMapper implements SubformDataMapper { - - private final TumorausbreitungCatalogue catalogue; +public class KpaTumorausbreitungDataMapper extends AbstractSubformDataMapper { public KpaTumorausbreitungDataMapper(final TumorausbreitungCatalogue catalogue) { - this.catalogue = catalogue; + super(catalogue); } /** @@ -37,15 +34,7 @@ public class KpaTumorausbreitungDataMapper implements SubformDataMapper getByParentId(final int parentId) { - return catalogue.getAllByParentId(parentId) - .stream() - .map(this::map) - .sorted(Comparator.comparing(TumorStaging::getDate)) - .collect(Collectors.toList()); - } - - private TumorStaging map(final ResultSet resultSet) { + protected TumorStaging map(final ResultSet resultSet) { var builder = TumorStaging.builder(); builder .date(resultSet.getDate("zeitpunkt")) diff --git a/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTumorausbreitungDataMapperTest.java b/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTumorausbreitungDataMapperTest.java index 2da9fc7..9fa3496 100644 --- a/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTumorausbreitungDataMapperTest.java +++ b/src/test/java/dev/pcvolkmer/onco/datamapper/mapper/KpaTumorausbreitungDataMapperTest.java @@ -20,7 +20,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class KpaTumorausbreitungDataMapperTest { @@ -60,16 +59,10 @@ class KpaTumorausbreitungDataMapperTest { return testData.get(columnName); }).when(resultSet).getDate(anyString()); - when(resultSet.getProcedureId()).thenReturn(1); - doAnswer(invocationOnMock -> List.of(resultSet)) .when(catalogue) .getAllByParentId(anyInt()); - doAnswer(invocationOnMock -> List.of(resultSet)) - .when(catalogue) - .getDiseases(anyInt()); - var actualList = this.dataMapper.getByParentId(1); assertThat(actualList).hasSize(1);