From 2347483676334a494dc14e03bf904795ca00af31 Mon Sep 17 00:00:00 2001 From: jendib Date: Fri, 6 Mar 2015 21:13:09 +0100 Subject: [PATCH] Order of files attached to document --- .../sismics/docs/core/dao/jpa/FileDao.java | 26 +++---------------- .../async/FileCreatedAsyncListener.java | 3 ++- .../docs/rest/resource/FileResource.java | 4 +-- .../sismics/docs/rest/TestFileResource.java | 11 ++++++++ 4 files changed, 19 insertions(+), 25 deletions(-) diff --git a/docs-core/src/main/java/com/sismics/docs/core/dao/jpa/FileDao.java b/docs-core/src/main/java/com/sismics/docs/core/dao/jpa/FileDao.java index 97743f03..bbc5d2aa 100644 --- a/docs-core/src/main/java/com/sismics/docs/core/dao/jpa/FileDao.java +++ b/docs-core/src/main/java/com/sismics/docs/core/dao/jpa/FileDao.java @@ -80,32 +80,12 @@ public class FileDao { } /** - * Updates the content of a file. + * Update a file. * * @param file File to update * @return Updated file */ - public File updateContent(File file) { - EntityManager em = ThreadLocalContext.get().getEntityManager(); - - // Get the file - Query q = em.createQuery("select f from File f where f.id = :id and f.deleteDate is null"); - q.setParameter("id", file.getId()); - File fileFromDb = (File) q.getSingleResult(); - - // Update the file - fileFromDb.setContent(file.getContent()); - - return file; - } - - /** - * Update the document of a file. - * - * @param file File to update - * @return Updated file - */ - public File updateDocument(File file) { + public File update(File file) { EntityManager em = ThreadLocalContext.get().getEntityManager(); // Get the file @@ -115,6 +95,8 @@ public class FileDao { // Update the file fileFromDb.setDocumentId(file.getDocumentId()); + fileFromDb.setContent(file.getContent()); + fileFromDb.setOrder(file.getOrder()); return file; } 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 57154ac0..be688334 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 @@ -40,6 +40,7 @@ public class FileCreatedAsyncListener { final File file = fileCreatedAsyncEvent.getFile(); long startTime = System.currentTimeMillis(); final String content = FileUtil.extractContent(fileCreatedAsyncEvent.getDocument(), file, fileCreatedAsyncEvent.getInputStream()); + fileCreatedAsyncEvent.getInputStream().close(); log.info(MessageFormat.format("File content extracted in {0}ms", System.currentTimeMillis() - startTime)); // Store the OCR-ization result in the database @@ -48,7 +49,7 @@ public class FileCreatedAsyncListener { public void run() { FileDao fileDao = new FileDao(); file.setContent(content); - fileDao.updateContent(file); + fileDao.update(file); } }); diff --git a/docs-web/src/main/java/com/sismics/docs/rest/resource/FileResource.java b/docs-web/src/main/java/com/sismics/docs/rest/resource/FileResource.java index ec1db12b..fb10dab4 100644 --- a/docs-web/src/main/java/com/sismics/docs/rest/resource/FileResource.java +++ b/docs-web/src/main/java/com/sismics/docs/rest/resource/FileResource.java @@ -204,9 +204,9 @@ public class FileResource extends BaseResource { } // Update the file - // TODO Reorder files to put the new one at the end file.setDocumentId(documentId); - fileDao.updateDocument(file); + file.setOrder(fileDao.getByDocumentId(documentId).size()); + fileDao.update(file); // Raise a new file created event (it wasn't sent during file creation) try { 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 e6ca1d4a..78f347e5 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 @@ -238,5 +238,16 @@ public class TestFileResource extends BaseJerseyTest { response = documentResource.post(ClientResponse.class, postParams); Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus())); json = response.getEntity(JSONObject.class); + + // Get all files from a document + fileResource = resource().path("/file/list"); + fileResource.addFilter(new CookieAuthenticationFilter(file2AuthenticationToken)); + MultivaluedMapImpl getParams = new MultivaluedMapImpl(); + getParams.putSingle("id", document1Id); + response = fileResource.queryParams(getParams).get(ClientResponse.class); + json = response.getEntity(JSONObject.class); + Assert.assertEquals(Status.OK, Status.fromStatusCode(response.getStatus())); + JSONArray files = json.getJSONArray("files"); + Assert.assertEquals(1, files.length()); } } \ No newline at end of file