X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FCountry.java;h=8a41df6ad2281a454b63af19135e2c97aea4a3c4;hb=9f1e899962a92c9c1b8d3713eca0524964465014;hp=2516c2bfdc4172b41d9f5da9b4fc5fdb207bee7e;hpb=f710e396068ce8fb27e753a3e1be0b36430275b1;p=Persons_Comparator.git diff --git a/src/Country.java b/src/Country.java index 2516c2b..8a41df6 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); @@ -50,11 +64,11 @@ public class Country { } 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 +78,28 @@ public class Country { } } + private void initCountryFromCSV(String name) { + Scanner scanner = null; + try { + scanner = new Scanner(new File(csvFile)); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + 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[1].equals(name)) { + setRegion(line.get(12)); + setLat(Double.parseDouble(latLngArray[0])); + setLng(Double.parseDouble(latLngArray[1])); + } + } + scanner.close(); + } + @Override public String toString() { return "Country{" +