From 7739c622097568fb91d576dedf9bd1dd78b4d67f Mon Sep 17 00:00:00 2001 From: R0slyn <devnull@localhost> Date: Wed, 9 Nov 2016 17:35:21 +0000 Subject: [PATCH] removing log writer debug checks --- src/ac/ed/lurg/country/TradeManager.java | 112 +++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 src/ac/ed/lurg/country/TradeManager.java diff --git a/src/ac/ed/lurg/country/TradeManager.java b/src/ac/ed/lurg/country/TradeManager.java new file mode 100644 index 00000000..ac071eeb --- /dev/null +++ b/src/ac/ed/lurg/country/TradeManager.java @@ -0,0 +1,112 @@ +package ac.ed.lurg.country; + +import java.io.BufferedReader; +import java.io.FileReader; +import java.util.Map; +import java.util.Map.Entry; +import java.util.HashMap; + +import ac.ed.lurg.ModelConfig; +import ac.ed.lurg.types.CropType; +import ac.ed.lurg.utils.LogWriter; +import ac.ed.lurg.types.CropToDoubleMap; + + + +public class TradeManager { + + private static final int COUNTRY_COL = 0; + private static final int ITEM_COL = 1; + private static final int TRADE_BARRIER_COL = 2; + + private CompositeCountryManager compositeCountryManager; + private Map<CompositeCountry, CropToDoubleMap> tradeMap = new HashMap<CompositeCountry, CropToDoubleMap>(); + private boolean activeBarriers = ModelConfig.ACTIVE_TRADE_BARRIERS; + + + public TradeManager(CompositeCountryManager compositeCountryManager) { + this.compositeCountryManager = compositeCountryManager; + if(activeBarriers) + read(); + } + + public CropToDoubleMap getTradeBarriers(CompositeCountry cc){ + + if (tradeMap.get(cc) == null){ + + CropToDoubleMap tradeBarriers = new CropToDoubleMap(); + for (CropType c : CropType.getImportedTypes()) { + tradeBarriers.put(c, ModelConfig.TRADE_BARRIER_FACTOR_DEFAULT); + } + tradeMap.put(cc, tradeBarriers); + + } + + return tradeMap.get(cc); + } + + + public void read() { + String filename = ModelConfig.TRADE_BARRIERS_FILE; + + try { + BufferedReader reader = new BufferedReader(new FileReader(filename)); + String line, countryName, itemName; + double barrierValue; + reader.readLine(); // read header + + while ((line=reader.readLine()) != null) { + String[] tokens = line.split(","); + + if (tokens.length < 3) + LogWriter.printlnError("Too few columns in " + filename + ", " + line); + + try { + + countryName = tokens[COUNTRY_COL]; + itemName = tokens[ITEM_COL]; + barrierValue = Double.parseDouble(tokens[TRADE_BARRIER_COL]); + + SingleCountry country = CountryManager.getForName(countryName); + + CropType crop = CropType.getForFaoName(itemName); + + CompositeCountry cc = compositeCountryManager.getForSingleCountry(country); + + CropToDoubleMap countryData = tradeMap.get(cc); + + if (countryData == null) { + countryData = new CropToDoubleMap(); + tradeMap.put(cc, countryData); + + } + + countryData.incrementValue(crop, barrierValue); + + } catch (Exception e) { + LogWriter.printlnError("Failed in processing trade barriers line " + line); + LogWriter.print(e); + } + } + reader.close(); + + } catch (Exception e) { + LogWriter.printlnError("Failed in reading trade barriers data file"); + LogWriter.print(e); + } + LogWriter.println("Processed " + filename + ", create " + tradeMap.size() + " barriers entries"); + + for (Entry<CompositeCountry, CropToDoubleMap> entry : tradeMap.entrySet()) { + + // LogWriter.println("country name " + entry.getKey()); + // LogWriter.println("crops " + entry.getValue()); + + entry.getValue().divideBy(compositeCountryManager.getAllForCompositeCountry(entry.getKey()).size()); + +// LogWriter.println("number of countries " + compositeCountryManager.getAllForCompositeCountry(entry.getKey()).size()); +// LogWriter.println("crops " + entry.getValue()); + + } + } + +} -- GitLab