Releases: fmidev/fmi-avi-messageconverter
TAF Bulletins and an improved model for incomplete or missing observed cloud layers
- Added new values to the CloudAmount enum in AviationCodeListUser: SCT_BKN(6), BKN_OVC(7), ISOL_EMBD(9), OCNL_EMBD(11),DENSE(13), OBSC(15), FRQ_EMDB(17), MISSING(31). Now fully covers the code list http://codes.wmo.int/bufr4/codeflag/0-20-008
- Breaking API changes in ObservedClouds class: the layer list is now of a new type ObservedCloudLayer (used to be generic CloudLayer). The missing observed cloud info added to this observation specific cloud layer by extending the CloudLayer.
- New freezing rain combination weather codes added to the WeatherImpl class, see #33
- Added support for modelling TAF Bulletins as per WMO Manual on the Global
Telecommunication System (WMO-No. 386, 2015 ed.), see #34 - New interface AviationWeatherMessageOrCollection is now the new common base for implemented by both the individual weather messages and collections of those messages (like the MeteorologicalBulletin). Code interested in supporting both types should start using the AviationWeatherMessageOrCollection interface instead of AviationWeatherMessage.
- SeaSurfaceTemperature is now optional in SeaState
Time abstraction and handling enhancements
A new PartialDateTime
was introduced to represent partial time instead of string or partial time fields. It provides methods to complete partial time into full ZonedDateTime
. PartialOrCompleteTime
classes are modified to store and provide partial time as PartialDateTime
.
Time completion now behaves in following ways:
- A
PartialDateTime
may be completed to aZonedDateTime
being at, before, before or at, after, after or at or near provided referenceZonedDateTime
. - Completion may be restricted to provided time range.
- Period completion enforces end time to be after start time.
- TAF change group change periods are primarily completed in ascending order and within valid time, or any complete time near reference time on failing conditions.
- METAR TREND times are always completed in ascending order.
Issues fixed: #19, #20, #21, #22, #23, #24, #26, #27, #29, #31, #32
Immutable model and JSON support, model fixes
This is a major release of the converter library with all the model classes now immutable with the help of the FreeBuilder library. All the optional (non-mandatory) properties of the model classes are now also of type Optional.
Time handling has been completely re-written: all the conversions between partial and complete time instances and periods are now encapsulated in classes PartialOrCompleteTimeInstance and PartialOrCompleteTimePeriod correspondingly. All time references in the model classes not use these classes exclusively.
Conversions between Java model classes (TAF & METAR) and the fmi-message-converter JSON formats are now provided. No additional dependencies needed of converting only between Java and JSON objects.
Moved the known weather codes from fmi-avi-messageconverter-tac project into fi.fmi.avi.model.immutable.WeatherImpl.WEATHER_CODES
Bugfixes: missing relational operators have been added to mean wind speed and wind gust speed.
SPECI support
The converter POJO model now contains support for SPECI type messages.
Model classes now implement Serializable.
Delayed METARs (RTD) support
This release introduces new methods METAR.isDelayed() and METAR.setDelayed(boolean) to capture the used of RTD (Routine Delayed observation) modifier in TAC METAR messages
Time completion clarified
This release changes the way the issue and validity times are completed from the partial times (typically originating from TAC format) into fully-qualified ZoneDateTime instances. Now the completeXXX methods for issue times and (forecast) validity times are separated: the precise issue time no longer needs to be available when completing validity times.
Additionally the references to cancelled or corrected TAF messages are now handled by using TAFReference instances, not full TAF instances.
Maintenance/bugfix release
Improved null handling in model class constructors.
Whitespace is now considered a Lexeme of it's own in TAC parsing