diff --git a/logicaldoc-cmis/src/main/java/com/logicaldoc/cmis/LDRepository.java b/logicaldoc-cmis/src/main/java/com/logicaldoc/cmis/LDRepository.java index 26da7584a..0c0845c57 100644 --- a/logicaldoc-cmis/src/main/java/com/logicaldoc/cmis/LDRepository.java +++ b/logicaldoc-cmis/src/main/java/com/logicaldoc/cmis/LDRepository.java @@ -573,7 +573,7 @@ public void appendContent(CallContext context, String documentId, ContentStream transaction.setSessionId(sid); manager.replaceFile(doc.getId(), doc.getFileVersion(), mergeFile, transaction); } finally { - FileUtil.strongDelete(chunksFolder); + FileUtil.delete(chunksFolder); } } } @@ -600,7 +600,7 @@ private File getMergedContent(File chunksDir) throws IOException { for (Path path : chunks) { File chunk = path.toFile(); Files.write(merge.toPath(), Files.readAllBytes(chunk.toPath()), StandardOpenOption.APPEND); - FileUtil.strongDelete(chunk); + FileUtil.delete(chunk); } return merge; diff --git a/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/AbstractCmisTestCase.java b/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/AbstractCmisTestCase.java index 9e540693c..8ad471a68 100644 --- a/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/AbstractCmisTestCase.java +++ b/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/AbstractCmisTestCase.java @@ -41,7 +41,7 @@ public void setUp() throws IOException, SQLException, PluginException { String storePath = Context.get().getProperties().getProperty("store.1.dir"); File store = new File(storePath); - FileUtil.strongDelete(store); + FileUtil.delete(store); store.mkdir(); new File(store, "5/doc").mkdirs(); diff --git a/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/LDRepositoryTest.java b/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/LDRepositoryTest.java index a358cfaf9..6662c59ce 100644 --- a/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/LDRepositoryTest.java +++ b/logicaldoc-cmis/src/test/java/com/logicaldoc/cmis/LDRepositoryTest.java @@ -695,7 +695,7 @@ public void testAppendContent() throws PersistenceException, IOException { "text/plain; fileNameCharset=UTF-8", fis); testSubject.appendContent(null, "doc.5", contentStream, false); } finally { - FileUtil.strongDelete(content); + FileUtil.delete(content); } // Upload a second chunk @@ -706,7 +706,7 @@ public void testAppendContent() throws PersistenceException, IOException { "text/plain; fileNameCharset=UTF-8", fis); testSubject.appendContent(null, "doc.5", contentStream, true); } finally { - FileUtil.strongDelete(content); + FileUtil.delete(content); } Storer storer = (Storer) context.getBean("Storer"); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/DocTool.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/DocTool.java index 675234fa8..844a3fff0 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/DocTool.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/DocTool.java @@ -583,7 +583,7 @@ public Document copyResource(Document doc, String fileVersion, String suffix, St log.error(e.getMessage(), e); return null; } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/MailTool.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/MailTool.java index 93965d24b..0e7bf7933 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/MailTool.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/automation/MailTool.java @@ -335,7 +335,7 @@ public List extractAttachments(Document doc, String filterFileName, St createdDocs.add(attDoc); } finally { if (tmpFile != null) - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EMailSender.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EMailSender.java index 105317f97..5946f8293 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EMailSender.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/communication/EMailSender.java @@ -623,7 +623,7 @@ private void historycizeOutgoingEmail(EMail email, MimeMessage message, Internet log.warn("Cannot historycize the email with subject '{}' sent to {}", email.getSubject(), email.getAllRecipientsEmails(), t); } finally { - FileUtil.strongDelete(emlFile); + FileUtil.delete(emlFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/CompressedArchiveConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/CompressedArchiveConverter.java index 25ace7936..36b0feb74 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/CompressedArchiveConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/CompressedArchiveConverter.java @@ -55,7 +55,7 @@ protected void convertMultipleEntries(String sid, Document document, File dest, throw new IOException("Error in Zip conversion", e); } finally { if (tempFile != null) - FileUtil.strongDelete(tempFile); + FileUtil.delete(tempFile); } } @@ -79,7 +79,7 @@ protected void convertSingleEntry(String sid, Document document, File src, File converter.convert(sid, document, uncompressedEntryFile, dest); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java index 852d22b46..a349badf4 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/FormatConverterManager.java @@ -170,8 +170,8 @@ public void convertToPdf(Document document, String fileVersion, String sid) thro storer.store(dest, document.getId(), resource); } finally { // Delete temporary resources - FileUtil.strongDelete(src); - FileUtil.strongDelete(dest); + FileUtil.delete(src); + FileUtil.delete(dest); } } @@ -229,7 +229,7 @@ public Document convert(Document document, String fileVersion, String format, Do throw new IOException("The conversion was not done"); } finally { // Delete temporary resources - FileUtil.strongDelete(out); + FileUtil.delete(out); } } @@ -251,7 +251,7 @@ public void convertToFile(Document document, String fileVersion, File out, Docum if (converter == null) return; - FileUtil.strongDelete(out); + FileUtil.delete(out); // Prepare I/O files File src = null; @@ -279,7 +279,7 @@ public void convertToFile(Document document, String fileVersion, File out, Docum } } finally { // Delete temporary resources - FileUtil.strongDelete(src); + FileUtil.delete(src); } } @@ -304,7 +304,7 @@ public void convertFile(File in, String inFilename, File out, String outFormat, if (!in.exists() || in.length() == 0) throw new IOException(String.format("Unexisting source file %s", in)); - FileUtil.strongDelete(out); + FileUtil.delete(out); converter.convert(in, out); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/P7MConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/P7MConverter.java index 93f300d57..4dd1cfeaf 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/P7MConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/P7MConverter.java @@ -46,7 +46,7 @@ public void internalConvert(String sid, Document document, File src, File dest) } catch (Exception e) { throw new IOException(e.getMessage(), e); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/PstConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/PstConverter.java index d9d985aad..adc9e4d7f 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/PstConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/PstConverter.java @@ -45,7 +45,7 @@ public void internalConvert(String sid, Document document, File src, File dest) FileUtil.writeFile(listing, tempFile.getAbsolutePath()); converter.convert(sid, document, tempFile, dest); } finally { - FileUtil.strongDelete(tempFile); + FileUtil.delete(tempFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/XMLConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/XMLConverter.java index 2d043ac8f..dccc923aa 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/XMLConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/XMLConverter.java @@ -87,9 +87,9 @@ public void internalConvert(String sid, Document document, File src, File dest) } } finally { if (xslt != null) - FileUtil.strongDelete(xslt); + FileUtil.delete(xslt); if (xml != null) - FileUtil.strongDelete(xml); + FileUtil.delete(xml); } } @@ -152,7 +152,7 @@ private void convert(String sid, Document document, File dest, String destExt, F converter.convert(sid, document, transformedFile, dest); } finally { if (transformedFile != null) - FileUtil.strongDelete(transformedFile); + FileUtil.delete(transformedFile); } } } catch (FileNotFoundException | TransformerException e) { diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/ZipConverter.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/ZipConverter.java index dade05c57..3d499441e 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/ZipConverter.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/conversion/ZipConverter.java @@ -48,7 +48,7 @@ private void convertGZip(String sid, Document document, File src, File dest) thr converter.convert(sid, document, ungzippedFile, dest); } finally { if (ungzippedFile != null) - FileUtil.strongDelete(ungzippedFile); + FileUtil.delete(ungzippedFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/DocumentManagerImpl.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/DocumentManagerImpl.java index d31bc3dda..d6974bd96 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/DocumentManagerImpl.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/DocumentManagerImpl.java @@ -1708,8 +1708,8 @@ public Document merge(Collection documents, long targetFolderId, Strin DocumentManager manager = (DocumentManager) Context.get().getBean(DocumentManager.class); return manager.create(bigPdf, docVO, transaction); } finally { - FileUtil.strongDelete(bigPdf); - FileUtil.strongDelete(tempDir); + FileUtil.delete(bigPdf); + FileUtil.delete(tempDir); } } @@ -1813,26 +1813,26 @@ public Document mapRow(ResultSet rs, int arg1) throws SQLException { log.info("Destroyed {} aliases of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_tag where ld_docid = " + docId); - log.info("Destroyed {} tags of document {}", documentTag); + log.info("Destroyed {} tags of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_link where ld_docid1 = " + docId + " or ld_docid2 = " + docId); - log.info("Destroyed {} links of document {}", documentTag); + log.info("Destroyed {} links of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_bookmark where ld_type=0 and ld_docid = " + docId); - log.info("Destroyed {} bookmarks of document {}", documentTag); + log.info("Destroyed {} bookmarks of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_ticket where ld_docid = " + docId); - log.info("Destroyed {} tickets of document {}", documentTag); + log.info("Destroyed {} tickets of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_note where ld_docid = " + docId); - log.info("Destroyed {} notes of document {}", documentTag); + log.info("Destroyed {} notes of document {}", count, documentTag); count = documentDAO.jdbcUpdate("delete from ld_history where ld_docid = " + docId); - log.info("Destroyed {} histories of document {}", documentTag); + log.info("Destroyed {} histories of document {}", count, documentTag); try { count = documentDAO.jdbcUpdate("delete from ld_readingrequest where ld_docid = " + docId); - log.info("Destroyed {} reading requests of document {}", documentTag); + log.info("Destroyed {} reading requests of document {}", documentTag, docId); } catch (Exception e) { // Ignore because the table may not exist } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/EpubThumbnailBuilder.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/EpubThumbnailBuilder.java index c924e8f58..57a41c366 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/EpubThumbnailBuilder.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/EpubThumbnailBuilder.java @@ -90,14 +90,14 @@ public synchronized void buildThumbnail(String sid, Document document, String fi if (pdfBuilder != null) pdfBuilder.buildThumbnail(sid, document, fileVersion, pdf, dest, size, compression); } finally { - FileUtil.strongDelete(pdf); + FileUtil.delete(pdf); } } } } catch (Exception e) { throw new IOException("Thumbnail building " + e.getMessage(), e); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/PdfThumbnailBuilder.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/PdfThumbnailBuilder.java index efe38e7b4..b4cdb081c 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/PdfThumbnailBuilder.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/PdfThumbnailBuilder.java @@ -30,7 +30,7 @@ public synchronized void buildThumbnail(String sid, Document document, String fi } catch (Exception e) { throw new IOException("Thumbnail building " + e.getMessage(), e); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/ThumbnailManager.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/ThumbnailManager.java index 07e8da8b4..e56b57bf6 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/ThumbnailManager.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/document/thumbnail/ThumbnailManager.java @@ -151,8 +151,8 @@ protected void createImage(Document document, String fileVersion, int size, Inte log.warn("Error rendering image for document: {} - {}", document.getId(), document.getFileName(), e); } finally { // Delete temporary resources - FileUtil.strongDelete(src); - FileUtil.strongDelete(dest); + FileUtil.delete(src); + FileUtil.delete(dest); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/imaging/ImageUtil.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/imaging/ImageUtil.java index 63d8fc991..603b37343 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/imaging/ImageUtil.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/imaging/ImageUtil.java @@ -87,7 +87,7 @@ public static void cropImageToFile(String content, ImageZone zone, File file) th saveImage(content, tmpFile); cropImageToFile(tmpFile, zone, file); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } @@ -288,7 +288,7 @@ public static void printFirstPage(File originalFile, String originalFileName, Fi } GhostUtil.print(pdfFile, out, 1); } finally { - FileUtil.strongDelete(pdfFile); + FileUtil.delete(pdfFile); } } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/CatchAllParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/CatchAllParser.java index a5d5b2e47..ebe07f700 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/CatchAllParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/CatchAllParser.java @@ -82,9 +82,9 @@ private void parse1(InputStream input, ParseParameters parameters, StringBuilder log.error(t.getMessage(), t); } finally { if (inputFile != null && inputFile.exists()) - FileUtil.strongDelete(inputFile); + FileUtil.delete(inputFile); if (outputPdf != null && outputPdf.exists()) - FileUtil.strongDelete(outputPdf); + FileUtil.delete(outputPdf); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/EpubParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/EpubParser.java index 62de828cc..84955f894 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/EpubParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/EpubParser.java @@ -41,7 +41,7 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB } catch (Exception ex) { log.error(ex.getMessage(), ex); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/HTMLParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/HTMLParser.java index 8bc08942b..094dac3c6 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/HTMLParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/HTMLParser.java @@ -39,7 +39,7 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB else log.warn("Failed to extract HTML text content"); } finally { - FileUtil.strongDelete(tempFile); + FileUtil.delete(tempFile); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/KOfficeParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/KOfficeParser.java index e5ca1ba9a..cad38810c 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/KOfficeParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/KOfficeParser.java @@ -95,7 +95,7 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB } } } finally { - FileUtil.strongDelete(mainDocXml); + FileUtil.delete(mainDocXml); } } catch (Exception e) { log.warn("Failed to extract KOffice text content", e); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/OpenOfficeParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/OpenOfficeParser.java index 5d5abd860..7ba1df90f 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/OpenOfficeParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/OpenOfficeParser.java @@ -200,7 +200,7 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB } } } finally { - FileUtil.strongDelete(contentXml); + FileUtil.delete(contentXml); } } catch (Exception e) { log.warn("Failed to extract OpenOffice text content", e); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/RarParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/RarParser.java index ea8e7783a..93835f565 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/RarParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/RarParser.java @@ -59,11 +59,11 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB content.append(text); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } finally { - FileUtil.strongDelete(rarFile); + FileUtil.delete(rarFile); } } @@ -81,7 +81,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (rarFile != null) - FileUtil.strongDelete(rarFile); + FileUtil.delete(rarFile); } return 1; } @@ -111,7 +111,7 @@ public int countPages(File input, String filename) { return entryParser.countPages(uncompressedEntryFile, uncompressedEntryFile.getName()); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } catch (Exception e) { diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/SevenZipParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/SevenZipParser.java index 52093f185..7a3309084 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/SevenZipParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/SevenZipParser.java @@ -59,11 +59,11 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB content.append(text); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } finally { - FileUtil.strongDelete(sevenFile); + FileUtil.delete(sevenFile); } } @@ -81,7 +81,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (rarFile != null) - FileUtil.strongDelete(rarFile); + FileUtil.delete(rarFile); } return 1; } @@ -111,7 +111,7 @@ public int countPages(File input, String filename) { return entryParser.countPages(uncompressedEntryFile, uncompressedEntryFile.getName()); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } catch (Exception e) { diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/TarParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/TarParser.java index 4c02b05ba..552ed9293 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/TarParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/TarParser.java @@ -59,11 +59,11 @@ public void internalParse(InputStream input, ParseParameters parameters, StringB content.append(text); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } finally { - FileUtil.strongDelete(tarFile); + FileUtil.delete(tarFile); } } @@ -81,7 +81,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (tarFile != null) - FileUtil.strongDelete(tarFile); + FileUtil.delete(tarFile); } return 1; } @@ -108,7 +108,7 @@ public int countPages(File input, String filename) { return entryParser.countPages(uncompressedEntryFile, uncompressedEntryFile.getName()); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } catch (Exception e) { diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/ZipParser.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/ZipParser.java index 65dbac358..3c18a0f2d 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/ZipParser.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/parser/ZipParser.java @@ -49,7 +49,7 @@ private void internalParseGZip(InputStream input, ParseParameters parameters, St } } finally { if (ungzippedFile != null) - FileUtil.strongDelete(ungzippedFile); + FileUtil.delete(ungzippedFile); } } @@ -109,11 +109,11 @@ private void internalParseZip(InputStream input, ParseParameters parameters, Str content.append(text); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } finally { - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } @@ -129,7 +129,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (zipFile != null) - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } else { File ungzippedFile = null; @@ -142,7 +142,7 @@ public int countPages(InputStream input, String filename) { log.error(t.getMessage(), t); } finally { if (ungzippedFile != null) - FileUtil.strongDelete(ungzippedFile); + FileUtil.delete(ungzippedFile); } } return 1; @@ -170,7 +170,7 @@ public int countPages(File input, String filename) { log.error(t.getMessage(), t); } finally { if (ungzippedFile != null) - FileUtil.strongDelete(ungzippedFile); + FileUtil.delete(ungzippedFile); } } return 1; @@ -197,7 +197,7 @@ private int countPagesInZipFile(File zipFile) throws IOException { return entryParser.countPages(uncompressedEntryFile, uncompressedEntryFile.getName()); } finally { if (uncompressedEntryFile != null) - FileUtil.strongDelete(uncompressedEntryFile); + FileUtil.delete(uncompressedEntryFile); } } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/StandardSearchEngine.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/StandardSearchEngine.java index 4248afb7b..d0552ab3a 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/StandardSearchEngine.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/StandardSearchEngine.java @@ -419,7 +419,7 @@ public synchronized void unlock() { directory.obtainLock(IndexWriter.WRITE_LOCK_NAME).close(); } catch (Exception e) { log.warn("unlock {}", e.getMessage()); - FileUtil.strongDelete(new File(getIndexDataFolder(), "write.lock")); + FileUtil.delete(new File(getIndexDataFolder(), "write.lock")); } } @@ -556,7 +556,7 @@ public synchronized void close() { unlock(); server.getCoreContainer().shutdown(); server.close(); - FileUtil.strongDelete(new File(getIndexDataFolder(), IndexWriter.WRITE_LOCK_NAME)); + FileUtil.delete(new File(getIndexDataFolder(), IndexWriter.WRITE_LOCK_NAME)); } catch (Exception e) { log.warn(e.getMessage(), e); } @@ -619,7 +619,7 @@ public void init() { } // Delete the lock file if it exists - FileUtil.strongDelete(new File(indexHome, "logicaldoc/data/index/" + IndexWriter.WRITE_LOCK_NAME)); + FileUtil.delete(new File(indexHome, "logicaldoc/data/index/" + IndexWriter.WRITE_LOCK_NAME)); CoreContainer container = new CoreContainer(indexHome.toPath(), null); server = new EmbeddedSolrServer(container, LOGICALDOC); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/SavedSearch.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/SavedSearch.java index ff0e1ddad..1319ae384 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/SavedSearch.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/searchengine/saved/SavedSearch.java @@ -64,14 +64,14 @@ public void saveOptions(SearchOptions opt) throws IOException, PersistenceExcept XMLEncoder encoder = new XMLEncoder(out, charset, false, 0)) { encoder.writeObject(opt); } catch (IOException ioe) { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); throw ioe; } try { setOptions(FileUtil.readFile(tmpFile).trim()); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/Geolocation.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/Geolocation.java index 827c286f5..d5cff8648 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/Geolocation.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/Geolocation.java @@ -162,7 +162,7 @@ public void syncDB(String key) throws IOException { * Prepare a temporary folder and hunzip the downloaded file in it */ tmpDir = FileUtil.createTempFile(CONST_GEOLOCATION, null); - FileUtil.strongDelete(tmpDir); + FileUtil.delete(tmpDir); tmpDir.mkdir(); try (ZipUtil zipUtil = new ZipUtil()) { zipUtil.unGZipUnTar(gzFile, tmpDir); @@ -180,12 +180,12 @@ public void syncDB(String key) throws IOException { FileUtil.copyFile(mmdbFile, getDatabaseFile()); - FileUtil.strongDelete(mmdbFile); + FileUtil.delete(mmdbFile); dispose(); } finally { - FileUtil.strongDelete(gzFile); - FileUtil.strongDelete(tmpDir); + FileUtil.delete(gzFile); + FileUtil.delete(tmpDir); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/menu/HibernateMenuDAO.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/menu/HibernateMenuDAO.java index 777d46c34..e89dc1051 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/security/menu/HibernateMenuDAO.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/security/menu/HibernateMenuDAO.java @@ -104,18 +104,6 @@ public List findByUserId(long userId) { query.append(")"); coll = findByQuery(query.toString(), (Map) null, null); - - // Now collect all menus that references the policies of the - // previously found menus - query = new StringBuilder("select _menu from Menu _menu where _menu.securityRef in ("); - query.append(coll.stream().map(m -> Long.toString(m.getId())).collect(Collectors.joining(","))); - query.append(")"); - List tmp = findByQuery(query.toString(), (Map) null, null); - - for (Menu menu : tmp) { - if (!coll.contains(menu)) - coll.add(menu); - } } } catch (Exception e) { log.error(e.getMessage(), e); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/AbstractStorer.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/AbstractStorer.java index 9c098c5b1..688fce9c5 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/AbstractStorer.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/AbstractStorer.java @@ -311,7 +311,7 @@ public boolean test() { log.error(e.getMessage(), e); return false; } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); try { if (exists(0L, resource)) delete(0L, resource); diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/FSStorer.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/FSStorer.java index 727e2a220..0d0bda053 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/FSStorer.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/FSStorer.java @@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory; import com.logicaldoc.util.io.FileUtil; +import com.logicaldoc.util.io.IOUtil; /** * This class is an implementation of the Storer interface to persist documents @@ -37,19 +38,15 @@ public FSStorer() { @Override public void delete(long docId) { File docDir = getContainer(docId); - while (docDir.exists()) { - FileUtil.strongDelete(docDir); + if (FileUtil.delete(docDir)) logDeletion(docId, docDir.getAbsolutePath()); - } } @Override public void delete(long docId, String resource) { File file = new File(getContainer(docId), resource); - while (file.exists()) { - FileUtil.strongDelete(file); + if (FileUtil.delete(file)) logDeletion(docId, file.getAbsolutePath()); - } } /** @@ -71,7 +68,7 @@ public File getRoot() { @Override public void store(File file, long docId, String resource) throws IOException { checkEnabled(); - + checkNotEmpty(file); File dir = getContainer(docId); @@ -98,11 +95,7 @@ public void store(InputStream stream, long docId, String resource) throws IOExce } catch (Exception e) { throw new IOException(e.getMessage(), e); } finally { - try { - stream.close(); - } catch (IOException e) { - // Nothing to do - } + IOUtil.close(stream); } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/MockStorer.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/MockStorer.java index 9bdbaf9bf..07310f304 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/store/MockStorer.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/store/MockStorer.java @@ -6,9 +6,8 @@ import java.io.InputStream; import java.util.List; -import org.apache.commons.io.FileUtils; - import com.logicaldoc.util.Context; +import com.logicaldoc.util.io.FileUtil; /** * This is basically a {@link FSStorer} but with a flag that if active makes the @@ -45,12 +44,17 @@ public void store(File file, long docId, String resource) throws IOException { @Override public void store(InputStream stream, long docId, String resource) throws IOException { - if (errorOnStore) + if (errorOnStore) { + stream.close(); throw new IOException("error"); - if (useDummyFile) + } + + if (useDummyFile) { + stream.close(); super.store(new FileInputStream(dummyFile), docId, resource); - else + } else { super.store(stream, docId, resource); + } } @Override @@ -92,7 +96,7 @@ public int moveResourcesToStore(long docId, int targetStorageId) throws IOExcept moved++; // Delete the original resource - FileUtils.deleteQuietly(sourceFile); + FileUtil.delete(sourceFile); } return moved; diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/MergeUtil.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/MergeUtil.java index fc893c947..f17d7cbea 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/MergeUtil.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/MergeUtil.java @@ -51,7 +51,7 @@ public static File mergePdf(List pdfs) throws IOException { return dst; } finally { - FileUtil.strongDelete(tempDir); + FileUtil.delete(tempDir); } } } diff --git a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java index d2f1a11b3..40aefc1b6 100644 --- a/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java +++ b/logicaldoc-core/src/main/java/com/logicaldoc/core/util/UserUtil.java @@ -139,7 +139,7 @@ public static void saveAvatar(User user, File avatarImageFile) { } catch (Exception t) { log.warn(ERROR_GENERATING_DEFAULT_THE_AVATAR_FOR_USER, user, t); } finally { - FileUtil.strongDelete(tmpAvatarImage); + FileUtil.delete(tmpAvatarImage); } } @@ -177,7 +177,7 @@ public static void generateDefaultAvatar(User user) { if (log.isDebugEnabled()) log.debug(ERROR_GENERATING_DEFAULT_THE_AVATAR_FOR_USER, user, t); } finally { - FileUtil.strongDelete(tmpAvatarImage); + FileUtil.delete(tmpAvatarImage); } } diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/AbstractCoreTestCase.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/AbstractCoreTestCase.java index ee9d79f9c..e493b47c8 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/AbstractCoreTestCase.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/AbstractCoreTestCase.java @@ -30,6 +30,10 @@ public abstract class AbstractCoreTestCase extends AbstractTestCase { protected static Logger log = LoggerFactory.getLogger(AbstractCoreTestCase.class); + protected File rootStoreOne; + + protected File rootStoreTwo; + @Before @Override public void setUp() throws FileNotFoundException, IOException, SQLException, PluginException { @@ -43,32 +47,34 @@ protected List getDatabaseScripts() { } private void prepareStore() throws IOException { - String storePath = Context.get().getProperties().getProperty("store.1.dir"); - File store1 = new File(storePath); - FileUtil.strongDelete(store1); - store1.mkdir(); - - File store2 = new File(Context.get().getProperties().getProperty("store.2.dir")); - FileUtil.strongDelete(store2); - store2.mkdir(); + /** + * For each test we must prepare different storage folders because + * re-using the same paths cause locks + */ + rootStoreOne = new File(Context.get().getProperties().getProperty("store.1.dir")); + rootStoreTwo = new File(Context.get().getProperties().getProperty("store.2.dir")); Storer storer = (Storer) context.getBean("Storer"); storer.init(); + /* + * In order to minimize the locks, we write the file only if really + * needed + */ + // Store the file of document 1 - FileUtil.copyResource("/Digital_Day.pdf", new File(storePath + "/1/doc/1.0")); - try { - FileUtil.copyResource("/Digital_Day.pdf", new File(storePath + "/1/doc/1.0-conversion.pdf")); - } catch (Exception e) { - log.warn(e.getMessage(), e); - } + FileUtil.copyResource("/loremipsum.pdf", new File(rootStoreOne.getPath() + "/1/doc/1.0")); + FileUtil.copyResource("/loremipsum.pdf", new File(rootStoreOne.getPath() + "/1/doc/1.0-conversion.pdf")); // Store the file of document 3 - FileUtil.copyResource("/small.pdf", new File(storePath + "/3/doc/1.3")); + FileUtil.copyResource("/small.pdf", new File(rootStoreOne.getPath() + "/3/doc/1.3")); } @Override public void tearDown() throws SQLException { super.tearDown(); + + FileUtil.delete(rootStoreOne); + FileUtil.delete(rootStoreTwo); } } \ No newline at end of file diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/CoreWorkBench.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/CoreWorkBench.java index b3a1cd2d2..42f464f71 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/CoreWorkBench.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/CoreWorkBench.java @@ -176,8 +176,8 @@ public Long call() throws Exception { // copyFileUsingJava7Files(file, copy); // System.out.println("Copied file " + copy.getPath()); - FileUtil.strongDelete(file); - FileUtil.strongDelete(copy); + FileUtil.delete(file); + FileUtil.delete(copy); return 0L; } } diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/automation/DocToolTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/automation/DocToolTest.java index 7d425529a..92957ae90 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/automation/DocToolTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/automation/DocToolTest.java @@ -248,7 +248,7 @@ public void testReadAsString() throws Exception { Document doc = testSubject.findById(1L); String result = testSubject.readAsString(doc.getId(), doc.getFileVersion(), null); assertNotNull(result); - assertTrue(result.contains("Linearized")); + assertTrue(result.contains("DocChecksum")); } @Test @@ -389,6 +389,6 @@ public void testCountPages() throws Exception { public void testParse() throws Exception { Document doc = testSubject.findById(1); String text = testSubject.parse(doc, doc.getFileVersion()); - assertTrue(text.contains("Digital Day")); + assertTrue(text.contains("dolor")); } } \ No newline at end of file diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/conversion/XMLConverterTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/conversion/XMLConverterTest.java index f84246a6b..99c704092 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/conversion/XMLConverterTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/conversion/XMLConverterTest.java @@ -52,7 +52,7 @@ public void testInternalConvert() throws PersistenceException, IOException { log.error("Exception during conversion", e); fail(); } finally { - FileUtil.strongDelete(targetFile); + FileUtil.delete(targetFile); } } } \ No newline at end of file diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/DocumentManagerImplTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/DocumentManagerImplTest.java index a6523e563..39f9dc591 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/DocumentManagerImplTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/DocumentManagerImplTest.java @@ -283,7 +283,7 @@ public void testMoveToFolder() throws PersistenceException { public void testParseDocument() throws PersistenceException, ParsingException { Document doc = docDao.findById(1); String text = testSubject.parseDocument(doc, null); - assertTrue(text.contains("Digital Day")); + assertTrue(text.contains("dolor")); Folder folder = folderDao.createPath(folderDao.findById(Folder.ROOTID), "/Default/test", true, null); @@ -292,7 +292,7 @@ public void testParseDocument() throws PersistenceException, ParsingException { transaction.setUser(userDao.findByUsername("admin")); Document alias = testSubject.createAlias(doc, folder, null, transaction); text = testSubject.parseDocument(alias, null); - assertTrue(text.contains("Digital Day")); + assertTrue(text.contains("dolor")); } @Test @@ -328,7 +328,7 @@ public void testEnforceFilesIntoFolderStorage() String store2Root = Context.get().getProperties().getProperty("store.2.dir"); assertTrue(new File(storeRoot + "/1/doc/" + doc.getFileVersion()).exists()); - FileUtil.strongDelete(new File(store2Root + "/1/doc/")); + FileUtil.delete(new File(store2Root + "/1/doc/")); transaction = new DocumentHistory(); transaction.setUser(user); @@ -858,7 +858,7 @@ public void testPromoteVersion() throws PersistenceException, IOException, Inter testSubject.promoteVersion(3L, "1.3", history); } finally { storer.setUseDummyFile(false); - FileUtil.strongDelete(dummyFile); + FileUtil.delete(dummyFile); } doc = docDao.findById(3L); diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateDocumentDAOTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateDocumentDAOTest.java index 6ee8d2c8d..fd093be07 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateDocumentDAOTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateDocumentDAOTest.java @@ -110,9 +110,9 @@ public void testUpdateDigest() throws PersistenceException, IOException { dao.initialize(doc); assertEquals("xx", doc.getDigest()); - String filePath = "target/store/1/doc/" + doc.getFileVersion(); - assertTrue(new File(filePath).exists()); - String digest = FileUtil.computeDigest(new File(filePath)); + File file = new File(rootStoreOne.getAbsolutePath() + "/1/doc/" + doc.getFileVersion()); + assertTrue(file.exists()); + String digest = FileUtil.computeDigest(file); dao.updateDigest(doc); assertEquals(digest, doc.getDigest()); diff --git a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateVersionDAOTest.java b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateVersionDAOTest.java index e43007b14..38f744adc 100644 --- a/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateVersionDAOTest.java +++ b/logicaldoc-core/src/test/java/com/logicaldoc/core/document/HibernateVersionDAOTest.java @@ -7,6 +7,7 @@ import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStream; import java.sql.SQLException; import java.util.List; @@ -87,52 +88,58 @@ public void testStore() throws PersistenceException, InterruptedException, IOExc user.setUsername("admin"); user.setName("xx"); user.setFirstName("xx"); - - int versionsCap=Context.get().getProperties().getInt("document.maxversions"); + + int versionsCap = Context.get().getProperties().getInt("document.maxversions"); assertEquals(versionsCap, testSubject.findByDocId(doc.getId()).size()); Storer storer = (Storer) Context.get().getBean(Storer.class); for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); - storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), res); + storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), res); } for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); storer.exists(doc.getId(), res); } - + Version version = Version.create(doc, user, "", DocumentEvent.STORED.toString(), true); testSubject.store(version); assertEquals("1.0", testSubject.findById(version.getId()).getVersion()); - + String resourceName = storer.getResourceName(doc.getId(), version.getFileVersion(), null); - storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), resourceName); - + try (InputStream is = this.getClass().getResourceAsStream("/data.sql")) { + storer.store(is, doc.getId(), resourceName); + } + assertEquals(versionsCap, testSubject.findByDocId(doc.getId()).size()); for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); storer.exists(doc.getId(), res); - } - + } + version = Version.create(doc, user, "", DocumentEvent.CHANGED.toString(), true); testSubject.store(version); assertEquals("2.0", version.getVersion()); - + resourceName = storer.getResourceName(doc.getId(), version.getFileVersion(), null); - storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), resourceName); - + try (InputStream is = this.getClass().getResourceAsStream("/data.sql")) { + storer.store(is, doc.getId(), resourceName); + } + assertEquals(versionsCap, testSubject.findByDocId(doc.getId()).size()); for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); storer.exists(doc.getId(), res); } - + version = Version.create(doc, user, "", DocumentEvent.CHECKEDIN.toString(), false); testSubject.store(version); assertEquals("2.1", version.getVersion()); - + resourceName = storer.getResourceName(doc.getId(), version.getFileVersion(), null); - storer.store(this.getClass().getResourceAsStream("/data.sql"), doc.getId(), resourceName); - + try (InputStream is = this.getClass().getResourceAsStream("/data.sql")) { + storer.store(is, doc.getId(), resourceName); + } + assertEquals(versionsCap, testSubject.findByDocId(doc.getId()).size()); for (Version ver : testSubject.findByDocId(doc.getId())) { String res = storer.getResourceName(doc.getId(), ver.getFileVersion(), null); diff --git a/logicaldoc-core/src/test/resources/log4j2.xml b/logicaldoc-core/src/test/resources/log4j2.xml index d1d43d44a..d61b1782d 100644 --- a/logicaldoc-core/src/test/resources/log4j2.xml +++ b/logicaldoc-core/src/test/resources/log4j2.xml @@ -43,10 +43,17 @@ + + + + + + + diff --git a/logicaldoc-core/src/test/resources/loremipsum.pdf b/logicaldoc-core/src/test/resources/loremipsum.pdf new file mode 100644 index 000000000..d44571857 Binary files /dev/null and b/logicaldoc-core/src/test/resources/loremipsum.pdf differ diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NoteUpdateDialog.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NoteUpdateDialog.java index e746b27dc..b455fa5f1 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NoteUpdateDialog.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NoteUpdateDialog.java @@ -10,6 +10,7 @@ import com.smartgwt.client.widgets.Window; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.RichTextItem; +import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; import com.smartgwt.client.widgets.toolbar.ToolStrip; import com.smartgwt.client.widgets.toolbar.ToolStripButton; @@ -21,23 +22,27 @@ */ public class NoteUpdateDialog extends Window { - private NotesPanel notesPanel; - private ToolStrip toolStrip; private long noteId; + private String fileVersion; + private RichTextItem message; private long docId; private DynamicForm noteForm; - public NoteUpdateDialog(final long docId, final long noteId, String noteMessage, final NotesPanel notesPanel) { + private ChangedHandler saveHandler; + + public NoteUpdateDialog(final long docId, final long noteId, String fileVersion, String noteMessage, + final ChangedHandler saveHandler) { super(); - this.notesPanel = notesPanel; + this.saveHandler = saveHandler; this.noteId = noteId; this.docId = docId; + this.fileVersion = fileVersion; HeaderControl maximize = new HeaderControl(HeaderControl.MAXIMIZE, event -> maximize()); @@ -89,21 +94,21 @@ private void onSave() { if (!noteForm.validate()) return; - DocumentService.Instance.get().updateNote(docId, noteId, message.getValue().toString(), - new AsyncCallback<>() { - - @Override - public void onFailure(Throwable caught) { - GuiLog.serverError(caught); - destroy(); - } - - @Override - public void onSuccess(Void result) { - notesPanel.refresh(); - destroy(); - } - }); + DocumentService.Instance.get().updateNote(docId, noteId, fileVersion, message.getValue().toString(), new AsyncCallback<>() { + + @Override + public void onFailure(Throwable caught) { + GuiLog.serverError(caught); + destroy(); + } + + @Override + public void onSuccess(Void result) { + if (saveHandler != null) + saveHandler.onChanged(null); + destroy(); + } + }); } private void resetDimensions() { diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NotesPanel.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NotesPanel.java index de90ef160..1c3174e2d 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NotesPanel.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/NotesPanel.java @@ -65,9 +65,6 @@ public void refresh() { ListGridField id = new ListGridField("id", I18N.message("id"), 50); id.setHidden(true); - ListGridField userId = new ListGridField(USER_ID, "userid", 50); - userId.setHidden(true); - UserListGridField user = new UserListGridField("user", USER_ID, "author"); ListGridField date = new DateListGridField("date", "date"); @@ -75,6 +72,9 @@ public void refresh() { page.setAutoFitWidth(true); page.setAlign(Alignment.CENTER); + ListGridField fileVersion = new ListGridField("fileVersion", I18N.message("fileversion"), 50); + fileVersion.setHidden(true); + ListGridField content = new ListGridField(MESSAGE, I18N.message("content"), 70); content.setWidth("*"); @@ -83,24 +83,25 @@ public void refresh() { notesGrid.setCanFreezeFields(true); notesGrid.setAutoFetchData(true); notesGrid.setDataSource(new NotesDS(null, document.getId(), document.getFileVersion(), null)); - notesGrid.setFields(id, userId, user, date, page, content); + notesGrid.setFields(id, user, date, page, fileVersion, content); toolStrip = new ToolStrip(); toolStrip.setWidth100(); ToolStripButton addNote = new ToolStripButton(I18N.message("addnote")); - addNote.addClickHandler(event -> new NoteUpdateDialog(document.getId(), 0L, null, NotesPanel.this).show()); + addNote.addClickHandler( + click -> new NoteUpdateDialog(document.getId(), 0L, null, null, save -> refresh()).show()); ToolStripButton annotations = new ToolStripButton(I18N.message("annotations")); annotations.addClickHandler( - event -> new com.logicaldoc.gui.frontend.client.document.note.AnnotationsWindow(document, null, + click -> new com.logicaldoc.gui.frontend.client.document.note.AnnotationsWindow(document, null, NotesPanel.this, true).show()); ToolStripButton export = new ToolStripButton(I18N.message("export")); - export.addClickHandler(event -> GridUtil.exportCSV(notesGrid, true)); + export.addClickHandler(click -> GridUtil.exportCSV(notesGrid, true)); ToolStripButton print = new ToolStripButton(I18N.message("print")); - print.addClickHandler(event -> GridUtil.print(notesGrid)); + print.addClickHandler(click -> GridUtil.print(notesGrid)); if (document.getFolder().isWrite()) { toolStrip.addButton(addNote); @@ -133,8 +134,8 @@ public void refresh() { edit.setEnabled(false); edit.addClickHandler(clickEvent -> { NoteUpdateDialog note = new NoteUpdateDialog(document.getId(), - notesGrid.getSelectedRecord().getAttributeAsLong("id"), - notesGrid.getSelectedRecord().getAttribute(MESSAGE), NotesPanel.this); + notesGrid.getSelectedRecord().getAttributeAsLong("id"), null, + notesGrid.getSelectedRecord().getAttribute(MESSAGE), save -> refresh()); note.show(); }); diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/VersionNotesWindow.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/VersionNotesWindow.java index dabd20086..86754fd35 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/VersionNotesWindow.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/note/VersionNotesWindow.java @@ -21,15 +21,23 @@ */ public class VersionNotesWindow extends Window { - public VersionNotesWindow(GUIDocument doc, String fileVer) { + private ListGrid notesGrid; + + private GUIDocument document; + + private String fileVersion; + + public VersionNotesWindow(GUIDocument document, String fileVer) { super(); - String fileVersion = fileVer; + fileVersion = fileVer; if (fileVersion == null) - fileVersion = doc.getFileVersion(); + fileVersion = document.getFileVersion(); + + this.document = document; setHeaderControls(HeaderControls.HEADER_LABEL, HeaderControls.CLOSE_BUTTON); - setTitle(I18N.message("notes") + " - " + doc.getFileName() + " v" + fileVersion); + setTitle(I18N.message("notes") + " - " + document.getFileName() + " v" + fileVersion); setWidth100(); setHeight100(); @@ -38,11 +46,41 @@ public VersionNotesWindow(GUIDocument doc, String fileVer) { setShowModalMask(true); centerInPage(); + ToolStrip toolStrip = new ToolStrip(); + toolStrip.setHeight(20); + toolStrip.setWidth100(); + toolStrip.addSpacer(2); + + ToolStripButton close = new ToolStripButton(); + close.setTitle(I18N.message("close")); + close.addClickHandler(event -> destroy()); + + ToolStripButton annotations = new ToolStripButton(); + annotations.setTitle(I18N.message("annotations")); + annotations.addClickHandler(event -> new AnnotationsWindow(document, + fileVer != null ? fileVer : document.getFileVersion(), null, false).show()); + + ToolStripButton addNote = new ToolStripButton(I18N.message("addnote")); + addNote.addClickHandler( + event -> new NoteUpdateDialog(document.getId(), 0L, fileVersion, null, save -> refresh()).show()); + + toolStrip.addButton(annotations); + toolStrip.addSeparator(); + toolStrip.addButton(close); + + addItem(toolStrip); + refresh(); + } + + protected void refresh() { + if (notesGrid != null) + removeItem(notesGrid); + ListGridField id = new ListGridField("id", I18N.message("id"), 50); id.setHidden(true); - ListGridField userId = new ListGridField("userId", "userid", 50); - userId.setHidden(true); + ListGridField fileVersionField = new ListGridField("fileVersion", I18N.message("fileversion"), 50); + fileVersionField.setHidden(true); UserListGridField user = new UserListGridField("user", "userId", "author"); DateListGridField date = new DateListGridField("date", "date"); @@ -58,32 +96,10 @@ public VersionNotesWindow(GUIDocument doc, String fileVer) { notesGrid.setEmptyMessage(I18N.message("notitemstoshow")); notesGrid.setCanFreezeFields(true); notesGrid.setAutoFetchData(true); - notesGrid.setDataSource(new NotesDS(null, doc.getId(), fileVersion, null)); - notesGrid.setFields(id, userId, user, date, page, content); + notesGrid.setDataSource(new NotesDS(null, document.getId(), fileVersion, null)); + notesGrid.setFields(id, user, date, page, fileVersionField, content); notesGrid.setWidth100(); - ToolStrip toolStrip = new ToolStrip(); - toolStrip.setHeight(20); - toolStrip.setWidth100(); - toolStrip.addSpacer(2); - - ToolStripButton close = new ToolStripButton(); - close.setTitle(I18N.message("close")); - close.addClickHandler(event -> destroy()); - - ToolStripButton annotations = new ToolStripButton(); - annotations.setTitle(I18N.message("annotations")); - annotations.addClickHandler(event -> { - AnnotationsWindow annotationWnd = new AnnotationsWindow(doc, - fileVer != null ? fileVer : doc.getFileVersion(), null, false); - annotationWnd.show(); - }); - - toolStrip.addButton(annotations); - toolStrip.addSeparator(); - toolStrip.addButton(close); - - addItem(toolStrip); addItem(notesGrid); } } \ No newline at end of file diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentService.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentService.java index 0b482638b..a7603bded 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentService.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentService.java @@ -535,11 +535,12 @@ public List createDownloadTicket(long docId, int type, String suffix, In * * @param docId identifier of the document * @param noteId identifier of the note + * @param fileVersion file version to bind the note to * @param note text of the note * * @throws ServerException an error happened in the server application */ - public void updateNote(long docId, long noteId, String note) throws ServerException; + public void updateNote(long docId, long noteId, String fileVersion, String note) throws ServerException; /** * Retrieves the notes of a document diff --git a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentServiceAsync.java b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentServiceAsync.java index d761f57e2..8affbe439 100644 --- a/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentServiceAsync.java +++ b/logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/services/DocumentServiceAsync.java @@ -28,7 +28,7 @@ public interface DocumentServiceAsync { void deleteLinks(List ids, AsyncCallback callback); void delete(List ids, AsyncCallback callback); - + void destroyDocuments(List ids, AsyncCallback callback); void makeImmutable(List ids, String comment, AsyncCallback callback); @@ -70,12 +70,13 @@ void addDocuments(String language, long folderId, boolean importZip, String char void addNote(long docId, String message, AsyncCallback callback); - void bulkUpdate(List ids, GUIDocument vo, boolean ignoreEmptyFields, AsyncCallback> callback); + void bulkUpdate(List ids, GUIDocument vo, boolean ignoreEmptyFields, + AsyncCallback> callback); void addDocuments(boolean importZip, String charset, boolean immediateIndexing, GUIDocument metadata, AsyncCallback> callback); - void updateNote(long docId, long noteId, String message, AsyncCallback callback); + void updateNote(long docId, long noteId, String fileVersion, String message, AsyncCallback callback); void deleteVersions(List ids, AsyncCallback callback); @@ -129,7 +130,8 @@ void saveEmailAttachment(long docId, String fileVersion, String attachmentFileNa void promoteVersion(long docId, String version, AsyncCallback callback); - void getNotes(long docId, String fileVersion, Collection types, AsyncCallback> callback); + void getNotes(long docId, String fileVersion, Collection types, + AsyncCallback> callback); void saveNotes(long docId, List notes, Collection types, AsyncCallback callback); diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java index 43e03b4d1..2a58c5407 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/config/ContextProperties.java @@ -192,7 +192,7 @@ public synchronized void write() throws IOException { FileUtil.moveQuitely(tmpFile, file); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } @@ -239,7 +239,7 @@ private void deleteOldestBackups() throws IOException { List backupsToRetain = oldBackups.stream().limit(maxBackups).toList(); for (File backupFile : oldBackups) if (!backupsToRetain.contains(backupFile)) - FileUtil.strongDelete(backupFile); + FileUtil.delete(backupFile); } } diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/crypt/CryptUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/crypt/CryptUtil.java index 2acf337c0..533c1aad1 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/crypt/CryptUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/crypt/CryptUtil.java @@ -78,7 +78,7 @@ public void encrypt(File inputFile, File outputFile) throws EncryptionException byte[] clearContent = FileUtils.readFileToByteArray(inputFile); byte[] encryptedContent = cipher.doFinal(clearContent); outputFile.mkdirs(); - FileUtil.strongDelete(outputFile); + FileUtil.delete(outputFile); boolean created = outputFile.createNewFile(); if (!created) throw new IOException("Cannot create file " + outputFile.getAbsolutePath()); @@ -99,7 +99,7 @@ public void decrypt(File inputFile, File outputFile) throws EncryptionException byte[] encryptedContent = FileUtils.readFileToByteArray(inputFile); byte[] clearContent = cipher.doFinal(encryptedContent); outputFile.mkdirs(); - FileUtil.strongDelete(outputFile); + FileUtil.delete(outputFile); boolean created = outputFile.createNewFile(); if (!created) throw new IOException("Cannot create file " + outputFile.getAbsolutePath()); diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/Exec.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/Exec.java index a5df50eb6..348c289b4 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/Exec.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/Exec.java @@ -253,6 +253,17 @@ public int exec(final String commandLine, String[] env, File dir, StringBuilder final Process process = Runtime.getRuntime().exec(commandLine, env, dir); + String commandForLog = " (" + commandForLog(commandLine) + ")"; + StreamEater errEater = new StreamEater(errPrefix + commandForLog, process.getErrorStream()); + + StreamEater outEater = new StreamEater(outPrefix + commandForLog, process.getInputStream(), buffer); + + Thread a = new Thread(errEater); + a.start(); + + Thread b = new Thread(outEater); + b.start(); + if (timeout > 0) { ExecutorService service = Executors.newSingleThreadExecutor(); try { @@ -273,17 +284,6 @@ public int exec(final String commandLine, String[] env, File dir, StringBuilder } } - String commandForLog = " (" + commandForLog(commandLine) + ")"; - StreamEater errEater = new StreamEater(errPrefix + commandForLog, process.getErrorStream()); - - StreamEater outEater = new StreamEater(outPrefix + commandForLog, process.getInputStream(), buffer); - - Thread a = new Thread(errEater); - a.start(); - - Thread b = new Thread(outEater); - b.start(); - try { exit = process.waitFor(); } catch (InterruptedException e) { diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/StreamEater.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/StreamEater.java index 77a5db7f5..e1a2e4ff1 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/StreamEater.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/exec/StreamEater.java @@ -6,8 +6,13 @@ import java.io.InputStreamReader; import java.io.Writer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class StreamEater implements Runnable { + protected static Logger log = LoggerFactory.getLogger(StreamEater.class); + private InputStream inputStream; private String prefix; @@ -35,19 +40,17 @@ public StreamEater(String prefix, InputStream stream) { } public void run() { - try (InputStreamReader isr = new InputStreamReader(inputStream); BufferedReader br = new BufferedReader(isr);) { + try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));) { String line = br.readLine(); - boolean firstLine = true; while (line != null) { - writeLine(line, firstLine); + writeLine(line); if (buffer != null) { - if (!firstLine) + if(!buffer.isEmpty()) buffer.append("\n"); buffer.append(line); } - firstLine = false; line = br.readLine(); } } catch (IOException e) { @@ -55,13 +58,11 @@ public void run() { } } - private void writeLine(String line, boolean firstLine) throws IOException { + private void writeLine(String line) throws IOException { if (prefix != null) - System.out.println(prefix + ": " + line); + log.debug("{}: {}", prefix, line); if (output != null && line != null) { - if (!firstLine) - output.write("\n"); output.write(line); output.flush(); } diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteInputStream.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteInputStream.java index c22d20102..22e31af60 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteInputStream.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteInputStream.java @@ -71,7 +71,7 @@ public int available() throws IOException { public void close() throws IOException { wrappedStream.close(); if (file != null) - FileUtil.strongDelete(file); + FileUtil.delete(file); } @Override diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteZipInputStream.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteZipInputStream.java index 2849bde6c..07e56165c 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteZipInputStream.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/AutoDeleteZipInputStream.java @@ -22,6 +22,6 @@ public AutoDeleteZipInputStream(net.lingala.zip4j.io.inputstream.ZipInputStream public void close() throws IOException { wrapped.close(); if (zipFile != null) - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } \ No newline at end of file diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/FileUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/FileUtil.java index 97d4c72a8..6b4ed49f1 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/FileUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/FileUtil.java @@ -13,6 +13,7 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.RandomAccessFile; +import java.net.URL; import java.nio.Buffer; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; @@ -28,6 +29,7 @@ import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Locale; import java.util.StringTokenizer; @@ -44,6 +46,8 @@ import org.slf4j.LoggerFactory; import org.springframework.util.CollectionUtils; +import com.logicaldoc.util.time.TimeDiff; + /** * This class manages I/O operations with files. * @@ -99,7 +103,8 @@ public static void writeFile(byte[] in, String filepath) throws IOException { } public static void writeFile(String text, String filepath) { - try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filepath));) { + try (FileOutputStream fos = new FileOutputStream(filepath); + BufferedOutputStream bos = new BufferedOutputStream(fos);) { bos.write(text.getBytes(StandardCharsets.UTF_8)); bos.flush(); } catch (Exception e) { @@ -120,6 +125,7 @@ public static String readFile(String filePath) throws IOException { public static void appendFile(String text, String filepath) { try (OutputStream bos = new FileOutputStream(filepath, true);) { bos.write(text.getBytes()); + bos.flush(); } catch (Exception e) { logError(e.getLocalizedMessage()); } @@ -220,26 +226,23 @@ public static String computeDigest(String src) { */ public static void copyResource(String resourceName, File out) throws IOException { out.getParentFile().mkdirs(); - InputStream is = null; - try { - try { - is = new BufferedInputStream(FileUtil.class.getResource(resourceName).openStream()); - } catch (Exception e) { - is = new BufferedInputStream( - Thread.currentThread().getContextClassLoader().getResource(resourceName).openStream()); - } - try (OutputStream os = new BufferedOutputStream(new FileOutputStream(out));) { - for (;;) { - int b = is.read(); - if (b == -1) - break; - os.write(b); - } + URL resourceUrl = FileUtil.class.getResource(resourceName); + if (resourceUrl == null) + resourceUrl = Thread.currentThread().getContextClassLoader().getResource(resourceName); + if (resourceUrl == null) + throw new IOException("Resource cannot be found: " + resourceName); + + try (InputStream is = resourceUrl.openStream(); + BufferedInputStream bis = new BufferedInputStream(is); + OutputStream os = new FileOutputStream(out); + BufferedOutputStream bos = new BufferedOutputStream(os);) { + for (;;) { + int b = is.read(); + if (b == -1) + break; + os.write(b); } - } finally { - if (is != null) - is.close(); } } @@ -578,27 +581,40 @@ public static void copyFile(File source, File target) throws IOException { } } - public static void strongDelete(File file) { + /** + * + * Deletes a file doing the best effort + * + * @param file the file to delete + * @return true inly if the deletion has been done successfully + */ + public static boolean delete(File file) { /* * Better to deleteQuitely first because the forceDelete seems to cause * locks at least on Windows when there are frequent deletions. Even * directly using the Windows command rd produces the same behavior */ - if (file != null && file.exists()) - if (!FileUtils.deleteQuietly(file)) { - log.debug("Cannot delete file/folder {}", file.getAbsolutePath()); - - // We could not delete the file so at least try to append .DELETE suffix - moveQuitely(file, new File(file.getParent(), file.getName() + ".DELETE")); - } + Date start = new Date(); + try { + return FileUtils.deleteQuietly(file); + } finally { + if (log.isDebugEnabled()) + log.debug("Deleted path {} in {}", file.getAbsolutePath(), TimeDiff.printDuration(start, new Date())); + } } public static void moveQuitely(File source, File target) { + Date start = new Date(); try { Files.move(source.toPath(), target.toPath(), StandardCopyOption.ATOMIC_MOVE, StandardCopyOption.REPLACE_EXISTING); - } catch (IOException e) { + } catch (Exception e) { log.warn("Cannot move {} into {}", source.getAbsolutePath(), target.getAbsolutePath()); + log.warn(e.getMessage(), e); + } finally { + if (log.isDebugEnabled()) + log.debug("Moved path {} into {}", source.getAbsolutePath(), target.getAbsolutePath(), + TimeDiff.printDuration(start, new Date())); } } @@ -653,7 +669,8 @@ public static List split(File file, long chunkSize, File destDir) throws I int maxReadBufferSize = 8 * 1024; // 8KB for (int destIx = 1; destIx <= numSplits; destIx++) { File chunkFile = new File(destDir, nf.format(destIx)); - try (BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream(chunkFile));) { + try (FileOutputStream fos = new FileOutputStream(chunkFile); + BufferedOutputStream bw = new BufferedOutputStream(fos);) { if (chunkSize > maxReadBufferSize) { long numReads = chunkSize / maxReadBufferSize; long numRemainingRead = chunkSize % maxReadBufferSize; @@ -672,9 +689,10 @@ public static List split(File file, long chunkSize, File destDir) throws I if (remainingBytes > 0) { File chunkFile = new File(destDir, nf.format(numSplits + 1)); - BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream(chunkFile)); - readWrite(raf, bw, remainingBytes); - bw.close(); + try (FileOutputStream fos = new FileOutputStream(chunkFile); + BufferedOutputStream bos = new BufferedOutputStream(fos);) { + readWrite(raf, bos, remainingBytes); + } chunks.add(chunkFile); } } @@ -733,8 +751,8 @@ public static File createTempFile(String prefix, String suffix) throws IOExcepti * Creates an empty folder in the default temporary-file directory, using * the given prefix to generate its name. * - * @param prefix The prefix string to be used in generating the file'sname; - * must be at least three characters longsuffix + * @param prefix The prefix string to be used in generating the folder's + * name; must be at least three characters longsuffix * * @return An abstract pathname denoting a newly-created empty folder * diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/IOUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/IOUtil.java index d0cd91145..ebccfb093 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/IOUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/IOUtil.java @@ -52,10 +52,10 @@ public static InputStream getLimitedStream(InputStream input, long limit) { } public static void write(InputStream input, OutputStream output) throws IOException { - int letter = 0; + int totalBytes = 0; byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; - while ((letter = input.read(buffer)) != -1) { - output.write(buffer, 0, letter); + while ((totalBytes = input.read(buffer)) != -1) { + output.write(buffer, 0, totalBytes); } } diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/JarUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/JarUtil.java index 9bf0acd8f..3222b341e 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/JarUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/JarUtil.java @@ -67,7 +67,7 @@ public void unjar(String jarsource, String target) throws IOException { File targetDir = new File(target); if (targetDir.exists() && targetDir.isFile()) - FileUtil.strongDelete(targetDir); + FileUtil.delete(targetDir); if (!targetDir.exists()) FileUtils.forceMkdir(targetDir); diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/ZipUtil.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/ZipUtil.java index b4024a61c..b9bf9a6b4 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/io/ZipUtil.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/io/ZipUtil.java @@ -525,7 +525,7 @@ public void unGZipUnTar(File tarGzFile, File targetDir) throws IOException { } } finally { if (tarFile != null && tarFile.exists()) - FileUtil.strongDelete(tarFile); + FileUtil.delete(tarFile); } } diff --git a/logicaldoc-util/src/main/java/com/logicaldoc/util/junit/AbstractTestCase.java b/logicaldoc-util/src/main/java/com/logicaldoc/util/junit/AbstractTestCase.java index 4f708ff6f..b51d5f0c3 100644 --- a/logicaldoc-util/src/main/java/com/logicaldoc/util/junit/AbstractTestCase.java +++ b/logicaldoc-util/src/main/java/com/logicaldoc/util/junit/AbstractTestCase.java @@ -162,7 +162,7 @@ private void createDatabase() throws SQLException, IOException { throw new SQLException(e.getMessage(), e); } } finally { - FileUtil.strongDelete(sqlFile); + FileUtil.delete(sqlFile); } } @@ -181,8 +181,7 @@ private void createDatabase() throws SQLException, IOException { */ private void loadDevelSettings() throws IOException { Properties devSettings = new Properties(); - try (FileReader reader = new FileReader( - new File(System.getProperty(USER_HOME) + "/logicaldoc-dev.properties"))) { + try (FileReader reader = new FileReader(new File(userHome + "/logicaldoc-dev.properties"))) { devSettings.load(reader); for (Map.Entry entry : devSettings.entrySet()) System.setProperty(entry.getKey().toString(), entry.getValue().toString()); @@ -190,9 +189,7 @@ private void loadDevelSettings() throws IOException { } protected void createTestDirs() { - FileUtil.strongDelete(tempDir); - FileUtil.strongDelete(tempDir); - FileUtil.strongDelete(tempDir); + FileUtil.delete(tempDir); tempDir.mkdirs(); } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/UtilWorkbench.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/UtilWorkbench.java index 93024d4b6..cf4ec3a94 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/UtilWorkbench.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/UtilWorkbench.java @@ -1,36 +1,28 @@ package com.logicaldoc.util; -import java.util.Date; - import org.apache.commons.lang.StringEscapeUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document.OutputSettings; import org.jsoup.safety.Safelist; -import com.logicaldoc.util.crypt.CryptUtil; -import com.logicaldoc.util.time.DateUtil; - public class UtilWorkbench { - /** - * @param args - * @throws Exception - */ public static void main(String[] args) throws Exception { - String unsafeHtmlContent="TEST<<img src=1 onerror=confirm(document.domain)>>TEST2"; - + String unsafeHtmlContent = "TEST<<img src=1 onerror=confirm(document.domain)>>TEST2"; + OutputSettings outputSettings = new OutputSettings().indentAmount(0).prettyPrint(false); Safelist whiteList = Safelist.simpleText().preserveRelativeLinks(false); - - String previousSanitized=""; - String sanitized = StringEscapeUtils.unescapeHtml(Jsoup.clean(unsafeHtmlContent, "", whiteList, outputSettings)); - while(!previousSanitized.equals(sanitized)) { - previousSanitized=sanitized; + + String previousSanitized = ""; + String sanitized = StringEscapeUtils + .unescapeHtml(Jsoup.clean(unsafeHtmlContent, "", whiteList, outputSettings)); + while (!previousSanitized.equals(sanitized)) { + previousSanitized = sanitized; sanitized = StringEscapeUtils.unescapeHtml(Jsoup.clean(previousSanitized, "", whiteList, outputSettings)); } System.out.println(sanitized); - + // File file = new File("target/context.properties"); // ContextProperties context=new ContextProperties(file); // context.setProperty("gui.welcome", "מגיע להופעה בישר�ל ו�ת� נהני� מהטבה ייחודית"); diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java index 1394cc02f..5e8228604 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/config/ContextPropertiesTest.java @@ -35,9 +35,9 @@ public void setUp() throws IOException { @After public void trearDown() throws IOException { - FileUtil.strongDelete(propsFile); + FileUtil.delete(propsFile); for (File backupFile : contextProperties.getBackups()) { - FileUtil.strongDelete(backupFile); + FileUtil.delete(backupFile); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/crypt/CryptUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/crypt/CryptUtilTest.java index 1d0b8143c..f9d192d2a 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/crypt/CryptUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/crypt/CryptUtilTest.java @@ -41,8 +41,8 @@ public void testEncryptFile() throws IOException, EncryptionException { Assert.assertEquals(clearFile.length(), decryptedFile.length()); } finally { - FileUtil.strongDelete(cryptedFile); - FileUtil.strongDelete(decryptedFile); + FileUtil.delete(cryptedFile); + FileUtil.delete(decryptedFile); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/exec/ExecTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/exec/ExecTest.java index 2b207d12f..f53ab754b 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/exec/ExecTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/exec/ExecTest.java @@ -174,48 +174,34 @@ public void testExecStringStringArrayFile() { } @Test - public void testExecStringStringArrayFileStringBufferInt() { - File exeFile = new File("target\\test-classes\\nothing.bat @TaylorSwift #Midnights"); + public void testExecStringStringArrayFileStringBufferInt() throws IOException { + File exeFile = new File("target\\test-classes\\nothing.bat \"@TaylorSwift\" \"#Midnights\""); String[] envp = { "TS10=MidnightTS" }; - try { - if (new Exec().isWindows()) { - File userDir = new File(System.getProperty("user.dir")); - StringBuilder sb = new StringBuilder(); - int retval = new Exec().exec(exeFile.getPath(), envp, userDir, sb, 20); - log.info("retval: {}", retval); - assertEquals(0, retval); - log.info("sb: {}", sb); - String out = sb.toString(); - System.out.println(">>" + out); - assertTrue(out.contains("TaylorSwift")); - } - } catch (IOException e) { - e.printStackTrace(); - fail("Unexpected exception was thrown"); + if (new Exec().isWindows()) { + File userDir = new File(System.getProperty("user.dir")); + StringBuilder sb = new StringBuilder(); + int retval = new Exec().exec(exeFile.getPath(), envp, userDir, sb, 20); + assertEquals(0, retval); + assertTrue(sb.toString().toLowerCase().contains("taylorswift")); } } @Test - public void testExecStringStringArrayFileWriterInt() { + public void testExecStringStringArrayFileWriterInt() throws IOException { File exeFile = new File("target\\test-classes\\loop.bat"); String[] envp = { "TS10loopcount=1000000" }; - try { - if (new Exec().isWindows()) { - File userDir = new File(System.getProperty("user.dir")); - StringWriter sw = new StringWriter(); - int retval = new Exec().exec(exeFile.getPath(), envp, userDir, sw, 5); - log.info("retval: {}", retval); - assertEquals(1, retval); - String out = sw.toString(); - assertTrue(out.isEmpty() || out.contains("1000000") || out.contains("Hello World!")); - } - } catch (IOException e) { - e.printStackTrace(); - fail("Unexpected exception was thrown"); + if (new Exec().isWindows()) { + File userDir = new File(System.getProperty("user.dir")); + StringWriter sw = new StringWriter(); + int retval = new Exec().exec(exeFile.getPath(), envp, userDir, sw, 5); + log.info("retval: {}", retval); + assertEquals(1, retval); + String out = sw.toString(); + assertTrue(out.isEmpty() || out.contains("1000000") || out.contains("Hello World!")); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/FileUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/FileUtilTest.java index ac6a8a9a2..d9172e2d6 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/FileUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/FileUtilTest.java @@ -10,11 +10,61 @@ import java.io.InputStream; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.IntStream; +import org.apache.commons.io.FileUtils; import org.junit.Test; public class FileUtilTest { + @Test + public void testDelete() throws IOException { + File root = new File("target/test-destroy"); + + int total = 1000; + + for (int i = 0; i < total; i++) { + String x = Integer.toString(i); + String result = IntStream.iterate(0, j -> j + 3).limit((int) Math.ceil(x.length() / 3.0)) + .mapToObj(j -> x.substring(j, Math.min(j + 3, x.length()))).collect(Collectors.joining("/")); + File dir = new File(root.getPath() + "/" + result); + dir.mkdirs(); + dir.mkdir(); + + FileUtil.copyResource("/kofax.rar", new File(root.getPath() + "/1/doc/1.0")); + } + + assertEquals(total, root.listFiles().length); + + for (File dir : root.listFiles()) { + FileUtil.delete(dir); + } + + assertEquals(0, root.listFiles().length); + } + + @Test + public void testWriteFile() throws IOException { + File root = new File("target/test-writefile"); + FileUtils.forceMkdir(root); + int total = 1000; + + for (int i = 0; i < total; i++) { + File outFile = new File(root+"/"+Integer.toString(i)); + FileUtil.writeFile(this.getClass().getResourceAsStream("/kofax.rar") , outFile.getPath() ); + assertTrue(outFile.length() > 0); + assertEquals(new File("src/test/resources/kofax.rar").length(), outFile.length()); + } + + assertEquals(total, root.listFiles().length); + + for (File file : root.listFiles()) { + FileUtil.delete(file); + } + + assertEquals(0, root.listFiles().length); + } + @Test public void testMatch() throws IOException { assertTrue(FileUtil.matches("ReleaseNotes.txt", "*.doc,*.txt", "")); @@ -54,19 +104,6 @@ public void testReplaceInFile() throws IOException { assertFalse(content.contains("test-classes")); } - @Test - public void testWriteFile() throws IOException { - File outFile = new File("target/testwrite.txt"); - try { - FileUtil.writeFile(this.getClass().getResourceAsStream("/context.properties"), outFile.getPath()); - assertTrue(outFile.length() > 0); - assertTrue(FileUtil.readFile(outFile).contains("store.1.dir")); - assertEquals(170, FileUtil.countLines(outFile)); - } finally { - FileUtil.strongDelete(outFile); - } - } - @Test public void testMerge() throws IOException { File merged = new File("target/merged.txt"); @@ -80,7 +117,7 @@ public void testMerge() throws IOException { assertTrue(FileUtil.readFile(merged).contains("newprop")); assertEquals(lines1 + lines2 - 1, FileUtil.countLines(merged)); } finally { - FileUtil.strongDelete(merged); + FileUtil.delete(merged); } final List mergedFiles = List.of(file1, file2, new File("src/test/resources/sql1.sql")); @@ -96,7 +133,7 @@ public void testMerge() throws IOException { } })).getSum() - mergedFiles.size() + 1, FileUtil.countLines(merged)); } finally { - FileUtil.strongDelete(merged); + FileUtil.delete(merged); } } @@ -114,7 +151,7 @@ public void testSplit() throws IOException { assertEquals(source.length() - (chunkSize * (chunks.size() - 1)), chunks.get(chunks.size() - 1).length()); } finally { for (File chunk : chunks) - FileUtil.strongDelete(chunk); + FileUtil.delete(chunk); } try { @@ -127,7 +164,7 @@ public void testSplit() throws IOException { assertEquals(source.length() - (chunkSize * (chunks.size() - 1)), chunks.get(chunks.size() - 1).length()); } finally { for (File chunk : chunks) - FileUtil.strongDelete(chunk); + FileUtil.delete(chunk); } } @@ -142,7 +179,7 @@ public void testAppend() throws IOException { FileUtil.appendFile("pippo", outFile.getPath()); assertTrue(FileUtil.readFile(outFile).endsWith("pippo")); } finally { - FileUtil.strongDelete(outFile); + FileUtil.delete(outFile); } } @@ -157,7 +194,7 @@ public void testWriteUTF8() throws IOException { FileUtil.writeUTF8("pippo", outFile, true); assertTrue(FileUtil.readFile(outFile).endsWith("pippo")); } finally { - FileUtil.strongDelete(outFile); + FileUtil.delete(outFile); } } @@ -196,7 +233,7 @@ public void testGetFolderSize() throws IOException { FileUtil.copy(file2, new File(subfolder, "context-overide.properties"), 0); assertEquals(file1.length() + file2.length() + file2.length(), FileUtil.getFolderSize(outFolder)); } finally { - FileUtil.strongDelete(outFolder); + FileUtil.delete(outFolder); } } @@ -220,7 +257,7 @@ public void testMoveQuitely() throws IOException { assertFalse(source.exists()); assertTrue(target.exists()); } finally { - FileUtil.strongDelete(outFolder); + FileUtil.delete(outFolder); } } @@ -238,8 +275,8 @@ public void testCreateTempFile() throws IOException { assertTrue(tempFolder.exists()); assertTrue(FileUtil.getName(tempFolder.getName()).startsWith("pippo")); } finally { - FileUtil.strongDelete(tempFile); - FileUtil.strongDelete(tempFolder); + FileUtil.delete(tempFile); + FileUtil.delete(tempFolder); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/IOUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/IOUtilTest.java index 7d87580e1..2a934e934 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/IOUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/IOUtilTest.java @@ -24,7 +24,7 @@ public void testGetLimitedStream() throws IOException { assertTrue(content.endsWith("store.1.dir=targe")); assertFalse(content.contains("default.password.occurrence")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } } @@ -37,7 +37,7 @@ public void testWrite() throws IOException { assertEquals(new File("src/test/resources/context.properties").length(), file.length()); } finally { IOUtil.close(is); - FileUtil.strongDelete(file); + FileUtil.delete(file); } assertFalse(file.exists()); @@ -47,7 +47,7 @@ public void testWrite() throws IOException { assertEquals(new File("src/test/resources/context.properties").length(), file.length()); } finally { IOUtil.close(is); - FileUtil.strongDelete(file); + FileUtil.delete(file); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/JarUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/JarUtilTest.java index 6d5323095..16c9d2e25 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/JarUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/JarUtilTest.java @@ -32,7 +32,7 @@ public void setUp() throws FileNotFoundException, IOException, SQLException, Plu @After public void tearDown() throws Exception { - FileUtil.strongDelete(dir); + FileUtil.delete(dir); } @Test @@ -43,7 +43,7 @@ public void testUnjar() throws IOException { testSubject.unjar(file.getPath(), "target/test"); assertTrue(test.exists()); } finally { - FileUtil.strongDelete(test); + FileUtil.delete(test); } } diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/P7MTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/P7MTest.java index da3e32060..61a22eccb 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/P7MTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/P7MTest.java @@ -23,14 +23,14 @@ public void testExtractOriginalFile() throws IOException, CMSException { String content = FileUtil.readFile(file); assertTrue(content.contains("p:FatturaElettronica xmlns")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } try { new P7M((byte[]) null).read(); fail("no exception if null content was specified?"); } catch (Exception e) { - FileUtil.strongDelete(file); + FileUtil.delete(file); } try { @@ -40,7 +40,7 @@ public void testExtractOriginalFile() throws IOException, CMSException { String content = FileUtil.readFile(file); assertTrue(content.contains("p:FatturaElettronica xmlns")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } try { @@ -53,7 +53,7 @@ public void testExtractOriginalFile() throws IOException, CMSException { String content = FileUtil.readFile(file); assertTrue(content.contains("p:FatturaElettronica xmlns")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } P7M p7m = new P7M(this.getClass().getResourceAsStream("/test.p7m")); @@ -61,7 +61,7 @@ public void testExtractOriginalFile() throws IOException, CMSException { String content = IOUtil.readStream(is); assertTrue(content.contains("p:FatturaElettronica xmlns")); } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } } } \ No newline at end of file diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/RarUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/RarUtilTest.java index f8de3c688..01b305060 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/RarUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/RarUtilTest.java @@ -33,7 +33,7 @@ public void setUp() throws FileNotFoundException, IOException, SQLException, Plu @After public void tearDown() throws Exception { - FileUtil.strongDelete(dir); + FileUtil.delete(dir); } @Test diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ResourceUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ResourceUtilTest.java index 715aeff01..6e5527145 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ResourceUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ResourceUtilTest.java @@ -26,7 +26,7 @@ public void testCopyResource() throws IOException { ResourceUtil.copyResource("/context.xml", out); assertTrue(out.length() > 0); } finally { - FileUtil.strongDelete(out); + FileUtil.delete(out); } } @@ -43,7 +43,7 @@ public void testReadAsBytes() throws IOException { IOUtil.write(new ByteArrayInputStream(ResourceUtil.readAsBytes("/context.xml")), out); assertTrue(out.length() > 0); } finally { - FileUtil.strongDelete(out); + FileUtil.delete(out); } } } \ No newline at end of file diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/SevenZipUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/SevenZipUtilTest.java index faa4617a1..8aba0ce80 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/SevenZipUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/SevenZipUtilTest.java @@ -33,7 +33,7 @@ public void setUp() throws FileNotFoundException, IOException, SQLException, Plu @After public void tearDown() throws Exception { - FileUtil.strongDelete(dir); + FileUtil.delete(dir); } @Test diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/TarUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/TarUtilTest.java index 46cfdccef..92de126ab 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/TarUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/TarUtilTest.java @@ -27,7 +27,7 @@ public void testExtractEntry() throws IOException { assertTrue(out.exists()); assertTrue(FileUtil.readFile(out).contains("")); } finally { - FileUtil.strongDelete(out); + FileUtil.delete(out); } } } \ No newline at end of file diff --git a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ZipUtilTest.java b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ZipUtilTest.java index 06d990f43..d54c5c2e0 100644 --- a/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ZipUtilTest.java +++ b/logicaldoc-util/src/test/java/com/logicaldoc/util/io/ZipUtilTest.java @@ -68,13 +68,13 @@ public void testUnzip() throws IOException { testSubject.unzip(this.getClass().getResourceAsStream("/test.zip"), "abc/test.txt", test); assertTrue(test.exists()); - FileUtil.strongDelete(test); + FileUtil.delete(test); testSubject.unzip(new File("src/test/resources/test.zip"), "/abc/test.txt", test); assertTrue(test.exists()); } finally { - FileUtil.strongDelete(test); - FileUtil.strongDelete(indexXml); + FileUtil.delete(test); + FileUtil.delete(indexXml); } } @@ -139,7 +139,7 @@ public void testZipFile() throws IOException { testSubject.zipFile(new File("src/test/resources/context.properties"), context); assertNotNull(testSubject.getEntryContent(context, "/context.properties")); } finally { - FileUtil.strongDelete(context); + FileUtil.delete(context); } } diff --git a/logicaldoc-util/src/test/resources/log4j2.xml b/logicaldoc-util/src/test/resources/log4j2.xml index cfd15c73b..33545c812 100644 --- a/logicaldoc-util/src/test/resources/log4j2.xml +++ b/logicaldoc-util/src/test/resources/log4j2.xml @@ -21,7 +21,10 @@ - + + + + diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/DownloadAttachmentServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/DownloadAttachmentServlet.java index dee219786..91f115f29 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/DownloadAttachmentServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/DownloadAttachmentServlet.java @@ -110,7 +110,7 @@ private void download(HttpServletRequest request, HttpServletResponse response, FileUtils.writeByteArrayToFile(tmp, attachment.getData()); ServletUtil.downloadFile(request, response, tmp, filename); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/LogDownload.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/LogDownload.java index 03171e5c1..baa0f056c 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/LogDownload.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/LogDownload.java @@ -165,7 +165,7 @@ private File prepareAllSupportResources() throws IOException, PersistenceExcepti FileUtil.writeFile(env, buf.getPath()); writeEntry(out, "logicaldoc/conf/environment.txt", buf); - FileUtil.strongDelete(buf); + FileUtil.delete(buf); /* * Discover the tomcat's folder @@ -292,7 +292,7 @@ private void dumpUpdateTable(ZipOutputStream out) throws IOException, Persistenc writeEntry(out, "logicaldoc/updates/updates.csv", buf); } finally { - FileUtil.strongDelete(buf); + FileUtil.delete(buf); } } @@ -332,7 +332,7 @@ private void dumpPatchTable(ZipOutputStream out) throws IOException, Persistence writeEntry(out, "logicaldoc/patches/patches.csv", buf); } finally { - FileUtil.strongDelete(buf); + FileUtil.delete(buf); } } @@ -364,7 +364,7 @@ private OrderedProperties writeContextPropertiesDump(ZipOutputStream out) throws } prop.store(new FileOutputStream(buf), "Support Request"); writeEntry(out, "logicaldoc/conf/context-dump.properties", buf); - FileUtil.strongDelete(buf); + FileUtil.delete(buf); return prop; } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/UploadServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/UploadServlet.java index f25471370..7fab32fb9 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/UploadServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/UploadServlet.java @@ -190,7 +190,7 @@ public static Map getReceivedFiles(HttpServletRequest request) { * @param sid The current session ID */ public static void cleanReceivedFiles(String sid) { - FileUtil.strongDelete(getUploadDir(sid)); + FileUtil.delete(getUploadDir(sid)); Map receivedFiles = getReceivedFiles(sid); receivedFiles.clear(); } @@ -201,7 +201,7 @@ public static void cleanReceivedFiles(String sid) { * @param httpSession The current session */ public static void cleanReceivedFiles(HttpSession httpSession) { - FileUtil.strongDelete(getUploadDir(httpSession)); + FileUtil.delete(getUploadDir(httpSession)); getReceivedFiles(httpSession).clear(); } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/listener/ApplicationListener.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/listener/ApplicationListener.java index 7d296266b..02e3c5772 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/listener/ApplicationListener.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/listener/ApplicationListener.java @@ -63,7 +63,7 @@ public void contextDestroyed(ServletContextEvent sce) { onShutdown(); } finally { if (pidCreated) - FileUtil.strongDelete(getPidFile()); + FileUtil.delete(getPidFile()); } } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java index bbf85f140..c7aa658c9 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/DocumentServiceImpl.java @@ -230,7 +230,7 @@ public void destroyDocuments(List docIds) throws ServerException { checkMenu(Menu.DESTROY_DOCUMENTS); log.info("User {} requested the permanent deletion of docuemnts {}", session.getUsername(), docIds); - + DocumentManager manager = (DocumentManager) Context.get().getBean(DocumentManager.class); executeLongRunningOperation("Destroy Documents", () -> { @@ -329,7 +329,7 @@ private void addDocuments(boolean importZip, String charset, boolean immediateIn docs.add(doc); } } finally { - FileUtil.strongDelete(file); + FileUtil.delete(file); } } @@ -353,7 +353,7 @@ private void checkWritePermission(final GUIDocument metadata, final Session sess private void cleanUploadedFiles(Session session) { Map uploadedFilesMap = getUploadedFiles(session.getSid()); for (File uploadedEntry : uploadedFilesMap.values()) - FileUtil.strongDelete(uploadedEntry); + FileUtil.delete(uploadedEntry); } private void importZip(String charset, final GUIDocument metadata, final Session session, Folder parent, @@ -373,7 +373,7 @@ private void importZip(String charset, final GUIDocument metadata, final Session } catch (PersistenceException e) { log.error("Unable to delete temporary file", e); } finally { - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } @@ -1540,7 +1540,7 @@ private void prepareZipAttachment(EMail mail, List docIds, boolean pdfConv } catch (IOException | PersistenceException t) { log.error(t.getMessage(), t); } finally { - FileUtil.strongDelete(zipFile); + FileUtil.delete(zipFile); } } @@ -1555,7 +1555,7 @@ private void writeMessageWithThumbnail(EMail mail, Document doc, String message, } catch (IOException ioe) { log.warn(ioe.getMessage()); } finally { - FileUtil.strongDelete(thumbnailFile); + FileUtil.delete(thumbnailFile); } } @@ -1776,7 +1776,7 @@ public void cleanUploadedFileFolder() throws ServerException { File dir = new File(System.getProperty("java.io.tmpdir") + "/upload/" + session.getSid()); if (dir.exists()) - FileUtil.strongDelete(dir); + FileUtil.delete(dir); } @Override @@ -2157,7 +2157,7 @@ protected static void checkPublished(User user, Document doc) throws PermissionE } @Override - public void updateNote(long docId, long noteId, String message) throws ServerException { + public void updateNote(long docId, long noteId, String fileVersion, String message) throws ServerException { Session session = validateSession(); try { @@ -2178,7 +2178,7 @@ public void updateNote(long docId, long noteId, String message) throws ServerExc } note.setFileName(document.getFileName()); - note.setFileVersion(document.getFileVersion()); + note.setFileVersion(StringUtils.defaultIfEmpty(fileVersion, document.getFileVersion())); note.setMessage(message); note.setUserId(session.getUser().getId()); note.setUsername(session.getUser().getFullName()); @@ -2798,7 +2798,7 @@ public GUIDocument saveEmailAttachment(long docId, String fileVersion, String at return (GUIDocument) throwServerException(session, log, e); } finally { IOUtils.closeQuietly(is); - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } } @@ -3155,7 +3155,7 @@ private String prepareTileAsString(Session session, Document doc) { } catch (IOException e) { log.warn("Cannot generate tile of document {}", doc, e); } finally { - FileUtil.strongDelete(tileFile); + FileUtil.delete(tileFile); } return tile; } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java index 6059878ff..13c7e4245 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/service/SystemServiceImpl.java @@ -866,8 +866,8 @@ public void uninstallPlugin(String pluginId) throws ServerException { pluginRegistry.getManager().deactivatePlugin(pluginId); - FileUtil.strongDelete(PluginRegistry.getPluginHome(pluginId)); - FileUtil.strongDelete(pluginJarFile); + FileUtil.delete(PluginRegistry.getPluginHome(pluginId)); + FileUtil.delete(pluginJarFile); if (pluginJarFile.exists()) try { FileUtils.forceDelete(pluginJarFile); @@ -991,7 +991,7 @@ public void installPlugin() throws ServerException { File pluginHome = PluginRegistry.getPluginHome(pluginId); if (pluginHome.exists()) { - FileUtil.strongDelete(pluginHome); + FileUtil.delete(pluginHome); log.info("Deleted existing plugin home {}", pluginHome.getAbsolutePath()); } diff --git a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/stat/StatChartServlet.java b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/stat/StatChartServlet.java index a45d77004..6d4d0e913 100644 --- a/logicaldoc-webapp/src/main/java/com/logicaldoc/web/stat/StatChartServlet.java +++ b/logicaldoc-webapp/src/main/java/com/logicaldoc/web/stat/StatChartServlet.java @@ -99,7 +99,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) { } catch (Exception ex) { log.error(ex.getMessage(), ex); } finally { - FileUtil.strongDelete(chartFile); + FileUtil.delete(chartFile); } } diff --git a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/DocumentServiceImplTest.java b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/DocumentServiceImplTest.java index e4a8a6e7d..1e0f015ce 100644 --- a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/DocumentServiceImplTest.java +++ b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/DocumentServiceImplTest.java @@ -390,7 +390,7 @@ public void testReplaceFile() throws ServerException, IOException { assertTrue(service.getContentAsString(7).contains("replaced contents")); } finally { - FileUtil.strongDelete(tmpFile); + FileUtil.delete(tmpFile); } } @@ -621,8 +621,8 @@ public void testMerge() throws ServerException, IOException, InterruptedExceptio assertNotNull(mergedDoc); assertEquals("merged.pdf", mergedDoc.getFileName()); } finally { - FileUtil.strongDelete(pdf1); - FileUtil.strongDelete(pdf2); + FileUtil.delete(pdf1); + FileUtil.delete(pdf2); } } @@ -648,7 +648,7 @@ public void testUpdatePages() throws ServerException, IOException, InterruptedEx assertEquals(2, service.updatePages(createdDocs.get(0).getId())); } finally { - FileUtil.strongDelete(pdf2); + FileUtil.delete(pdf2); } } @@ -1212,7 +1212,7 @@ public void testUpdateNote() throws ServerException { assertEquals(1, notes.size()); assertEquals("message for note 3", notes.get(0).getMessage()); - service.updateNote(4, notes.get(0).getId(), "updated message"); + service.updateNote(4, notes.get(0).getId(), null, "updated message"); List notes2 = service.getNotes(4, null, null); assertEquals(1, notes2.size()); assertEquals(notes.get(0).getId(), notes2.get(0).getId()); diff --git a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SecurityServiceImplTest.java b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SecurityServiceImplTest.java index f031a6cde..e0b59218c 100644 --- a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SecurityServiceImplTest.java +++ b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SecurityServiceImplTest.java @@ -430,7 +430,7 @@ public void testSaveAvatar() throws ServerException, PersistenceException, IOExc user = userDAO.findById(1L); assertNotSame(oldAvatar, user.getAvatar()); } finally { - FileUtil.strongDelete(avatarFile); + FileUtil.delete(avatarFile); } } diff --git a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SystemServiceImplTest.java b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SystemServiceImplTest.java index 29afc0204..88495c79e 100644 --- a/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SystemServiceImplTest.java +++ b/logicaldoc-webapp/src/test/java/com/logicaldoc/web/service/SystemServiceImplTest.java @@ -60,7 +60,7 @@ public void setUp() throws FileNotFoundException, IOException, SQLException, Plu @Override public void tearDown() throws SQLException { super.tearDown(); - FileUtil.strongDelete(SystemServiceImpl.defaultWebappRootFolder); + FileUtil.delete(SystemServiceImpl.defaultWebappRootFolder); } @Override @@ -144,7 +144,7 @@ public void testRestart() throws ServerException { try { assertTrue(restartFile.exists()); } finally { - FileUtil.strongDelete(restartFile); + FileUtil.delete(restartFile); } } diff --git a/logicaldoc-webapp/src/test/resources/contexttest.properties b/logicaldoc-webapp/src/test/resources/contexttest.properties index 23290717f..0902d90ac 100644 --- a/logicaldoc-webapp/src/test/resources/contexttest.properties +++ b/logicaldoc-webapp/src/test/resources/contexttest.properties @@ -175,6 +175,7 @@ default.smtp.protocol = smtp default.smtp.clientSecret= default.smtp.clientId= default.smtp.clientTenant= +smtp.nosend = true default.ocr.text.threshold=1 default.ocr.resolution.threshold=600 diff --git a/logicaldoc-webapp/src/test/resources/log4j2.xml b/logicaldoc-webapp/src/test/resources/log4j2.xml index 8bdafb155..ccf748d2b 100644 --- a/logicaldoc-webapp/src/test/resources/log4j2.xml +++ b/logicaldoc-webapp/src/test/resources/log4j2.xml @@ -50,6 +50,9 @@ + + + diff --git a/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java b/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java index 9ae289236..fa152c7a1 100644 --- a/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java +++ b/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ExportContextImpl.java @@ -137,7 +137,7 @@ public void informCompleted(boolean success) { writeFile(hasContentLength); } - FileUtil.strongDelete(outFile); + FileUtil.delete(outFile); } private void writeFile(boolean hasContentLength) { diff --git a/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ImportContextImpl.java b/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ImportContextImpl.java index 938f48c0d..8f1bddaaa 100644 --- a/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ImportContextImpl.java +++ b/logicaldoc-webdav/src/main/java/com/logicaldoc/webdav/context/ImportContextImpl.java @@ -112,7 +112,7 @@ public Object getProperty(Object propertyName) { public void informCompleted(boolean success) { checkCompleted(); completed = true; - FileUtil.strongDelete(inputFile); + FileUtil.delete(inputFile); } public boolean isCompleted() { diff --git a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/WebserviceChartServlet.java b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/WebserviceChartServlet.java index 51b5ee4de..8cef14818 100644 --- a/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/WebserviceChartServlet.java +++ b/logicaldoc-webservice/src/main/java/com/logicaldoc/webservice/WebserviceChartServlet.java @@ -124,7 +124,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro } catch (Exception e) { log.error(e.getMessage(), e); } finally { - FileUtil.strongDelete(chartFile); + FileUtil.delete(chartFile); } } } \ No newline at end of file diff --git a/logicaldoc-webservice/src/test/java/com/logicaldoc/webservice/SoapMultithreadWorkbench.java b/logicaldoc-webservice/src/test/java/com/logicaldoc/webservice/SoapMultithreadWorkbench.java index f9bcb5efd..309693a76 100644 --- a/logicaldoc-webservice/src/test/java/com/logicaldoc/webservice/SoapMultithreadWorkbench.java +++ b/logicaldoc-webservice/src/test/java/com/logicaldoc/webservice/SoapMultithreadWorkbench.java @@ -119,7 +119,7 @@ public String call() throws Exception { documentClient.checkin(sid, docId, "soap massive test", wsDoc.getFileName(), false, tmp); } finally { - FileUtil.strongDelete(tmp); + FileUtil.delete(tmp); } }