AirTravelLookup/src/AirportData.java

92 lines
2.5 KiB
Java
Raw Normal View History

2015-11-16 12:17:19 +00:00
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
public class AirportData {
private ArrayList<Airport> airports = new ArrayList<>();
// Constructors
public AirportData() {
this("data/airports.dat");
}
public AirportData(String dataFile){
List<String[]> csvData = DataReader.readCSVFile(dataFile);
for (String[] row : csvData){
Airport airport = createAirport(row);
airports.add(airport);
}
}
//Accessors
2016-02-20 12:38:26 +00:00
public ArrayList<Airport> getAllAirports() {
2015-11-16 12:17:19 +00:00
return airports;
}
// Public methods
public Airport findAirportByName(String name){
2016-02-20 12:38:26 +00:00
for (Airport airport : this.airports){
if (airport.getName().contains(name)){
return airport;
}
}
2015-11-16 12:17:19 +00:00
return null;
}
public Airport findAirportByIATA(String iata){
2016-02-20 12:38:26 +00:00
for (Airport airport : this.airports){
if (iata.equals(airport.getName())){
return airport;
}
}
2015-11-16 12:17:19 +00:00
return null;
}
public Airport findAirportByICAO(String icao){
2016-02-20 12:38:26 +00:00
for (Airport airport : this.airports){
if (icao.equals(airport.getName())){
return airport;
}
}
2015-11-16 12:17:19 +00:00
return null;
}
public ArrayList<Airport> findAirportsByCity(String city) {
2016-02-20 12:38:26 +00:00
return airports.stream().filter(airport -> city.equals(airport.getCity())).
2015-11-16 12:17:19 +00:00
collect(Collectors.toCollection(ArrayList::new));
}
2016-02-20 12:38:26 +00:00
public ArrayList<Airport> findAirportsByCountry(String country){
return airports.stream().filter(airport -> country.equals(airport.getCountry())).
collect(Collectors.toCollection(ArrayList::new));
2015-11-16 12:17:19 +00:00
}
2016-02-20 12:38:26 +00:00
public void sortAirportsByCity(){
2015-11-16 12:17:19 +00:00
Collections.sort(this.airports);
}
// Private methods
private Airport createAirport(String[] row){
int ofid = Integer.parseInt(row[0]);
String name = row[1];
String city = row[2];
String country = row[3];
String iata = row[4];
String icao = row[5];
double lat = Double.parseDouble(row[6]);
double lon = Double.parseDouble(row[7]);
int alt = Integer.parseInt(row[8]);
float tzoffset = Float.parseFloat(row[9]);
char dst = row[10].charAt(0);
String tzolsen = row[11];
return new Airport(ofid, name, city, country, iata, icao, lat, lon, alt, tzoffset, dst, tzolsen);
}
}