From 94e18146fd3221061f35bdb2c3fc8f6ae4cf5e62 Mon Sep 17 00:00:00 2001 From: Benjamin Gamard Date: Wed, 14 Mar 2018 18:12:19 +0100 Subject: [PATCH] #182: fix thumbnail for orphan files --- .../async/FileCreatedAsyncListener.java | 10 +++++---- .../com/sismics/docs/core/util/FileUtil.java | 21 +++++++++++-------- .../sismics/docs/rest/TestFileResource.java | 20 ++++++++++++++---- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/docs-core/src/main/java/com/sismics/docs/core/listener/async/FileCreatedAsyncListener.java b/docs-core/src/main/java/com/sismics/docs/core/listener/async/FileCreatedAsyncListener.java index 330f117e..d90c3b15 100644 --- a/docs-core/src/main/java/com/sismics/docs/core/listener/async/FileCreatedAsyncListener.java +++ b/docs-core/src/main/java/com/sismics/docs/core/listener/async/FileCreatedAsyncListener.java @@ -96,10 +96,12 @@ public class FileCreatedAsyncListener { fileDao.update(file); } }); - - // Update Lucene index - LuceneDao luceneDao = new LuceneDao(); - luceneDao.createFile(event.getFile()); + + if (file.getDocumentId() != null) { + // Update Lucene index + LuceneDao luceneDao = new LuceneDao(); + luceneDao.createFile(event.getFile()); + } FileUtil.endProcessingFile(file.getId()); } diff --git a/docs-core/src/main/java/com/sismics/docs/core/util/FileUtil.java b/docs-core/src/main/java/com/sismics/docs/core/util/FileUtil.java index 3c77bede..6ede2e45 100644 --- a/docs-core/src/main/java/com/sismics/docs/core/util/FileUtil.java +++ b/docs-core/src/main/java/com/sismics/docs/core/util/FileUtil.java @@ -60,7 +60,10 @@ public class FileUtil { */ public static String extractContent(String language, File file, Path unencryptedFile, Path unencryptedPdfFile) { String content = null; - + if (language == null) { + return null; + } + if (ImageUtil.isImage(file.getMimeType())) { content = ocrFile(unencryptedFile, language); } else if (VideoUtil.isVideo(file.getMimeType())) { @@ -251,15 +254,15 @@ public class FileUtil { userDao.updateQuota(user); // Raise a new file created event and document updated event if we have a document - if (documentId != null) { - startProcessingFile(fileId); - FileCreatedAsyncEvent fileCreatedAsyncEvent = new FileCreatedAsyncEvent(); - fileCreatedAsyncEvent.setUserId(userId); - fileCreatedAsyncEvent.setLanguage(language); - fileCreatedAsyncEvent.setFile(file); - fileCreatedAsyncEvent.setUnencryptedFile(unencryptedFile); - ThreadLocalContext.get().addAsyncEvent(fileCreatedAsyncEvent); + startProcessingFile(fileId); + FileCreatedAsyncEvent fileCreatedAsyncEvent = new FileCreatedAsyncEvent(); + fileCreatedAsyncEvent.setUserId(userId); + fileCreatedAsyncEvent.setLanguage(language); + fileCreatedAsyncEvent.setFile(file); + fileCreatedAsyncEvent.setUnencryptedFile(unencryptedFile); + ThreadLocalContext.get().addAsyncEvent(fileCreatedAsyncEvent); + if (documentId != null) { DocumentUpdatedAsyncEvent documentUpdatedAsyncEvent = new DocumentUpdatedAsyncEvent(); documentUpdatedAsyncEvent.setUserId(userId); documentUpdatedAsyncEvent.setDocumentId(documentId); diff --git a/docs-web/src/test/java/com/sismics/docs/rest/TestFileResource.java b/docs-web/src/test/java/com/sismics/docs/rest/TestFileResource.java index 7939e044..102391fd 100644 --- a/docs-web/src/test/java/com/sismics/docs/rest/TestFileResource.java +++ b/docs-web/src/test/java/com/sismics/docs/rest/TestFileResource.java @@ -262,21 +262,33 @@ public class TestFileResource extends BaseJerseyTest { Assert.assertNotNull(file1Id); } } - + // Get all orphan files JsonObject json = target().path("/file/list").request() .cookie(TokenBasedSecurityFilter.COOKIE_NAME, file3Token) .get(JsonObject.class); JsonArray files = json.getJsonArray("files"); Assert.assertEquals(1, files.size()); - - // Get the file data - Response response = target().path("/file/" + file1Id + "/data").request() + + // Get the thumbnail data + Response response = target().path("/file/" + file1Id + "/data") + .queryParam("size", "thumb") + .request() .cookie(TokenBasedSecurityFilter.COOKIE_NAME, file3Token) .get(); + Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus())); InputStream is = (InputStream) response.getEntity(); byte[] fileBytes = ByteStreams.toByteArray(is); Assert.assertEquals(MimeType.IMAGE_JPEG, MimeTypeUtil.guessMimeType(fileBytes, null)); + Assert.assertTrue(fileBytes.length > 0); + + // Get the file data + response = target().path("/file/" + file1Id + "/data").request() + .cookie(TokenBasedSecurityFilter.COOKIE_NAME, file3Token) + .get(); + is = (InputStream) response.getEntity(); + fileBytes = ByteStreams.toByteArray(is); + Assert.assertEquals(MimeType.IMAGE_JPEG, MimeTypeUtil.guessMimeType(fileBytes, null)); Assert.assertEquals(163510, fileBytes.length); // Create a document