diff options
Diffstat (limited to 'src/io')
-rw-r--r-- | src/io/FileTweetReader.java | 16 | ||||
-rw-r--r-- | src/io/ITweetReader.java | 16 | ||||
-rw-r--r-- | src/io/TweetReader.java | 57 |
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) { + } + } +} |