From 426d8e372dca28128c047ac54ea3213ff0917da6 Mon Sep 17 00:00:00 2001 From: Hilbrand Bouwkamp Date: Thu, 17 Sep 2026 11:53:47 +0200 Subject: [PATCH] Reduce duplication by having only 1 complex builder. --- .../nl/overheid/aerius/gml/GMLScenario.java | 6 ++- .../aerius/gml/GMLScenarioHelper.java | 41 +++++++++---------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/GMLScenario.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/GMLScenario.java index 1cdd12eb..96b8cd81 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/GMLScenario.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/GMLScenario.java @@ -64,12 +64,16 @@ public static Builder create(final String name, final SituationType situationTyp } public static Builder create(final ImportParcel importParcel, final ScenarioSituation situation) { + return create(situation, importParcel.getCalculationPointsList()); + } + + public static Builder create(final ScenarioSituation situation, final List receptorPoints) { return new Builder(situation.getName(), situation.getType()) .nettingFactor(situation.getNettingFactor()) .definitions(situation.getDefinitions()) .sources(situation.getEmissionSourcesList()) .buildings(situation.getBuildingsList()) - .calculationPoints(importParcel.getCalculationPointsList()) + .calculationPoints(receptorPoints) .cimlkDispersionLines(situation.getCimlkDispersionLinesList()) .cimlkMeasures(situation.getCimlkMeasuresList()) .cimlkCorrections(situation.getCimlkCorrections()); diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/GMLScenarioHelper.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/GMLScenarioHelper.java index fcb178c2..e2ece79a 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/GMLScenarioHelper.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/GMLScenarioHelper.java @@ -22,6 +22,8 @@ import nl.overheid.aerius.gml.base.MetaDataInput; import nl.overheid.aerius.gml.base.OtherSituationMetaData; +import nl.overheid.aerius.shared.domain.Theme; +import nl.overheid.aerius.shared.domain.calculation.CalculationSetOptions; import nl.overheid.aerius.shared.domain.scenario.IsScenario; import nl.overheid.aerius.shared.domain.v2.archive.ArchiveMetaData; import nl.overheid.aerius.shared.domain.v2.point.CalculationPointFeature; @@ -43,13 +45,9 @@ private GMLScenarioHelper() { */ public static MetaDataInput constructMetaData(final Scenario scenario, final ScenarioSituation situation, final BooleanSupplier resultsIncluded, final String aeriusVersion, final String databaseVersion) { - final MetaDataInput metaData = new MetaDataInput(); - metaData.setTheme(scenario.getTheme()); + final MetaDataInput metaData = constructMetaData(scenario.getTheme(), situation.getYear(), aeriusVersion, databaseVersion, scenario.getOptions()); + metaData.setScenarioMetaData(scenario.getMetaData()); - metaData.setYear(situation.getYear()); - metaData.setVersion(aeriusVersion); - metaData.setDatabaseVersion(databaseVersion); - metaData.setOptions(scenario.getOptions()); metaData.setResultsIncluded(resultsIncluded.getAsBoolean()); metaData.setReference(situation.getReference()); scenario.getSituations().stream() @@ -64,14 +62,10 @@ public static MetaDataInput constructMetaData(final Scenario scenario, final Sce */ public static MetaDataInput constructArchiveMetaData(final Scenario scenario, final int year, final ArchiveMetaData archiveMetaData, final String aeriusVersion, final String databaseVersion) { - final MetaDataInput metaData = new MetaDataInput(); - metaData.setTheme(scenario.getTheme()); + final MetaDataInput metaData = constructMetaData(scenario.getTheme(), year, aeriusVersion, databaseVersion, scenario.getOptions()); + metaData.setScenarioMetaData(new ScenarioMetaData()); metaData.setArchiveMetaData(archiveMetaData); - metaData.setYear(year); - metaData.setVersion(aeriusVersion); - metaData.setDatabaseVersion(databaseVersion); - metaData.setOptions(scenario.getOptions()); metaData.setResultsIncluded(true); scenario.getSituations().stream() .map(GMLScenarioHelper::otherSituation) @@ -79,6 +73,18 @@ public static MetaDataInput constructArchiveMetaData(final Scenario scenario, fi return metaData; } + public static MetaDataInput constructMetaData(final Theme theme, final int year, final String aeriusVersion, final String databaseVersion, + final CalculationSetOptions options) { + final MetaDataInput metaData = new MetaDataInput(); + + metaData.setTheme(theme); + metaData.setYear(year); + metaData.setVersion(aeriusVersion); + metaData.setDatabaseVersion(databaseVersion); + metaData.setOptions(options); + return metaData; + } + private static OtherSituationMetaData otherSituation(final ScenarioSituation situation) { return OtherSituationMetaData.Builder // Reference and name might be null at this point, in that case, use empty string as a fallback as they are required fields in IMAER. @@ -94,16 +100,7 @@ private static OtherSituationMetaData otherSituation(final ScenarioSituation sit * Receptor points can be either with or without results. The custom calculation points in the situation will not be used. */ public static IsScenario constructScenario(final ScenarioSituation situation, final List receptorPoints) { - return GMLScenario.Builder.create(situation.getName(), situation.getType()) - .nettingFactor(situation.getNettingFactor()) - .sources(situation.getSources().getFeatures()) - .buildings(situation.getBuildingsList()) - .calculationPoints(receptorPoints) - .cimlkDispersionLines(situation.getCimlkDispersionLinesList()) - .cimlkCorrections(situation.getCimlkCorrections()) - .cimlkMeasures(situation.getCimlkMeasuresList()) - .definitions(situation.getDefinitions()) - .build(); + return GMLScenario.Builder.create(situation, receptorPoints).build(); } }