diff options
author | daniel oeh <daniel.oeh@gmail.com> | 2013-10-04 16:14:15 +0200 |
---|---|---|
committer | daniel oeh <daniel.oeh@gmail.com> | 2013-10-04 16:14:15 +0200 |
commit | 44e4924db9afd40c2bfb9515ec84f2d569b150e3 (patch) | |
tree | 41af7ea0589bdf19a51f77509fe45780a737d3a4 | |
parent | 7fcefdbbe76da22f1c35de34353fa18d05836298 (diff) | |
download | AntennaPod-44e4924db9afd40c2bfb9515ec84f2d569b150e3.zip |
Disable download log cleanup, handle media download before saving DownloadStatus
Might resolve problems with failed downloads being reported as successful
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/service/download/DownloadService.java | 13 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/storage/DBWriter.java | 2 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/storage/PodDBAdapter.java | 16 | ||||
-rw-r--r-- | src/de/danoeh/antennapod/util/DownloadError.java | 3 |
5 files changed, 19 insertions, 16 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 46a91a295..c0aa27776 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -104,6 +104,7 @@ <string name="download_error_malformed_url">Malformed URL</string> <string name="download_error_io_error">IO Error</string> <string name="download_error_request_error">Request error</string> + <string name="download_error_db_access">Database access error</string> <string name="downloads_left">\u0020Downloads left</string> <string name="download_notification_title">Downloading podcast data</string> <string name="download_report_content">%1$d downloads succeeded, %2$d failed</string> diff --git a/src/de/danoeh/antennapod/service/download/DownloadService.java b/src/de/danoeh/antennapod/service/download/DownloadService.java index 4040c85a8..c1af4ef19 100644 --- a/src/de/danoeh/antennapod/service/download/DownloadService.java +++ b/src/de/danoeh/antennapod/service/download/DownloadService.java @@ -827,23 +827,24 @@ public class DownloadService extends Service { } } - saveDownloadStatus(status); - sendDownloadHandledIntent(); - try { if (chaptersRead) { DBWriter.setFeedItem(DownloadService.this, media.getItem()).get(); } DBWriter.setFeedMedia(DownloadService.this, media).get(); + if (!DBTasks.isInQueue(DownloadService.this, media.getItem().getId())) { + DBWriter.addQueueItem(DownloadService.this, media.getItem().getId()).get(); + } } catch (ExecutionException e) { e.printStackTrace(); + status = new DownloadStatus(media, media.getEpisodeTitle(), DownloadError.ERROR_DB_ACCESS_ERROR, false, e.getMessage()); } catch (InterruptedException e) { e.printStackTrace(); + status = new DownloadStatus(media, media.getEpisodeTitle(), DownloadError.ERROR_DB_ACCESS_ERROR, false, e.getMessage()); } - if (!DBTasks.isInQueue(DownloadService.this, media.getItem().getId())) { - DBWriter.addQueueItem(DownloadService.this, media.getItem().getId()); - } + saveDownloadStatus(status); + sendDownloadHandledIntent(); numberOfDownloads.decrementAndGet(); queryDownloadsAsync(); diff --git a/src/de/danoeh/antennapod/storage/DBWriter.java b/src/de/danoeh/antennapod/storage/DBWriter.java index 9eb0ab643..490629b27 100644 --- a/src/de/danoeh/antennapod/storage/DBWriter.java +++ b/src/de/danoeh/antennapod/storage/DBWriter.java @@ -254,9 +254,7 @@ public class DBWriter { PodDBAdapter adapter = new PodDBAdapter(context); adapter.open(); - adapter.setDownloadStatus(status); - cleanupDownloadLog(adapter); adapter.close(); EventDistributor.getInstance().sendDownloadLogUpdateBroadcast(); } diff --git a/src/de/danoeh/antennapod/storage/PodDBAdapter.java b/src/de/danoeh/antennapod/storage/PodDBAdapter.java index e22fe56c9..2e2fa070c 100644 --- a/src/de/danoeh/antennapod/storage/PodDBAdapter.java +++ b/src/de/danoeh/antennapod/storage/PodDBAdapter.java @@ -558,23 +558,25 @@ public class PodDBAdapter { db.update(TABLE_NAME_DOWNLOAD_LOG, values, KEY_ID + "=?", new String[]{String.valueOf(status.getId())}); } - return status.getId(); } public long getDownloadLogSize() { - Cursor result = db.rawQuery("SELECT COUNT(?) AS ? FROM ?", - new String[]{KEY_ID, KEY_ID, TABLE_NAME_DOWNLOAD_LOG}); - long count = result.getLong(KEY_ID_INDEX); + final String query = String.format("SELECT COUNT(%s) FROM %s", KEY_ID, TABLE_NAME_DOWNLOAD_LOG); + Cursor result = db.rawQuery(query, null); + long count = 0; + if (result.moveToFirst()) { + count = result.getLong(0); + } result.close(); return count; } public void removeDownloadLogItems(long count) { if (count > 0) { - db.rawQuery("DELETE FROM ? ORDER BY ? ASC LIMIT ?", - new String[]{TABLE_NAME_DOWNLOAD_LOG, - KEY_COMPLETION_DATE, String.valueOf(count)}); + final String sql = String.format("DELETE FROM %s WHERE %s in (SELECT %s from %s ORDER BY %s ASC LIMIT %d)", + TABLE_NAME_DOWNLOAD_LOG, KEY_ID, KEY_ID, TABLE_NAME_DOWNLOAD_LOG, KEY_COMPLETION_DATE, count); + db.execSQL(sql, null); } } diff --git a/src/de/danoeh/antennapod/util/DownloadError.java b/src/de/danoeh/antennapod/util/DownloadError.java index c37a14584..f7a5c23fe 100644 --- a/src/de/danoeh/antennapod/util/DownloadError.java +++ b/src/de/danoeh/antennapod/util/DownloadError.java @@ -17,7 +17,8 @@ public enum DownloadError { ERROR_HTTP_DATA_ERROR(9, R.string.download_error_http_data_error), ERROR_NOT_ENOUGH_SPACE(10, R.string.download_error_insufficient_space), ERROR_UNKNOWN_HOST(11, R.string.download_error_unknown_host), - ERROR_REQUEST_ERROR(12, R.string.download_error_request_error); + ERROR_REQUEST_ERROR(12, R.string.download_error_request_error), + ERROR_DB_ACCESS_ERROR(13, R.string.download_error_db_access); private final int code; private final int resId; |