From 72743271498876675769ebd71f73feefac80a9b6 Mon Sep 17 00:00:00 2001 From: Prominence Date: Sat, 14 Jul 2018 22:57:55 +0300 Subject: [PATCH] Improved 'toString' methods(also units were added). Global package renaming and small improvements. --- pom.xml | 2 +- .../AuthenticationTokenBasedRequester.java | 2 +- .../api/BasicRequester.java | 17 +++--- .../api/ForecastRequester.java | 31 +++++++--- .../api/OpenWeatherMapManager.java | 2 +- .../api/WeatherRequester.java | 26 +++++--- .../api/constants/Accuracy.java | 2 +- .../api/constants/Language.java | 2 +- .../api/constants/System.java | 2 +- .../api/constants/Unit.java | 31 ++++++++-- .../api/exception/DataNotFoundException.java | 2 +- .../exception/InvalidAuthTokenException.java | 2 +- .../api/model/Clouds.java | 6 +- .../api/model/Coordinates.java | 7 +-- .../api/model/OpenWeatherResponse.java | 2 +- .../api/model/Rain.java | 10 +-- .../api/model/Snow.java | 10 +-- .../api/model/Weather.java | 9 +-- .../api/model/Wind.java | 17 ++++-- .../api/model/forecast/City.java | 11 +--- .../api/model/forecast/ForecastInfo.java | 44 +++++++++---- .../api/model/forecast/ForecastResponse.java | 19 +++--- .../model/forecast/ForecastSystemInfo.java | 2 +- .../api/model/forecast/MainInfo.java | 60 ++++++++++++++---- .../api/model/weather/WeatherInfo.java | 61 ++++++++++++++++--- .../api/model/weather/WeatherResponse.java | 54 ++++++++++------ .../api/model/weather/WeatherSystemInfo.java | 28 ++++++--- .../api/utils/JsonUtils.java | 4 +- .../api/utils/RequestUtils.java | 6 +- 29 files changed, 318 insertions(+), 153 deletions(-) rename src/main/java/by/prominence/{openweather => openweathermap}/api/AuthenticationTokenBasedRequester.java (96%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/BasicRequester.java (87%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/ForecastRequester.java (71%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/OpenWeatherMapManager.java (97%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/WeatherRequester.java (69%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/constants/Accuracy.java (96%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/constants/Language.java (98%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/constants/System.java (96%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/constants/Unit.java (58%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/exception/DataNotFoundException.java (96%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/exception/InvalidAuthTokenException.java (96%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/Clouds.java (92%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/Coordinates.java (92%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/OpenWeatherResponse.java (96%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/Rain.java (91%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/Snow.java (91%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/Weather.java (91%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/Wind.java (88%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/forecast/City.java (88%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/forecast/ForecastInfo.java (79%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/forecast/ForecastResponse.java (86%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/forecast/ForecastSystemInfo.java (96%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/forecast/MainInfo.java (74%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/weather/WeatherInfo.java (71%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/weather/WeatherResponse.java (75%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/model/weather/WeatherSystemInfo.java (83%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/utils/JsonUtils.java (94%) rename src/main/java/by/prominence/{openweather => openweathermap}/api/utils/RequestUtils.java (91%) diff --git a/pom.xml b/pom.xml index 868e47f..81ecf21 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 openweather-api - by.prominence.openweater.api + by.prominence.openweatermap.api 1.0-SNAPSHOT diff --git a/src/main/java/by/prominence/openweather/api/AuthenticationTokenBasedRequester.java b/src/main/java/by/prominence/openweathermap/api/AuthenticationTokenBasedRequester.java similarity index 96% rename from src/main/java/by/prominence/openweather/api/AuthenticationTokenBasedRequester.java rename to src/main/java/by/prominence/openweathermap/api/AuthenticationTokenBasedRequester.java index cab5928..ee35c54 100644 --- a/src/main/java/by/prominence/openweather/api/AuthenticationTokenBasedRequester.java +++ b/src/main/java/by/prominence/openweathermap/api/AuthenticationTokenBasedRequester.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api; +package by.prominence.openweathermap.api; abstract class AuthenticationTokenBasedRequester { diff --git a/src/main/java/by/prominence/openweather/api/BasicRequester.java b/src/main/java/by/prominence/openweathermap/api/BasicRequester.java similarity index 87% rename from src/main/java/by/prominence/openweather/api/BasicRequester.java rename to src/main/java/by/prominence/openweathermap/api/BasicRequester.java index 84aefa2..9c670f4 100644 --- a/src/main/java/by/prominence/openweather/api/BasicRequester.java +++ b/src/main/java/by/prominence/openweathermap/api/BasicRequester.java @@ -20,12 +20,13 @@ * SOFTWARE. */ -package by.prominence.openweather.api; +package by.prominence.openweathermap.api; -import by.prominence.openweather.api.constants.System; -import by.prominence.openweather.api.exception.DataNotFoundException; -import by.prominence.openweather.api.exception.InvalidAuthTokenException; -import by.prominence.openweather.api.model.Coordinates; +import by.prominence.openweathermap.api.constants.System; +import by.prominence.openweathermap.api.constants.Unit; +import by.prominence.openweathermap.api.exception.DataNotFoundException; +import by.prominence.openweathermap.api.exception.InvalidAuthTokenException; +import by.prominence.openweathermap.api.model.Coordinates; import java.net.MalformedURLException; import java.net.URL; @@ -34,7 +35,7 @@ import java.util.Map; abstract class BasicRequester extends AuthenticationTokenBasedRequester { protected String language; - protected String unit; + protected String unitSystem = Unit.STANDARD_SYSTEM; protected String accuracy; protected BasicRequester(String authToken) { @@ -76,9 +77,9 @@ abstract class BasicRequester extends AuthenticationTokenBasedRequester { urlBuilder.append(language); } - if (unit != null) { + if (!Unit.STANDARD_SYSTEM.equals(unitSystem)) { urlBuilder.append("&units="); - urlBuilder.append(unit); + urlBuilder.append(unitSystem); } if (accuracy != null) { diff --git a/src/main/java/by/prominence/openweather/api/ForecastRequester.java b/src/main/java/by/prominence/openweathermap/api/ForecastRequester.java similarity index 71% rename from src/main/java/by/prominence/openweather/api/ForecastRequester.java rename to src/main/java/by/prominence/openweathermap/api/ForecastRequester.java index 535a5a6..3bfaae9 100644 --- a/src/main/java/by/prominence/openweather/api/ForecastRequester.java +++ b/src/main/java/by/prominence/openweathermap/api/ForecastRequester.java @@ -20,13 +20,14 @@ * SOFTWARE. */ -package by.prominence.openweather.api; +package by.prominence.openweathermap.api; -import by.prominence.openweather.api.exception.DataNotFoundException; -import by.prominence.openweather.api.exception.InvalidAuthTokenException; -import by.prominence.openweather.api.model.forecast.ForecastResponse; -import by.prominence.openweather.api.utils.JsonUtils; -import by.prominence.openweather.api.utils.RequestUtils; +import by.prominence.openweathermap.api.constants.Unit; +import by.prominence.openweathermap.api.exception.DataNotFoundException; +import by.prominence.openweathermap.api.exception.InvalidAuthTokenException; +import by.prominence.openweathermap.api.model.forecast.ForecastResponse; +import by.prominence.openweathermap.api.utils.JsonUtils; +import by.prominence.openweathermap.api.utils.RequestUtils; import java.io.IOException; import java.io.InputStream; @@ -51,8 +52,8 @@ public class ForecastRequester extends BasicRequester { return this; } - public ForecastRequester setUnit(String unit) { - this.unit = unit; + public ForecastRequester setUnitSystem(String unitSystem) { + this.unitSystem = unitSystem; return this; } @@ -81,14 +82,24 @@ public class ForecastRequester extends BasicRequester { protected ForecastResponse executeRequest(String requestSpecificParameters) throws InvalidAuthTokenException, DataNotFoundException { + ForecastResponse forecastResponse = null; + try { InputStream requestResult = RequestUtils.executeGetRequest(buildURL(requestSpecificParameters)); - return (ForecastResponse)JsonUtils.parseJson(requestResult, ForecastResponse.class); + forecastResponse = (ForecastResponse)JsonUtils.parseJson(requestResult, ForecastResponse.class); + + char temperatureUnit = Unit.getTemperatureUnit(unitSystem); + String windUnit = Unit.getWindUnit(unitSystem); + + forecastResponse.getForecasts().forEach(forecastInfo -> { + forecastInfo.getWind().setUnit(windUnit); + forecastInfo.getMainInfo().setTemperatureUnit(temperatureUnit); + }); } catch (IOException ex) { ex.printStackTrace(); } - return null; + return forecastResponse; } } diff --git a/src/main/java/by/prominence/openweather/api/OpenWeatherMapManager.java b/src/main/java/by/prominence/openweathermap/api/OpenWeatherMapManager.java similarity index 97% rename from src/main/java/by/prominence/openweather/api/OpenWeatherMapManager.java rename to src/main/java/by/prominence/openweathermap/api/OpenWeatherMapManager.java index b78dcdc..8456249 100644 --- a/src/main/java/by/prominence/openweather/api/OpenWeatherMapManager.java +++ b/src/main/java/by/prominence/openweathermap/api/OpenWeatherMapManager.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api; +package by.prominence.openweathermap.api; public class OpenWeatherMapManager { diff --git a/src/main/java/by/prominence/openweather/api/WeatherRequester.java b/src/main/java/by/prominence/openweathermap/api/WeatherRequester.java similarity index 69% rename from src/main/java/by/prominence/openweather/api/WeatherRequester.java rename to src/main/java/by/prominence/openweathermap/api/WeatherRequester.java index 482ace6..ce5aa37 100644 --- a/src/main/java/by/prominence/openweather/api/WeatherRequester.java +++ b/src/main/java/by/prominence/openweathermap/api/WeatherRequester.java @@ -20,13 +20,14 @@ * SOFTWARE. */ -package by.prominence.openweather.api; +package by.prominence.openweathermap.api; -import by.prominence.openweather.api.exception.DataNotFoundException; -import by.prominence.openweather.api.exception.InvalidAuthTokenException; -import by.prominence.openweather.api.model.weather.WeatherResponse; -import by.prominence.openweather.api.utils.JsonUtils; -import by.prominence.openweather.api.utils.RequestUtils; +import by.prominence.openweathermap.api.constants.Unit; +import by.prominence.openweathermap.api.exception.DataNotFoundException; +import by.prominence.openweathermap.api.exception.InvalidAuthTokenException; +import by.prominence.openweathermap.api.model.weather.WeatherResponse; +import by.prominence.openweathermap.api.utils.JsonUtils; +import by.prominence.openweathermap.api.utils.RequestUtils; import java.io.IOException; import java.io.InputStream; @@ -42,8 +43,8 @@ public class WeatherRequester extends BasicRequester { return this; } - public WeatherRequester setUnit(String unit) { - this.unit = unit; + public WeatherRequester setUnitSystem(String unitSystem) { + this.unitSystem = unitSystem; return this; } @@ -58,14 +59,19 @@ public class WeatherRequester extends BasicRequester { protected WeatherResponse executeRequest(String requestSpecificParameters) throws InvalidAuthTokenException, DataNotFoundException { + WeatherResponse weatherResponse = null; + try { InputStream requestResult = RequestUtils.executeGetRequest(buildURL(requestSpecificParameters)); - return (WeatherResponse)JsonUtils.parseJson(requestResult, WeatherResponse.class); + weatherResponse = (WeatherResponse)JsonUtils.parseJson(requestResult, WeatherResponse.class); + + weatherResponse.getWind().setUnit(Unit.getWindUnit(unitSystem)); + weatherResponse.getWeatherInfo().setTemperatureUnit(Unit.getTemperatureUnit(unitSystem)); } catch (IOException ex) { ex.printStackTrace(); } - return null; + return weatherResponse; } } diff --git a/src/main/java/by/prominence/openweather/api/constants/Accuracy.java b/src/main/java/by/prominence/openweathermap/api/constants/Accuracy.java similarity index 96% rename from src/main/java/by/prominence/openweather/api/constants/Accuracy.java rename to src/main/java/by/prominence/openweathermap/api/constants/Accuracy.java index 0f9f30e..724aa52 100644 --- a/src/main/java/by/prominence/openweather/api/constants/Accuracy.java +++ b/src/main/java/by/prominence/openweathermap/api/constants/Accuracy.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.constants; +package by.prominence.openweathermap.api.constants; public class Accuracy { diff --git a/src/main/java/by/prominence/openweather/api/constants/Language.java b/src/main/java/by/prominence/openweathermap/api/constants/Language.java similarity index 98% rename from src/main/java/by/prominence/openweather/api/constants/Language.java rename to src/main/java/by/prominence/openweathermap/api/constants/Language.java index 95f47b8..72b159e 100644 --- a/src/main/java/by/prominence/openweather/api/constants/Language.java +++ b/src/main/java/by/prominence/openweathermap/api/constants/Language.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.constants; +package by.prominence.openweathermap.api.constants; public class Language { diff --git a/src/main/java/by/prominence/openweather/api/constants/System.java b/src/main/java/by/prominence/openweathermap/api/constants/System.java similarity index 96% rename from src/main/java/by/prominence/openweather/api/constants/System.java rename to src/main/java/by/prominence/openweathermap/api/constants/System.java index d45d5e2..48bc03c 100644 --- a/src/main/java/by/prominence/openweather/api/constants/System.java +++ b/src/main/java/by/prominence/openweathermap/api/constants/System.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.constants; +package by.prominence.openweathermap.api.constants; public class System { diff --git a/src/main/java/by/prominence/openweather/api/constants/Unit.java b/src/main/java/by/prominence/openweathermap/api/constants/Unit.java similarity index 58% rename from src/main/java/by/prominence/openweather/api/constants/Unit.java rename to src/main/java/by/prominence/openweathermap/api/constants/Unit.java index dd7b65f..bd16609 100644 --- a/src/main/java/by/prominence/openweather/api/constants/Unit.java +++ b/src/main/java/by/prominence/openweathermap/api/constants/Unit.java @@ -20,12 +20,35 @@ * SOFTWARE. */ -package by.prominence.openweather.api.constants; +package by.prominence.openweathermap.api.constants; public class Unit { - public static final String METRIC = "metric"; - public static final String IMPERIAL = "imperial"; - public static final String STANDARD = null; + public static final String METRIC_SYSTEM = "metric"; + public static final String IMPERIAL_SYSTEM = "imperial"; + public static final String STANDARD_SYSTEM = "standard"; + + public static String getWindUnit(String type) { + switch (type) { + case IMPERIAL_SYSTEM: + return "miles/hour"; + case STANDARD_SYSTEM: + case METRIC_SYSTEM: + default: + return "meter/sec"; + } + } + + public static char getTemperatureUnit(String type) { + switch (type) { + case METRIC_SYSTEM: + return '℃'; + case IMPERIAL_SYSTEM: + return '℉'; + case STANDARD_SYSTEM: + default: + return 'K'; + } + } } diff --git a/src/main/java/by/prominence/openweather/api/exception/DataNotFoundException.java b/src/main/java/by/prominence/openweathermap/api/exception/DataNotFoundException.java similarity index 96% rename from src/main/java/by/prominence/openweather/api/exception/DataNotFoundException.java rename to src/main/java/by/prominence/openweathermap/api/exception/DataNotFoundException.java index 867e753..4f3149f 100644 --- a/src/main/java/by/prominence/openweather/api/exception/DataNotFoundException.java +++ b/src/main/java/by/prominence/openweathermap/api/exception/DataNotFoundException.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.exception; +package by.prominence.openweathermap.api.exception; public class DataNotFoundException extends Exception { diff --git a/src/main/java/by/prominence/openweather/api/exception/InvalidAuthTokenException.java b/src/main/java/by/prominence/openweathermap/api/exception/InvalidAuthTokenException.java similarity index 96% rename from src/main/java/by/prominence/openweather/api/exception/InvalidAuthTokenException.java rename to src/main/java/by/prominence/openweathermap/api/exception/InvalidAuthTokenException.java index 5a2d9f5..61adbe9 100644 --- a/src/main/java/by/prominence/openweather/api/exception/InvalidAuthTokenException.java +++ b/src/main/java/by/prominence/openweathermap/api/exception/InvalidAuthTokenException.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.exception; +package by.prominence.openweathermap.api.exception; public class InvalidAuthTokenException extends Exception { diff --git a/src/main/java/by/prominence/openweather/api/model/Clouds.java b/src/main/java/by/prominence/openweathermap/api/model/Clouds.java similarity index 92% rename from src/main/java/by/prominence/openweather/api/model/Clouds.java rename to src/main/java/by/prominence/openweathermap/api/model/Clouds.java index b29c568..000d3a2 100644 --- a/src/main/java/by/prominence/openweather/api/model/Clouds.java +++ b/src/main/java/by/prominence/openweathermap/api/model/Clouds.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model; +package by.prominence.openweathermap.api.model; import com.alibaba.fastjson.annotation.JSONField; @@ -42,9 +42,7 @@ public class Clouds { @Override public String toString() { - return "Clouds{" + - "cloudiness=" + cloudiness + "%" + - '}'; + return "Cloudiness: " + cloudiness + "%"; } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/Coordinates.java b/src/main/java/by/prominence/openweathermap/api/model/Coordinates.java similarity index 92% rename from src/main/java/by/prominence/openweather/api/model/Coordinates.java rename to src/main/java/by/prominence/openweathermap/api/model/Coordinates.java index f5d5f4f..99238bf 100644 --- a/src/main/java/by/prominence/openweather/api/model/Coordinates.java +++ b/src/main/java/by/prominence/openweathermap/api/model/Coordinates.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model; +package by.prominence.openweathermap.api.model; import com.alibaba.fastjson.annotation.JSONField; @@ -58,10 +58,7 @@ public class Coordinates { @Override public String toString() { - return "Coordinates{" + - "latitude=" + latitude + - ", longitude=" + longitude + - '}'; + return "latitude=" + latitude + ", longitude=" + longitude; } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/OpenWeatherResponse.java b/src/main/java/by/prominence/openweathermap/api/model/OpenWeatherResponse.java similarity index 96% rename from src/main/java/by/prominence/openweather/api/model/OpenWeatherResponse.java rename to src/main/java/by/prominence/openweathermap/api/model/OpenWeatherResponse.java index f660350..29105fb 100644 --- a/src/main/java/by/prominence/openweather/api/model/OpenWeatherResponse.java +++ b/src/main/java/by/prominence/openweathermap/api/model/OpenWeatherResponse.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model; +package by.prominence.openweathermap.api.model; public interface OpenWeatherResponse { diff --git a/src/main/java/by/prominence/openweather/api/model/Rain.java b/src/main/java/by/prominence/openweathermap/api/model/Rain.java similarity index 91% rename from src/main/java/by/prominence/openweather/api/model/Rain.java rename to src/main/java/by/prominence/openweathermap/api/model/Rain.java index 9ad31ff..25050d3 100644 --- a/src/main/java/by/prominence/openweather/api/model/Rain.java +++ b/src/main/java/by/prominence/openweathermap/api/model/Rain.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model; +package by.prominence.openweathermap.api.model; import com.alibaba.fastjson.annotation.JSONField; @@ -40,11 +40,13 @@ public class Rain { this.rainVolumeLast3Hrs = rainVolumeLast3Hrs; } + public String getUnit() { + return "mm"; + } + @Override public String toString() { - return "Rain{" + - "rainVolumeLast3Hrs=" + rainVolumeLast3Hrs + - '}'; + return "Rain(last 3 hrs): " + rainVolumeLast3Hrs + ' ' + getUnit(); } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/Snow.java b/src/main/java/by/prominence/openweathermap/api/model/Snow.java similarity index 91% rename from src/main/java/by/prominence/openweather/api/model/Snow.java rename to src/main/java/by/prominence/openweathermap/api/model/Snow.java index fd8b787..86b4dc5 100644 --- a/src/main/java/by/prominence/openweather/api/model/Snow.java +++ b/src/main/java/by/prominence/openweathermap/api/model/Snow.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model; +package by.prominence.openweathermap.api.model; import com.alibaba.fastjson.annotation.JSONField; @@ -40,11 +40,13 @@ public class Snow { this.snowVolumeLast3Hrs = snowVolumeLast3Hrs; } + public String getUnit() { + return "mm"; + } + @Override public String toString() { - return "Snow{" + - "snowVolumeLast3Hrs=" + snowVolumeLast3Hrs + - '}'; + return "Snow(last 3 hrs): " + snowVolumeLast3Hrs + ' ' + getUnit(); } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/Weather.java b/src/main/java/by/prominence/openweathermap/api/model/Weather.java similarity index 91% rename from src/main/java/by/prominence/openweather/api/model/Weather.java rename to src/main/java/by/prominence/openweathermap/api/model/Weather.java index 03214a7..7ff4189 100644 --- a/src/main/java/by/prominence/openweather/api/model/Weather.java +++ b/src/main/java/by/prominence/openweathermap/api/model/Weather.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model; +package by.prominence.openweathermap.api.model; import com.alibaba.fastjson.annotation.JSONField; @@ -90,12 +90,7 @@ public class Weather { @Override public String toString() { - return "Weather{" + - "conditionId=" + conditionId + - ", weatherGroup='" + weatherGroup + '\'' + - ", description='" + description + '\'' + - ", iconId='" + iconId + '\'' + - '}'; + return "Weather: " + description; } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/Wind.java b/src/main/java/by/prominence/openweathermap/api/model/Wind.java similarity index 88% rename from src/main/java/by/prominence/openweather/api/model/Wind.java rename to src/main/java/by/prominence/openweathermap/api/model/Wind.java index 4ee7562..695a030 100644 --- a/src/main/java/by/prominence/openweather/api/model/Wind.java +++ b/src/main/java/by/prominence/openweathermap/api/model/Wind.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model; +package by.prominence.openweathermap.api.model; import com.alibaba.fastjson.annotation.JSONField; @@ -32,6 +32,8 @@ public class Wind { // Wind speed. Unit Default: meter/sec, Metric: meter/sec, Imperial: miles/hour. private float speed; + private String unit; + @JSONField(name = "deg") // Wind direction, degrees (meteorological) private short degrees; @@ -44,6 +46,14 @@ public class Wind { this.speed = speed; } + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + public short getDegrees() { return degrees; } @@ -54,10 +64,7 @@ public class Wind { @Override public String toString() { - return "Wind{" + - "speed=" + speed + - ", degrees=" + degrees + - '}'; + return "Wind: " + speed + ' ' + unit + ", " + degrees + " degrees"; } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/forecast/City.java b/src/main/java/by/prominence/openweathermap/api/model/forecast/City.java similarity index 88% rename from src/main/java/by/prominence/openweather/api/model/forecast/City.java rename to src/main/java/by/prominence/openweathermap/api/model/forecast/City.java index e54f16a..65757f0 100644 --- a/src/main/java/by/prominence/openweather/api/model/forecast/City.java +++ b/src/main/java/by/prominence/openweathermap/api/model/forecast/City.java @@ -20,9 +20,9 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model.forecast; +package by.prominence.openweathermap.api.model.forecast; -import by.prominence.openweather.api.model.Coordinates; +import by.prominence.openweathermap.api.model.Coordinates; import com.alibaba.fastjson.annotation.JSONField; import java.util.Objects; @@ -75,12 +75,7 @@ public class City { @Override public String toString() { - return "City{" + - "id=" + id + - ", name='" + name + '\'' + - ", coordinates=" + coordinates + - ", country='" + country + '\'' + - '}'; + return "City: " + name + "(" + id + "). Coordinates: " + coordinates + '\n' + "Country: " + country; } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/forecast/ForecastInfo.java b/src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastInfo.java similarity index 79% rename from src/main/java/by/prominence/openweather/api/model/forecast/ForecastInfo.java rename to src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastInfo.java index c3e98cc..94bf388 100644 --- a/src/main/java/by/prominence/openweather/api/model/forecast/ForecastInfo.java +++ b/src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastInfo.java @@ -20,9 +20,9 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model.forecast; +package by.prominence.openweathermap.api.model.forecast; -import by.prominence.openweather.api.model.*; +import by.prominence.openweathermap.api.model.*; import com.alibaba.fastjson.annotation.JSONField; import java.util.Date; @@ -129,17 +129,35 @@ public class ForecastInfo { @Override public String toString() { - return "\nForecastInfo{" + - "dataCalculationTime=" + new Date(dataCalculationTime * 1000) + - ", mainInfo=" + mainInfo + - ", weathers=" + weathers + - ", clouds=" + clouds + - ", wind=" + wind + - ", snow=" + snow + - ", rain=" + rain + - ", systemInfo=" + systemInfo + - ", dt_text='" + dt_txt + '\'' + - '}'; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Time: "); + stringBuilder.append(new Date(dataCalculationTime * 1000)); + stringBuilder.append(" — "); + if (weathers.size() == 1) { + stringBuilder.append(weathers.get(0)); + } else { + stringBuilder.append(weathers); + } + stringBuilder.append(". "); + stringBuilder.append(mainInfo); + if (clouds != null) { + stringBuilder.append(". "); + stringBuilder.append(clouds); + } + if (wind != null) { + stringBuilder.append(". "); + stringBuilder.append(wind); + } + if (snow != null) { + stringBuilder.append(". "); + stringBuilder.append(snow); + } + if (rain != null) { + stringBuilder.append(". "); + stringBuilder.append(rain); + } + + return stringBuilder.toString(); } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/forecast/ForecastResponse.java b/src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastResponse.java similarity index 86% rename from src/main/java/by/prominence/openweather/api/model/forecast/ForecastResponse.java rename to src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastResponse.java index 3b200ed..0ce3e45 100644 --- a/src/main/java/by/prominence/openweather/api/model/forecast/ForecastResponse.java +++ b/src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastResponse.java @@ -20,9 +20,9 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model.forecast; +package by.prominence.openweathermap.api.model.forecast; -import by.prominence.openweather.api.model.OpenWeatherResponse; +import by.prominence.openweathermap.api.model.OpenWeatherResponse; import com.alibaba.fastjson.annotation.JSONField; import java.util.List; @@ -85,13 +85,14 @@ public class ForecastResponse implements OpenWeatherResponse { @Override public String toString() { - return "ForecastResponse{" + - "responseCode=" + responseCode + - ", message=" + message + - ", cnt=" + cnt + - ", forecasts=" + forecasts + - ", city=" + city + - '}'; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(city); + stringBuilder.append("\nForecasts: "); + forecasts.forEach(forecastInfo -> { + stringBuilder.append("\n\t"); + stringBuilder.append(forecastInfo); + }); + return stringBuilder.toString(); } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/forecast/ForecastSystemInfo.java b/src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastSystemInfo.java similarity index 96% rename from src/main/java/by/prominence/openweather/api/model/forecast/ForecastSystemInfo.java rename to src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastSystemInfo.java index 40a8d1e..83d37f0 100644 --- a/src/main/java/by/prominence/openweather/api/model/forecast/ForecastSystemInfo.java +++ b/src/main/java/by/prominence/openweathermap/api/model/forecast/ForecastSystemInfo.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model.forecast; +package by.prominence.openweathermap.api.model.forecast; import java.util.Objects; diff --git a/src/main/java/by/prominence/openweather/api/model/forecast/MainInfo.java b/src/main/java/by/prominence/openweathermap/api/model/forecast/MainInfo.java similarity index 74% rename from src/main/java/by/prominence/openweather/api/model/forecast/MainInfo.java rename to src/main/java/by/prominence/openweathermap/api/model/forecast/MainInfo.java index 88e7dbc..c7a09ef 100644 --- a/src/main/java/by/prominence/openweather/api/model/forecast/MainInfo.java +++ b/src/main/java/by/prominence/openweathermap/api/model/forecast/MainInfo.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model.forecast; +package by.prominence.openweathermap.api.model.forecast; import com.alibaba.fastjson.annotation.JSONField; @@ -60,6 +60,8 @@ public class MainInfo { // Internal parameter private float temperatureCoefficient; + private char temperatureUnit; + public float getTemperature() { return temperature; } @@ -124,18 +126,54 @@ public class MainInfo { this.temperatureCoefficient = temperatureCoefficient; } + public char getTemperatureUnit() { + return temperatureUnit; + } + + public void setTemperatureUnit(char temperatureUnit) { + this.temperatureUnit = temperatureUnit; + } + + public String getPressureUnit() { + return "hPa"; + } + @Override public String toString() { - return "MainInfo{" + - "temperature=" + temperature + - ", minimumTemperature=" + minimumTemperature + - ", maximumTemperature=" + maximumTemperature + - ", pressure=" + pressure + - ", seaLevelPressure=" + seaLevelPressure + - ", groundLevelPressure=" + groundLevelPressure + - ", humidity=" + humidity + "%" + - ", temperatureCoefficient=" + temperatureCoefficient + - '}'; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Temperature: "); + stringBuilder.append(temperature); + stringBuilder.append(' '); + stringBuilder.append(temperatureUnit); + stringBuilder.append(". Minimum temperature: "); + stringBuilder.append(minimumTemperature); + stringBuilder.append(' '); + stringBuilder.append(temperatureUnit); + stringBuilder.append(". Maximum temperature: "); + stringBuilder.append(maximumTemperature); + stringBuilder.append(' '); + stringBuilder.append(temperatureUnit); + stringBuilder.append(". Pressure: "); + stringBuilder.append(pressure); + stringBuilder.append(' '); + stringBuilder.append(getPressureUnit()); + if (seaLevelPressure > 0) { + stringBuilder.append(". Sea-level pressure: "); + stringBuilder.append(seaLevelPressure); + stringBuilder.append(' '); + stringBuilder.append(getPressureUnit()); + } + if (groundLevelPressure > 0) { + stringBuilder.append(". Ground-level pressure: "); + stringBuilder.append(groundLevelPressure); + stringBuilder.append(' '); + stringBuilder.append(getPressureUnit()); + } + stringBuilder.append(". Humidity: "); + stringBuilder.append(humidity); + stringBuilder.append('%'); + + return stringBuilder.toString(); } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/weather/WeatherInfo.java b/src/main/java/by/prominence/openweathermap/api/model/weather/WeatherInfo.java similarity index 71% rename from src/main/java/by/prominence/openweather/api/model/weather/WeatherInfo.java rename to src/main/java/by/prominence/openweathermap/api/model/weather/WeatherInfo.java index 564727d..cfcb889 100644 --- a/src/main/java/by/prominence/openweather/api/model/weather/WeatherInfo.java +++ b/src/main/java/by/prominence/openweathermap/api/model/weather/WeatherInfo.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model.weather; +package by.prominence.openweathermap.api.model.weather; import com.alibaba.fastjson.annotation.JSONField; @@ -58,6 +58,8 @@ public class WeatherInfo { // Atmospheric pressure on the ground level, hPa private short groundLevelPressure; + private char temperatureUnit; + public float getTemperature() { return temperature; } @@ -114,17 +116,56 @@ public class WeatherInfo { this.groundLevelPressure = groundLevelPressure; } + public char getTemperatureUnit() { + return temperatureUnit; + } + + public void setTemperatureUnit(char temperatureUnit) { + this.temperatureUnit = temperatureUnit; + } + + public String getPressureUnit() { + return "hPa"; + } + @Override public String toString() { - return "WeatherInfo{" + - "temperature=" + temperature + - ", pressure=" + pressure + - ", humidity=" + humidity + "%" + - ", minimumTemperature=" + minimumTemperature + - ", maximumTemperature=" + maximumTemperature + - ", seaLevelPressure=" + seaLevelPressure + - ", groundLevelPressure=" + groundLevelPressure + - '}'; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Temperature: "); + stringBuilder.append(temperature); + stringBuilder.append(' '); + stringBuilder.append(temperatureUnit); + stringBuilder.append(". Minimum temparature: "); + stringBuilder.append(minimumTemperature); + stringBuilder.append(' '); + stringBuilder.append(temperatureUnit); + stringBuilder.append(". Maximum temperature: "); + stringBuilder.append(maximumTemperature); + stringBuilder.append(' '); + stringBuilder.append(temperatureUnit); + stringBuilder.append('\n'); + stringBuilder.append("Humidity: "); + stringBuilder.append(humidity); + stringBuilder.append("%"); + stringBuilder.append('\n'); + stringBuilder.append("Pressure: "); + stringBuilder.append(pressure); + stringBuilder.append(' '); + stringBuilder.append(getPressureUnit()); + if (seaLevelPressure > 0) { + stringBuilder.append(". Sea-level pressure: "); + stringBuilder.append(seaLevelPressure); + stringBuilder.append(' '); + stringBuilder.append(getPressureUnit()); + } + if (groundLevelPressure > 0) { + stringBuilder.append(". Ground-level pressure: "); + stringBuilder.append(groundLevelPressure); + stringBuilder.append(' '); + stringBuilder.append(getPressureUnit()); + } + + return stringBuilder.toString(); } @Override diff --git a/src/main/java/by/prominence/openweather/api/model/weather/WeatherResponse.java b/src/main/java/by/prominence/openweathermap/api/model/weather/WeatherResponse.java similarity index 75% rename from src/main/java/by/prominence/openweather/api/model/weather/WeatherResponse.java rename to src/main/java/by/prominence/openweathermap/api/model/weather/WeatherResponse.java index e8b04ec..34b67dd 100644 --- a/src/main/java/by/prominence/openweather/api/model/weather/WeatherResponse.java +++ b/src/main/java/by/prominence/openweathermap/api/model/weather/WeatherResponse.java @@ -20,9 +20,9 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model.weather; +package by.prominence.openweathermap.api.model.weather; -import by.prominence.openweather.api.model.*; +import by.prominence.openweathermap.api.model.*; import com.alibaba.fastjson.annotation.JSONField; import java.util.Date; @@ -175,20 +175,40 @@ public class WeatherResponse implements OpenWeatherResponse { @Override public String toString() { - return "WeatherResponse{" + - "cityId=" + cityId + - ",\n cityName='" + cityName + '\'' + - ",\n coordinates=" + coordinates + - ",\n weather=" + weather + - ",\n base='" + base + '\'' + - ",\n weatherInfo=" + weatherInfo + - ",\n wind=" + wind + - ",\n clouds=" + clouds + - ",\n rain=" + rain + - ",\n snow=" + snow + - ",\n dataCalculationTime=" + new Date(dataCalculationTime * 1000) + - ",\n weatherSystemInfo=" + weatherSystemInfo + - ",\n responseCode=" + responseCode + - '}'; + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("City: "); + stringBuilder.append(cityName); + stringBuilder.append('('); + stringBuilder.append(cityId); + stringBuilder.append("). "); + stringBuilder.append("Coordinates: "); + stringBuilder.append(coordinates); + stringBuilder.append('\n'); + stringBuilder.append(weatherSystemInfo); + stringBuilder.append('\n'); + if (weather.size() == 1) { + stringBuilder.append(weather.get(0)); + } else { + stringBuilder.append(weather); + } + stringBuilder.append('\n'); + stringBuilder.append(weatherInfo); + stringBuilder.append('\n'); + stringBuilder.append(wind); + stringBuilder.append('\n'); + stringBuilder.append(clouds); + stringBuilder.append('\n'); + if (rain != null) { + stringBuilder.append(rain); + stringBuilder.append('\n'); + } + if (snow != null) { + stringBuilder.append(snow); + stringBuilder.append('\n'); + } + stringBuilder.append("Data calculation time: "); + stringBuilder.append(new Date(dataCalculationTime * 1000)); + + return stringBuilder.toString(); } } diff --git a/src/main/java/by/prominence/openweather/api/model/weather/WeatherSystemInfo.java b/src/main/java/by/prominence/openweathermap/api/model/weather/WeatherSystemInfo.java similarity index 83% rename from src/main/java/by/prominence/openweather/api/model/weather/WeatherSystemInfo.java rename to src/main/java/by/prominence/openweathermap/api/model/weather/WeatherSystemInfo.java index 83690de..4909db3 100644 --- a/src/main/java/by/prominence/openweather/api/model/weather/WeatherSystemInfo.java +++ b/src/main/java/by/prominence/openweathermap/api/model/weather/WeatherSystemInfo.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.model.weather; +package by.prominence.openweathermap.api.model.weather; import com.alibaba.fastjson.annotation.JSONField; @@ -103,14 +103,24 @@ public class WeatherSystemInfo { @Override public String toString() { - return "WeatherSystemInfo{" + - "type=" + type + - ", id=" + id + - ", message=" + message + - ", country='" + country + '\'' + - ", sunrise=" + new Date(sunrise * 1000) + - ", sunset=" + new Date(sunset * 1000) + - '}'; + StringBuilder stringBuilder = new StringBuilder(); + + if (country != null) { + stringBuilder.append("Country: "); + stringBuilder.append(country); + stringBuilder.append('\n'); + } + if (sunrise > 0) { + stringBuilder.append("Sunrise: "); + stringBuilder.append(new Date(sunrise * 1000)); + stringBuilder.append('\n'); + } + if (sunset > 0) { + stringBuilder.append("Sunset: "); + stringBuilder.append(new Date(sunset * 1000)); + } + + return stringBuilder.toString(); } @Override diff --git a/src/main/java/by/prominence/openweather/api/utils/JsonUtils.java b/src/main/java/by/prominence/openweathermap/api/utils/JsonUtils.java similarity index 94% rename from src/main/java/by/prominence/openweather/api/utils/JsonUtils.java rename to src/main/java/by/prominence/openweathermap/api/utils/JsonUtils.java index 9e374a0..70ecfdf 100644 --- a/src/main/java/by/prominence/openweather/api/utils/JsonUtils.java +++ b/src/main/java/by/prominence/openweathermap/api/utils/JsonUtils.java @@ -20,7 +20,7 @@ * SOFTWARE. */ -package by.prominence.openweather.api.utils; +package by.prominence.openweathermap.api.utils; import com.alibaba.fastjson.JSON; @@ -34,7 +34,7 @@ public class JsonUtils { public static Object parseJson(InputStream inputStream, Class clazz) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); - StringBuffer result = new StringBuffer(); + StringBuilder result = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { result.append(line); diff --git a/src/main/java/by/prominence/openweather/api/utils/RequestUtils.java b/src/main/java/by/prominence/openweathermap/api/utils/RequestUtils.java similarity index 91% rename from src/main/java/by/prominence/openweather/api/utils/RequestUtils.java rename to src/main/java/by/prominence/openweathermap/api/utils/RequestUtils.java index 8348742..7da78ac 100644 --- a/src/main/java/by/prominence/openweather/api/utils/RequestUtils.java +++ b/src/main/java/by/prominence/openweathermap/api/utils/RequestUtils.java @@ -20,10 +20,10 @@ * SOFTWARE. */ -package by.prominence.openweather.api.utils; +package by.prominence.openweathermap.api.utils; -import by.prominence.openweather.api.exception.DataNotFoundException; -import by.prominence.openweather.api.exception.InvalidAuthTokenException; +import by.prominence.openweathermap.api.exception.DataNotFoundException; +import by.prominence.openweathermap.api.exception.InvalidAuthTokenException; import java.io.IOException; import java.io.InputStream;