summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2014-05-03 17:53:38 +0200
committerPeter Wu <peter@lekensteyn.nl>2014-05-03 17:53:38 +0200
commit7e1307259ef932fe8d8e4309ec288d3558fce79c (patch)
tree1e53f3d2ebef4c941d43a0f38b389fd16910c89d
parent141264abf87d338cc0199f1ef16d4d74abfb4b2e (diff)
downloadTwitterDataAnalytics-7e1307259ef932fe8d8e4309ec288d3558fce79c.tar.gz
DataWriter: better detect errors in reading data
Now print the faulty line and line number. Using BufferedReader instead of Scanner also gave me a hint of the error, so let's stick to it.
-rw-r--r--src/io/DataWriter.java19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/io/DataWriter.java b/src/io/DataWriter.java
index ebbd129..b4cf4d5 100644
--- a/src/io/DataWriter.java
+++ b/src/io/DataWriter.java
@@ -1,14 +1,15 @@
package io;
+import java.io.BufferedReader;
import java.io.Closeable;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.HashSet;
-import java.util.Scanner;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -114,21 +115,27 @@ public class DataWriter implements ResultListener, Closeable {
*/
private void readIds(Set<Long> idSet, Store store) throws IOException {
InputStream is = null;
+ String line = null;
+ long lineno = 1;
try {
is = store.getInputStream();
- Scanner reader = new Scanner(is);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(is));
// parse each line into a JSONObject, read the id and add it to
// the set of ids.
- while (reader.hasNext()) {
- JSONObject obj = new JSONObject(reader.nextLine());
+ while ((line = reader.readLine()) != null) {
+ JSONObject obj = new JSONObject(line);
long id = obj.getLong("id");
idSet.add(id);
+ lineno++;
}
} catch (FileNotFoundException ex) {
// ignore, file will be created if necessary.
- } catch (JSONException ex) {
+ } catch (JSONException | IOException ex) {
+ if (line != null) {
+ getLogger().log(Level.INFO, "Last line: " + line);
+ }
getLogger().log(Level.WARNING, store.getFileName()
- + ": Corrupt file?", ex);
+ + ": error occurred in file at line " + lineno, ex);
throw new IOException(ex);
} finally {
IOUtils.closeQuietly(is);