X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FCountry.java;h=3b8735dfce66161bbd3e5f82c6eef10be3e09edb;hb=99d1477f4f6b0797445fcacdab1440439a70e82f;hp=2516c2bfdc4172b41d9f5da9b4fc5fdb207bee7e;hpb=f710e396068ce8fb27e753a3e1be0b36430275b1;p=Persons_Comparator.git diff --git a/src/Country.java b/src/Country.java index 2516c2b..3b8735d 100644 --- a/src/Country.java +++ b/src/Country.java @@ -1,9 +1,23 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.util.List; +import java.util.Scanner; + public class Country { private String name; private String region; private double lat; private double lng; private String flag; + private String csvFile = "data/countries.csv"; + + public Country() { + } + + public Country(String name) { + setName(name); + initCountryFromCSV(name); + } public Country(String name, String region, double lat, double lng, String flag) { setName(name); @@ -13,48 +27,50 @@ public class Country { setFlag(flag); } - public void setName(String name) { - this.name = name; - } - public String getName() { return name; } - public void setRegion(String region) { - this.region = region; + public void setName(String name) { + this.name = name; } - public void setLat(double lat) { - this.lat = lat; + public void setRegion(String region) { + this.region = region; } public double getLat() { return lat; } - public void setLng(double lng) { - this.lng = lng; + public void setLat(double lat) { + this.lat = lat; } public double getLng() { return lng; } - public void setFlag(String flag) { - this.flag = flag; + public void setLng(double lng) { + this.lng = lng; } public String getFlag() { return flag; } + public void setFlag(String flag) { + this.flag = flag; + } + public int distanceTo(Country country) { - if ((this.lat == country.lat) && (this.lng == country.lng)) { + if ((this.getLat() == country.getLat()) && (this.getLng() == country.getLng())) { return 0; } else { - double theta = this.lng - country.lng; - Double dist = Math.sin(Math.toRadians(this.lat)) * Math.sin(Math.toRadians(country.lat)) + Math.cos(Math.toRadians(this.lat)) * Math.cos(Math.toRadians(country.lat)) * Math.cos(Math.toRadians(theta)); + 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; @@ -64,6 +80,34 @@ public class Country { } } + 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{" +