summaryrefslogtreecommitdiff
path: root/src/io
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-05-08 19:05:36 +0200
committerPeter Wu <peter@lekensteyn.nl>2014-05-08 19:05:36 +0200
commit9fe9d1b848156928a0d3efde4fff80a78f1bf9e1 (patch)
treee1e987f71ecb90d513e994b9cc4f3aa6c3656bdb /src/io
parent5f892ac1e0fe6a21a00808cfb0afae2a2c2071dc (diff)
downloadDatafiller-9fe9d1b848156928a0d3efde4fff80a78f1bf9e1.tar.gz
Replace JSON by GSON, adding extra validations
Also change reader method, tweets are not received via an observed but by submitting from the caller. Added TODO WTF here and there, formatted with Alt + Shift + F.
Diffstat (limited to 'src/io')
-rw-r--r--src/io/FileTweetReader.java16
-rw-r--r--src/io/ITweetReader.java16
-rw-r--r--src/io/TweetReader.java57
3 files changed, 89 insertions, 0 deletions
diff --git a/src/io/FileTweetReader.java b/src/io/FileTweetReader.java
new file mode 100644
index 0000000..216cc26
--- /dev/null
+++ b/src/io/FileTweetReader.java
@@ -0,0 +1,16 @@
+package io;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+
+/**
+ * Reads tweets from file.
+ *
+ * @author Peter Wu
+ */
+public class FileTweetReader extends TweetReader {
+
+ public FileTweetReader(String filename) throws FileNotFoundException {
+ super(new FileInputStream(filename));
+ }
+}
diff --git a/src/io/ITweetReader.java b/src/io/ITweetReader.java
new file mode 100644
index 0000000..38dafbd
--- /dev/null
+++ b/src/io/ITweetReader.java
@@ -0,0 +1,16 @@
+package io;
+
+import data.Tweet;
+import java.io.IOException;
+
+/**
+ * Allow you to gather tweet object from some file.
+ *
+ * @author Peter Wu
+ */
+public interface ITweetReader {
+
+ public Tweet getTweet() throws IOException;
+
+ public void close();
+}
diff --git a/src/io/TweetReader.java b/src/io/TweetReader.java
new file mode 100644
index 0000000..d82978e
--- /dev/null
+++ b/src/io/TweetReader.java
@@ -0,0 +1,57 @@
+package io;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonSyntaxException;
+import data.Tweet;
+import data.ValidatingJsonDeserializer;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
+/**
+ * Reads tweets from an InputStream.
+ *
+ * @author Peter Wu
+ */
+public class TweetReader implements ITweetReader {
+
+ private final InputStream is;
+ private final BufferedReader reader;
+ private final Gson gson;
+
+ public TweetReader(InputStream is) {
+ if (is == null) {
+ throw new NullPointerException();
+ }
+ this.is = is;
+ reader = new BufferedReader(new InputStreamReader(is));
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ ValidatingJsonDeserializer.addValidation(gsonBuilder, Tweet.class);
+ gson = gsonBuilder.create();
+ }
+
+ @Override
+ public Tweet getTweet() throws IOException {
+ String line = reader.readLine();
+ Tweet tweet = null;
+ if (line != null) {
+ try {
+ tweet = gson.fromJson(line, Tweet.class);
+ } catch (JsonSyntaxException ex) {
+ // TODO: handle something?
+ throw ex;
+ }
+ }
+ return tweet;
+ }
+
+ @Override
+ public void close() {
+ try {
+ is.close();
+ } catch (IOException ex) {
+ }
+ }
+}