From eb3bafa3f6bf4590415fd26784f6df5193b1f99a Mon Sep 17 00:00:00 2001 From: Peter Alexander <> Date: Fri, 5 Aug 2022 17:00:43 +0100 Subject: [PATCH] Null checks on country groups --- src/ac/ed/lurg/country/CompositeCountryManager.java | 7 +++++-- src/ac/ed/lurg/demand/BaseConsumpManager.java | 13 ++----------- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/ac/ed/lurg/country/CompositeCountryManager.java b/src/ac/ed/lurg/country/CompositeCountryManager.java index a69be51d..9a68380a 100644 --- a/src/ac/ed/lurg/country/CompositeCountryManager.java +++ b/src/ac/ed/lurg/country/CompositeCountryManager.java @@ -58,7 +58,7 @@ public class CompositeCountryManager { continue; else if (ModelConfig.PREDEFINED_COUNTRY_GROUPING) cc = getForName(getCountryGroup(c),c.getRegion()); - else if (baseConsumpManager.getPopForGrouping(c) < ModelConfig.POPULATION_AGGREG_LIMIT) + else if (baseConsumpManager.getBasePopulation(c) < ModelConfig.POPULATION_AGGREG_LIMIT) cc = getForName(c.getRegion() + "_other", c.getRegion()); else cc = getForName(c.getCountryName(),c.getRegion()); @@ -71,8 +71,11 @@ public class CompositeCountryManager { } private CompositeCountry getForName(String name, String region) { - CompositeCountry cc = mapFromName.get(name); + if (name == null) + return null; + CompositeCountry cc = mapFromName.get(name); + if (cc == null) { cc = new CompositeCountry(name, region); mapFromName.put(name, cc); diff --git a/src/ac/ed/lurg/demand/BaseConsumpManager.java b/src/ac/ed/lurg/demand/BaseConsumpManager.java index b768c741..0369f01a 100644 --- a/src/ac/ed/lurg/demand/BaseConsumpManager.java +++ b/src/ac/ed/lurg/demand/BaseConsumpManager.java @@ -17,12 +17,10 @@ public class BaseConsumpManager { private static final int BASE_POP_COL = 1; private static final int COMMODITY_COL = 2; private static final int BASE_CPC_COL = 3; - private static final int POP_FOR_GROUPING_COL = 4; private Map<SingleCountry, Map<CommodityType, Double>> baseConsumpMap = new HashMap<SingleCountry, Map<CommodityType, Double>>(); // Don't like the duplication of population in this base consumption file, but guess not really a problem private Map<SingleCountry, Double> basePop = new HashMap<SingleCountry, Double>(); - private Map<SingleCountry, Double> popForGroupingMap = new HashMap<SingleCountry, Double>(); public BaseConsumpManager() { super(); @@ -34,7 +32,7 @@ public class BaseConsumpManager { try { BufferedReader fitReader = new BufferedReader(new FileReader(filename)); String line, countryName, commodityName; - double pop, cpc, popForGrouping; + double pop, cpc; fitReader.readLine(); // read header while ((line=fitReader.readLine()) != null) { @@ -47,7 +45,6 @@ public class BaseConsumpManager { pop = Double.parseDouble(tokens[BASE_POP_COL]); commodityName = tokens[COMMODITY_COL]; cpc = Double.parseDouble(tokens[BASE_CPC_COL]); - popForGrouping = Double.parseDouble(tokens[POP_FOR_GROUPING_COL]); SingleCountry country = CountryManager.getForName(countryName); if (country == null) @@ -63,7 +60,6 @@ public class BaseConsumpManager { commodityMap.put(commodity, cpc); basePop.put(country, pop); - popForGroupingMap.put(country, popForGrouping); } } fitReader.close(); @@ -92,12 +88,7 @@ public class BaseConsumpManager { Double d = basePop.get(country); return (d != null) ? d.doubleValue() : Double.NaN; } - - public double getPopForGrouping(SingleCountry country) { - Double d = popForGroupingMap.get(country); - return (d != null) ? d.doubleValue() : Double.NaN; - } - + public Collection<SingleCountry> getAllCountries() { return basePop.keySet(); } -- GitLab