summaryrefslogtreecommitdiff
path: root/src/main/java/com/benburwell/planes/data/CSVObjectStore.java
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/CSVObjectStore.java
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/CSVObjectStore.java')
-rw-r--r--src/main/java/com/benburwell/planes/data/CSVObjectStore.java42
1 files changed, 42 insertions, 0 deletions
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;
+ }
+}