diff --git a/README.md b/README.md index 13ce4111..29eacd97 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ [![Maven Central](https://img.shields.io/maven-central/v/io.github.mivek/metarParser.svg)](https://search.maven.org/artifact/io.github.mivek/metarParser/) ![](jetbrains_small.png) -# MetarParser +# MetarParser This java lib provides a Metar and TAF decoder. @@ -15,29 +15,30 @@ Use the MetarFacade class and its method retrieveFromAirport to get the metar of The trends of the metar are not parsed. ## Table of content -1. [Adding dependency](#adding-the-dependency) -2. [Model](#model) - 1. [Enumerations](#enumerations) - 2. [Classes](#classes) -3. [Examples](#examples) - 1. [Parse a metar](#parse-a-metar) - 2. [Retrieve a metar](#retrieve-the-metar-of-an-airport) - 3. [Parse a taf](#parse-a-taf) - 4. [Retrieve a taf](#retrieve-a-taf) -4. [Internationalization](#internationalization) + +1. [Adding dependency](#adding-the-dependency) +2. [Model](#model) + 1. [Enumerations](#enumerations) + 2. [Classes](#classes) +3. [Examples](#examples) + 1. [Parse a metar](#parse-a-metar) + 2. [Retrieve a metar](#retrieve-the-metar-of-an-airport) + 3. [Parse a taf](#parse-a-taf) + 4. [Retrieve a taf](#retrieve-a-taf) +4. [Internationalization](#internationalization) ## Architecture of the project This project is divided into multiple maven module -- metarParser-entities: Contains the model and the enumerations -- metarParser-parsers: Contains the parsers and the commands -- metarParser-services: Contains a service allowing you to parse or retrieve METAR and TAF -- metarParser-spi: Contains the SPI -- metarParser-commons: Contains utility and internationalization classes - +- metarParser-entities: Contains the model and the enumerations +- metarParser-parsers: Contains the parsers and the commands +- metarParser-services: Contains a service allowing you to parse or retrieve METAR and TAF +- metarParser-spi: Contains the SPI +- metarParser-commons: Contains utility and internationalization classes ## Adding the dependency + To add the service module : ```xml @@ -49,91 +50,110 @@ To add the service module : ``` Or check [here](https://search.maven.org/artifact/io.github.mivek/metarParser/) if you are not using maven. + ## Model + The class diagrams are generated by IntelliJ When updating classes, regenerate the diagrams and save the images in the project. ![class diagram](model.jpg) + ### Enumerations The application contains numerous enumerations to represent data. - - CloudType: to represent the type of cloud. - - CloudQuantity: to represent the amount of clouds. - - Intensity: to represent the intensity of a meteorological phenomenon. - - Descriptive: to represent the descriptive of a meteorological phenomenon. - - Phenomenon: to represent a phenomenon. - - WeatherChangeTime: to represent a trend. - - TimeIndicator: to represent the time of the trend. - + +- CloudType: to represent the type of cloud. +- CloudQuantity: to represent the amount of clouds. +- Intensity: to represent the intensity of a meteorological phenomenon. +- Descriptive: to represent the descriptive of a meteorological phenomenon. +- Phenomenon: to represent a phenomenon. +- WeatherChangeTime: to represent a trend. +- TimeIndicator: to represent the time of the trend. + ### Classes #### Airport + The airport class is composed of - - Name - - City - - Country - - IATA code - - ICAO code - - latitude - - longitude - - altitude - - timezone -Note: Depending on the source for the airports, fields can be null -#### Cloud + +- Name +- City +- Country +- IATA code +- ICAO code +- latitude +- longitude +- altitude +- timezone + Note: Depending on the source for the airports, fields can be null + +#### Cloud + In this application a cloud is composed of - - CloudQuantity - - CloudType (optional) - - height (optional) - + +- CloudQuantity +- CloudType (optional) +- height (optional) + #### Country + A country is represented by its name. #### Runway information The runway information is composed of - - The name of the runway - - The minimal visibility on the runway - - The maximal visibility on the runway (optional) - - The trend of the visibility (optional) + +- The name of the runway +- The minimal visibility on the runway +- The maximal visibility on the runway (optional) +- The trend of the visibility (optional) #### Visibility The visibility class is composed of - - The main visibility - - The minimal visibility (optional) - - The direction of the minimal visibility (optional) + +- The main visibility +- The minimal visibility (optional) +- The direction of the minimal visibility (optional) #### WeatherCondition + The weather condition is class to represent a meteorological phenomenon. A weather condition is composed of - - an intensity (optional) - - a descriptive (optional) - - a list of phenomenon - + +- an intensity (optional) +- a descriptive (optional) +- a list of phenomenon + #### Wind + The wind class is composed of - - the speed - - the direction - - the speed of the gust - - the minimal wind variation in degrees - - the maximal wind variation in degrees - - the unit of the wind's speed - + +- the speed +- the direction +- the speed of the gust +- the minimal wind variation in degrees +- the maximal wind variation in degrees +- the unit of the wind's speed + #### WindShear + This class is a subclass of Wind. It is composed of - - the height of the wind shear. +- the height of the wind shear. ### Trends + ![trends diagram](trend.jpg) Numerous classes represents the trends. Trends are stored inside a list of the metar object `Metar.getTrends()`. Trends are composed of - - a Type (BECMG or TEMPO) - - a wind - - a visibility and vertical visibility - - a list of clouds - - a list of weather conditions - - a list of `AbstractMetarTrendTime` to represent the time with its type (AT, FM, TL) + +- a Type (BECMG or TEMPO) +- a wind +- a visibility and vertical visibility +- a list of clouds +- a list of weather conditions +- a list of `AbstractMetarTrendTime` to represent the time with its type (AT, FM, TL) ## Airports loading @@ -141,9 +161,10 @@ By default, airports are loaded from the temporary file [airport.dat](metarParse It is possible to provide your own source of airports via spi. See [spi](metarParser-spi/README.md) module for details. - ## Examples + ### Parse a metar + Instantiate the metarFacade and use its method parse. ```java @@ -153,6 +174,7 @@ Metar metar = service.decode(code); ``` ### Retrieve the metar of an airport + Instantiate the metarFacade. Use the its method retrieveFromAirport with the ICAO code of the airport. @@ -161,7 +183,9 @@ String icao = "LFPG"; MetarService service = MetarService.getInstance(); Metar metar = service.retrieveFromAirport(icao); ``` + ### Parse a taf + Use the TAFFacade to decode the taf. ```java @@ -175,9 +199,11 @@ String message = "TAF LFPG 150500Z 1506/1612 17005KT 6000 SCT012 \n" TAFService service = TAFService.getInstance(); TAF taf = service.decode(message); ``` -Lines of the message have to be separated by a "\n" character. + +Lines of the message have to be separated by a "\\n" character. ### Retrieve a taf + Use the TAFFacade and the method retrieveFromAirport with the ICAO code of the airport. ```java @@ -187,14 +213,18 @@ TAF taf = service.retrieveFromAirport(icao); ``` ### Internationalization + English and french locales are supported by the library. The library uses the user's locale. The default locale is english. #### Change the locale and contributing + To change the locale use the method `setLocale(Locale)` of the class `Messages.java` + ```(java) Messages.getInstance().setLocale(Locale.FRENCH); // Changes the locale to french. ``` + If you are willing to add a new locale or contribute to the project please see [Contributing.md file](CONTRIBUTING.md). [Jetbrains](https://www.jetbrains.com/?from=metarParser) open source project. diff --git a/checkstyle.xml b/checkstyle.xml index 5eeacae9..2091db59 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -1,6 +1,9 @@ +