X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FCountry.java;h=3b8735dfce66161bbd3e5f82c6eef10be3e09edb;hb=99d1477f4f6b0797445fcacdab1440439a70e82f;hp=08c4da2a88fad39e7be1945a93f02bb4a998d7d1;hpb=6187b5ec050a664484d54283fd2612bfaf34cea3;p=Persons_Comparator.git diff --git a/src/Country.java b/src/Country.java index 08c4da2..3b8735d 100644 --- a/src/Country.java +++ b/src/Country.java @@ -1,247 +1,121 @@ -import java.util.ArrayList; +import java.io.File; +import java.io.FileNotFoundException; +import java.util.List; +import java.util.Scanner; public class Country { private String name; - ArrayList topLevelDomain = new ArrayList(); - private String alpha2Code; - private String alpha3Code; - ArrayList callingCodes = new ArrayList(); - private String capital; - ArrayList altSpellings = new ArrayList(); private String region; - private String subregion; - private float population; - ArrayList latlng = new ArrayList(); - private String demonym; - private float area; - private float gini; - ArrayList timezones = new ArrayList(); - ArrayList borders = new ArrayList(); - private String nativeName; - private String numericCode; - ArrayList currencies = new ArrayList(); - ArrayList languages = new ArrayList(); - Translations TranslationsObject; + private double lat; + private double lng; private String flag; - ArrayList regionalBlocs = new ArrayList(); - private String cioc; - - public class Translations { - private String de; - private String es; - private String fr; - private String ja; - private String it; - private String br; - private String pt; - private String nl; - private String hr; - - - // Getter Methods - - public String getDe() { - return de; - } - - public String getEs() { - return es; - } - - public String getFr() { - return fr; - } - - public String getJa() { - return ja; - } - - public String getIt() { - return it; - } - - public String getBr() { - return br; - } - - public String getPt() { - return pt; - } - - public String getNl() { - return nl; - } - - public String getHr() { - return hr; - } - - - - // Setter Methods - - public void setDe(String de) { - this.de = de; - } - - public void setEs(String es) { - this.es = es; - } - - public void setFr(String fr) { - this.fr = fr; - } - - public void setJa(String ja) { - this.ja = ja; - } - - public void setIt(String it) { - this.it = it; - } - - public void setBr(String br) { - this.br = br; - } - - public void setPt(String pt) { - this.pt = pt; - } - - public void setNl(String nl) { - this.nl = nl; - } - - public void setHr(String hr) { - this.hr = hr; - } - + private String csvFile = "data/countries.csv"; + public Country() { } - - // Getter Methods - - public String getName() { - return name; - } - - public String getAlpha2Code() { - return alpha2Code; - } - - public String getAlpha3Code() { - return alpha3Code; - } - - public String getCapital() { - return capital; - } - - public String getRegion() { - return region; - } - - public String getSubregion() { - return subregion; - } - - public float getPopulation() { - return population; - } - - public String getDemonym() { - return demonym; - } - - public float getArea() { - return area; - } - - public float getGini() { - return gini; - } - - public String getNativeName() { - return nativeName; - } - - public String getNumericCode() { - return numericCode; + public Country(String name) { + setName(name); + initCountryFromCSV(name); } - public Translations getTranslations() { - return TranslationsObject; + public Country(String name, String region, double lat, double lng, String flag) { + setName(name); + setRegion(region); + setLat(lat); + setLng(lng); + setFlag(flag); } - public String getFlag() { - return flag; - } - - public String getCioc() { - return cioc; + public String getName() { + return name; } - // Setter Methods - public void setName(String name) { this.name = name; } - public void setAlpha2Code(String alpha2Code) { - this.alpha2Code = alpha2Code; - } - - public void setAlpha3Code(String alpha3Code) { - this.alpha3Code = alpha3Code; - } - - public void setCapital(String capital) { - this.capital = capital; - } - public void setRegion(String region) { this.region = region; } - public void setSubregion(String subregion) { - this.subregion = subregion; - } - - public void setPopulation(float population) { - this.population = population; - } - - public void setDemonym(String demonym) { - this.demonym = demonym; + public double getLat() { + return lat; } - public void setArea(float area) { - this.area = area; + public void setLat(double lat) { + this.lat = lat; } - public void setGini(float gini) { - this.gini = gini; + public double getLng() { + return lng; } - public void setNativeName(String nativeName) { - this.nativeName = nativeName; + public void setLng(double lng) { + this.lng = lng; } - public void setNumericCode(String numericCode) { - this.numericCode = numericCode; - } - - public void setTranslations(Translations translationsObject) { - this.TranslationsObject = translationsObject; + public String getFlag() { + return flag; } public void setFlag(String flag) { this.flag = flag; } - public void setCioc(String cioc) { - this.cioc = cioc; + public int distanceTo(Country country) { + if ((this.getLat() == country.getLat()) && (this.getLng() == country.getLng())) { + return 0; + } else { + double theta = this.getLng() - country.getLng(); + Double dist = Math.sin(Math.toRadians(this.getLat())) * Math.sin(Math.toRadians(country.getLat())) + + Math.cos(Math.toRadians(this.getLat())) * Math.cos(Math.toRadians(country.getLat())) * + Math.cos(Math.toRadians(theta)); + dist = Math.acos(dist); + dist = Math.toDegrees(dist); + dist = dist * 60 * 1.1515; + // Kilometers + dist = dist * 1.609344; + return dist.intValue(); + } + } + + private void initCountryFromCSV(String name) { + Scanner scanner = null; + try { + scanner = new Scanner(new File(csvFile)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + boolean found = false; + while (scanner.hasNext()) { + List line = CSVUtils.parseLine(scanner.nextLine()); + String countryList = line.get(0); + String[] countryArray = countryList.split(","); + String latLng = line.get(16); + String[] latLngArray = latLng.split(","); + if (countryArray[0].equals(name)) { + found = true; + setRegion(line.get(12)); + setLat(Double.parseDouble(latLngArray[0])); + setLng(Double.parseDouble(latLngArray[1])); + setFlag(line.get(21)); + break; + } + } + if (!found) + System.out.println("Country " + name + " not found"); + scanner.close(); + } + + @Override + public String toString() { + return "Country{" + + "name='" + name + '\'' + + ", region='" + region + '\'' + + ", lat=" + lat + + ", lng=" + lng + + ", flag=" + flag + + '}'; } } -