diff --git a/kyoto/pom.xml b/kyoto/pom.xml index 7997d6a3..b2ded774 100644 --- a/kyoto/pom.xml +++ b/kyoto/pom.xml @@ -9,7 +9,7 @@ UTF-8 - 0.3.2 + 0.3.3 diff --git a/kyoto/src/main/java/uk/ac/ic/kyoto/simulations/Simulation.java b/kyoto/src/main/java/uk/ac/ic/kyoto/simulations/Simulation.java index e698fd24..209a5e80 100644 --- a/kyoto/src/main/java/uk/ac/ic/kyoto/simulations/Simulation.java +++ b/kyoto/src/main/java/uk/ac/ic/kyoto/simulations/Simulation.java @@ -1,5 +1,11 @@ package uk.ac.ic.kyoto.simulations; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.Arrays; +import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -30,10 +36,7 @@ import uk.ac.ic.kyoto.services.ParticipantTimeService; import uk.ac.ic.kyoto.services.TradeHistoryService; import uk.ac.ic.kyoto.singletonfactory.SingletonProvider; -import uk.ac.ic.kyoto.util.sim.jsonobjects.DataProvider; -import uk.ac.ic.kyoto.util.sim.jsonobjects.JSONObjectContainer; import uk.ac.ic.kyoto.util.sim.jsonobjects.simulations.CountryData; -import uk.ac.ic.kyoto.util.sim.jsonobjects.simulations.SimulationData; import uk.ac.imperial.presage2.core.simulator.InjectedSimulation; import uk.ac.imperial.presage2.core.simulator.Parameter; import uk.ac.imperial.presage2.core.simulator.Scenario; @@ -46,6 +49,8 @@ public class Simulation extends InjectedSimulation { + final private Logger logger = Logger.getLogger(Simulation.class); + @Parameter(name="GROWTH_MARKET_STATE") public double GROWTH_MARKET_STATE; @Parameter(name="STABLE_MARKET_STATE") @@ -92,7 +97,10 @@ public class Simulation extends InjectedSimulation { public int MINIMUM_KYOTO_MEMBERSHIP_DURATION; @Parameter(name="TICK_YEAR") public int TICK_YEAR; + @Parameter(name="COUNTRIES") + public String COUNTRIES = ""; + String countryDataSource = "countrydata.csv"; @Override protected Set getModules() { @@ -158,18 +166,14 @@ public Simulation(Set modules) { protected void addToScenario(Scenario s) { // TODO Auto-generated method stub - //Something new - Logger logger = Logger.getLogger(Simulation.class); try{ - JSONObjectContainer obj = new DataProvider().getSimulationData(this.simPersist.getID()); + Map countries = getCountriesFromCSV(); - if(obj.getObject().getCountries() == null || obj.getObject().getCountries().isEmpty()){ + if(countries.isEmpty()){ //TODO uncomment for final code throw new NoCountryDataException(); //Commented out for now. - } + } else { - if(obj.getObject().getCountries() != null && !obj.getObject().getCountries().isEmpty()){ - Map countries = obj.getObject().getCountries(); for(String countryKey : countries.keySet()){ logger.info(countries.get(countryKey)); String className = countries.get(countryKey).getClassName(); @@ -251,4 +255,76 @@ protected void addToScenario(Scenario s) { } + + Map getCountriesFromCSV() + throws NoCountryDataException { + Map countriesData = new HashMap(); + // get set of ISO codes for countries to include in this simulation. + Set included = new HashSet(); + included.addAll(Arrays.asList(COUNTRIES.split(","))); + + InputStream is = null; + InputStreamReader isReader = null; + BufferedReader countryCsv = null; + try { + // attempt to load csv county data + is = this.getClass().getClassLoader() + .getResourceAsStream(this.countryDataSource); + isReader = new InputStreamReader(is); + countryCsv = new BufferedReader(isReader); + + // discard first line, just headings + countryCsv.readLine(); + + String line = null; + + do { + line = countryCsv.readLine(); + if (line != null) { + String[] values = line.split(","); + if (values.length != 10) { + logger.warn("Missing/malformed line in countrydata.csv: '" + + line + "'"); + continue; + } + // check ISO code to see if we should load this CountryData + if (!included.contains(values[2])) + continue; + CountryData c = new CountryData(); + c.setClassName(values[0]); + c.setName(values[1]); + c.setAgentName(values[1]); + c.setISO(values[2]); + c.setLandArea(values[3]); + c.setArableLandArea(values[4]); + c.setGDP(values[5]); + c.setGDPRate(values[6]); + c.setEnergyOutput(values[7]); + c.setCarbonOutput(values[8]); + c.setCarbonOutput1990(values[9]); + countriesData.put(c.getISO(), c); + } + } while (line != null); + + } catch (IOException e) { + throw new NoCountryDataException(); + } finally { + if (countryCsv != null) + try { + countryCsv.close(); + } catch (IOException e) { + } + if (isReader != null) + try { + isReader.close(); + } catch (IOException e) { + } + if (is != null) + try { + is.close(); + } catch (IOException e) { + } + } + return countriesData; + } } diff --git a/kyoto/src/main/java/uk/ac/ic/kyoto/util/sim/jsonobjects/simulations/CountryData.java b/kyoto/src/main/java/uk/ac/ic/kyoto/util/sim/jsonobjects/simulations/CountryData.java index 857e1efb..406c1856 100644 --- a/kyoto/src/main/java/uk/ac/ic/kyoto/util/sim/jsonobjects/simulations/CountryData.java +++ b/kyoto/src/main/java/uk/ac/ic/kyoto/util/sim/jsonobjects/simulations/CountryData.java @@ -26,6 +26,26 @@ public class CountryData{ private String energyOutput; private String carbonOutput; + public CountryData() { + super(); + } + + public CountryData(String className, String name, String iSO, String landArea, + String arableLandArea, String gDP, String gDPRate, + String energyOutput, String carbonOutput, String carbonOutput1990) { + super(); + this.className = className; + this.name = name; + ISO = iSO; + this.landArea = landArea; + this.arableLandArea = arableLandArea; + GDP = gDP; + GDPRate = gDPRate; + this.energyOutput = energyOutput; + this.carbonOutput = carbonOutput; + this.carbonOutput1990 = carbonOutput1990; + } + public String toString(){ String s = ""; s += " { \"Type\" : \"" + Type + "\""; diff --git a/kyoto/src/main/resources/countrydata.csv b/kyoto/src/main/resources/countrydata.csv new file mode 100644 index 00000000..83509c89 --- /dev/null +++ b/kyoto/src/main/resources/countrydata.csv @@ -0,0 +1,180 @@ +className,name,ISO,landArea,arableLandArea,GDP,GDPRate,energyOutput,carbonOutput,carbonOutput1990 +AnnexOneReduce,Australia,AUS,7682300,468503,360000000000.0,0.0555,369446401,346913000,287331000 +AnnexOneReduce,Austria,AUT,82445,13677,191000000000.0,0.0341,80287777,63549000,60960000 +AnnexOneReduce,Belgium,BEL,30278,8302,228000000000.0,0.017,156848781,119185000,108470000 +AnnexOneReduce,Croatia,HRV,55974,14566,21072021153.0,0.0278,23604756,20418000,16443000 +AnnexOneReduce,Denmark,DNK,42434,22295,148000000000.0,0.0181,62585625,56068000,50421000 +AnnexOneReduce,Finland,FIN,303815,19913,112000000000.0,0.0462,102738090,56989000,50942000 +AnnexOneReduce,France,FRA,640427,182711,1310000000000.0,0.0297,703718793,409094000,399028000 +AnnexOneReduce,Germany,DEU,348672,115698,1980000000000.0,0.0206,1031203645,895533000,928327000 +AnnexOneReduce,Greece,GRC,130647,26749,123000000000.0,0.0381,92858358,87810000,72724000 +AnnexOneReduce,Hungary,HUN,89608,45782,42041981950.0,0.0491,74645363,60854000,62992000 +AnnexOneReduce,Iceland,ISL,100250,70,6978804827.0,0.0692,6374764,2101000,2072000 +AnnexOneReduce,Ireland,IRL,68883,11587,80430419314.0,0.0749,45070638,38140000,30418000 +AnnexOneReduce,Italy,ITA,294140,77651,1090000000000.0,0.0122,472774575,441752000,424184000 +AnnexOneReduce,Japan,JPN,364485,43620,4010000000000.0,-0.017,1371922914,1159186000,1094706000 +AnnexOneReduce,Netherlands,NLD,33893,7441,360000000000.0,0.0361,186368204,175360000,164128000 +AnnexOneReduce,New Zealand,NZL,262443,14848,53201147777.0,0.0039,595073552,30058000,24023000 +AnnexOneReduce,Norway,NOR,304282,8312,130000000000.0,0.0269,179167683,34594000,31331000 +AnnexOneReduce,Portugal,PRT,91470,15898,107000000000.0,0.0417,59357939,58056000,43725000 +AnnexOneReduce,Slovenia,SVN,20151,1719,18806068172.0,0.0323,19016516,15522000,12970000 +AnnexOneReduce,Spain,ESP,498980,135776,548000000000.0,0.0426,354892484,274684000,227592000 +AnnexOneReduce,Sweden,SWE,410335,24368,223000000000.0,0.0377,147350016,54954000,51708000 +AnnexOneReduce,Switzerland,CHE,39997,3941,260000000000.0,0.0258,71553977,41914000,42966000 +AnnexOneReduce,Turkey,TUR,769632,229764,261000000000.0,0.0345,251083420,205422000,150791000 +AnnexOneReduce,United Kingdom,GBR,241930,56121,1300000000000.0,0.0385,611278440,554139000,570219000 +AnnexOneSustain,Belarus,BLR,202900,55575,13459157442.0,0.0684,60231120,57598000,87487000 +AnnexOneSustain,Bulgaria,BGR,108489,33099,11527834227.0,0.0526,60479429,50993000,77729000 +AnnexOneSustain,Czech Republic,CZE,77247,29999,56157542840.0,-0.0083,136930966,125525000,139504000 +AnnexOneSustain,Estonia,EST,42388,5207,4976131209.0,0.0623,18812170,17143000,23029000 +AnnexOneSustain,Latvia,LVA,62249,17926,5901334632.0,0.0496,8543268,7990000,14052000 +AnnexOneSustain,Lithuania,LTU,62680,29216,9865322750.0,0.0768,18459543,16197000,22152000 +AnnexOneSustain,Luxembourg,LUX,2586,619,17374068062.0,0.0611,7438082,7356000,9894000 +AnnexOneSustain,Poland,POL,304255,122547,154000000000.0,0.0486,752626615,326935000,366773000 +AnnexOneSustain,Romania,ROU,229891,90961,37374180233.0,-0.0523,103681000,103681000,158862000 +AnnexOneSustain,Russia,RUS,16377742,1218599,242000000000.0,-0.0481,1571812255,1511270000,2220721000 +AnnexOneSustain,Slovakia,SVK,48105,14264,20034616753.0,0.022,43230000,43230000,45647000 +AnnexOneSustain,Ukraine,UKR,579330,324791,35917739713.0,-0.0342,357907735,328637000,641681000 +AnnexOneSustain,Canada,CAN,9093507,415573,571000000000.0,0.0385,642229194,478881000,450077000 +NonAnnexOne,Albania,ALB,27398,5507,2550868201.0,0.0527,2291559,1753000,7488000 +NonAnnexOne,Algeria,DZA,2381741,75501,45557277077.0,0.0541,107167789,107080000,78896000 +NonAnnexOne,Angola,AGO,1246700,33038,6353998396.0,0.0758,28680881,7308000,4430000 +NonAnnexOne,Antigua and Barbuda,ATG,443,80,566962963.0,0.0597,359068,334000,301000 +NonAnnexOne,Argentina,ARG,2736690,274490,280000000000.0,0.0452,155291608,137674000,112614000 +NonAnnexOne,Armenia,ARM,28203,4766,1751787925.0,0.0516,3505577,3407000,3682000 +NonAnnexOne,Azerbaijan,AZE,82629,17754,4288293285.0,0.0502,36696190,31595000,44173000 +NonAnnexOne,Bahamas,BHS,10010,58,5271222913.0,0.0755,1920463,1793000,1951000 +NonAnnexOne,Bahrain,BHR,760,19,6892190977.0,0.0701,18405000,18405000,11885000 +NonAnnexOne,Bangladesh,BGD,130168,74173,41059359194.0,0.0534,52820157,24041000,15533000 +NonAnnexOne,Barbados,BRB,431,160,2265050000.0,0.0618,1332208,1140000,1074000 +NonAnnexOne,Belize,BLZ,22806,696,604200000.0,0.0341,405659,370000,312000 +NonAnnexOne,Benin,BEN,110622,26029,2302980052.0,0.0377,25087838,1214000,715000 +NonAnnexOne,Bhutan,BTN,38394,1081,357347686.0,0.0648,436866,385000,128000 +NonAnnexOne,Bolivia,BOL,1083301,30146,7688192379.0,0.0479,15365372,10326000,5504000 +NonAnnexOne,Bosnia and Herzegovina,BIH,51187,10026,3472692887.0,0.1637,17275381,16226000,3938000 +NonAnnexOne,Botswana,BWA,566730,3805,5181264021.0,0.1042,5803405,3832000,2178000 +NonAnnexOne,Brazil,BRA,8459417,586036,746000000000.0,0.0002,613292152,314013000,208887000 +NonAnnexOne,Brunei,BRN,5265,110,4050545679.0,-0.0058,5992634,5985000,6421000 +NonAnnexOne,Burkina Faso,BFA,273800,48353,2608266814.0,0.0781,996689,862000,587000 +NonAnnexOne,Burundi,BDI,25680,9124,1150043586.0,0.0382,342599,301000,304000 +NonAnnexOne,Cambodia,KHM,176515,36081,3004660731.0,0.0528,2612801,2233000,451000 +NonAnnexOne,Cameroon,CMR,472710,58868,9153580048.0,0.0489,17166804,3209000,1738000 +NonAnnexOne,Cape Verde,CPV,4033,460,498531194.0,0.0678,162501,154000,88000 +NonAnnexOne,Central African Republic,CAF,622984,19313,925029532.0,0.0489,284994,249000,198000 +NonAnnexOne,Chad,TCD,1259200,35258,1680363347.0,0.0657,124660,114000,147000 +NonAnnexOne,Chile,CHL,743812,19619,74507126524.0,0.0308,79079224,58987000,34903000 +NonAnnexOne,China,CHN,9569901,1385905,1020000000000.0,0.0772,4403586628,3324345000,2460744000 +NonAnnexOne,Colombia,COL,1038700,20878,114000000000.0,0.0051,97918267,65977000,57337000 +NonAnnexOne,Comoros,COM,1862,778,220721098.0,0.008,84815,73000,77000 +NonAnnexOne,Congo-Brazzaville,COG,341500,4952,1862525120.0,0.0331,6960898,777000,1188000 +NonAnnexOne,Congo-Kinshasa,COD,2267048,64853,6159656672.0,-0.0201,7228894,2534000,4070000 +NonAnnexOne,Costa Rica,CRI,51060,2229,13288447404.0,0.0838,10996630,5317000,2956000 +NonAnnexOne,Cuba,CUB,109820,30631,21184400000.0,-0.0101,43901236,24444000,33340000 +NonAnnexOne,Cyprus,CYP,9241,999,8806286089.0,0.0498,6671085,6641000,4653000 +NonAnnexOne,Djibouti,DJI,23180,9,440372269.0,0.0164,476825,411000,400000 +NonAnnexOne,Dominica,DMA,751,50,286018367.0,0.0406,84442,77000,59000 +NonAnnexOne,Dominican Republic,DOM,48320,10881,19060069618.0,0.0589,24958257,18683000,9571000 +NonAnnexOne,Ecuador,ECU,276841,15808,21628064000.0,0.013,28106916,22229000,16835000 +NonAnnexOne,Egypt,EGY,995450,29067,83112092779.0,0.0256,130053792,122243000,75944000 +NonAnnexOne,El Salvador,SLV,20721,6500,11672600000.0,0.0381,18488238,5812000,2618000 +NonAnnexOne,Equatorial Guinea,GNQ,28051,1299,421420756.0,0.1868,190056,169000,121000 +NonAnnexOne,Ethiopia,ETH,1000000,112080,7365633704.0,-0.0454,91784646,5027000,3018000 +NonAnnexOne,Fiji,FJI,18274,2001,1482000964.0,0.0172,855938,730000,818000 +NonAnnexOne,Gabon,GAB,257667,3118,4305619640.0,0.0136,5098255,1632000,4844000 +NonAnnexOne,Gambia,GMB,10000,2788,867566985.0,0.0338,271813,235000,191000 +NonAnnexOne,Georgia,GEO,69700,8022,3471318999.0,0.0421,5583545,4961000,15335000 +NonAnnexOne,Ghana,GHA,227533,40507,11123643892.0,0.0508,35150317,6410000,3931000 +NonAnnexOne,Grenada,GRD,344,20,321488889.0,0.1198,218790,191000,121000 +NonAnnexOne,Guatemala,GTM,107159,14334,17289952490.0,0.0509,31200999,8753000,5086000 +NonAnnexOne,Guinea,GIN,245717,10990,3548440585.0,0.0462,1310823,1243000,1056000 +NonAnnexOne,Guinea-Bissau,GNB,28120,2327,348843065.0,-0.27,227798,216000,253000 +NonAnnexOne,Guyana,GUY,196849,4390,1054664618.0,-0.0171,1912752,1654000,1140000 +NonAnnexOne,Haiti,HTI,27560,7747,3352660263.0,0.0283,6242962,1232000,994000 +NonAnnexOne,Honduras,HND,111890,10663,5759267721.0,0.0309,15491483,4650000,2593000 +NonAnnexOne,India,IND,2973193,1451809,400000000000.0,0.0658,1935771324,1071912000,690577000 +NonAnnexOne,Indonesia,IDN,1811569,201456,105000000000.0,-0.132,384452098,210211000,149566000 +NonAnnexOne,Iran,IRN,1531595,160001,103000000000.0,0.0285,319665750,316176000,227185000 +NonAnnexOne,Iraq,IRQ,437367,56700,10619633395.0,0.4319,73372841,72372000,52555000 +NonAnnexOne,Israel,ISR,20330,3141,98374111037.0,0.0631,64592480,62779000,33535000 +NonAnnexOne,Ivory Coast,CIV,318003,32531,11807744803.0,0.0571,29651174,6912000,5798000 +NonAnnexOne,Jamaica,JAM,10831,1715,8134640219.0,-0.0127,11774506,9729000,7965000 +NonAnnexOne,Jordan,JOR,88802,3053,6809093687.0,0.0362,14821315,14543000,10403000 +NonAnnexOne,Kazakhstan,KAZ,2699700,221059,20943718871.0,-0.0169,129034772,125063000,261307000 +NonAnnexOne,Kenya,KEN,569140,45597,12627598014.0,0.0371,57455364,10037000,5823000 +NonAnnexOne,Kiribati,KIR,811,22,63334088.0,0.1269,38050,33000,22000 +NonAnnexOne,Kuwait,KWT,17818,150,26933053643.0,0.0296,54882123,51089000,45423000 +NonAnnexOne,Kyrgyzstan,KGZ,191801,12530,1509043762.0,0.0108,6947811,5823000,10862000 +NonAnnexOne,Laos,LAO,230800,9255,1051099560.0,0.0522,895579,895000,235000 +NonAnnexOne,Lebanon,LBN,10230,1673,16909481257.0,0.0423,17718602,16179000,9098000 +NonAnnexOne,Liberia,LBR,96320,3304,386200000.0,0.3018,475736,389000,484000 +NonAnnexOne,Libya,LBY,1759540,18123,33381719193.0,0.0014,52012074,48133000,40319000 +NonAnnexOne,Macedonia,MKD,25433,5471,3181511574.0,0.0358,16651460,12625000,10777000 +NonAnnexOne,Madagascar,MDG,581540,29251,3481036735.0,0.0401,1947538,1738000,986000 +NonAnnexOne,Malawi,MWI,94080,19456,2438699777.0,0.0196,845882,829000,612000 +NonAnnexOne,Malaysia,MYS,329613,17939,78648278313.0,-0.0554,131991244,114187000,56593000 +NonAnnexOne,Maldives,MDV,298,40,509236177.0,0.0977,357867,334000,154000 +NonAnnexOne,Mali,MLI,1220190,45872,2688320677.0,0.079,582174,517000,422000 +NonAnnexOne,Malta,MLT,316,99,3439620560.0,0.063,2423728,2145000,2178000 +NonAnnexOne,Marshall Islands,MHL,181,20,101438240.0,-0.0293,77762,70000,48000 +NonAnnexOne,Mauritania,MRT,1030700,2061,1362933780.0,0.0235,1111000,1111000,2666000 +NonAnnexOne,Mauritius,MUS,2030,995,3686059996.0,0.0655,2405994,2197000,1463000 +NonAnnexOne,Mexico,MEX,1943945,243457,461000000000.0,0.0481,406289191,372167000,325604000 +NonAnnexOne,Moldova,MDA,32891,18194,1518316979.0,-0.0376,6652035,6271000,20972000 +NonAnnexOne,Mongolia,MNG,1553556,11887,1065751609.0,0.0302,8836341,7708000,10044000 +NonAnnexOne,Morocco,MAR,446300,84797,37179044119.0,0.0822,34564684,32039000,23542000 +NonAnnexOne,Mozambique,MOZ,786380,42576,3942114680.0,0.107,1168750,1133000,1001000 +NonAnnexOne,Myanmar,MMR,653508,98135,5925840636.0,0.0442,8611879,8078000,4276000 +NonAnnexOne,Namibia,NAM,823290,8172,3584817299.0,0.0317,36524097,1995000,7000 +NonAnnexOne,Nepal,NPL,143351,21984,4746361735.0,0.036,2387506,2252000,634000 +NonAnnexOne,Nicaragua,NIC,119990,17810,3236350099.0,0.0323,3566072,3421000,2644000 +NonAnnexOne,Niger,NER,1266700,144784,1912712274.0,0.1065,1603811,1074000,832000 +NonAnnexOne,Nigeria,NGA,910768,300736,33836780111.0,0.0294,141939111,40183000,45375000 +NonAnnexOne,North Korea,PRK,120408,26972,10283761860.0,-0.0148,72249156,64928000,244835000 +NonAnnexOne,Oman,OMN,309500,255,13948791459.0,0.0171,32109981,16667000,10352000 +NonAnnexOne,Pakistan,PAK,770876,190319,67167359184.0,0.0329,97663000,97663000,68566000 +NonAnnexOne,Palau,PLW,459,40,115091000.0,0.0162,222421,117000,235000 +NonAnnexOne,Panama,PAN,74340,5517,10531000000.0,0.0705,6571269,5948000,3135000 +NonAnnexOne,Papua New Guinea,PNG,452860,2219,3649450735.0,0.0522,4938364,2838000,2142000 +NonAnnexOne,Paraguay,PRY,397302,29678,7221739306.0,0.0073,4924681,4503000,2263000 +NonAnnexOne,Peru,PER,1279996,36864,51361433447.0,-0.0076,130316234,27807000,21170000 +NonAnnexOne,Philippines,PHL,298170,56652,72206940470.0,0.0003,119547922,75650000,44532000 +NonAnnexOne,Qatar,QAT,11586,188,10537362637.0,0.1178,40302250,32402000,11775000 +NonAnnexOne,Rwanda,RWA,24668,11366,1856411342.0,0.0985,687412,642000,682000 +NonAnnexOne,Saint Kitts and Nevis,KNA,261,51,258644444.0,0.0104,116084,103000,66000 +NonAnnexOne,Saint Lucia,LCA,606,39,590814815.0,0.0391,360964,308000,165000 +NonAnnexOne,Saint Vincent and the Grenadines,VCT,389,70,322924778.0,0.0463,192174,165000,81000 +NonAnnexOne,Samoa,WSM,2821,620,226933624.0,0.0229,153125,132000,125000 +NonAnnexOne,Sao Tome and Principe,STP,964,83,72858656.0,0.0219,89314,81000,66000 +NonAnnexOne,Saudi Arabia,SAU,2149690,32742,146000000000.0,0.0279,231419668,207288000,215055000 +NonAnnexOne,Senegal,SEN,192530,24019,4492803809.0,0.0542,3429703,3429000,3183000 +NonAnnexOne,Serbia and Montenegro,CS,101813,21086,16733463868.0,0.0007,124142832,53700000,45350000 +NonAnnexOne,Seychelles,SYC,455,10,642818532.0,0.1095,485410,440000,114000 +NonAnnexOne,Sierra Leone,SLE,71620,5694,955064160.0,-0.0262,660135,594000,389000 +NonAnnexOne,Singapore,SGP,687,10,80659456004.0,-0.0212,66600554,57293000,46941000 +NonAnnexOne,Solomon Islands,SLB,27986,171,340596748.0,0.0278,225886,161000,161000 +NonAnnexOne,Somalia,SOM,627337,10288,1996094358.0,0.0192,565232,517000,18000 +NonAnnexOne,South Africa,ZAF,1214470,147609,122000000000.0,0.0074,397161073,372219000,333514000 +NonAnnexOne,South Korea,KOR,96920,16280,325000000000.0,-0.0498,420203339,363840000,243815000 +NonAnnexOne,Sri Lanka,LKA,64630,9038,14480283732.0,0.0472,32193477,7763000,3773000 +NonAnnexOne,Sudan,SDN,2505800,161093,10392582815.0,0.0993,26919056,4697000,5559000 +NonAnnexOne,Suriname,SUR,156000,581,843733843.0,0.0307,2538415,2164000,1811000 +NonAnnexOne,Swaziland,SWZ,17204,1763,1361706209.0,0.024,1422460,1214000,425000 +NonAnnexOne,Syrian Arab Republic,SYR,183630,45644,17468375691.0,0.0679,64161446,62709000,37451000 +NonAnnexOne,Tajikistan,TJK,141510,9304,1155783316.0,0.0586,3501062,2497000,7220000 +NonAnnexOne,Thailand,THA,510890,140941,112000000000.0,-0.1051,292142578,186504000,95833000 +NonAnnexOne,Togo,TGO,54385,24038,1396908826.0,-0.0242,7741711,1166000,774000 +NonAnnexOne,Tonga,TON,717,144,168792157.0,0.0279,121231,110000,77000 +NonAnnexOne,Trinidad and Tobago,TTO,5128,750,5925560160.0,0.0736,19476454,19318000,16960000 +NonAnnexOne,Tunisia,TUN,155360,26489,19621088421.0,0.0485,20685933,18001000,13267000 +NonAnnexOne,Turkmenistan,TKM,469930,22013,2787051225.0,0.0896,29669141,26047000,28067000 +NonAnnexOne,Uganda,UGA,197100,43077,6396379843.0,0.0904,1519896,1338000,818000 +NonAnnexOne,United Arab Emirates,ARE,83600,638,78510108226.0,-0.0087,81495000,81495000,52009000 +NonAnnexOne,Uruguay,URY,175015,13490,23452931857.0,0.0499,9694907,5688000,3993000 +NonAnnexOne,Uzbekistan,UZB,425400,44710,12833935973.0,0.0396,118559221,117571000,114014000 +NonAnnexOne,Vanuatu,VUT,12189,200,244163350.0,0.0201,93736,84000,70000 +NonAnnexOne,Venezuela,VEN,882050,25138,86951227857.0,-0.001,182929844,167322000,122162000 +NonAnnexOne,Vietnam,VNM,310070,65528,27209526681.0,0.0576,235205031,47781000,21408000 +NonAnnexOne,Yemen,YEM,527968,15364,6738657410.0,0.0543,12587479,12200000,14382000 +NonAnnexOne,Zambia,ZMB,743398,51777,3034581154.0,-0.0131,14801362,2314000,2446000 +NonAnnexOne,Zimbabwe,ZWE,386847,31862,7614659228.0,-0.0072,31814816,14254000,15504000 +USAgent,United States,USA,9161966,1650062,8740000000000.0,0.0492,6304070667,5449078000,4879376000 diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/annex1reduce/AnnexOneReduceTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/annex1reduce/AnnexOneReduceTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/annex1reduce/AnnexOneReduceTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/annex1reduce/AnnexOneReduceTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/countries/AbstractCountryTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/countries/AbstractCountryTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/countries/AbstractCountryTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/countries/AbstractCountryTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/countries/CalculateGDPRateTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/countries/CalculateGDPRateTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/countries/CalculateGDPRateTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/countries/CalculateGDPRateTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/countries/CarbonAbsorptionHandlerTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/countries/CarbonAbsorptionHandlerTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/countries/CarbonAbsorptionHandlerTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/countries/CarbonAbsorptionHandlerTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/countries/IsolatedAbstractCountry.java b/kyoto/src/test/java/uk/ac/ic/kyoto/countries/IsolatedAbstractCountry.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/countries/IsolatedAbstractCountry.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/countries/IsolatedAbstractCountry.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/countries/IsolatedCarbonAbsorptionHandler.java b/kyoto/src/test/java/uk/ac/ic/kyoto/countries/IsolatedCarbonAbsorptionHandler.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/countries/IsolatedCarbonAbsorptionHandler.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/countries/IsolatedCarbonAbsorptionHandler.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/countries/IsolatedCarbonReductionHandler.java b/kyoto/src/test/java/uk/ac/ic/kyoto/countries/IsolatedCarbonReductionHandler.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/countries/IsolatedCarbonReductionHandler.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/countries/IsolatedCarbonReductionHandler.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/countries/IsolatedEnergyUsageHandler.java b/kyoto/src/test/java/uk/ac/ic/kyoto/countries/IsolatedEnergyUsageHandler.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/countries/IsolatedEnergyUsageHandler.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/countries/IsolatedEnergyUsageHandler.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/countries/TestCountry.java b/kyoto/src/test/java/uk/ac/ic/kyoto/countries/TestCountry.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/countries/TestCountry.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/countries/TestCountry.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/market/EconomyTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/market/EconomyTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/market/EconomyTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/market/EconomyTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/market/FossilPricesTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/market/FossilPricesTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/market/FossilPricesTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/market/FossilPricesTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/services/GlobalTimeServiceTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/services/GlobalTimeServiceTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/services/GlobalTimeServiceTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/services/GlobalTimeServiceTest.java diff --git a/kyoto/src/test/java/uk/ac/ic/kyoto/simulations/LoadCountryDataTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/simulations/LoadCountryDataTest.java new file mode 100644 index 00000000..3da1c91c --- /dev/null +++ b/kyoto/src/test/java/uk/ac/ic/kyoto/simulations/LoadCountryDataTest.java @@ -0,0 +1,117 @@ +package uk.ac.ic.kyoto.simulations; + +import static org.junit.Assert.*; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; + +import uk.ac.ic.kyoto.util.sim.jsonobjects.simulations.CountryData; + +import com.google.inject.AbstractModule; + +public class LoadCountryDataTest { + + Map sampleData; + + @Before + public void setUp() { + sampleData = new HashMap(); + sampleData.put("GBR", new CountryData("AnnexOneReduce", + "United Kingdom", "GBR", "241930", "56121", "1300000000000.0", + "0.0385", "611278440", "554139000", "570219000")); + sampleData.put("LVA", new CountryData("AnnexOneSustain", "Latvia", + "LVA", "62249", "17926", "5901334632.0", "0.0496", "8543268", + "7990000", "14052000")); + sampleData.put("BHR", new CountryData("NonAnnexOne", "Bahrain", "BHR", + "760", "19", "6892190977.0", "0.0701", "18405000", "18405000", + "11885000")); + sampleData.put("USA", new CountryData("USAgent", "United States", + "USA", "9161966", "1650062", "8740000000000.0", "0.0492", + "6304070667", "5449078000", "4879376000")); + } + + private void compareCountryData(CountryData c1, CountryData c2) { + assertEquals(c1.getClassName(), c2.getClassName()); + assertEquals(c1.getName(), c2.getName()); + assertEquals(c1.getISO(), c2.getISO()); + assertEquals(Integer.parseInt(c1.getLandArea()), + Integer.parseInt(c2.getLandArea())); + assertEquals(Integer.parseInt(c1.getArableLandArea()), + Integer.parseInt(c2.getArableLandArea())); + assertEquals(Double.parseDouble(c1.getGDP()), + Double.parseDouble(c2.getGDP()), 1E-5); + assertEquals(Double.parseDouble(c1.getGDPRate()), + Double.parseDouble(c2.getGDPRate()), 1E-5); + assertEquals(Long.parseLong(c1.getEnergyOutput()), + Long.parseLong(c2.getEnergyOutput())); + assertEquals(Long.parseLong(c1.getCarbonOutput()), + Long.parseLong(c2.getCarbonOutput())); + assertEquals(Long.parseLong(c1.getCarbonOutput1990()), + Long.parseLong(c2.getCarbonOutput1990())); + } + + @Test + public void testLoadCountries() { + Simulation sim = new Simulation(Collections. emptySet()); + sim.COUNTRIES = "LVA,GBR,BHR,USA"; + Map countries = sim.getCountriesFromCSV(); + + assertEquals(4, countries.size()); + assertTrue(countries.containsKey("LVA")); + compareCountryData(sampleData.get("LVA"), countries.get("LVA")); + assertTrue(countries.containsKey("GBR")); + compareCountryData(sampleData.get("GBR"), countries.get("GBR")); + assertTrue(countries.containsKey("BHR")); + compareCountryData(sampleData.get("BHR"), countries.get("BHR")); + assertTrue(countries.containsKey("USA")); + compareCountryData(sampleData.get("USA"), countries.get("USA")); + } + + @Test + public void testIgnoreUnknownCountries() { + Simulation sim = new Simulation(Collections. emptySet()); + sim.COUNTRIES = "LVA,ZZZ"; + Map countries = sim.getCountriesFromCSV(); + + assertEquals(1, countries.size()); + assertTrue(countries.containsKey("LVA")); + compareCountryData(sampleData.get("LVA"), countries.get("LVA")); + } + + @Test + public void testIgnoreDuplicateCountries() { + Simulation sim = new Simulation(Collections. emptySet()); + sim.COUNTRIES = "LVA,GBR,GBR,LVA"; + Map countries = sim.getCountriesFromCSV(); + + assertEquals(2, countries.size()); + assertTrue(countries.containsKey("LVA")); + compareCountryData(sampleData.get("LVA"), countries.get("LVA")); + assertTrue(countries.containsKey("GBR")); + compareCountryData(sampleData.get("GBR"), countries.get("GBR")); + } + + @Test + public void testZeroCountries() { + Simulation sim = new Simulation(Collections. emptySet()); + sim.COUNTRIES = ""; + Map countries = sim.getCountriesFromCSV(); + + assertTrue(countries.isEmpty()); + } + + @Test + public void testBadDataSource() { + Simulation sim = new Simulation(Collections. emptySet()); + sim.COUNTRIES = "LVA,GBR,BHR,USA"; + sim.countryDataSource = "nonexistantfile.csv"; + try { + sim.getCountriesFromCSV(); + fail(); + } catch(NullPointerException e) {} + } +} diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/trade/TradeProtocolTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/trade/TradeProtocolTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/trade/TradeProtocolTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/trade/TradeProtocolTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/trade/TradeTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/trade/TradeTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/trade/TradeTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/trade/TradeTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/trade/TradeTest2.java b/kyoto/src/test/java/uk/ac/ic/kyoto/trade/TradeTest2.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/trade/TradeTest2.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/trade/TradeTest2.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/tradehistory/AnalysisUtilsTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/tradehistory/AnalysisUtilsTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/tradehistory/AnalysisUtilsTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/tradehistory/AnalysisUtilsTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/tradehistory/SessionHistoryTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/tradehistory/SessionHistoryTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/tradehistory/SessionHistoryTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/tradehistory/SessionHistoryTest.java diff --git a/kyoto/src/main/test/uk/ac/ic/kyoto/tradehistory/TickHistoryTest.java b/kyoto/src/test/java/uk/ac/ic/kyoto/tradehistory/TickHistoryTest.java similarity index 100% rename from kyoto/src/main/test/uk/ac/ic/kyoto/tradehistory/TickHistoryTest.java rename to kyoto/src/test/java/uk/ac/ic/kyoto/tradehistory/TickHistoryTest.java diff --git a/kyoto/src/test/resources/countrydata.csv b/kyoto/src/test/resources/countrydata.csv new file mode 100644 index 00000000..83509c89 --- /dev/null +++ b/kyoto/src/test/resources/countrydata.csv @@ -0,0 +1,180 @@ +className,name,ISO,landArea,arableLandArea,GDP,GDPRate,energyOutput,carbonOutput,carbonOutput1990 +AnnexOneReduce,Australia,AUS,7682300,468503,360000000000.0,0.0555,369446401,346913000,287331000 +AnnexOneReduce,Austria,AUT,82445,13677,191000000000.0,0.0341,80287777,63549000,60960000 +AnnexOneReduce,Belgium,BEL,30278,8302,228000000000.0,0.017,156848781,119185000,108470000 +AnnexOneReduce,Croatia,HRV,55974,14566,21072021153.0,0.0278,23604756,20418000,16443000 +AnnexOneReduce,Denmark,DNK,42434,22295,148000000000.0,0.0181,62585625,56068000,50421000 +AnnexOneReduce,Finland,FIN,303815,19913,112000000000.0,0.0462,102738090,56989000,50942000 +AnnexOneReduce,France,FRA,640427,182711,1310000000000.0,0.0297,703718793,409094000,399028000 +AnnexOneReduce,Germany,DEU,348672,115698,1980000000000.0,0.0206,1031203645,895533000,928327000 +AnnexOneReduce,Greece,GRC,130647,26749,123000000000.0,0.0381,92858358,87810000,72724000 +AnnexOneReduce,Hungary,HUN,89608,45782,42041981950.0,0.0491,74645363,60854000,62992000 +AnnexOneReduce,Iceland,ISL,100250,70,6978804827.0,0.0692,6374764,2101000,2072000 +AnnexOneReduce,Ireland,IRL,68883,11587,80430419314.0,0.0749,45070638,38140000,30418000 +AnnexOneReduce,Italy,ITA,294140,77651,1090000000000.0,0.0122,472774575,441752000,424184000 +AnnexOneReduce,Japan,JPN,364485,43620,4010000000000.0,-0.017,1371922914,1159186000,1094706000 +AnnexOneReduce,Netherlands,NLD,33893,7441,360000000000.0,0.0361,186368204,175360000,164128000 +AnnexOneReduce,New Zealand,NZL,262443,14848,53201147777.0,0.0039,595073552,30058000,24023000 +AnnexOneReduce,Norway,NOR,304282,8312,130000000000.0,0.0269,179167683,34594000,31331000 +AnnexOneReduce,Portugal,PRT,91470,15898,107000000000.0,0.0417,59357939,58056000,43725000 +AnnexOneReduce,Slovenia,SVN,20151,1719,18806068172.0,0.0323,19016516,15522000,12970000 +AnnexOneReduce,Spain,ESP,498980,135776,548000000000.0,0.0426,354892484,274684000,227592000 +AnnexOneReduce,Sweden,SWE,410335,24368,223000000000.0,0.0377,147350016,54954000,51708000 +AnnexOneReduce,Switzerland,CHE,39997,3941,260000000000.0,0.0258,71553977,41914000,42966000 +AnnexOneReduce,Turkey,TUR,769632,229764,261000000000.0,0.0345,251083420,205422000,150791000 +AnnexOneReduce,United Kingdom,GBR,241930,56121,1300000000000.0,0.0385,611278440,554139000,570219000 +AnnexOneSustain,Belarus,BLR,202900,55575,13459157442.0,0.0684,60231120,57598000,87487000 +AnnexOneSustain,Bulgaria,BGR,108489,33099,11527834227.0,0.0526,60479429,50993000,77729000 +AnnexOneSustain,Czech Republic,CZE,77247,29999,56157542840.0,-0.0083,136930966,125525000,139504000 +AnnexOneSustain,Estonia,EST,42388,5207,4976131209.0,0.0623,18812170,17143000,23029000 +AnnexOneSustain,Latvia,LVA,62249,17926,5901334632.0,0.0496,8543268,7990000,14052000 +AnnexOneSustain,Lithuania,LTU,62680,29216,9865322750.0,0.0768,18459543,16197000,22152000 +AnnexOneSustain,Luxembourg,LUX,2586,619,17374068062.0,0.0611,7438082,7356000,9894000 +AnnexOneSustain,Poland,POL,304255,122547,154000000000.0,0.0486,752626615,326935000,366773000 +AnnexOneSustain,Romania,ROU,229891,90961,37374180233.0,-0.0523,103681000,103681000,158862000 +AnnexOneSustain,Russia,RUS,16377742,1218599,242000000000.0,-0.0481,1571812255,1511270000,2220721000 +AnnexOneSustain,Slovakia,SVK,48105,14264,20034616753.0,0.022,43230000,43230000,45647000 +AnnexOneSustain,Ukraine,UKR,579330,324791,35917739713.0,-0.0342,357907735,328637000,641681000 +AnnexOneSustain,Canada,CAN,9093507,415573,571000000000.0,0.0385,642229194,478881000,450077000 +NonAnnexOne,Albania,ALB,27398,5507,2550868201.0,0.0527,2291559,1753000,7488000 +NonAnnexOne,Algeria,DZA,2381741,75501,45557277077.0,0.0541,107167789,107080000,78896000 +NonAnnexOne,Angola,AGO,1246700,33038,6353998396.0,0.0758,28680881,7308000,4430000 +NonAnnexOne,Antigua and Barbuda,ATG,443,80,566962963.0,0.0597,359068,334000,301000 +NonAnnexOne,Argentina,ARG,2736690,274490,280000000000.0,0.0452,155291608,137674000,112614000 +NonAnnexOne,Armenia,ARM,28203,4766,1751787925.0,0.0516,3505577,3407000,3682000 +NonAnnexOne,Azerbaijan,AZE,82629,17754,4288293285.0,0.0502,36696190,31595000,44173000 +NonAnnexOne,Bahamas,BHS,10010,58,5271222913.0,0.0755,1920463,1793000,1951000 +NonAnnexOne,Bahrain,BHR,760,19,6892190977.0,0.0701,18405000,18405000,11885000 +NonAnnexOne,Bangladesh,BGD,130168,74173,41059359194.0,0.0534,52820157,24041000,15533000 +NonAnnexOne,Barbados,BRB,431,160,2265050000.0,0.0618,1332208,1140000,1074000 +NonAnnexOne,Belize,BLZ,22806,696,604200000.0,0.0341,405659,370000,312000 +NonAnnexOne,Benin,BEN,110622,26029,2302980052.0,0.0377,25087838,1214000,715000 +NonAnnexOne,Bhutan,BTN,38394,1081,357347686.0,0.0648,436866,385000,128000 +NonAnnexOne,Bolivia,BOL,1083301,30146,7688192379.0,0.0479,15365372,10326000,5504000 +NonAnnexOne,Bosnia and Herzegovina,BIH,51187,10026,3472692887.0,0.1637,17275381,16226000,3938000 +NonAnnexOne,Botswana,BWA,566730,3805,5181264021.0,0.1042,5803405,3832000,2178000 +NonAnnexOne,Brazil,BRA,8459417,586036,746000000000.0,0.0002,613292152,314013000,208887000 +NonAnnexOne,Brunei,BRN,5265,110,4050545679.0,-0.0058,5992634,5985000,6421000 +NonAnnexOne,Burkina Faso,BFA,273800,48353,2608266814.0,0.0781,996689,862000,587000 +NonAnnexOne,Burundi,BDI,25680,9124,1150043586.0,0.0382,342599,301000,304000 +NonAnnexOne,Cambodia,KHM,176515,36081,3004660731.0,0.0528,2612801,2233000,451000 +NonAnnexOne,Cameroon,CMR,472710,58868,9153580048.0,0.0489,17166804,3209000,1738000 +NonAnnexOne,Cape Verde,CPV,4033,460,498531194.0,0.0678,162501,154000,88000 +NonAnnexOne,Central African Republic,CAF,622984,19313,925029532.0,0.0489,284994,249000,198000 +NonAnnexOne,Chad,TCD,1259200,35258,1680363347.0,0.0657,124660,114000,147000 +NonAnnexOne,Chile,CHL,743812,19619,74507126524.0,0.0308,79079224,58987000,34903000 +NonAnnexOne,China,CHN,9569901,1385905,1020000000000.0,0.0772,4403586628,3324345000,2460744000 +NonAnnexOne,Colombia,COL,1038700,20878,114000000000.0,0.0051,97918267,65977000,57337000 +NonAnnexOne,Comoros,COM,1862,778,220721098.0,0.008,84815,73000,77000 +NonAnnexOne,Congo-Brazzaville,COG,341500,4952,1862525120.0,0.0331,6960898,777000,1188000 +NonAnnexOne,Congo-Kinshasa,COD,2267048,64853,6159656672.0,-0.0201,7228894,2534000,4070000 +NonAnnexOne,Costa Rica,CRI,51060,2229,13288447404.0,0.0838,10996630,5317000,2956000 +NonAnnexOne,Cuba,CUB,109820,30631,21184400000.0,-0.0101,43901236,24444000,33340000 +NonAnnexOne,Cyprus,CYP,9241,999,8806286089.0,0.0498,6671085,6641000,4653000 +NonAnnexOne,Djibouti,DJI,23180,9,440372269.0,0.0164,476825,411000,400000 +NonAnnexOne,Dominica,DMA,751,50,286018367.0,0.0406,84442,77000,59000 +NonAnnexOne,Dominican Republic,DOM,48320,10881,19060069618.0,0.0589,24958257,18683000,9571000 +NonAnnexOne,Ecuador,ECU,276841,15808,21628064000.0,0.013,28106916,22229000,16835000 +NonAnnexOne,Egypt,EGY,995450,29067,83112092779.0,0.0256,130053792,122243000,75944000 +NonAnnexOne,El Salvador,SLV,20721,6500,11672600000.0,0.0381,18488238,5812000,2618000 +NonAnnexOne,Equatorial Guinea,GNQ,28051,1299,421420756.0,0.1868,190056,169000,121000 +NonAnnexOne,Ethiopia,ETH,1000000,112080,7365633704.0,-0.0454,91784646,5027000,3018000 +NonAnnexOne,Fiji,FJI,18274,2001,1482000964.0,0.0172,855938,730000,818000 +NonAnnexOne,Gabon,GAB,257667,3118,4305619640.0,0.0136,5098255,1632000,4844000 +NonAnnexOne,Gambia,GMB,10000,2788,867566985.0,0.0338,271813,235000,191000 +NonAnnexOne,Georgia,GEO,69700,8022,3471318999.0,0.0421,5583545,4961000,15335000 +NonAnnexOne,Ghana,GHA,227533,40507,11123643892.0,0.0508,35150317,6410000,3931000 +NonAnnexOne,Grenada,GRD,344,20,321488889.0,0.1198,218790,191000,121000 +NonAnnexOne,Guatemala,GTM,107159,14334,17289952490.0,0.0509,31200999,8753000,5086000 +NonAnnexOne,Guinea,GIN,245717,10990,3548440585.0,0.0462,1310823,1243000,1056000 +NonAnnexOne,Guinea-Bissau,GNB,28120,2327,348843065.0,-0.27,227798,216000,253000 +NonAnnexOne,Guyana,GUY,196849,4390,1054664618.0,-0.0171,1912752,1654000,1140000 +NonAnnexOne,Haiti,HTI,27560,7747,3352660263.0,0.0283,6242962,1232000,994000 +NonAnnexOne,Honduras,HND,111890,10663,5759267721.0,0.0309,15491483,4650000,2593000 +NonAnnexOne,India,IND,2973193,1451809,400000000000.0,0.0658,1935771324,1071912000,690577000 +NonAnnexOne,Indonesia,IDN,1811569,201456,105000000000.0,-0.132,384452098,210211000,149566000 +NonAnnexOne,Iran,IRN,1531595,160001,103000000000.0,0.0285,319665750,316176000,227185000 +NonAnnexOne,Iraq,IRQ,437367,56700,10619633395.0,0.4319,73372841,72372000,52555000 +NonAnnexOne,Israel,ISR,20330,3141,98374111037.0,0.0631,64592480,62779000,33535000 +NonAnnexOne,Ivory Coast,CIV,318003,32531,11807744803.0,0.0571,29651174,6912000,5798000 +NonAnnexOne,Jamaica,JAM,10831,1715,8134640219.0,-0.0127,11774506,9729000,7965000 +NonAnnexOne,Jordan,JOR,88802,3053,6809093687.0,0.0362,14821315,14543000,10403000 +NonAnnexOne,Kazakhstan,KAZ,2699700,221059,20943718871.0,-0.0169,129034772,125063000,261307000 +NonAnnexOne,Kenya,KEN,569140,45597,12627598014.0,0.0371,57455364,10037000,5823000 +NonAnnexOne,Kiribati,KIR,811,22,63334088.0,0.1269,38050,33000,22000 +NonAnnexOne,Kuwait,KWT,17818,150,26933053643.0,0.0296,54882123,51089000,45423000 +NonAnnexOne,Kyrgyzstan,KGZ,191801,12530,1509043762.0,0.0108,6947811,5823000,10862000 +NonAnnexOne,Laos,LAO,230800,9255,1051099560.0,0.0522,895579,895000,235000 +NonAnnexOne,Lebanon,LBN,10230,1673,16909481257.0,0.0423,17718602,16179000,9098000 +NonAnnexOne,Liberia,LBR,96320,3304,386200000.0,0.3018,475736,389000,484000 +NonAnnexOne,Libya,LBY,1759540,18123,33381719193.0,0.0014,52012074,48133000,40319000 +NonAnnexOne,Macedonia,MKD,25433,5471,3181511574.0,0.0358,16651460,12625000,10777000 +NonAnnexOne,Madagascar,MDG,581540,29251,3481036735.0,0.0401,1947538,1738000,986000 +NonAnnexOne,Malawi,MWI,94080,19456,2438699777.0,0.0196,845882,829000,612000 +NonAnnexOne,Malaysia,MYS,329613,17939,78648278313.0,-0.0554,131991244,114187000,56593000 +NonAnnexOne,Maldives,MDV,298,40,509236177.0,0.0977,357867,334000,154000 +NonAnnexOne,Mali,MLI,1220190,45872,2688320677.0,0.079,582174,517000,422000 +NonAnnexOne,Malta,MLT,316,99,3439620560.0,0.063,2423728,2145000,2178000 +NonAnnexOne,Marshall Islands,MHL,181,20,101438240.0,-0.0293,77762,70000,48000 +NonAnnexOne,Mauritania,MRT,1030700,2061,1362933780.0,0.0235,1111000,1111000,2666000 +NonAnnexOne,Mauritius,MUS,2030,995,3686059996.0,0.0655,2405994,2197000,1463000 +NonAnnexOne,Mexico,MEX,1943945,243457,461000000000.0,0.0481,406289191,372167000,325604000 +NonAnnexOne,Moldova,MDA,32891,18194,1518316979.0,-0.0376,6652035,6271000,20972000 +NonAnnexOne,Mongolia,MNG,1553556,11887,1065751609.0,0.0302,8836341,7708000,10044000 +NonAnnexOne,Morocco,MAR,446300,84797,37179044119.0,0.0822,34564684,32039000,23542000 +NonAnnexOne,Mozambique,MOZ,786380,42576,3942114680.0,0.107,1168750,1133000,1001000 +NonAnnexOne,Myanmar,MMR,653508,98135,5925840636.0,0.0442,8611879,8078000,4276000 +NonAnnexOne,Namibia,NAM,823290,8172,3584817299.0,0.0317,36524097,1995000,7000 +NonAnnexOne,Nepal,NPL,143351,21984,4746361735.0,0.036,2387506,2252000,634000 +NonAnnexOne,Nicaragua,NIC,119990,17810,3236350099.0,0.0323,3566072,3421000,2644000 +NonAnnexOne,Niger,NER,1266700,144784,1912712274.0,0.1065,1603811,1074000,832000 +NonAnnexOne,Nigeria,NGA,910768,300736,33836780111.0,0.0294,141939111,40183000,45375000 +NonAnnexOne,North Korea,PRK,120408,26972,10283761860.0,-0.0148,72249156,64928000,244835000 +NonAnnexOne,Oman,OMN,309500,255,13948791459.0,0.0171,32109981,16667000,10352000 +NonAnnexOne,Pakistan,PAK,770876,190319,67167359184.0,0.0329,97663000,97663000,68566000 +NonAnnexOne,Palau,PLW,459,40,115091000.0,0.0162,222421,117000,235000 +NonAnnexOne,Panama,PAN,74340,5517,10531000000.0,0.0705,6571269,5948000,3135000 +NonAnnexOne,Papua New Guinea,PNG,452860,2219,3649450735.0,0.0522,4938364,2838000,2142000 +NonAnnexOne,Paraguay,PRY,397302,29678,7221739306.0,0.0073,4924681,4503000,2263000 +NonAnnexOne,Peru,PER,1279996,36864,51361433447.0,-0.0076,130316234,27807000,21170000 +NonAnnexOne,Philippines,PHL,298170,56652,72206940470.0,0.0003,119547922,75650000,44532000 +NonAnnexOne,Qatar,QAT,11586,188,10537362637.0,0.1178,40302250,32402000,11775000 +NonAnnexOne,Rwanda,RWA,24668,11366,1856411342.0,0.0985,687412,642000,682000 +NonAnnexOne,Saint Kitts and Nevis,KNA,261,51,258644444.0,0.0104,116084,103000,66000 +NonAnnexOne,Saint Lucia,LCA,606,39,590814815.0,0.0391,360964,308000,165000 +NonAnnexOne,Saint Vincent and the Grenadines,VCT,389,70,322924778.0,0.0463,192174,165000,81000 +NonAnnexOne,Samoa,WSM,2821,620,226933624.0,0.0229,153125,132000,125000 +NonAnnexOne,Sao Tome and Principe,STP,964,83,72858656.0,0.0219,89314,81000,66000 +NonAnnexOne,Saudi Arabia,SAU,2149690,32742,146000000000.0,0.0279,231419668,207288000,215055000 +NonAnnexOne,Senegal,SEN,192530,24019,4492803809.0,0.0542,3429703,3429000,3183000 +NonAnnexOne,Serbia and Montenegro,CS,101813,21086,16733463868.0,0.0007,124142832,53700000,45350000 +NonAnnexOne,Seychelles,SYC,455,10,642818532.0,0.1095,485410,440000,114000 +NonAnnexOne,Sierra Leone,SLE,71620,5694,955064160.0,-0.0262,660135,594000,389000 +NonAnnexOne,Singapore,SGP,687,10,80659456004.0,-0.0212,66600554,57293000,46941000 +NonAnnexOne,Solomon Islands,SLB,27986,171,340596748.0,0.0278,225886,161000,161000 +NonAnnexOne,Somalia,SOM,627337,10288,1996094358.0,0.0192,565232,517000,18000 +NonAnnexOne,South Africa,ZAF,1214470,147609,122000000000.0,0.0074,397161073,372219000,333514000 +NonAnnexOne,South Korea,KOR,96920,16280,325000000000.0,-0.0498,420203339,363840000,243815000 +NonAnnexOne,Sri Lanka,LKA,64630,9038,14480283732.0,0.0472,32193477,7763000,3773000 +NonAnnexOne,Sudan,SDN,2505800,161093,10392582815.0,0.0993,26919056,4697000,5559000 +NonAnnexOne,Suriname,SUR,156000,581,843733843.0,0.0307,2538415,2164000,1811000 +NonAnnexOne,Swaziland,SWZ,17204,1763,1361706209.0,0.024,1422460,1214000,425000 +NonAnnexOne,Syrian Arab Republic,SYR,183630,45644,17468375691.0,0.0679,64161446,62709000,37451000 +NonAnnexOne,Tajikistan,TJK,141510,9304,1155783316.0,0.0586,3501062,2497000,7220000 +NonAnnexOne,Thailand,THA,510890,140941,112000000000.0,-0.1051,292142578,186504000,95833000 +NonAnnexOne,Togo,TGO,54385,24038,1396908826.0,-0.0242,7741711,1166000,774000 +NonAnnexOne,Tonga,TON,717,144,168792157.0,0.0279,121231,110000,77000 +NonAnnexOne,Trinidad and Tobago,TTO,5128,750,5925560160.0,0.0736,19476454,19318000,16960000 +NonAnnexOne,Tunisia,TUN,155360,26489,19621088421.0,0.0485,20685933,18001000,13267000 +NonAnnexOne,Turkmenistan,TKM,469930,22013,2787051225.0,0.0896,29669141,26047000,28067000 +NonAnnexOne,Uganda,UGA,197100,43077,6396379843.0,0.0904,1519896,1338000,818000 +NonAnnexOne,United Arab Emirates,ARE,83600,638,78510108226.0,-0.0087,81495000,81495000,52009000 +NonAnnexOne,Uruguay,URY,175015,13490,23452931857.0,0.0499,9694907,5688000,3993000 +NonAnnexOne,Uzbekistan,UZB,425400,44710,12833935973.0,0.0396,118559221,117571000,114014000 +NonAnnexOne,Vanuatu,VUT,12189,200,244163350.0,0.0201,93736,84000,70000 +NonAnnexOne,Venezuela,VEN,882050,25138,86951227857.0,-0.001,182929844,167322000,122162000 +NonAnnexOne,Vietnam,VNM,310070,65528,27209526681.0,0.0576,235205031,47781000,21408000 +NonAnnexOne,Yemen,YEM,527968,15364,6738657410.0,0.0543,12587479,12200000,14382000 +NonAnnexOne,Zambia,ZMB,743398,51777,3034581154.0,-0.0131,14801362,2314000,2446000 +NonAnnexOne,Zimbabwe,ZWE,386847,31862,7614659228.0,-0.0072,31814816,14254000,15504000 +USAgent,United States,USA,9161966,1650062,8740000000000.0,0.0492,6304070667,5449078000,4879376000