fix(display): use array instead of hashmap
This commit is contained in:
parent
0f404622ed
commit
398e197aa4
@ -3,6 +3,7 @@ package eirb.pg203.weather.display;
|
|||||||
import eirb.pg203.weather.exceptions.WeatherFetchingException;
|
import eirb.pg203.weather.exceptions.WeatherFetchingException;
|
||||||
import eirb.pg203.weather.data.WeatherData;
|
import eirb.pg203.weather.data.WeatherData;
|
||||||
import eirb.pg203.weather.data.api.WeatherDataAPI;
|
import eirb.pg203.weather.data.api.WeatherDataAPI;
|
||||||
|
import eirb.pg203.weather.utils.Pair;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -43,10 +44,10 @@ public class WeatherDisplayBasic implements eirb.pg203.weather.display.WeatherDi
|
|||||||
* @param weatherDataAPIArrayListHashMap list of Weather data for every WeatherDataApi
|
* @param weatherDataAPIArrayListHashMap list of Weather data for every WeatherDataApi
|
||||||
* @return day column size
|
* @return day column size
|
||||||
*/
|
*/
|
||||||
private double getColumnSize(HashMap<WeatherDataAPI, ArrayList<WeatherData>> weatherDataAPIArrayListHashMap) {
|
private double getColumnSize(ArrayList<Pair<WeatherDataAPI, ArrayList<WeatherData>>> weatherDataAPIArrayListHashMap) {
|
||||||
double max = 0;
|
double max = 0;
|
||||||
for (WeatherDataAPI api: weatherDataAPIArrayListHashMap.keySet()) {
|
for (Pair<WeatherDataAPI, ArrayList<WeatherData>>api: weatherDataAPIArrayListHashMap) {
|
||||||
for (WeatherData w: weatherDataAPIArrayListHashMap.get(api)){
|
for (WeatherData w: api.getValue()){
|
||||||
// real str len with special chars
|
// real str len with special chars
|
||||||
int strLen = w.toString().codePointCount(0, w.toString().length());
|
int strLen = w.toString().codePointCount(0, w.toString().length());
|
||||||
max = Math.max(max, strLen);
|
max = Math.max(max, strLen);
|
||||||
@ -124,7 +125,7 @@ public class WeatherDisplayBasic implements eirb.pg203.weather.display.WeatherDi
|
|||||||
* @param weatherDataAPIArrayListHashMap Hashmap with WeatherData array for each api
|
* @param weatherDataAPIArrayListHashMap Hashmap with WeatherData array for each api
|
||||||
* @param days number of days to display
|
* @param days number of days to display
|
||||||
*/
|
*/
|
||||||
private void displayAllWeatherDatas(HashMap<WeatherDataAPI, ArrayList<WeatherData>> weatherDataAPIArrayListHashMap, int days) {
|
private void displayAllWeatherDatas(ArrayList<Pair<WeatherDataAPI, ArrayList<WeatherData>>> weatherDataAPIArrayListHashMap, int days) {
|
||||||
double dayColumnSize = this.getColumnSize(weatherDataAPIArrayListHashMap);
|
double dayColumnSize = this.getColumnSize(weatherDataAPIArrayListHashMap);
|
||||||
|
|
||||||
// Adjust column size
|
// Adjust column size
|
||||||
@ -140,18 +141,19 @@ public class WeatherDisplayBasic implements eirb.pg203.weather.display.WeatherDi
|
|||||||
this.displaySeparatorLine(days, sourceColumnSize, dayColumnSizeSeparator);
|
this.displaySeparatorLine(days, sourceColumnSize, dayColumnSizeSeparator);
|
||||||
|
|
||||||
// Apis
|
// Apis
|
||||||
for (WeatherDataAPI api: weatherDataAPIArrayListHashMap.keySet()) {
|
for (Pair<WeatherDataAPI, ArrayList<WeatherData>> api: weatherDataAPIArrayListHashMap){
|
||||||
displayWeatherDatas(api.getAPIName(), weatherDataAPIArrayListHashMap.get(api), startColumnString, sourceColumnSize, dayColumnSize);
|
|
||||||
|
displayWeatherDatas(api.getKey().getAPIName(), api.getValue(), startColumnString, sourceColumnSize, dayColumnSize);
|
||||||
this.displaySeparatorLine(days, sourceColumnSize, dayColumnSizeSeparator);
|
this.displaySeparatorLine(days, sourceColumnSize, dayColumnSizeSeparator);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void display(int days, String city) {
|
public void display(int days, String city) {
|
||||||
HashMap<WeatherDataAPI, ArrayList<WeatherData>> weatherDatasMap = new HashMap<>();
|
ArrayList<Pair<WeatherDataAPI, ArrayList<WeatherData>>> weatherDatasMap= new ArrayList<>();
|
||||||
|
|
||||||
for (WeatherDataAPI w: apis) {
|
for (WeatherDataAPI w: apis) {
|
||||||
try {
|
try {
|
||||||
weatherDatasMap.put(w, w.getTemperatures(days, city));
|
weatherDatasMap.add(new Pair<>(w, w.getTemperatures(days, city)));
|
||||||
} catch (WeatherFetchingException e) {
|
} catch (WeatherFetchingException e) {
|
||||||
System.err.println(w.getAPIName() + " failed to fetch meteo");
|
System.err.println(w.getAPIName() + " failed to fetch meteo");
|
||||||
}
|
}
|
||||||
|
@ -51,16 +51,14 @@ public class WeatherDisplayBasicTest {
|
|||||||
|
|
||||||
private static Stream<Arguments> display() {
|
private static Stream<Arguments> display() {
|
||||||
return Stream.of(
|
return Stream.of(
|
||||||
Arguments.arguments(1, new StringBuilder()
|
Arguments.arguments(1, "Source J + 0 \n" +
|
||||||
.append("Source J + 0 \n")
|
"------------------------------+-----------------------------+\n" +
|
||||||
.append("------------------------------+-----------------------------+\n")
|
"OpenMeteo | 07.60° 🌤 17.60km/h 151.00° 🡮| \n" +
|
||||||
.append("OpenMeteo | 07.60° 🌤 17.60km/h 151.00° 🡮| \n")
|
"------------------------------+-----------------------------+\n" +
|
||||||
.append("------------------------------+-----------------------------+\n")
|
"OpenWeatherMap | 13.41° 🌤 05.74km/h 142.13° 🡮| \n" +
|
||||||
.append("WeatherAPI | 08.10° 🌤 17.45km/h 142.08° 🡮| \n")
|
"------------------------------+-----------------------------+\n" +
|
||||||
.append("------------------------------+-----------------------------+\n")
|
"WeatherAPI | 08.10° 🌤 17.45km/h 142.08° 🡮| \n" +
|
||||||
.append("OpenWeatherMap | 13.41° 🌤 05.74km/h 142.13° 🡮| \n")
|
"------------------------------+-----------------------------+\n"
|
||||||
.append("------------------------------+-----------------------------+\n")
|
|
||||||
.toString()
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user