diff options
author | Peter Wu <peter@lekensteyn.nl> | 2014-06-11 13:46:17 +0200 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2014-06-11 13:46:17 +0200 |
commit | 761c4164faac35fc34ade62ca7654573f2c07835 (patch) | |
tree | c5bc92ce4a6a581da389e0f9bd2a07b9c9e5e384 /src/database/BrandAnalyzerInserter.java | |
parent | 36055c51726264c43110c2225ba9bdc2fdcce5f2 (diff) | |
download | Goldfarmer-761c4164faac35fc34ade62ca7654573f2c07835.tar.gz |
Commit results early to avoid data loss on abort
Diffstat (limited to 'src/database/BrandAnalyzerInserter.java')
-rw-r--r-- | src/database/BrandAnalyzerInserter.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/database/BrandAnalyzerInserter.java b/src/database/BrandAnalyzerInserter.java index f7ed62c..d42dac2 100644 --- a/src/database/BrandAnalyzerInserter.java +++ b/src/database/BrandAnalyzerInserter.java @@ -13,22 +13,34 @@ import main.Watcher; public class BrandAnalyzerInserter implements Callable<Integer>, Watcher.Progressable { + private final Connection connection; private final BrandAnalyzerQueue analyzer; private final NamedPreparedStatement insertBrand; private volatile int count; public BrandAnalyzerInserter(Connection connection, BrandAnalyzerQueue analyzer) throws SQLException { + this.connection = connection; this.analyzer = analyzer; this.insertBrand = new NamedPreparedStatement(connection, "INSERT INTO mentionsbrand" + " SELECT :tweetid AS tweetid, :brand AS brand" + " WHERE NOT EXISTS (SELECT 1 FROM mentionsbrand WHERE" + " tweetid=:tweetid AND brand=:brand)"); + connection.setAutoCommit(false); } @Override public Integer call() throws SQLException { + try { + runInserter(); + } finally { + connection.close(); + } + return count; + } + + private void runInserter() throws SQLException { BrandAnalyzerQueue.Result result; while ((result = analyzer.next()) != null) { for (String brand : result.brands) { @@ -37,8 +49,11 @@ public class BrandAnalyzerInserter implements Callable<Integer>, } count++; + // save results every 1000 analyses + if (count % 1000 == 0) { + connection.commit(); + } } - return count; } @Override |