diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/GMLConversionData.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/GMLConversionData.java index 86a09262f..f9066ff2a 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/GMLConversionData.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/GMLConversionData.java @@ -51,6 +51,8 @@ */ public class GMLConversionData { + public static final Integer NON_URBAN_ROAD_DEFAULT_SPEED = 60; + private final List errors; private final List warnings; private final Set idMap = new HashSet<>(); diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/GML2Road.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/GML2Road.java index 4f1ebf28d..fc23baa05 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/GML2Road.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/GML2Road.java @@ -30,6 +30,7 @@ import nl.overheid.aerius.shared.domain.v2.source.road.ValuesPerVehicleType; import nl.overheid.aerius.shared.domain.v2.source.road.Vehicles; import nl.overheid.aerius.shared.exception.AeriusException; +import nl.overheid.aerius.shared.exception.ImaerExceptionReason; /** * @@ -91,7 +92,7 @@ private void addEmissionValues(final String gmlRoadTypeCode, final List { final StandardVehicles vse = new StandardVehicles(); - vse.setMaximumSpeed(getMaximumSpeed(gmlRoadTypeCode, sv.getMaximumSpeed())); + vse.setMaximumSpeed(getMaximumSpeed(source.getId(), true, gmlRoadTypeCode, sv.getMaximumSpeed())); vse.setTimeUnit(TimeUnit.valueOf(sv.getTimeUnit().name())); mergingStandardVehicles.add(vse); addToVehicles.add(vse); @@ -116,25 +117,37 @@ private void addEmissionValues(final String gmlRoadTypeCode, final List= 80 km/h. Therefore 80 is set. GENERAL represented roads with average speed of 60 km/h. * Therefore 60 is set. * + * @param sourceId The id of the source + * @param warn if set it will report a warning message in case a default speed is set * @param gmlRoadTypeCode the road type code as set in the GML * @param maximumSpeed optional max speed set in the GML * @return the maximum speed to use. */ - private static Integer getMaximumSpeed(final String gmlRoadTypeCode, final Integer maximumSpeed) { + private Integer getMaximumSpeed(final String sourceId, final boolean warn, final String gmlRoadTypeCode, final Integer maximumSpeed) { if (maximumSpeed != null && maximumSpeed != 0) { return maximumSpeed; } return switch (gmlRoadTypeCode) { - case "NON_URBAN_ROAD_NATIONAL" -> Integer.valueOf(80); - case "NON_URBAN_ROAD_GENERAL" -> Integer.valueOf(60); + case "NON_URBAN_ROAD_NATIONAL" -> getDefaultSpeed(sourceId, warn); + case "NON_URBAN_ROAD_GENERAL" -> getDefaultSpeed(sourceId, warn); default -> maximumSpeed; }; } + private Integer getDefaultSpeed(final String sourceId, final boolean warn) { + final Integer speed = GMLConversionData.NON_URBAN_ROAD_DEFAULT_SPEED; + + if (warn) { + getConversionData().getWarnings().add( + new AeriusException(ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED, sourceId, String.valueOf(speed))); + } + return speed; + } + private Optional findExistingMatch(final IsGmlStandardVehicle sv, final List mergingStandardVehicles, final String gmlRoadTypeCode) { return mergingStandardVehicles.stream() - .filter(x -> Objects.equals(x.getMaximumSpeed(), getMaximumSpeed(gmlRoadTypeCode, sv.getMaximumSpeed()))) + .filter(x -> Objects.equals(x.getMaximumSpeed(), getMaximumSpeed(null, false, gmlRoadTypeCode, sv.getMaximumSpeed()))) .filter(x -> Boolean.TRUE.equals(x.getStrictEnforcement()) == Boolean.TRUE.equals((sv.isStrictEnforcement()))) .filter(x -> x.getTimeUnit() == TimeUnit.valueOf(sv.getTimeUnit().name())) .filter(x -> !x.getValuesPerVehicleTypes().containsKey(sv.getVehicleType())) diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v10/GML2SRM2RoadV10.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v10/GML2SRM2RoadV10.java index 683e5d5b7..dcc8b032c 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v10/GML2SRM2RoadV10.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v10/GML2SRM2RoadV10.java @@ -45,10 +45,10 @@ public GML2SRM2RoadV10(final GMLConversionData conversionData) { @Override protected void addEmissionValues(final RoadType roadType, final List addToVehicles, final T source, final IsGmlStandardVehicle sv, final List mergingStandardVehicles) { - final StandardVehicles standardVehicle = findExistingMatch(sv, mergingStandardVehicles).orElseGet(() -> { + final StandardVehicles standardVehicle = findExistingMatch(sv, roadType, mergingStandardVehicles).orElseGet(() -> { final StandardVehicles vse = new StandardVehicles(); - vse.setMaximumSpeed(getMaximumSpeed(roadType, source.getMaximumSpeed())); + vse.setMaximumSpeed(getMaximumSpeed(source.getId(), true, roadType, source.getMaximumSpeed())); vse.setStrictEnforcement(source.isStrictEnforcement()); vse.setTimeUnit(TimeUnit.valueOf(sv.getTimeUnit().name())); mergingStandardVehicles.add(vse); @@ -62,11 +62,10 @@ protected void addEmissionValues(final RoadType roadType, final List a } @Override - protected Optional findExistingMatch(final IsGmlStandardVehicle sv, final List mergingStandardVehicles) { + protected Optional findExistingMatch(final IsGmlStandardVehicle sv, final RoadType roadType, + final List mergingStandardVehicles) { return mergingStandardVehicles.stream() - .filter(x -> x.getTimeUnit() == TimeUnit.valueOf(sv.getTimeUnit().name())) .filter(x -> !x.getValuesPerVehicleTypes().containsKey(sv.getVehicleType().getStandardVehicleCode())) .findFirst(); } - } diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v11/GML2SRM2RoadV11.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v11/GML2SRM2RoadV11.java index 9cccfe80d..617e536be 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v11/GML2SRM2RoadV11.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v11/GML2SRM2RoadV11.java @@ -17,7 +17,7 @@ package nl.overheid.aerius.gml.base.source.road.v11; import nl.overheid.aerius.gml.base.GMLConversionData; -import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2Road; +import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2RoadV40; import nl.overheid.aerius.gml.base.source.road.v40.IsGmlSRM2Road; import nl.overheid.aerius.shared.ImaerConstants; @@ -25,7 +25,7 @@ * Version of GML2SRM2Road that handles dynamic segmentation for older versions (IMAER 1.1 and older), * where from and to positions were defined in percentages instead of fractions. */ -public class GML2SRM2RoadV11 extends GML2SRM2Road { +public class GML2SRM2RoadV11 extends GML2SRM2RoadV40 { /** * @param conversionData diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM1Road.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM1Road.java index b767e0545..31699cea7 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM1Road.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM1Road.java @@ -50,11 +50,6 @@ protected String convertRoadTypeCode(final IsGmlSRM1Road source, final RoadType return source.getSpeedProfile().getRoadTypeCode(); } - @Override - protected Integer getMaximumSpeed(final RoadType roadType, final Integer maximumSpeed) { - return (maximumSpeed == null || maximumSpeed == 0) && roadType == RoadType.NON_URBAN_ROAD ? Integer.valueOf(60) : maximumSpeed; - } - @Override protected void setOptionalVariables(final IsGmlSRM1Road source, final SRM1RoadEmissionSource emissionSource) throws AeriusException { if (source.getTunnelFactor() != null) { diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM2Road.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM2RoadV40.java similarity index 91% rename from source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM2Road.java rename to source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM2RoadV40.java index e311b2334..b18a4d16d 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM2Road.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRM2RoadV40.java @@ -33,13 +33,13 @@ /** * */ -public class GML2SRM2Road extends GML2SRMRoad { +public class GML2SRM2RoadV40 extends GML2SRMRoad { /** * @param conversionData * The conversion data to use. */ - public GML2SRM2Road(final GMLConversionData conversionData) { + public GML2SRM2RoadV40(final GMLConversionData conversionData) { super(conversionData); } @@ -50,12 +50,7 @@ protected SRM2RoadEmissionSource construct() { @Override protected String convertRoadTypeCode(final T source, final RoadType roadType) { - return roadType == null ? null : roadType.getRoadTypeCode(); - } - - @Override - protected Integer getMaximumSpeed(final RoadType roadType, final Integer maximumSpeed) { - return (maximumSpeed == null || maximumSpeed == 0) && roadType == RoadType.NON_URBAN_ROAD ? Integer.valueOf(80) : maximumSpeed; + return roadType == null ? null : roadType.getRoadTypeCode(); } @Override diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRMRoad.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRMRoad.java index 29f750b0c..82273e637 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRMRoad.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/base/source/road/v40/GML2SRMRoad.java @@ -39,6 +39,7 @@ import nl.overheid.aerius.shared.domain.v2.source.road.ValuesPerVehicleType; import nl.overheid.aerius.shared.domain.v2.source.road.Vehicles; import nl.overheid.aerius.shared.exception.AeriusException; +import nl.overheid.aerius.shared.exception.ImaerExceptionReason; /** * @@ -76,7 +77,18 @@ public S convert(final T source) throws AeriusException { protected abstract String convertRoadTypeCode(T source, RoadType roadType); - protected abstract Integer getMaximumSpeed(final RoadType roadType, final Integer maximumSpeed); + protected Integer getMaximumSpeed(final String sourceId, final boolean warn, final RoadType roadType, final Integer maximumSpeed) { + if ((maximumSpeed == null || maximumSpeed == 0) && roadType == RoadType.NON_URBAN_ROAD) { + final Integer speed = GMLConversionData.NON_URBAN_ROAD_DEFAULT_SPEED; + if (warn) { + getConversionData().getWarnings().add( + new AeriusException(ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED, sourceId, String.valueOf(speed))); + } + return speed; + } else { + return maximumSpeed; + } + } protected abstract void setOptionalVariables(T source, S emissionSource) throws AeriusException; @@ -96,10 +108,10 @@ protected void addVehicleEmissions(final RoadType roadType, final List protected void addEmissionValues(final RoadType roadType, final List addToVehicles, final T source, final IsGmlStandardVehicle sv, final List mergingStandardVehicles) { - final StandardVehicles standardVehicle = findExistingMatch(sv, mergingStandardVehicles).orElseGet(() -> { + final StandardVehicles standardVehicle = findExistingMatch(sv, roadType, mergingStandardVehicles).orElseGet(() -> { final StandardVehicles vse = new StandardVehicles(); - vse.setMaximumSpeed(getMaximumSpeed(roadType, sv.getMaximumSpeed())); + vse.setMaximumSpeed(getMaximumSpeed(source.getId(), true, roadType, sv.getMaximumSpeed())); vse.setStrictEnforcement(sv.isStrictEnforcement()); vse.setTimeUnit(TimeUnit.valueOf(sv.getTimeUnit().name())); mergingStandardVehicles.add(vse); @@ -112,10 +124,11 @@ protected void addEmissionValues(final RoadType roadType, final List a standardVehicle.getValuesPerVehicleTypes().put(sv.getVehicleType().getStandardVehicleCode(), valuesPerVehicleType); } - protected Optional findExistingMatch(final IsGmlStandardVehicle sv, final List mergingStandardVehicles) { + protected Optional findExistingMatch(final IsGmlStandardVehicle sv, final RoadType roadType, + final List mergingStandardVehicles) { return mergingStandardVehicles.stream() - .filter(x -> Objects.equals(x.getMaximumSpeed(), sv.getMaximumSpeed())) - .filter(x -> Objects.equals(x.getStrictEnforcement(), sv.isStrictEnforcement())) + .filter(x -> Objects.equals(x.getMaximumSpeed(), getMaximumSpeed(null, false, roadType, sv.getMaximumSpeed()))) + .filter(x -> Boolean.TRUE.equals(x.getStrictEnforcement()) == Boolean.TRUE.equals((sv.isStrictEnforcement()))) .filter(x -> x.getTimeUnit() == TimeUnit.valueOf(sv.getTimeUnit().name())) .filter(x -> !x.getValuesPerVehicleTypes().containsKey(sv.getVehicleType().getStandardVehicleCode())) .findFirst(); diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_0/GML2SourceVisitor.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_0/GML2SourceVisitor.java index f0f58e25e..721c04de7 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_0/GML2SourceVisitor.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_0/GML2SourceVisitor.java @@ -26,7 +26,7 @@ import nl.overheid.aerius.gml.base.source.lodging.GML2Farm; import nl.overheid.aerius.gml.base.source.mobile.v31.GML2OffRoad; import nl.overheid.aerius.gml.base.source.plan.GML2Plan; -import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2Road; +import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2RoadV40; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandMooring; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandRoute; import nl.overheid.aerius.gml.base.source.ship.v31.GML2MaritimeMooring; @@ -60,7 +60,7 @@ class GML2SourceVisitor implements IsGML2SourceVisitor { handlers.put(MaritimeShippingEmissionSource.class, new GML2MaritimeRoute(conversionData)); handlers.put(OffRoadMobileEmissionSource.class, new GML2OffRoad(conversionData, gml2SourceCharacteristics)); handlers.put(PlanEmissionSource.class, new GML2Plan(conversionData)); - handlers.put(SRM2RoadEmissionSource.class, new GML2SRM2Road(conversionData)); + handlers.put(SRM2RoadEmissionSource.class, new GML2SRM2RoadV40(conversionData)); } @Override diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_1/GML2SourceVisitor.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_1/GML2SourceVisitor.java index 1ca71cec2..676c7ea5e 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_1/GML2SourceVisitor.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_1/GML2SourceVisitor.java @@ -26,7 +26,7 @@ import nl.overheid.aerius.gml.base.source.lodging.GML2Farm; import nl.overheid.aerius.gml.base.source.mobile.v31.GML2OffRoad; import nl.overheid.aerius.gml.base.source.plan.GML2Plan; -import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2Road; +import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2RoadV40; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandMooring; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandRoute; import nl.overheid.aerius.gml.base.source.ship.v31.GML2MaritimeMooring; @@ -60,7 +60,7 @@ class GML2SourceVisitor implements IsGML2SourceVisitor { handlers.put(MaritimeShippingEmissionSource.class, new GML2MaritimeRoute(conversionData)); handlers.put(OffRoadMobileEmissionSource.class, new GML2OffRoad(conversionData, gml2SourceCharacteristics)); handlers.put(PlanEmissionSource.class, new GML2Plan(conversionData)); - handlers.put(SRM2RoadEmissionSource.class, new GML2SRM2Road(conversionData)); + handlers.put(SRM2RoadEmissionSource.class, new GML2SRM2RoadV40(conversionData)); } @Override diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_2/GML2SourceVisitor.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_2/GML2SourceVisitor.java index 3f81bb5df..b2136e8af 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_2/GML2SourceVisitor.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v2_2/GML2SourceVisitor.java @@ -26,7 +26,7 @@ import nl.overheid.aerius.gml.base.source.lodging.GML2Farm; import nl.overheid.aerius.gml.base.source.mobile.v31.GML2OffRoad; import nl.overheid.aerius.gml.base.source.plan.GML2Plan; -import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2Road; +import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2RoadV40; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandMooring; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandRoute; import nl.overheid.aerius.gml.base.source.ship.v31.GML2MaritimeMooring; @@ -60,7 +60,7 @@ class GML2SourceVisitor implements IsGML2SourceVisitor { handlers.put(MaritimeShippingEmissionSource.class, new GML2MaritimeRoute(conversionData)); handlers.put(OffRoadMobileEmissionSource.class, new GML2OffRoad(conversionData, gml2SourceCharacteristics)); handlers.put(PlanEmissionSource.class, new GML2Plan(conversionData)); - handlers.put(SRM2RoadEmissionSource.class, new GML2SRM2Road(conversionData)); + handlers.put(SRM2RoadEmissionSource.class, new GML2SRM2RoadV40(conversionData)); } @Override diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v3_0/GML2SourceVisitor.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v3_0/GML2SourceVisitor.java index e40e28e27..ac47a3823 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v3_0/GML2SourceVisitor.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v3_0/GML2SourceVisitor.java @@ -27,7 +27,7 @@ import nl.overheid.aerius.gml.base.source.mobile.v31.GML2OffRoad; import nl.overheid.aerius.gml.base.source.plan.GML2Plan; import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM1Road; -import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2Road; +import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2RoadV40; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandMooring; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandRoute; import nl.overheid.aerius.gml.base.source.ship.v31.GML2MaritimeMooring; @@ -62,7 +62,7 @@ class GML2SourceVisitor implements IsGML2SourceVisitor { handlers.put(MaritimeShippingEmissionSource.class, new GML2MaritimeRoute(conversionData)); handlers.put(OffRoadMobileEmissionSource.class, new GML2OffRoad(conversionData, gml2SourceCharacteristics)); handlers.put(PlanEmissionSource.class, new GML2Plan(conversionData)); - handlers.put(SRM2Road.class, new GML2SRM2Road(conversionData)); + handlers.put(SRM2Road.class, new GML2SRM2RoadV40(conversionData)); handlers.put(SRM1Road.class, new GML2SRM1Road(conversionData)); } diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v3_1/GML2SourceVisitor.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v3_1/GML2SourceVisitor.java index 1960842d6..e1581d82e 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v3_1/GML2SourceVisitor.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v3_1/GML2SourceVisitor.java @@ -28,7 +28,7 @@ import nl.overheid.aerius.gml.base.source.mobile.v31.GML2OffRoad; import nl.overheid.aerius.gml.base.source.plan.GML2Plan; import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM1Road; -import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2Road; +import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2RoadV40; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandMooring; import nl.overheid.aerius.gml.base.source.ship.v31.GML2InlandRoute; import nl.overheid.aerius.gml.base.source.ship.v31.GML2MaritimeMooring; @@ -65,7 +65,7 @@ class GML2SourceVisitor implements IsGML2SourceVisitor { handlers.put(MaritimeShippingEmissionSource.class, new GML2MaritimeRoute(conversionData)); handlers.put(OffRoadMobileEmissionSource.class, new GML2OffRoad(conversionData, gml2SourceCharacteristics)); handlers.put(PlanEmissionSource.class, new GML2Plan(conversionData)); - handlers.put(SRM2Road.class, new GML2SRM2Road(conversionData)); + handlers.put(SRM2Road.class, new GML2SRM2RoadV40(conversionData)); handlers.put(SRM1Road.class, new GML2SRM1Road(conversionData)); } diff --git a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v4_0/GML2SourceVisitor.java b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v4_0/GML2SourceVisitor.java index 16ed07228..a2679f754 100644 --- a/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v4_0/GML2SourceVisitor.java +++ b/source/imaer-gml/src/main/java/nl/overheid/aerius/gml/v4_0/GML2SourceVisitor.java @@ -28,7 +28,7 @@ import nl.overheid.aerius.gml.base.source.mobile.v40.GML2OffRoad; import nl.overheid.aerius.gml.base.source.plan.GML2Plan; import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM1Road; -import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2Road; +import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2RoadV40; import nl.overheid.aerius.gml.base.source.ship.GML2InlandMooring; import nl.overheid.aerius.gml.base.source.ship.GML2InlandRoute; import nl.overheid.aerius.gml.base.source.ship.GML2MaritimeMooring; @@ -66,7 +66,7 @@ class GML2SourceVisitor implements IsGML2Source handlers.put(MaritimeShippingEmissionSource.class, new GML2MaritimeRoute(conversionData)); handlers.put(OffRoadMobileEmissionSource.class, new GML2OffRoad(conversionData, gml2SourceCharacteristics)); handlers.put(PlanEmissionSource.class, new GML2Plan(conversionData)); - handlers.put(SRM2Road.class, new GML2SRM2Road(conversionData)); + handlers.put(SRM2Road.class, new GML2SRM2RoadV40(conversionData)); handlers.put(SRM1Road.class, new GML2SRM1Road(conversionData)); } diff --git a/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/GMLRoundtripTest.java b/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/GMLRoundtripTest.java index 1a6ead2f4..03e6e5da8 100644 --- a/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/GMLRoundtripTest.java +++ b/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/GMLRoundtripTest.java @@ -112,9 +112,11 @@ class GMLRoundtripTest { {"offroad_adblue", CharacteristicsType.OPS}, {"plan", CharacteristicsType.OPS,}, {"road", CharacteristicsType.OPS,}, - {"road_non_urban", CharacteristicsType.OPS,}, + {"road_non_urban", CharacteristicsType.OPS, EnumSet.of(ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED)}, {"road_dynamic_segmentation", CharacteristicsType.OPS,}, - {"road_empty", CharacteristicsType.OPS, EnumSet.of(ImaerExceptionReason.SRM2_SOURCE_NO_VEHICLES, ImaerExceptionReason.GML_SOURCE_NO_EMISSION)}, + {"road_empty", CharacteristicsType.OPS, + EnumSet.of(ImaerExceptionReason.SRM2_SOURCE_NO_VEHICLES, ImaerExceptionReason.GML_SOURCE_NO_EMISSION, + ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED)}, {"road_direction", CharacteristicsType.OPS}, {"road_specific_and_custom", CharacteristicsType.OPS}, {"coldstart_with_characteristics", CharacteristicsType.OPS}, @@ -141,16 +143,13 @@ class GMLRoundtripTest { {"adms_road", CharacteristicsType.ADMS}, {"adms_road_with_custom_diurnal_variation", CharacteristicsType.ADMS}, {"adms_manure_storage", CharacteristicsType.ADMS}, - {"scenario_composting_proposed", CharacteristicsType.OPS}, - {"scenario_composting_reference", CharacteristicsType.OPS}, + {"scenario_composting_proposed", CharacteristicsType.OPS, EnumSet.of(ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED)}, + {"scenario_composting_reference", CharacteristicsType.OPS, EnumSet.of(ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED)}, {"scenario_greenhouse_reference", CharacteristicsType.OPS}, {"scenario_greenhouse_proposed", CharacteristicsType.OPS}, - {"scenario_livestock_farming_proposed", CharacteristicsType.OPS, - EnumSet.of(ImaerExceptionReason.GML_CONVERTED_LODGING), true}, - {"scenario_livestock_farming_reference", CharacteristicsType.OPS, - EnumSet.of(ImaerExceptionReason.GML_CONVERTED_LODGING), true}, - {"scenario_livestock_farming_netting", CharacteristicsType.OPS, - EnumSet.noneOf(ImaerExceptionReason.class), true}, + {"scenario_livestock_farming_proposed", CharacteristicsType.OPS, EnumSet.of(ImaerExceptionReason.GML_CONVERTED_LODGING), true}, + {"scenario_livestock_farming_reference", CharacteristicsType.OPS, EnumSet.of(ImaerExceptionReason.GML_CONVERTED_LODGING), true}, + {"scenario_livestock_farming_netting", CharacteristicsType.OPS, EnumSet.noneOf(ImaerExceptionReason.class), true}, {"scenario_powerplant", CharacteristicsType.OPS, EnumSet.of(ImaerExceptionReason.GML_SOURCE_NO_EMISSION)}, {"scenario_smokehouse_proposed", CharacteristicsType.OPS}, {"scenario_smokehouse_reference", CharacteristicsType.OPS}, @@ -241,6 +240,11 @@ private static Set getWarningReasons(final Object[] object, final Aerius if (warnings.contains(ImaerExceptionReason.GML_CONVERTED_LODGING_TO_CUSTOM) && version.ordinal() <= AeriusGMLVersion.V6_0.ordinal()) { warnings.remove(ImaerExceptionReason.GML_CONVERTED_LODGING_TO_CUSTOM); } + // GML GML_NON_URBAN_ROAD_DEFAULT_SPEED is a warning for gmls with no speed set. Since 6.0 speed because required for non urban road. + // Therefore speed is always present in the test gmls since. + if (warnings.contains(ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED) && version.ordinal() <= AeriusGMLVersion.V6_0.ordinal()) { + warnings.remove(ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED); + } return warnings; } @@ -253,8 +257,8 @@ void testRoundTripGML(final AeriusGMLVersion originalGMLVersion, final String fi final ImportParcel result = importAndCompare(versionString, fileVersion, file, ct, targetGMLVersion); assertNoExceptions(result.getExceptions(), fileVersion); - assertExpectedWarnings(result.getWarnings(), expectedWarnings); - assertUnExpectedWarnings(result.getWarnings(), expectedWarnings); + assertExpectedWarnings(result.getWarnings(), expectedWarnings, fileVersion); + assertUnExpectedWarnings(result.getWarnings(), expectedWarnings, fileVersion); } private ImportParcel importAndCompare(final String versionString, final String fileVersion, final String file, final CharacteristicsType ct, @@ -289,9 +293,8 @@ private static void revertAutoCorrections(final ImportParcel result) { /** * Expected warnings check. - * @param expectedWarnings */ - private void assertExpectedWarnings(final List warnings, final Set expectedWarnings) { + private void assertExpectedWarnings(final List warnings, final Set expectedWarnings, final String fileVersion) { for (final Reason warning : expectedWarnings) { boolean contains = false; for (final AeriusException ae : warnings) { @@ -299,17 +302,17 @@ private void assertExpectedWarnings(final List warnings, final contains = true; } } - assertTrue(contains, "Expected warning " + warning + " not found"); + assertTrue(contains, "Expected warning " + warning + " not found in file " + fileVersion); } } /** * Test unexpected warnings. */ - void assertUnExpectedWarnings(final List warnings, final Set expectedWarnings) { + void assertUnExpectedWarnings(final List warnings, final Set expectedWarnings, final String fileVersion) { for (final AeriusException warning : warnings) { if (!expectedWarnings.contains(warning.getReason())) { - fail("Not expected warning, got " + warning.getReason() + " " + warning.getMessage()); + fail("Not expected warning in file " + fileVersion + ", got " + warning.getReason() + " " + warning.getMessage()); } } } diff --git a/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/GMLValidateErrorsTest.java b/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/GMLValidateErrorsTest.java index a5976194b..34d79b6d2 100644 --- a/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/GMLValidateErrorsTest.java +++ b/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/GMLValidateErrorsTest.java @@ -346,7 +346,7 @@ private static void assertResults(final String fileName, final List expe private static void assertContains(final AeriusException e, final String containsText) { final String exceptionText = e.getArgs()[0]; - assertTrue(exceptionText.contains(containsText), "Exception didn't match expected text, was:" + exceptionText); + assertTrue(exceptionText.contains(containsText), "Exception doesn't contain the expected text. The text was:" + exceptionText); } private static ImportParcel getImportResult(final String relativePath, final String fileName) diff --git a/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/base/source/road/GML2RoadTest.java b/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/base/source/road/GML2RoadTest.java index 5752dc698..711aa3056 100644 --- a/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/base/source/road/GML2RoadTest.java +++ b/source/imaer-gml/src/test/java/nl/overheid/aerius/gml/base/source/road/GML2RoadTest.java @@ -17,75 +17,220 @@ package nl.overheid.aerius.gml.base.source.road; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.lenient; import java.util.ArrayList; import java.util.List; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import nl.overheid.aerius.gml.base.FeatureMember; import nl.overheid.aerius.gml.base.GMLConversionData; +import nl.overheid.aerius.gml.base.IsGmlProperty; +import nl.overheid.aerius.gml.base.source.road.v10.GML2SRM2RoadV10; +import nl.overheid.aerius.gml.base.source.road.v40.GML2SRM2RoadV40; import nl.overheid.aerius.gml.v6_0.source.TimeUnit; import nl.overheid.aerius.gml.v6_0.source.road.SRM2Road; import nl.overheid.aerius.gml.v6_0.source.road.StandardVehicle; import nl.overheid.aerius.gml.v6_0.source.road.VehiclesProperty; import nl.overheid.aerius.shared.domain.v2.source.SRM2RoadEmissionSource; +import nl.overheid.aerius.shared.domain.v2.source.road.StandardVehicles; +import nl.overheid.aerius.shared.domain.v2.source.road.VehicleType; import nl.overheid.aerius.shared.exception.AeriusException; +import nl.overheid.aerius.shared.exception.ImaerExceptionReason; /** * Unit test to test merging of standardVehicle sub sources. + * + * Test also include testing older GML versions. */ @ExtendWith(MockitoExtension.class) class GML2RoadTest { + private interface VehicleCreator> { + T create(final String vehicleType, final String timeUnit, final Boolean strictEnforcement, final Integer maxSpeed); + } + + private static final List VEHICLE_TYPES = List.of("LIGHT_TRAFFIC", "NORMAL_FREIGHT"); + + private List warnings; + private @Mock GMLConversionData conversionData; - /** - * Test merging sub sources. vehicle types with the same configuration can be joined into a single sub source. - */ + @BeforeEach + void beforeEach() { + warnings = new ArrayList<>(); + lenient().doReturn(warnings).when(conversionData).getWarnings(); + } + + // Test for GML version 1.0 and below. + @ParameterizedTest - @CsvSource({"NON_URBAN_ROAD_NATIONAL", "Other"}) - void testStandardVehicleMerge(final String roadTypeCode) throws AeriusException { - final SRM2Road gmlRoad = new SRM2Road(); - gmlRoad.setRoadTypeCode(roadTypeCode); - gmlRoad.getVehicles().addAll(generateAllCombinations()); + @CsvSource({"3112,80,1,0", "3112,0,1,1", "3112,,1,1", "3111,100,1,0"}) + void testStandardVehicleV10Merge(final int sectorId, final Integer maxSpeed, final int expectedSubSources, final int expectedNrOfWarnings) + throws AeriusException { + final nl.overheid.aerius.gml.v1_0.source.road.SRM2RoadEmissionSource gmlRoad = createV10Road(sectorId, maxSpeed, + VEHICLE_TYPES.stream().map(GML2RoadTest::createStandardVehicleV10).toList()); + final SRM2RoadEmissionSource converted = new GML2SRM2RoadV10<>(conversionData).convert(gmlRoad); + + assertStandardVehicleMerge(converted, expectedSubSources, expectedNrOfWarnings); + } + + @Test + void testStandardVehicleV10SpeedSet() throws AeriusException { + final nl.overheid.aerius.gml.v1_0.source.road.SRM2RoadEmissionSource gmlRoad = createV10Road(3112, 0, + List.of(createStandardVehicleV10("LIGHT_TRAFFIC"))); + final SRM2RoadEmissionSource converted = new GML2SRM2RoadV10<>(conversionData).convert(gmlRoad); + + assertEquals(60, ((StandardVehicles) converted.getSubSources().get(0)).getMaximumSpeed(), "Expected the speed for version 1.0 to be set"); + } + + private static nl.overheid.aerius.gml.v1_0.source.road.SRM2RoadEmissionSource createV10Road(final int sectorId, final Integer maxSpeed, + final List vehicles) { + final nl.overheid.aerius.gml.v1_0.source.road.SRM2RoadEmissionSource gmlRoad = new nl.overheid.aerius.gml.v1_0.source.road.SRM2RoadEmissionSource(); + + setId(gmlRoad); + gmlRoad.setSectorId(sectorId); + gmlRoad.setMaximumSpeed(maxSpeed); + gmlRoad.getVehicles().addAll(vehicles); + return gmlRoad; + } + private static nl.overheid.aerius.gml.v1_0.source.road.VehiclesProperty createStandardVehicleV10(final String vehicleType) { + final nl.overheid.aerius.gml.v1_0.source.road.StandardVehicle vehicle = new nl.overheid.aerius.gml.v1_0.source.road.StandardVehicle(); + vehicle.setVehicleType(VehicleType.safeValueOf(vehicleType)); + vehicle.setStagnationFactor(20); + final nl.overheid.aerius.gml.v1_0.source.road.VehiclesProperty vp = new nl.overheid.aerius.gml.v1_0.source.road.VehiclesProperty(); + + vp.setProperty(vehicle); + return vp; + } + + // Test for GML version 1.1 to 4.0. + + @ParameterizedTest + @CsvSource({"3112,12", "3111,0"}) + void testStandardVehicleV40Merge(final int sectorId, final int expectedNrOfWarnings) throws AeriusException { + final nl.overheid.aerius.gml.v4_0.source.road.SRM2Road gmlRoad = createV40Road(sectorId, + generateAllCombinations(GML2RoadTest::createStandardVehicleV40)); + final SRM2RoadEmissionSource converted = new GML2SRM2RoadV40<>(conversionData).convert(gmlRoad); + + assertStandardVehicleMerge(converted, 24, expectedNrOfWarnings); + } + + @ParameterizedTest + @CsvSource({",", "0"}) + void testStandardVehicleV40SpeedSet(final Integer speed) throws AeriusException { + final nl.overheid.aerius.gml.v4_0.source.road.SRM2Road gmlRoad = createV40Road(3112, + List.of(createStandardVehicleV40("LIGHT_TRAFFIC", "DAY", true, speed))); + final SRM2RoadEmissionSource converted = new GML2SRM2RoadV40<>(conversionData).convert(gmlRoad); + + assertEquals(60, ((StandardVehicles) converted.getSubSources().get(0)).getMaximumSpeed(), "Expected the speed for versrion 4.0 to be set"); + } + + private static nl.overheid.aerius.gml.v4_0.source.road.SRM2Road createV40Road(final int sectorId, + final List vehicles) { + final nl.overheid.aerius.gml.v4_0.source.road.SRM2Road gmlRoad = new nl.overheid.aerius.gml.v4_0.source.road.SRM2Road(); + + setId(gmlRoad); + gmlRoad.setSectorId(sectorId); + gmlRoad.getVehicles().addAll(vehicles); + return gmlRoad; + } + + private static nl.overheid.aerius.gml.v4_0.source.road.VehiclesProperty createStandardVehicleV40(final String vehicleType, final String timeUnit, + final Boolean strictEnforcement, final Integer maxSpeed) { + final nl.overheid.aerius.gml.v4_0.source.road.StandardVehicle vehicle = new nl.overheid.aerius.gml.v4_0.source.road.StandardVehicle(); + + vehicle.setVehicleType(VehicleType.safeValueOf(vehicleType)); + vehicle.setTimeUnit(nl.overheid.aerius.gml.v4_0.source.TimeUnit.valueOf(timeUnit)); + vehicle.setStrictEnforcement(strictEnforcement); + vehicle.setMaximumSpeed(maxSpeed); + vehicle.setVehiclesPerTimeUnit(10); + vehicle.setStagnationFactor(20); + return new nl.overheid.aerius.gml.v4_0.source.road.VehiclesProperty(vehicle); + } + + // Tests for GML version beyond version 4.0. + + @ParameterizedTest + @CsvSource({"NON_URBAN_ROAD_NATIONAL,12", "Other,0"}) + void testStandardVehicleMerge(final String roadTypeCode, final int expectedNrOfWarnings) throws AeriusException { + final SRM2Road gmlRoad = createRoad(roadTypeCode, generateAllCombinations(GML2RoadTest::createStandardVehicle)); final SRM2RoadEmissionSource converted = new GML2SRM2Road<>(conversionData).convert(gmlRoad); - assertEquals(24, converted.getSubSources().size(), "Merging sub sources did not give the expected number of sub sources "); + + assertStandardVehicleMerge(converted, 24, expectedNrOfWarnings); } - private static List generateAllCombinations() { - final TimeUnit[] timeUnits = {TimeUnit.DAY, TimeUnit.YEAR}; - final Boolean[] strictEnforcements = {null, false, true}; - final Integer[] maxSpeeds = {null, 0, 80, 100}; - final String[] vehicleTypes = {"A", "B"}; - final List subSources = new ArrayList<>(); - - for (final TimeUnit second : timeUnits) { - for (final Boolean third : strictEnforcements) { - for (final Integer fourth : maxSpeeds) { - for (final String first : vehicleTypes) { - subSources.add(createStandardVehicle(first, second, third, fourth)); - } - } - } - } - return subSources; + @ParameterizedTest + @CsvSource({",", "0"}) + void testStandardVehicleSpeedSet(final Integer speed) throws AeriusException { + final SRM2Road gmlRoad = createRoad("NON_URBAN_ROAD_NATIONAL", List.of(createStandardVehicle("LIGHT_TRAFFIC", "DAY", true, speed))); + final SRM2RoadEmissionSource converted = new GML2SRM2Road<>(conversionData).convert(gmlRoad); + + assertEquals(60, ((StandardVehicles) converted.getSubSources().get(0)).getMaximumSpeed(), "Expected the speed to be set"); } - private static VehiclesProperty createStandardVehicle(final String vehicleType, final TimeUnit timeUnit, final Boolean strictEnforcement, + private static SRM2Road createRoad(final String roadTypeCode, final List vehicles) { + final SRM2Road gmlRoad = new SRM2Road(); + setId(gmlRoad); + gmlRoad.setRoadTypeCode(roadTypeCode); + gmlRoad.getVehicles().addAll(vehicles); + return gmlRoad; + } + + private static VehiclesProperty createStandardVehicle(final String vehicleType, final String timeUnit, final Boolean strictEnforcement, final Integer maxSpeed) { final StandardVehicle vehicle = new StandardVehicle(); vehicle.setVehicleType(vehicleType); - vehicle.setTimeUnit(timeUnit); + vehicle.setTimeUnit(TimeUnit.valueOf(timeUnit)); vehicle.setStrictEnforcement(strictEnforcement); vehicle.setMaximumSpeed(maxSpeed); vehicle.setVehiclesPerTimeUnit(10); vehicle.setStagnationFactor(20); return new VehiclesProperty(vehicle); } + + // Generic methods + + private static void setId(final FeatureMember gmlRoad) { + gmlRoad.setId("123"); + } + + private void assertStandardVehicleMerge(final SRM2RoadEmissionSource source, final int expectedSubSources, final int expectedNrOfWarnings) + throws AeriusException { + assertEquals(expectedSubSources, source.getSubSources().size(), "Merging sub sources did not give the expected number of sub sources "); + assertEquals(expectedNrOfWarnings, conversionData.getWarnings().size(), "Not the expected number of warnings"); + conversionData.getWarnings().stream().forEach(e -> { + assertEquals(e.getReason(), ImaerExceptionReason.GML_NON_URBAN_ROAD_DEFAULT_SPEED, + "Not the expected warning reason code GML_NON_URBAN_ROAD_DEFAULT_SPEED"); + assertEquals("123", e.getArgs()[0], "Source is doesn't match"); + assertEquals("60", e.getArgs()[1], "Not the expected default speed"); + }); + } + + private static > List generateAllCombinations(final VehicleCreator creator) { + final String[] timeUnits = {TimeUnit.DAY.name(), TimeUnit.YEAR.name()}; + final Boolean[] strictEnforcements = {null, false, true}; + final Integer[] maxSpeeds = {null, 0, 60, 100}; + final List subSources = new ArrayList<>(); + + for (final String timeUnit : timeUnits) { + for (final Boolean strictEnforcement : strictEnforcements) { + for (final Integer maxSpeed : maxSpeeds) { + for (final String vehicleType : VEHICLE_TYPES) { + subSources.add(creator.create(vehicleType, timeUnit, strictEnforcement, maxSpeed)); + } + } + } + } + return subSources; + } } diff --git a/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/road_empty.gml b/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/road_empty.gml index 2b621148b..4c8784a98 100644 --- a/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/road_empty.gml +++ b/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/road_empty.gml @@ -147,7 +147,7 @@ 0.0 DAY 0.0 - 80 + 60 @@ -155,7 +155,7 @@ 0.0 DAY 0.0 - 80 + 60 NORMAL diff --git a/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/road_non_urban.gml b/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/road_non_urban.gml index a5430c923..f83a2c4d5 100644 --- a/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/road_non_urban.gml +++ b/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/road_non_urban.gml @@ -77,7 +77,7 @@ 5000.0 DAY 0.2 - 80 + 60 @@ -85,7 +85,7 @@ 15000.0 DAY 0.1 - 80 + 60 NORMAL diff --git a/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/scenario_composting_proposed.gml b/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/scenario_composting_proposed.gml index e5ab10194..b4091a040 100644 --- a/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/scenario_composting_proposed.gml +++ b/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/scenario_composting_proposed.gml @@ -436,7 +436,7 @@ 422.0 DAY 0.0 - 80 + 60 BOTH @@ -497,7 +497,7 @@ 818.0 DAY 0.0 - 80 + 60 BOTH @@ -558,7 +558,7 @@ 236.0 DAY 0.0 - 80 + 60 BOTH @@ -619,7 +619,7 @@ 9.0 DAY 0.0 - 80 + 60 BOTH @@ -680,7 +680,7 @@ 9.0 DAY 0.0 - 80 + 60 BOTH @@ -741,7 +741,7 @@ 490.0 DAY 0.0 - 80 + 60 BOTH @@ -802,7 +802,7 @@ 328.0 DAY 0.0 - 80 + 60 BOTH @@ -863,7 +863,7 @@ 162.0 DAY 0.0 - 80 + 60 BOTH @@ -924,7 +924,7 @@ 46.0 DAY 0.0 - 80 + 60 BOTH @@ -985,7 +985,7 @@ 376.0 DAY 0.0 - 80 + 60 BOTH @@ -1046,7 +1046,7 @@ 140.0 DAY 0.0 - 80 + 60 BOTH @@ -1107,7 +1107,7 @@ 18.0 DAY 0.0 - 80 + 60 BOTH @@ -1168,7 +1168,7 @@ 56.0 DAY 0.0 - 80 + 60 BOTH @@ -1229,7 +1229,7 @@ 23.0 DAY 0.0 - 80 + 60 BOTH @@ -1290,7 +1290,7 @@ 310.0 DAY 0.0 - 80 + 60 @@ -1298,7 +1298,7 @@ 6.0 DAY 0.0 - 80 + 60 BOTH @@ -1359,7 +1359,7 @@ 929.0 DAY 0.0 - 80 + 60 @@ -1367,7 +1367,7 @@ 18.0 DAY 0.0 - 80 + 60 BOTH @@ -1428,7 +1428,7 @@ 66.0 DAY 0.0 - 80 + 60 BOTH @@ -1489,7 +1489,7 @@ 2.0 DAY 0.0 - 80 + 60 BOTH @@ -1550,7 +1550,7 @@ 16.0 DAY 0.0 - 80 + 60 BOTH diff --git a/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/scenario_composting_reference.gml b/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/scenario_composting_reference.gml index 2d8daa85a..f33f7786f 100644 --- a/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/scenario_composting_reference.gml +++ b/source/imaer-gml/src/test/resources/gml/v6_0/roundtrip/scenario_composting_reference.gml @@ -436,7 +436,7 @@ 422.0 DAY 0.0 - 80 + 60 BOTH @@ -497,7 +497,7 @@ 818.0 DAY 0.0 - 80 + 60 BOTH @@ -558,7 +558,7 @@ 236.0 DAY 0.0 - 80 + 60 BOTH @@ -619,7 +619,7 @@ 9.0 DAY 0.0 - 80 + 60 BOTH @@ -680,7 +680,7 @@ 9.0 DAY 0.0 - 80 + 60 BOTH @@ -741,7 +741,7 @@ 490.0 DAY 0.0 - 80 + 60 BOTH @@ -802,7 +802,7 @@ 328.0 DAY 0.0 - 80 + 60 BOTH @@ -863,7 +863,7 @@ 162.0 DAY 0.0 - 80 + 60 BOTH @@ -924,7 +924,7 @@ 46.0 DAY 0.0 - 80 + 60 BOTH @@ -985,7 +985,7 @@ 376.0 DAY 0.0 - 80 + 60 BOTH @@ -1046,7 +1046,7 @@ 140.0 DAY 0.0 - 80 + 60 BOTH @@ -1107,7 +1107,7 @@ 18.0 DAY 0.0 - 80 + 60 BOTH @@ -1168,7 +1168,7 @@ 56.0 DAY 0.0 - 80 + 60 BOTH @@ -1229,7 +1229,7 @@ 23.0 DAY 0.0 - 80 + 60 BOTH @@ -1290,7 +1290,7 @@ 310.0 DAY 0.0 - 80 + 60 @@ -1298,7 +1298,7 @@ 6.0 DAY 0.0 - 80 + 60 BOTH @@ -1359,7 +1359,7 @@ 929.0 DAY 0.0 - 80 + 60 @@ -1367,7 +1367,7 @@ 18.0 DAY 0.0 - 80 + 60 BOTH @@ -1428,7 +1428,7 @@ 66.0 DAY 0.0 - 80 + 60 BOTH @@ -1489,7 +1489,7 @@ 2.0 DAY 0.0 - 80 + 60 BOTH @@ -1550,7 +1550,7 @@ 16.0 DAY 0.0 - 80 + 60 BOTH diff --git a/source/imaer-shared/src/main/java/nl/overheid/aerius/shared/exception/ImaerExceptionReason.java b/source/imaer-shared/src/main/java/nl/overheid/aerius/shared/exception/ImaerExceptionReason.java index 2a52ff1a6..9dd23b968 100644 --- a/source/imaer-shared/src/main/java/nl/overheid/aerius/shared/exception/ImaerExceptionReason.java +++ b/source/imaer-shared/src/main/java/nl/overheid/aerius/shared/exception/ImaerExceptionReason.java @@ -608,9 +608,9 @@ public enum ImaerExceptionReason implements Reason { /** * GML contains a source with a sector only supported in an older version of AERIUS. The outdated sector ID has been converted to the new supported sector ID. * - * @param 0 old sector ID - * @param 1 new sector ID - * @param 2 source name + * @param 0 old sector ID. + * @param 1 new sector ID. + * @param 2 source name. */ GML_SECTOR_OUT_OF_DATE(5266), /** @@ -627,6 +627,14 @@ public enum ImaerExceptionReason implements Reason { */ GEOMETRY_TOO_MANY_VERTICES(5271), + /** + * Default road speed is set for non urban road. + * + * @param 0 the id of the source. + * @param 1 the set speed value. + */ + GML_NON_URBAN_ROAD_DEFAULT_SPEED(5272), + // Cohesion (between files) errors. /**