mirror of
https://github.com/Prominence/openweathermap-java-api.git
synced 2026-01-10 11:56:44 +03:00
Removed duplicated code. Added generics.
This commit is contained in:
parent
2bd088aee8
commit
175a092e83
@ -23,12 +23,15 @@
|
|||||||
package by.prominence.openweather.api;
|
package by.prominence.openweather.api;
|
||||||
|
|
||||||
import by.prominence.openweather.api.constants.System;
|
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 java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
abstract class BasicRequester extends AuthenticationTokenBasedRequester {
|
abstract class BasicRequester<T> extends AuthenticationTokenBasedRequester {
|
||||||
|
|
||||||
protected String language;
|
protected String language;
|
||||||
protected String unit;
|
protected String unit;
|
||||||
@ -38,6 +41,26 @@ abstract class BasicRequester extends AuthenticationTokenBasedRequester {
|
|||||||
super(authToken);
|
super(authToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public T getByCityId(String id) throws InvalidAuthTokenException, DataNotFoundException {
|
||||||
|
return executeRequest("?id=" + id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getByCityName(String name) throws InvalidAuthTokenException, DataNotFoundException {
|
||||||
|
return executeRequest("?q=" + name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getByCoordinates(double latitude, double longitude) throws InvalidAuthTokenException, DataNotFoundException {
|
||||||
|
return executeRequest("?lat=" + latitude + "&lon=" + longitude);
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getByCoordinates(Coordinates coordinates) throws InvalidAuthTokenException, DataNotFoundException {
|
||||||
|
return getByCoordinates(coordinates.getLatitude(), coordinates.getLongitude());
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getByZIPCode(String zipCode, String countryCode) throws InvalidAuthTokenException, DataNotFoundException {
|
||||||
|
return executeRequest("?zip=" + zipCode + "," + countryCode);
|
||||||
|
}
|
||||||
|
|
||||||
protected URL buildURL(String requestSpecificParameters) throws MalformedURLException {
|
protected URL buildURL(String requestSpecificParameters) throws MalformedURLException {
|
||||||
|
|
||||||
StringBuilder urlBuilder = new StringBuilder(System.OPEN_WEATHER_API_URL);
|
StringBuilder urlBuilder = new StringBuilder(System.OPEN_WEATHER_API_URL);
|
||||||
@ -81,5 +104,6 @@ abstract class BasicRequester extends AuthenticationTokenBasedRequester {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected abstract String getRequestType();
|
protected abstract String getRequestType();
|
||||||
|
protected abstract T executeRequest(String requestSpecificParamsString) throws InvalidAuthTokenException, DataNotFoundException;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -24,7 +24,6 @@ package by.prominence.openweather.api;
|
|||||||
|
|
||||||
import by.prominence.openweather.api.exception.DataNotFoundException;
|
import by.prominence.openweather.api.exception.DataNotFoundException;
|
||||||
import by.prominence.openweather.api.exception.InvalidAuthTokenException;
|
import by.prominence.openweather.api.exception.InvalidAuthTokenException;
|
||||||
import by.prominence.openweather.api.model.Coordinates;
|
|
||||||
import by.prominence.openweather.api.model.forecast.ForecastResponse;
|
import by.prominence.openweather.api.model.forecast.ForecastResponse;
|
||||||
import by.prominence.openweather.api.utils.JsonUtils;
|
import by.prominence.openweather.api.utils.JsonUtils;
|
||||||
import by.prominence.openweather.api.utils.RequestUtils;
|
import by.prominence.openweather.api.utils.RequestUtils;
|
||||||
@ -34,7 +33,7 @@ import java.io.InputStream;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class ForecastRequester extends BasicRequester {
|
public class ForecastRequester extends BasicRequester<ForecastResponse> {
|
||||||
|
|
||||||
private int amountOfDays = -1;
|
private int amountOfDays = -1;
|
||||||
|
|
||||||
@ -62,26 +61,6 @@ public class ForecastRequester extends BasicRequester {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ForecastResponse getByCityId(String id) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return executeRequest("?id=" + id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ForecastResponse getByCityName(String name) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return executeRequest("?q=" + name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ForecastResponse getByCoordinates(double latitude, double longitude) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return executeRequest("?lat=" + latitude + "&lon=" + longitude);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ForecastResponse getByCoordinates(Coordinates coordinates) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return getByCoordinates(coordinates.getLatitude(), coordinates.getLongitude());
|
|
||||||
}
|
|
||||||
|
|
||||||
public ForecastResponse getByZIPCode(String zipCode, String countryCode) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return executeRequest("?zip=" + zipCode + "," + countryCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Map<String, String> getAdditionalParameters() {
|
protected Map<String, String> getAdditionalParameters() {
|
||||||
Map<String, String> additionalParameters = null;
|
Map<String, String> additionalParameters = null;
|
||||||
@ -100,7 +79,7 @@ public class ForecastRequester extends BasicRequester {
|
|||||||
return "forecast";
|
return "forecast";
|
||||||
}
|
}
|
||||||
|
|
||||||
private ForecastResponse executeRequest(String requestSpecificParameters) throws InvalidAuthTokenException, DataNotFoundException {
|
protected ForecastResponse executeRequest(String requestSpecificParameters) throws InvalidAuthTokenException, DataNotFoundException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
InputStream requestResult = RequestUtils.executeGetRequest(buildURL(requestSpecificParameters));
|
InputStream requestResult = RequestUtils.executeGetRequest(buildURL(requestSpecificParameters));
|
||||||
|
|||||||
@ -24,7 +24,6 @@ package by.prominence.openweather.api;
|
|||||||
|
|
||||||
import by.prominence.openweather.api.exception.DataNotFoundException;
|
import by.prominence.openweather.api.exception.DataNotFoundException;
|
||||||
import by.prominence.openweather.api.exception.InvalidAuthTokenException;
|
import by.prominence.openweather.api.exception.InvalidAuthTokenException;
|
||||||
import by.prominence.openweather.api.model.Coordinates;
|
|
||||||
import by.prominence.openweather.api.model.weather.WeatherResponse;
|
import by.prominence.openweather.api.model.weather.WeatherResponse;
|
||||||
import by.prominence.openweather.api.utils.JsonUtils;
|
import by.prominence.openweather.api.utils.JsonUtils;
|
||||||
import by.prominence.openweather.api.utils.RequestUtils;
|
import by.prominence.openweather.api.utils.RequestUtils;
|
||||||
@ -32,7 +31,7 @@ import by.prominence.openweather.api.utils.RequestUtils;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
public class WeatherRequester extends BasicRequester {
|
public class WeatherRequester extends BasicRequester<WeatherResponse> {
|
||||||
|
|
||||||
WeatherRequester(String authToken) {
|
WeatherRequester(String authToken) {
|
||||||
super(authToken);
|
super(authToken);
|
||||||
@ -53,31 +52,11 @@ public class WeatherRequester extends BasicRequester {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WeatherResponse getByCityId(String id) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return executeRequest("?id=" + id);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WeatherResponse getByCityName(String name) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return executeRequest("?q=" + name);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WeatherResponse getByCoordinates(double latitude, double longitude) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return executeRequest("?lat=" + latitude + "&lon=" + longitude);
|
|
||||||
}
|
|
||||||
|
|
||||||
public WeatherResponse getByCoordinates(Coordinates coordinates) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return getByCoordinates(coordinates.getLatitude(), coordinates.getLongitude());
|
|
||||||
}
|
|
||||||
|
|
||||||
public WeatherResponse getByZIPCode(String zipCode, String countryCode) throws InvalidAuthTokenException, DataNotFoundException {
|
|
||||||
return executeRequest("?zip=" + zipCode + "," + countryCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected String getRequestType() {
|
protected String getRequestType() {
|
||||||
return "weather";
|
return "weather";
|
||||||
}
|
}
|
||||||
|
|
||||||
private WeatherResponse executeRequest(String requestSpecificParameters) throws InvalidAuthTokenException, DataNotFoundException {
|
protected WeatherResponse executeRequest(String requestSpecificParameters) throws InvalidAuthTokenException, DataNotFoundException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
InputStream requestResult = RequestUtils.executeGetRequest(buildURL(requestSpecificParameters));
|
InputStream requestResult = RequestUtils.executeGetRequest(buildURL(requestSpecificParameters));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user