From 56c95740dfde39825720a964468c2086c76e8f30 Mon Sep 17 00:00:00 2001 From: seven332 Date: Sat, 20 Feb 2016 16:18:34 +0800 Subject: [PATCH] Fix removing failed image --- .../com/hippo/ehviewer/spider/SpiderDen.java | 27 ++++++++++++------- .../com/hippo/ehviewer/spider/SpiderInfo.java | 2 +- .../hippo/ehviewer/spider/SpiderQueen.java | 19 ++++++++----- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java index fd2e0fd63..f66f76cfa 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderDen.java @@ -77,6 +77,7 @@ public final class SpiderDen { return mDownloadDir != null && mDownloadDir.ensureDir(); } + @Nullable public UniFile getDownloadDir() { return mDownloadDir != null && mDownloadDir.isDirectory() ? mDownloadDir : null; } @@ -97,6 +98,7 @@ public final class SpiderDen { return String.format(Locale.US, "%08d%s", index + 1, extension); } + @Nullable private static UniFile findImageFile(UniFile dir, int index) { for (String extension : GalleryProvider.SUPPORT_IMAGE_EXTENSIONS) { String filename = generateImageFilename(index, extension); @@ -188,35 +190,39 @@ public final class SpiderDen { } } - private void removeFromCache(int index) { + private boolean removeFromCache(int index) { if (sCache == null) { - return; + return false; } String key = EhCacheKeyFactory.getImageKey(mGid, index); - sCache.remove(key); + return sCache.remove(key); } - private void removeFromDownloadDir(int index) { + private boolean removeFromDownloadDir(int index) { UniFile dir = getDownloadDir(); if (dir == null) { - return; + return false; } + boolean result = false; for (int i = 0, n = GalleryProvider.SUPPORT_IMAGE_EXTENSIONS.length; i < n; i++) { String filename = generateImageFilename(index, GalleryProvider.SUPPORT_IMAGE_EXTENSIONS[i]); UniFile file = dir.subFile(filename); if (file != null) { - file.delete(); + result |= file.delete(); } } + return result; } - public void remove(int index) { - removeFromCache(index); - removeFromDownloadDir(index); + public boolean remove(int index) { + boolean result = removeFromCache(index); + result |= removeFromDownloadDir(index); + return result; } + @Nullable private OutputStreamPipe openCacheOutputStreamPipe(int index) { if (sCache == null) { return null; @@ -229,6 +235,7 @@ public final class SpiderDen { /** * @param extension without dot */ + @Nullable private OutputStreamPipe openDownloadOutputStreamPipe(int index, @Nullable String extension) { UniFile dir = getDownloadDir(); if (dir == null) { @@ -256,6 +263,7 @@ public final class SpiderDen { } + @Nullable private InputStreamPipe openCacheInputStreamPipe(int index) { if (sCache == null) { return null; @@ -265,6 +273,7 @@ public final class SpiderDen { return sCache.getInputStreamPipe(key); } + @Nullable public InputStreamPipe openDownloadInputStreamPipe(int index) { UniFile dir = getDownloadDir(); if (dir == null) { diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderInfo.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderInfo.java index 8f14958f1..bffd5a9d5 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderInfo.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderInfo.java @@ -86,7 +86,7 @@ public class SpiderInfo { } } } catch (IOException | NumberFormatException e) { - e.printStackTrace(); + // Ignore } finally { IOUtils.closeQuietly(is); } diff --git a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java index db6077400..e4978dd92 100644 --- a/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java +++ b/app/src/main/java/com/hippo/ehviewer/spider/SpiderQueen.java @@ -454,9 +454,6 @@ public class SpiderQueen implements Runnable { UniFile downloadDir = mSpiderDen.getDownloadDir(); if (downloadDir != null) { UniFile file = downloadDir.findFile(SPIDER_INFO_FILENAME); - - Log.d("TAG", "file = " + file); - SpiderInfo spiderInfo = SpiderInfo.readFromUniFile(file); if (spiderInfo != null && spiderInfo.gid == mGalleryInfo.gid && spiderInfo.token.equals(mGalleryInfo.token)) { @@ -771,11 +768,10 @@ public class SpiderQueen implements Runnable { private GalleryPageParser.Result getImageUrl(int gid, int index, String pToken, String skipHathKey) throws IOException, ParseException, Image509Exception { String url = EhUrl.getPageUrl(gid, index, pToken); - Log.d(TAG, url); if (skipHathKey != null) { url = url + "?nl=" + skipHathKey; } - + Log.d(TAG, url); Response response = mHttpClient.newCall(new EhRequestBuilder(url).build()).execute(); String body = response.body().string(); GalleryPageParser.Result result = GalleryPageParser.parse(body); @@ -837,6 +833,8 @@ public class SpiderQueen implements Runnable { // Download image InputStream is = null; try { + Log.d(TAG, "Start download image " + index); + Response response = mHttpClient.newCall(new EhRequestBuilder(imageUrl).build()).execute(); ResponseBody responseBody = response.body(); long contentLength = responseBody.contentLength(); @@ -863,13 +861,14 @@ public class SpiderQueen implements Runnable { } os.flush(); - // Check interrupted, download may be stopped by interrupting + // Check interrupted if (Thread.currentThread().isInterrupted()) { interrupt = true; - mSpiderDen.remove(index); break; } + Log.d(TAG, "Download image succeed " + index); + // Download finished updatePageState(index, STATE_FINISHED); return true; @@ -879,9 +878,14 @@ public class SpiderQueen implements Runnable { IOUtils.closeQuietly(is); pipe.close(); pipe.release(); + + Log.d(TAG, "End download image " + index); } } + // Remove download failed image + mSpiderDen.remove(index); + updatePageState(index, STATE_FAILED, error); return !interrupt; } @@ -963,6 +967,7 @@ public class SpiderQueen implements Runnable { mWorkerLock.wait(); } catch (InterruptedException e) { // Interrupted + Log.d(TAG, Thread.currentThread().getName() + " Interrupted"); break; } }