diff options
author | Ben Burwell <ben.burwell@trifecta.com> | 2016-11-19 22:55:10 -0500 |
---|---|---|
committer | Ben Burwell <ben.burwell@trifecta.com> | 2016-11-19 22:55:10 -0500 |
commit | a448320cc4661f9304a8323d6c0e05f1f0fee2b3 (patch) | |
tree | 274310efc18316c48e0911a428a0f0bce7899033 /src/main/java/com/benburwell/planes/data | |
parent | 70d15df43ea0d57c3fe237211098645733048c45 (diff) |
Use resources for data (for now)
At some point, it would be nice for this to be more configurable
Diffstat (limited to 'src/main/java/com/benburwell/planes/data')
6 files changed, 56 insertions, 64 deletions
diff --git a/src/main/java/com/benburwell/planes/data/AbstractCSVReader.java b/src/main/java/com/benburwell/planes/data/AbstractCSVReader.java new file mode 100644 index 0000000..66084ed --- /dev/null +++ b/src/main/java/com/benburwell/planes/data/AbstractCSVReader.java @@ -0,0 +1,10 @@ +package com.benburwell.planes.data; + +import org.apache.commons.csv.CSVRecord; + +/** + * Created by ben on 11/19/16. + */ +public abstract class AbstractCSVReader { + public abstract void readRecord(CSVRecord record); +} diff --git a/src/main/java/com/benburwell/planes/data/Airport.java b/src/main/java/com/benburwell/planes/data/Airport.java index 92e43bc..ab16248 100644 --- a/src/main/java/com/benburwell/planes/data/Airport.java +++ b/src/main/java/com/benburwell/planes/data/Airport.java @@ -5,7 +5,7 @@ import org.apache.commons.csv.CSVRecord; /** * Created by ben on 11/19/16. */ -public class Airport { +public class Airport extends AbstractCSVReader { private int id; private String ident; private String type; @@ -25,7 +25,7 @@ public class Airport { private String wikipediaLink; private String keywords; - public Airport(CSVRecord record) { + public void readRecord(CSVRecord record) { this.setId(Integer.valueOf(record.get("id"))); this.setIdent(record.get("ident")); this.setType(record.get("type")); diff --git a/src/main/java/com/benburwell/planes/data/AirportStore.java b/src/main/java/com/benburwell/planes/data/AirportStore.java deleted file mode 100644 index 93f1ccc..0000000 --- a/src/main/java/com/benburwell/planes/data/AirportStore.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.benburwell.planes.data; - -import org.apache.commons.csv.CSVFormat; -import org.apache.commons.csv.CSVParser; -import org.apache.commons.csv.CSVRecord; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.List; - -/** - * Created by ben on 11/19/16. - */ -public class AirportStore { - private List<Airport> airports = new ArrayList<>(); - - public void readFromFile(String filename) throws IOException { - File csvData = new File(filename); - CSVParser parser = CSVParser.parse(csvData, Charset.defaultCharset(), CSVFormat.RFC4180.withFirstRecordAsHeader()); - for (CSVRecord record : parser) { - this.airports.add(new Airport(record)); - } - } - - public List<Airport> getAirports() { - return this.airports; - } -} diff --git a/src/main/java/com/benburwell/planes/data/CSVObjectStore.java b/src/main/java/com/benburwell/planes/data/CSVObjectStore.java new file mode 100644 index 0000000..a92e0a2 --- /dev/null +++ b/src/main/java/com/benburwell/planes/data/CSVObjectStore.java @@ -0,0 +1,42 @@ +package com.benburwell.planes.data; + +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVParser; +import org.apache.commons.csv.CSVRecord; + +import java.io.*; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ben on 11/19/16. + */ +public class CSVObjectStore<T extends AbstractCSVReader> { + private List<T> objects = new ArrayList<>(); + + public void readFromFile(String fileName, Class<T> klass) throws IOException, IllegalAccessException, InstantiationException { + File csvData = new File(fileName); + CSVParser parser = CSVParser.parse(csvData, Charset.defaultCharset(), CSVFormat.RFC4180.withFirstRecordAsHeader()); + for (CSVRecord record : parser) { + T obj = klass.newInstance(); + obj.readRecord(record); + this.objects.add(obj); + } + } + + public void readFromResource(String resourceName, Class<T> klass) throws IOException, IllegalAccessException, InstantiationException { + InputStream stream = this.getClass().getResourceAsStream(resourceName); + Reader csvData = new BufferedReader(new InputStreamReader(stream)); + CSVParser parser = new CSVParser(csvData, CSVFormat.RFC4180.withFirstRecordAsHeader()); + for (CSVRecord record : parser) { + T obj = klass.newInstance(); + obj.readRecord(record); + this.objects.add(obj); + } + } + + public List<T> getObjects() { + return this.objects; + } +} diff --git a/src/main/java/com/benburwell/planes/data/NavigationAid.java b/src/main/java/com/benburwell/planes/data/NavigationAid.java index 85219ba..d730e7e 100644 --- a/src/main/java/com/benburwell/planes/data/NavigationAid.java +++ b/src/main/java/com/benburwell/planes/data/NavigationAid.java @@ -7,7 +7,7 @@ import org.apache.commons.csv.CSVRecord; * * Created by ben on 11/19/16. */ -public class NavigationAid { +public class NavigationAid extends AbstractCSVReader { private int id; private String filename; private String ident; @@ -29,7 +29,7 @@ public class NavigationAid { private String power; private String associatedAirport; - public NavigationAid(CSVRecord record) { + public void readRecord(CSVRecord record) { this.setId(Integer.valueOf(record.get("id"))); this.setFilename(record.get("filename")); this.setIdent(record.get("ident")); diff --git a/src/main/java/com/benburwell/planes/data/NavigationAidStore.java b/src/main/java/com/benburwell/planes/data/NavigationAidStore.java deleted file mode 100644 index 6f0ce9c..0000000 --- a/src/main/java/com/benburwell/planes/data/NavigationAidStore.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.benburwell.planes.data; - -import org.apache.commons.csv.CSVFormat; -import org.apache.commons.csv.CSVParser; -import org.apache.commons.csv.CSVRecord; - -import java.io.IOException; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.List; -import java.io.File; - -/** - * Created by ben on 11/19/16. - */ -public class NavigationAidStore { - private List<NavigationAid> aids = new ArrayList<>(); - - public void readFromFile(String fileName) throws IOException { - File csvData = new File(fileName); - CSVParser parser = CSVParser.parse(csvData, Charset.defaultCharset(), CSVFormat.RFC4180.withFirstRecordAsHeader()); - for (CSVRecord record : parser) { - this.aids.add(new NavigationAid(record)); - } - } - - public List<NavigationAid> getNavigationAids() { - return this.aids; - } -} |