diff --git a/src/main/java/eirb/pg203/weather/display/WeatherDisplayBasic.java b/src/main/java/eirb/pg203/weather/display/WeatherDisplayBasic.java index 8a7d807..59fd5a3 100644 --- a/src/main/java/eirb/pg203/weather/display/WeatherDisplayBasic.java +++ b/src/main/java/eirb/pg203/weather/display/WeatherDisplayBasic.java @@ -3,6 +3,7 @@ package eirb.pg203.weather.display; import eirb.pg203.weather.exceptions.WeatherFetchingException; import eirb.pg203.weather.data.WeatherData; import eirb.pg203.weather.data.api.WeatherDataAPI; +import eirb.pg203.weather.utils.Pair; import java.util.ArrayList; 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 * @return day column size */ - private double getColumnSize(HashMap> weatherDataAPIArrayListHashMap) { + private double getColumnSize(ArrayList>> weatherDataAPIArrayListHashMap) { double max = 0; - for (WeatherDataAPI api: weatherDataAPIArrayListHashMap.keySet()) { - for (WeatherData w: weatherDataAPIArrayListHashMap.get(api)){ + for (Pair>api: weatherDataAPIArrayListHashMap) { + for (WeatherData w: api.getValue()){ // real str len with special chars int strLen = w.toString().codePointCount(0, w.toString().length()); 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 days number of days to display */ - private void displayAllWeatherDatas(HashMap> weatherDataAPIArrayListHashMap, int days) { + private void displayAllWeatherDatas(ArrayList>> weatherDataAPIArrayListHashMap, int days) { double dayColumnSize = this.getColumnSize(weatherDataAPIArrayListHashMap); // Adjust column size @@ -140,18 +141,19 @@ public class WeatherDisplayBasic implements eirb.pg203.weather.display.WeatherDi this.displaySeparatorLine(days, sourceColumnSize, dayColumnSizeSeparator); // Apis - for (WeatherDataAPI api: weatherDataAPIArrayListHashMap.keySet()) { - displayWeatherDatas(api.getAPIName(), weatherDataAPIArrayListHashMap.get(api), startColumnString, sourceColumnSize, dayColumnSize); + for (Pair> api: weatherDataAPIArrayListHashMap){ + + displayWeatherDatas(api.getKey().getAPIName(), api.getValue(), startColumnString, sourceColumnSize, dayColumnSize); this.displaySeparatorLine(days, sourceColumnSize, dayColumnSizeSeparator); } } public void display(int days, String city) { - HashMap> weatherDatasMap = new HashMap<>(); + ArrayList>> weatherDatasMap= new ArrayList<>(); for (WeatherDataAPI w: apis) { try { - weatherDatasMap.put(w, w.getTemperatures(days, city)); + weatherDatasMap.add(new Pair<>(w, w.getTemperatures(days, city))); } catch (WeatherFetchingException e) { System.err.println(w.getAPIName() + " failed to fetch meteo"); } diff --git a/src/test/java/eirb/pg203/weather/WeatherDisplayBasicTest.java b/src/test/java/eirb/pg203/weather/WeatherDisplayBasicTest.java index 69c2ea2..2768e3b 100644 --- a/src/test/java/eirb/pg203/weather/WeatherDisplayBasicTest.java +++ b/src/test/java/eirb/pg203/weather/WeatherDisplayBasicTest.java @@ -51,16 +51,14 @@ public class WeatherDisplayBasicTest { private static Stream display() { return Stream.of( - Arguments.arguments(1, new StringBuilder() - .append("Source J + 0 \n") - .append("------------------------------+-----------------------------+\n") - .append("OpenMeteo | 07.60° 🌤 17.60km/h 151.00° 🡮| \n") - .append("------------------------------+-----------------------------+\n") - .append("WeatherAPI | 08.10° 🌤 17.45km/h 142.08° 🡮| \n") - .append("------------------------------+-----------------------------+\n") - .append("OpenWeatherMap | 13.41° 🌤 05.74km/h 142.13° 🡮| \n") - .append("------------------------------+-----------------------------+\n") - .toString() + Arguments.arguments(1, "Source J + 0 \n" + + "------------------------------+-----------------------------+\n" + + "OpenMeteo | 07.60° 🌤 17.60km/h 151.00° 🡮| \n" + + "------------------------------+-----------------------------+\n" + + "OpenWeatherMap | 13.41° 🌤 05.74km/h 142.13° 🡮| \n" + + "------------------------------+-----------------------------+\n" + + "WeatherAPI | 08.10° 🌤 17.45km/h 142.08° 🡮| \n" + + "------------------------------+-----------------------------+\n" ) );