summaryrefslogtreecommitdiff
path: root/src/main/java/com/benburwell/planes/data
diff options
context:
space:
mode:
authorBen Burwell <ben.burwell@trifecta.com>2016-11-19 22:55:10 -0500
committerBen Burwell <ben.burwell@trifecta.com>2016-11-19 22:55:10 -0500
commita448320cc4661f9304a8323d6c0e05f1f0fee2b3 (patch)
tree274310efc18316c48e0911a428a0f0bce7899033 /src/main/java/com/benburwell/planes/data
parent70d15df43ea0d57c3fe237211098645733048c45 (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')
-rw-r--r--src/main/java/com/benburwell/planes/data/AbstractCSVReader.java10
-rw-r--r--src/main/java/com/benburwell/planes/data/Airport.java4
-rw-r--r--src/main/java/com/benburwell/planes/data/AirportStore.java30
-rw-r--r--src/main/java/com/benburwell/planes/data/CSVObjectStore.java42
-rw-r--r--src/main/java/com/benburwell/planes/data/NavigationAid.java4
-rw-r--r--src/main/java/com/benburwell/planes/data/NavigationAidStore.java30
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;
- }
-}