Skip to content

Update amplify production - #401

Merged
SerhatG merged 97 commits into
aerius:amplify-productionfrom
BertScholten:amplify-production
Sep 30, 2026
Merged

SerhatG merged 97 commits into
aerius:amplify-productionfrom
BertScholten:amplify-production

Conversation

@BertScholten

Copy link
Copy Markdown
Member

Should make the branch same as the 6.0.2-1 release commit.

Note: merge, don't squash.

SerhatG and others added 30 commits September 8, 2024 20:53
…lation id via message bus (aerius#302)

Than the calculation id can be used to retrieve the results to put in the GML. But we don't want to serializer results in this class as those are not needed, but only add to the message load.
…multiple years. (aerius#303)

This code introduces a new MetSurfaceCharacteristics object that replaces the single values in ADMSOptions.
For backward compatibility the individual methods are kept in ADMSOptions, and will be removed when not used any more by upstream project. Also added MetSiteLatitude and WindInSectors as these are also relevant ADMS options.
Made the 'old' MsMetxx' methods deprecated and JsonIgnore to avoid serialisation problems.
- Added ProjectCategory enum
- Added ProjectCategory to NCACalculationOptions
- Added ProjectCategory to OptionsMetadataUtil and -test
* Cleanup before adding new property
Removed some unused properties, and changed project category to be code-based (which is actually for future changes where it's actually a code, but might as well get it in there now).
* Renamed some non-adms metadata fields
These fields are not used in the ADMS model, and do not have any effect on input there, so not much point in having it prefixed with adms_. Could use nca_, but as they're generic codes anyway, we might as well use generic names in the metadata.
Yes, this does 'break' old imports, but now seems a good moment to do this as we're moving to a new beta release.
* Adding development pressure source IDs to NCACalculationOptions
These also survive a roundtrip in GML, as the new round trip case confirms.
Reasoning for putting it in CalculationSetOptions and the generic metadata section in IMAER is that its least changes. Conceptually it makes less sense as it's not a value that a user should generally alter/supply. But that's similar to OPS version that's also present in options/metadata I guess?
Not much point in doing interpolation if the result will just be multiplied with 0 anyway.
Changed some default methods to non-defaults (should be implemented by now), and made some methods default and indicated that they are deprecated through annotation and comment.
* Updating dependencies in pom.xmls
* Java changes for new dependencies
Mostly javax -> jakarta, but also net.opengis.gml.v_3_2_1 -> net.opengis.gml_v_3_2 (which is newer, don't ask)
* Switched to ogc-schemas jar
The old jar that was used, was also used for jaxb classes. However, that project has underwent significant changes (being forked to another repo for one), and schemas are now available in a separate jar. That one contains a lot of OGC xsd stuff, so using some more specific filtering. Also the xsds no longer have relevant locations, so had to put some more stuff in gml-catalog, and including some w3.org xsds in our repository. Was able to get rid of the gmlsProfile directory though, which is a plus (and this library is not 12 years old anymore).
* Moved some version properties to the parent pom
A bit easier to see at a glance what versions are used if they're centralized.
Did skip a few in imaer-server-xsd-standalone, as those shouldn't be used outside of it anyway.
* Not updating JTS due to change in results
Apparantly with the new version something changed so length of geometries that is determined in JTS changes slightly. At a glance this is rounding, but better to make a decision on this if it's OK or not.
* Specify java version for shared modules
With GWT 2.12 it should be OK to use java 17 stuff. If we have to go back to 2.10 for downstream reasons, we can put it back to 11. Main reason is to avoid using constructs that are not available in GWT.
The way we use streamflyer we don't actually use commons-io in that library, but we do use it ourselves.
Would rather get rid of streamflyer at some point, but that's more complicated.
Apparantly, some schemafactory implementations are a bit finnicky about this.
* Updating version to fit new IMAER version
* Added archiveType to the archive metadata section in IMAER
This is the reason for 6.0.1
* Java part of archiveType property
When input is null or unknown, it will default to the IN_COMBINATION_PROCESS_CONTRIBUTION value, mostly to support old GMLs.
Adjusted the extended archive metadata roundtrip test case to resemble a DEVELOPMENT_PRESSURE_SEARCH variant, where no receptors-with-results are expected.
In this repository all usages now replace with CIMLK.
Mostly farm lodging and renamed theme related.
In new OPS version spread for points should be passed by the user. This means if no spread was given it should be getting half the emission height. In GML the spread can be present, but for point and lines it was not specified what the value meant as it was not used. Therefore we should treat the spread value in older GML's as a random value, and always derive the spread from the emission height. This change adds support for either reading the spread or deriving it from emission height (legacy). For now all versions of GML will use the legacy variant, as all versions are also available in production.

Updated spread in test gml files with line sources to be half of height, as that would be the value that will be written.

As of this moment there is not support for writing the spread to the GML for point/line sources, as it will not be possible to determine if it was legacy or set correctly since the GML version is not changed, and there are already GMLs generated in production with the legacy situation. To be able to correctly set the spread some new version of IMAER must be made.
…erius#319)

* Support string key conversion parsing/serialization

* Added test and made EVK more robust

* Fix a test

* Refactor EmissionValueKey parsing logic to improve robustness. Adjusted the order of validation checks for input format and added handling for empty year and substance fields. This change ensures clearer error messages and better input validation.

* Use jackson annotations to serialize key

* Use JsonCreator

* Also ignore the json name, which is just an alias for description

* More fixes

* Revert comment formatting

* Revert formatting

* Final formatting fix

* Review comments

* Fix test messages

* Revert comment format

* Sigh
As it was, the calculation method was in charge of determining if the maximum range was relevant. UK however allows users to input the maximum range for FORMAL_ASSESSMENT, so this no longer holds.
Should be safe to do it like this: the option should be explicitly set when calculating in calculator, and that should override any value that was erronously read. The default value (false) also makes sense for NL, where the only options at the moment are custom points and formal assessment anyway.
* Ignore a bunch of nonsense that needn't be in json

* Remove final for GWT
As far as I could tell, this is only used in frontend for display purposes.
Hilbrand and others added 22 commits April 10, 2026 11:24
…s#379)

With new road emissions for NON_URBAN_ROAD speed will be relevant. Therefore speed will be read. Because with new data speed determines the emission and not only the road type code a default speed will be set if the speed is null or 0. The speed set is representative for the road type. For  NON_URBAN_ROAD_NATIONAL  it will be 80, for NON_URBAN_ROAD_GENERAL it will be 60. Calculator 2025 doesn't use these speed values yet, but having set them has no impact, but it also isn't effecting anything.

Simplified GML2SRMRoad v4 implementation by merging specific variables with convertRoadType because specificVariables was only used for road type, and since both methods have a SRM specific implementation the SRM1 case can be moved to the convertRoadTypeCode.
* AER-3162 Group XSD validation errors by source location

Validation events from JAXB unmarshalling are now grouped by their (line, column)
locator so a single bad value no longer produces multiple separate errors. Within
each group only the highest-severity events are kept and their messages combined.
Each combined message is prefixed with [line N, col M] so users can locate the
offending value in larger GML files.

* AER-3162 Preserve all events in grouped XSD validation errors

Drop the within-group severity filter so all events at a location are joined
into the combined message. Lower-severity events (e.g. JAXB's bare
NumberFormatException 'None') were technically redundant but the no-loss
guarantee is more valuable than the cosmetic gain from dropping them.

* AER-3162 Make discarding of redundant lower-severity events explicit

Restore the within-group severity filter from the first iteration but extract
it into a named, javadoc'd helper (discardRedundantLowerSeverityEvents) that
states it is a deliberate lossy step and documents exactly which events get
dropped: JAXB's bare ERROR-severity wrapping of a primitive parse failure
(e.g. just "None") at the same location as the FATAL_ERROR cvc-* events
that already convey the same information with full context.

* AER-3162 Trim verbose comments

* AER-3162 Use String.formatted() in LocationKey.prefix

* AER-3162 Replace LocationKey record with plain static helpers

* AER-3162 Avoid kept.get(0) by memoizing prefix per location key
…k if can be combined check on converted maximumspeed (aerius#382)

Because when creating a StandardVehicles source it changes the maximum speed for the source for non urban roads. Than the other vehicle sources should be compared to that speed to check on matching, otherwise it will try to match a non converted with converted source which will result in the vehicle source to be separated.
Updated round trip sources to include 2 different vehicle type sources. Note that the round trip test did catch this case because when exporting it will merge again. Therefore the export was correct, and wasn't detecting the issue. To check this case a unit test was added to test the merging functionality.
…dule (aerius#383)

This because classes in shared are intended for usage also in UI and to keep code separated. Kept them in the same package to keep it backward compatible.
…erius#386)

As speed has become relevant as there will be different emission factors for speed, a default speed needs to be set for older GML's this was earlier set to 80, but should be 60.
Also added a warning code in case this default value is set.
…adding power support (U-method) to off road mobile sources. (aerius#389)

This change doesn't add support in IMAER. Meaning if power value is present it's not yet persisted in the GML or read from a GML.
Gets rid of the custom checkout that we need to keep updated and optionally multiple references to the version of (aerius-)github-actions.
* Add power to IMAER model
Using a newer version of enterprise architect (17.1, 32-bit version as 64-bit doesn't support EAP files but wants to migrate to a different file format), which seems to have some effect on the xmi file. Rather unfortunate...
* Generated IMAER.xsd
First time generating it on my new laptop, and it was an experience. Updated instructions with some findings (use 32-bit java, and specific versions of both shapechange and enterprise architect). Trying to update to 64-bit stuff, which will likely include switching file format from EAP to something newer, is something for future work.
* Change project version in pom.xmls
With this change we're moving to 6.0.2 of IMAER, so better update the version of the project to match.
* Implement reading/writing power attribute for mobile sources, including a roundtrip file that tests this behaviour.
Also done some cleanup associated with this.
- Only set power for U method
- Only set liter fuel/year and adblue/year for AUB method
- Create unit tests for this
- Fix import by not requiring adblue for power based method
- Clean up the OffRoadValidator a bit
- Unit test updates
Updated to scientific notation that comes overeen with stageclass texts. Examples (taken from the updated tests):
- `<20` -> `< 20`
- `>10 - <=20` -> `(10-20]`
- `>=10` -> `≥ 10`
- Updated copyright headers
- Add contributors (both NL and UK) to main pom.xml

More deletions (-2) than insertions, because the following files had both copyrights (so 2 lines -> 1):
- BuildingLimits.java
- SourceCharacteristics.java

Still (+4) more insertions than deletions, because of the changes in the main pom.xml (+6)
Due to changes in library dependencies some gml seems to be genereated with different spacing. To handle this the unit test removes all spaces between elements from gml files before comparison.
Co-authored-by: Stikstofje <1662526+stikstofje@users.noreply.github.com>
@SerhatG

SerhatG commented Sep 30, 2026

Copy link
Copy Markdown
Member

It seems to contain an extra commit
Release: set next development version to 6.0.2-2-SNAPSHOT

@BertScholten

Copy link
Copy Markdown
Member Author

It seems to contain an extra commit Release: set next development version to 6.0.2-2-SNAPSHOT

Ah yeah, so it did. Should be OK now.

@SerhatG
SerhatG merged commit 9a1ccb6 into aerius:amplify-production Sep 30, 2026
3 of 4 checks passed
@BertScholten
BertScholten deleted the amplify-production branch September 30, 2026 12:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants