summaryrefslogtreecommitdiff
path: root/src/io
diff options
context:
space:
mode:
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) {
+ }
+ }
+}