summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-05-07 12:23:23 +0200
committerPeter Wu <peter@lekensteyn.nl>2014-05-07 12:23:23 +0200
commit489df8f0dd22043507299d02f934fe0213ca29e6 (patch)
treef09a5ae573c8c086abec8b942548533d812aa68c
parent6955aaa7c469878dc75fb80a036034eaef723e7d (diff)
downloadTwitterDataAnalytics-489df8f0dd22043507299d02f934fe0213ca29e6.tar.gz
Add flush command
-rw-r--r--src/io/DataWriter.java14
-rw-r--r--src/main/TweetShell.java7
-rw-r--r--src/provider/CompositeResultListener.java20
3 files changed, 39 insertions, 2 deletions
diff --git a/src/io/DataWriter.java b/src/io/DataWriter.java
index ec7a30e..4f4c022 100644
--- a/src/io/DataWriter.java
+++ b/src/io/DataWriter.java
@@ -5,6 +5,7 @@ import java.io.Closeable;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
+import java.io.Flushable;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -24,7 +25,7 @@ import provider.ResultListener;
*
* @author Maurice Laveaux
*/
-public class DataWriter implements ResultListener, Closeable {
+public class DataWriter implements ResultListener, Closeable, Flushable {
/**
* The writer for the tweet stream.
@@ -148,6 +149,11 @@ public class DataWriter implements ResultListener, Closeable {
return Logger.getLogger(getClass().getName());
}
+ @Override
+ public void flush() throws IOException {
+ m_tweet.flush();
+ }
+
abstract class Store {
private final String filename;
@@ -204,6 +210,12 @@ public class DataWriter implements ResultListener, Closeable {
* @throws IOException if no input file can be retrieved.
*/
abstract public InputStream getInputStream() throws IOException;
+
+ private void flush() throws IOException {
+ if (os != null) {
+ os.flush();
+ }
+ }
}
class SimpleFileStore extends Store {
diff --git a/src/main/TweetShell.java b/src/main/TweetShell.java
index 8b801ea..e8d387d 100644
--- a/src/main/TweetShell.java
+++ b/src/main/TweetShell.java
@@ -5,6 +5,7 @@ import io.DataWriter;
import io.OAuthRequester;
import io.StreamImpl;
import java.io.Closeable;
+import java.io.Flushable;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
@@ -195,6 +196,7 @@ public class TweetShell implements TwitterApi.PinSupplier {
keywords("Display currently active keywords"),
commit("Activate the stream or apply the stream keyword changes"),
status("Show some status and statistics"),
+ flush("Writes any pending buffers"),
close("Close the stream"),
exit("Returns to shell"),
help("Get help"),
@@ -306,6 +308,11 @@ public class TweetShell implements TwitterApi.PinSupplier {
System.out.println("Received tweets in session: " + tc.getTweetCount());
System.out.println("Unique users: " + tc.getUsers().size());
break;
+ case flush:
+ if (stream_cached != null) {
+ resultListeners.flush();
+ }
+ break;
case close:
safeClose();
break;
diff --git a/src/provider/CompositeResultListener.java b/src/provider/CompositeResultListener.java
index dc4a754..64a8a0b 100644
--- a/src/provider/CompositeResultListener.java
+++ b/src/provider/CompositeResultListener.java
@@ -1,8 +1,12 @@
package provider;
import java.io.Closeable;
+import java.io.Flushable;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.apache.commons.io.IOUtils;
import org.json.JSONObject;
@@ -11,7 +15,8 @@ import org.json.JSONObject;
*
* @author Peter Wu
*/
-public class CompositeResultListener implements ResultListener, Closeable {
+public class CompositeResultListener implements ResultListener, Closeable,
+ Flushable {
private final List<ResultListener> listeners;
@@ -55,4 +60,17 @@ public class CompositeResultListener implements ResultListener, Closeable {
}
}
}
+
+ public void flush() {
+ for (ResultListener rl : listeners) {
+ if (rl instanceof Flushable) {
+ try {
+ ((Flushable) rl).flush();
+ } catch (IOException ex) {
+ Logger.getLogger(rl.getClass().getName())
+ .log(Level.SEVERE, "flush", ex);
+ }
+ }
+ }
+ }
}