summaryrefslogtreecommitdiff
path: root/src/main/java/com/benburwell/planes/data/CSVObjectStore.java
diff options
context:
space:
mode:
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;
+ }
+}