Switch person class usage of Origin class to Country class and use it for distance...
[Persons_Comparator.git] / src / Country.java
CommitLineData
9e603249
SP
1import java.io.File;
2import java.io.FileNotFoundException;
3import java.util.List;
4import java.util.Scanner;
5
3ae9566e
JB
6public class Country {
7 private String name;
3ae9566e 8 private String region;
f56708fa
SP
9 private double lat;
10 private double lng;
f710e396 11 private String flag;
9e603249 12 private String csvFile = "data/countries.csv";
3ae9566e 13
9f1e8999
JB
14 public Country() {
15 }
16
17 public Country(String name) {
18 setName(name);
19 initCountryFromCSV(name);
20 }
21
f710e396 22 public Country(String name, String region, double lat, double lng, String flag) {
f56708fa
SP
23 setName(name);
24 setRegion(region);
25 setLat(lat);
26 setLng(lng);
f710e396 27 setFlag(flag);
3ae9566e
JB
28 }
29
3ae9566e
JB
30 public void setName(String name) {
31 this.name = name;
32 }
33
822afd4f
SP
34 public String getName() {
35 return name;
36 }
37
3ae9566e
JB
38 public void setRegion(String region) {
39 this.region = region;
40 }
41
f56708fa
SP
42 public void setLat(double lat) {
43 this.lat = lat;
3ae9566e
JB
44 }
45
d8b03ca8
SP
46 public double getLat() {
47 return lat;
48 }
49
f56708fa
SP
50 public void setLng(double lng) {
51 this.lng = lng;
3ae9566e
JB
52 }
53
d8b03ca8
SP
54 public double getLng() {
55 return lng;
56 }
57
f710e396
SP
58 public void setFlag(String flag) {
59 this.flag = flag;
60 }
61
62 public String getFlag() {
63 return flag;
64 }
65
e16e3b15 66 public int distanceTo(Country country) {
9f1e8999 67 if ((this.getLat() == country.getLat()) && (this.getLng() == country.getLng())) {
e16e3b15
JB
68 return 0;
69 } else {
9f1e8999
JB
70 double theta = this.getLng() - country.getLng();
71 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));
e16e3b15
JB
72 dist = Math.acos(dist);
73 dist = Math.toDegrees(dist);
74 dist = dist * 60 * 1.1515;
75 // Kilometers
76 dist = dist * 1.609344;
77 return dist.intValue();
78 }
79 }
80
9f1e8999 81 private void initCountryFromCSV(String name) {
9e603249
SP
82 Scanner scanner = null;
83 try {
84 scanner = new Scanner(new File(csvFile));
85 } catch (FileNotFoundException e) {
86 e.printStackTrace();
87 }
88 while (scanner.hasNext()) {
89 List<String> line = CSVUtils.parseLine(scanner.nextLine());
90 String countryList = line.get(0);
91 String[] countryArray = countryList.split(",");
92 String latLng = line.get(16);
93 String[] latLngArray = latLng.split(",");
9e603249
SP
94 if (countryArray[1].equals(name)) {
95 setRegion(line.get(12));
96 setLat(Double.parseDouble(latLngArray[0]));
97 setLng(Double.parseDouble(latLngArray[1]));
98 }
99 }
100 scanner.close();
9e603249
SP
101 }
102
f56708fa
SP
103 @Override
104 public String toString() {
105 return "Country{" +
106 "name='" + name + '\'' +
107 ", region='" + region + '\'' +
108 ", lat=" + lat +
109 ", lng=" + lng +
f710e396 110 ", flag=" + flag +
f56708fa 111 '}';
3ae9566e
JB
112 }
113}