branch develop updated (a224b1de -> dd2c22ad)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git from a224b1de [jgitflow-maven-plugin]Updating develop poms back to pre merge state new 9a003ccd refs #9931 - Should be able to : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) - delete PDF Pages on archived mail - no previsualisation on DemandUI for Archived demands new 3db6ecf1 refs #9931 - Tested : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) new b2586ff5 refs #9931 - Remove System.out.println - Tested : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) - delete PDF Pages on archived mail - no previsualisation on DemandUI for Archived demands new ac88dacc Merge branch 'feature/9931-preRenderPDF' into develop new dd2c22ad Merge branch 'develop' of https://gitlab.nuiton.org/franciaflex/faxtomail into develop The 5 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit dd2c22ad3036d1269afe2676265d0c3e6ee897c1 Merge: ac88dacc a224b1de Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 13 10:22:39 2018 +0200 Merge branch 'develop' of https://gitlab.nuiton.org/franciaflex/faxtomail into develop commit ac88dacc54c0626a59a8d8a9ba1782920c4411ef Merge: 700f201c b2586ff5 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 13 10:02:25 2018 +0200 Merge branch 'feature/9931-preRenderPDF' into develop commit b2586ff50ccffa77f9e06be828dcc3451bd9f456 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 13 09:46:37 2018 +0200 refs #9931 - Remove System.out.println - Tested : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) - delete PDF Pages on archived mail - no previsualisation on DemandUI for Archived demands Still need to do : - use generate PDF Pages on printing - deal with PDF with no generated PDF (generate on the fly) while printing commit 3db6ecf1656af3b6c1550adbeddab1e3d801b63c Author: jcouteau <couteau@codelutin.com> Date: Tue Jun 12 17:56:55 2018 +0200 refs #9931 - Tested : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) Not tested : - delete PDF Pages on archived mail - no previsualisation on DemandUI for Archived demands Still need to do : - use generate PDF Pages on printing - deal with PDF with no generated PDF (generate on the fly) while printing commit 9a003ccda419cab6c3b221dd6f549d4b6f3e3fdf Author: jcouteau <couteau@codelutin.com> Date: Fri Jun 8 06:45:38 2018 +0200 refs #9931 - Should be able to : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) - delete PDF Pages on archived mail - no previsualisation on DemandUI for Archived demands Not tested ! Still need to do : - use generate PDF Pages on printing - deal with PDF with no generated PDF (generate on the fly) while printing Summary of changes: faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 36261 -> 36986 bytes .../faxtomail/services/service/EmailService.java | 7 + .../services/service/EmailServiceImpl.java | 96 +++++++------- .../h2/V2_4180607_1__addGeneratedPDFPages.sql | 17 +++ .../V2_4180607_1__addGeneratedPDFPages.sql | 18 +++ .../ui/swing/content/demande/DemandeUIHandler.java | 16 ++- .../ui/swing/content/demande/DemandeUIModel.java | 8 +- .../content/demande/actions/ArchiveAction.java | 3 + .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 146 ++++++++++++++++----- faxtomail-ui-web/pom.xml | 5 + .../faxtomail/web/job/MailFilterJob.java | 43 ++++-- 11 files changed, 265 insertions(+), 94 deletions(-) create mode 100644 faxtomail-service/src/main/resources/db/migration/h2/V2_4180607_1__addGeneratedPDFPages.sql create mode 100644 faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4180607_1__addGeneratedPDFPages.sql -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 9a003ccda419cab6c3b221dd6f549d4b6f3e3fdf Author: jcouteau <couteau@codelutin.com> Date: Fri Jun 8 06:45:38 2018 +0200 refs #9931 - Should be able to : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) - delete PDF Pages on archived mail - no previsualisation on DemandUI for Archived demands Not tested ! Still need to do : - use generate PDF Pages on printing - deal with PDF with no generated PDF (generate on the fly) while printing --- faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 36261 -> 36986 bytes .../h2/V2_4180607_1__addGeneratedPDFPages.sql | 17 ++++++ .../V2_4180607_1__addGeneratedPDFPages.sql | 22 ++++++++ .../ui/swing/content/demande/DemandeUIModel.java | 8 ++- .../content/demande/actions/ArchiveAction.java | 3 + .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 61 +++++++++++++++------ faxtomail-ui-web/pom.xml | 5 ++ .../faxtomail/web/job/MailFilterJob.java | 58 ++++++++++++++++---- 8 files changed, 144 insertions(+), 30 deletions(-) diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.zargo b/faxtomail-persistence/src/main/xmi/faxtomail.zargo index 860e6db6..1d3e2e80 100644 Binary files a/faxtomail-persistence/src/main/xmi/faxtomail.zargo and b/faxtomail-persistence/src/main/xmi/faxtomail.zargo differ diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V2_4180607_1__addGeneratedPDFPages.sql b/faxtomail-service/src/main/resources/db/migration/h2/V2_4180607_1__addGeneratedPDFPages.sql new file mode 100644 index 00000000..1fe41c8d --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/h2/V2_4180607_1__addGeneratedPDFPages.sql @@ -0,0 +1,17 @@ +-- add generatedPDFPages + +drop table GENERETADPDFPAGES; + +create table GENERETADPDFPAGES ( + page blob not null + topiaId VARCHAR(255) NOT NULL, + topiaVersion BIGINT NOT NULL, + topiaCreateDate datetime2, + attachment VARCHAR(255) NOT NULL, + PRIMARY KEY (topiaId) +); + +ALTER TABLE GENERATEDPDFPAGE + ADD CONSTRAINT FK_9CRCVUPPG70VCFW7334VAH7PJ + FOREIGN KEY(ATTACHMENT) + REFERENCES ATTACHMENT; \ No newline at end of file diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4180607_1__addGeneratedPDFPages.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4180607_1__addGeneratedPDFPages.sql new file mode 100644 index 00000000..a531e658 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4180607_1__addGeneratedPDFPages.sql @@ -0,0 +1,22 @@ +-- add generatedPDFPages + +drop table GENERETADPDFPAGES; + +GO + +create table GENERETADPDFPAGES ( + page blob not null + topiaId VARCHAR(255) NOT NULL, + topiaVersion BIGINT NOT NULL, + topiaCreateDate datetime2, + attachment VARCHAR(255) NOT NULL, + PRIMARY KEY (topiaId) +); + +GO + +ALTER TABLE GENERATEDPDFPAGE + ADD CONSTRAINT FK_9CRCVUPPG70VCFW7334VAH7PJ + FOREIGN KEY(ATTACHMENT) + REFERENCES ATTACHMENT +GO \ No newline at end of file diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java index 55006fbb..55cc42d8 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java @@ -254,7 +254,7 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU if (entity.getAttachment() != null) { for (Attachment attachment : entity.getAttachment()) { Attachment clone = new AttachmentImpl(); - fromAttachmentBinder.copyExcluding(attachment, clone, Attachment.PROPERTY_EDITED_FILE, Attachment.PROPERTY_ORIGINAL_FILE); + fromAttachmentBinder.copyExcluding(attachment, clone, Attachment.PROPERTY_EDITED_FILE, Attachment.PROPERTY_ORIGINAL_FILE, Attachment.PROPERTY_GENERATED_PDFPAGES); attachmentCopy.add(clone); } } @@ -1078,4 +1078,10 @@ public class DemandeUIModel extends AbstractFaxToMailBeanUIModel<Email, DemandeU public void setCloseable(boolean closeable) { this.closeable = closeable; } + + public void clearPDFPages(){ + for (Attachment attachment:attachments){ + attachment.clearGeneratedPDFPages(); + } + } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ArchiveAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ArchiveAction.java index 0fad329e..87880e6e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ArchiveAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/actions/ArchiveAction.java @@ -111,6 +111,9 @@ public class ArchiveAction extends SaveDemandeAndExitAction { model.setDemandStatus(DemandStatus.ARCHIVED); model.setTakenBy(null); + //cannot be reverted in postFailedAction + model.clearPDFPages(); + super.doAction(); } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index ecac3cb1..9b80aedc 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -25,8 +25,10 @@ package com.franciaflex.faxtomail.ui.swing.util; import com.franciaflex.faxtomail.FaxToMailConfiguration; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; +import com.franciaflex.faxtomail.persistence.entities.DemandStatus; import com.franciaflex.faxtomail.persistence.entities.DemandType; import com.franciaflex.faxtomail.persistence.entities.ExtensionCommand; +import com.franciaflex.faxtomail.persistence.entities.GeneratedPDFPage; import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.Reply; @@ -70,6 +72,7 @@ import org.nuiton.jaxx.application.swing.util.ApplicationUIUtil; import org.nuiton.util.FileUtil; import org.nuiton.util.StringUtil; +import javax.imageio.ImageIO; import javax.media.jai.PlanarImage; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; @@ -119,6 +122,7 @@ import java.net.URI; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.StandardCharsets; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -385,7 +389,7 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { while (mailFolder.getParent() != null && mailFolder.getShowAttachmentPreview() == null) { mailFolder = mailFolder.getParent(); } - if (Boolean.TRUE.equals(mailFolder.getShowAttachmentPreview())) { + if (Boolean.TRUE.equals(mailFolder.getShowAttachmentPreview()) && demandeUIModel.getDemandStatus() != DemandStatus.ARCHIVED) { for (Attachment attachment : demandeUIModel.getAttachment()) { if (!attachment.isInlineAttachment() && !attachment.isMailContent() && !attachment.isAddedByUser()) { addAttachmentPane(handler, textPanePanel, attachment, config); @@ -476,7 +480,7 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { /** * Imprime du texte. - * + * * @param text text to print * @return File to print **/ @@ -964,18 +968,45 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } }); - PDDocument pdDocument = null; try { if (isFileAPDF(originalAttachmentFile)) { - pdDocument = PDDocument.load(originalFile); - PDFRenderer renderer = new PDFRenderer(pdDocument); - for (int i = 0 ; i < pdDocument.getNumberOfPages() ; i++) { - JImagePanel imagePanel = new JImagePanel(); - imagePanel.setScaleImageToFitPanel(true); - imagePanel.setImage(renderer.renderImage(i)); - imagePanel.setAlignmentX(Component.LEFT_ALIGNMENT); - box.add(imagePanel); - box.add(Box.createVerticalStrut(3)); + + //get back images + Collection<GeneratedPDFPage> pages = attachment.getGeneratedPDFPages(); + + if (pages != null) { + //Got pre-generated pages + for (GeneratedPDFPage page : pages) { + try { + System.out.println("get back image"); + InputStream in = page.getPage().getBinaryStream(); + BufferedImage pageImage = ImageIO.read(in); + JImagePanel imagePanel = new JImagePanel(); + imagePanel.setScaleImageToFitPanel(true); + imagePanel.setImage(pageImage); + imagePanel.setAlignmentX(Component.LEFT_ALIGNMENT); + box.add(imagePanel); + box.add(Box.createVerticalStrut(3)); + } catch (SQLException eee) { + log.error("Could not print generated PDF page", eee); + } + } + } else { + //No pre-generated pages - old school on the fly generation + try { + PDDocument pdDocument = PDDocument.load(originalFile); + PDFRenderer renderer = new PDFRenderer(pdDocument); + for (int i = 0; i < pdDocument.getNumberOfPages(); i++) { + JImagePanel imagePanel = new JImagePanel(); + imagePanel.setScaleImageToFitPanel(true); + imagePanel.setImage(renderer.renderImage(i)); + imagePanel.setAlignmentX(Component.LEFT_ALIGNMENT); + box.add(imagePanel); + box.add(Box.createVerticalStrut(3)); + } + } catch (IOException eee) { + log.error("Error generating PDF pages", eee); + } } } else if (isFileATif(originalAttachmentFile)) { @@ -998,7 +1029,7 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { Dimension maximumSize = new Dimension(maxWidth, imagePanel.getMaximumSize().height); imagePanel.setMaximumSize(maximumSize); } - + imagePanel.setScaleImageToFitPanel(true); imagePanel.setImage(awtImage); imagePanel.setAlignmentX(Component.LEFT_ALIGNMENT); @@ -1039,10 +1070,6 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { if (log.isErrorEnabled()) { log.error("Error while reading the file " + originalFile, e); } - } finally { - if (pdDocument != null) { - IOUtils.closeQuietly(pdDocument); - } } } } diff --git a/faxtomail-ui-web/pom.xml b/faxtomail-ui-web/pom.xml index 7d7e6b86..47b00d09 100644 --- a/faxtomail-ui-web/pom.xml +++ b/faxtomail-ui-web/pom.xml @@ -316,6 +316,11 @@ <artifactId>jsoup</artifactId> </dependency> + <dependency> + <groupId>org.apache.pdfbox</groupId> + <artifactId>pdfbox</artifactId> + </dependency> + </dependencies> <build> diff --git a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java index 45e28ba8..defb330d 100644 --- a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java +++ b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java @@ -26,17 +26,7 @@ package com.franciaflex.faxtomail.web.job; import com.franciaflex.faxtomail.FaxToMailApplicationContext; import com.franciaflex.faxtomail.FaxToMailConfiguration; -import com.franciaflex.faxtomail.persistence.entities.Attachment; -import com.franciaflex.faxtomail.persistence.entities.Client; -import com.franciaflex.faxtomail.persistence.entities.DemandStatus; -import com.franciaflex.faxtomail.persistence.entities.Email; -import com.franciaflex.faxtomail.persistence.entities.EmailAccount; -import com.franciaflex.faxtomail.persistence.entities.EmailImpl; -import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; -import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.MailFilter; -import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.persistence.entities.OriginalEmail; +import com.franciaflex.faxtomail.persistence.entities.*; import com.franciaflex.faxtomail.services.DecoratorService; import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; @@ -52,10 +42,15 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.decorator.Decorator; +import org.nuiton.topia.persistence.TopiaEntity; +import org.nuiton.util.FileUtil; import org.quartz.DisallowConcurrentExecution; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.rendering.PDFRenderer; +import javax.imageio.ImageIO; import javax.mail.Address; import javax.mail.Flags; import javax.mail.Folder; @@ -65,7 +60,11 @@ import javax.mail.MessagingException; import javax.mail.Session; import javax.mail.Store; import javax.mail.internet.MimeMessage; +import javax.sql.rowset.serial.SerialBlob; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; import java.nio.charset.Charset; +import java.sql.Blob; import java.text.DateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -74,6 +73,7 @@ import java.util.Date; import java.util.Enumeration; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.Set; @@ -212,7 +212,7 @@ public class MailFilterJob extends AbstractFaxToMailJob { } /** - * Check the emails of teh folder, create the emails in the database and delete the email in the folder. + * Check the emails of the folder, create the emails in the database and delete the email in the folder. * * @param emailAccount email account currently checked * @param folder the folder to check @@ -464,6 +464,36 @@ public class MailFilterJob extends AbstractFaxToMailJob { List<Attachment> attachments = emailService.extractAttachmentsFromMessage((MimeMessage) message); + for (Attachment attachment:attachments) { + if (isFileAPDF(attachment.getOriginalFile())) { + + //Pre-generate PDF rendering + PDDocument pdDocument = PDDocument.load(attachment.getOriginalFile().getContent()); + PDFRenderer renderer = new PDFRenderer(pdDocument); + + List<GeneratedPDFPage> pages = new ArrayList<> (); + + for (int i = 0; i < pdDocument.getNumberOfPages(); i++) { + BufferedImage pageImage = renderer.renderImage(i); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + ImageIO.write( pageImage, "png", baos ); + baos.flush(); + Blob pageBlob = new SerialBlob(baos.toByteArray()); + baos.close(); + + GeneratedPDFPage page = new GeneratedPDFPageImpl(); + page.setPage(pageBlob); + pages.add(page); + System.out.println("Page generated"); + + } + System.out.println("Pages generated"); + attachment.setGeneratedPDFPages(pages); + } + } + emailService.saveEmail(email, attachments, null, @@ -567,4 +597,8 @@ public class MailFilterJob extends AbstractFaxToMailJob { message.setFlag(Flags.Flag.DELETED, true); } } + + public static boolean isFileAPDF(AttachmentFile file) { + return FileUtil.extension(file.getFilename()).toUpperCase().equals("PDF"); + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 3db6ecf1656af3b6c1550adbeddab1e3d801b63c Author: jcouteau <couteau@codelutin.com> Date: Tue Jun 12 17:56:55 2018 +0200 refs #9931 - Tested : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) Not tested : - delete PDF Pages on archived mail - no previsualisation on DemandUI for Archived demands Still need to do : - use generate PDF Pages on printing - deal with PDF with no generated PDF (generate on the fly) while printing --- .../faxtomail/services/service/EmailService.java | 7 ++ .../services/service/EmailServiceImpl.java | 96 ++++++++++++---------- .../h2/V2_4180607_1__addGeneratedPDFPages.sql | 10 +-- .../V2_4180607_1__addGeneratedPDFPages.sql | 8 +- .../ui/swing/content/demande/DemandeUIHandler.java | 16 +++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 91 +++++++++++++++++--- .../faxtomail/web/job/MailFilterJob.java | 16 +--- 7 files changed, 159 insertions(+), 85 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java index 16d1ee12..14afdeb8 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java @@ -30,6 +30,7 @@ import com.franciaflex.faxtomail.persistence.entities.Email; import com.franciaflex.faxtomail.persistence.entities.EmailFilter; import com.franciaflex.faxtomail.persistence.entities.ExtensionCommand; import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.GeneratedPDFPage; import com.franciaflex.faxtomail.persistence.entities.HistoryType; import com.franciaflex.faxtomail.persistence.entities.MailFolder; import com.franciaflex.faxtomail.persistence.entities.MailLock; @@ -51,10 +52,12 @@ import org.nuiton.util.pagination.PaginationResult; import javax.mail.MessagingException; import javax.mail.Part; import javax.mail.internet.MimeMessage; +import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; +import java.sql.Blob; import java.util.Collection; import java.util.Date; import java.util.List; @@ -117,6 +120,8 @@ public interface EmailService extends FaxToMailService { AttachmentFile getAttachmentFile(String attachmentId, boolean original); + Collection<GeneratedPDFPage> getGeneratedPDFPage(String attachmentId); + List<MailLock> getAllMailLocks(); void unlockMails(List<String> mailLockIds); @@ -188,4 +193,6 @@ public interface EmailService extends FaxToMailService { * @throws IOException */ Attachment convertHTMLToPdf(List<Attachment> attachments, List<String> content, String name) throws IOException; + + GeneratedPDFPage createGeneratedPDFPage(Attachment attachment, BufferedImage image); } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java index dc52ed59..31d635a7 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java @@ -25,49 +25,7 @@ package com.franciaflex.faxtomail.services.service; */ import com.franciaflex.faxtomail.beans.QuantitiesByRange; -import com.franciaflex.faxtomail.persistence.entities.AbstractFaxToMailTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.Attachment; -import com.franciaflex.faxtomail.persistence.entities.AttachmentFile; -import com.franciaflex.faxtomail.persistence.entities.AttachmentFileImpl; -import com.franciaflex.faxtomail.persistence.entities.AttachmentFileTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.AttachmentImpl; -import com.franciaflex.faxtomail.persistence.entities.AttachmentTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.Client; -import com.franciaflex.faxtomail.persistence.entities.DemandStatus; -import com.franciaflex.faxtomail.persistence.entities.DemandType; -import com.franciaflex.faxtomail.persistence.entities.DemandTypeTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.EdiReturn; -import com.franciaflex.faxtomail.persistence.entities.Email; -import com.franciaflex.faxtomail.persistence.entities.EmailFilter; -import com.franciaflex.faxtomail.persistence.entities.EmailGroup; -import com.franciaflex.faxtomail.persistence.entities.EmailGroupTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.EmailTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.ExtensionCommand; -import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaPersistenceContext; -import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; -import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; -import com.franciaflex.faxtomail.persistence.entities.History; -import com.franciaflex.faxtomail.persistence.entities.HistoryTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.HistoryType; -import com.franciaflex.faxtomail.persistence.entities.MailField; -import com.franciaflex.faxtomail.persistence.entities.MailFolder; -import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.MailLock; -import com.franciaflex.faxtomail.persistence.entities.MailLockImpl; -import com.franciaflex.faxtomail.persistence.entities.MailLockTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.OriginalEmail; -import com.franciaflex.faxtomail.persistence.entities.OriginalEmailTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.Priority; -import com.franciaflex.faxtomail.persistence.entities.PriorityTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.RangeRow; -import com.franciaflex.faxtomail.persistence.entities.RangeRowTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.Reply; -import com.franciaflex.faxtomail.persistence.entities.ReplyContent; -import com.franciaflex.faxtomail.persistence.entities.ReplyContentTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.ReplyTopiaDao; -import com.franciaflex.faxtomail.persistence.entities.SearchFilter; -import com.franciaflex.faxtomail.persistence.entities.WaitingState; -import com.franciaflex.faxtomail.persistence.entities.WaitingStateTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.*; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; @@ -140,12 +98,16 @@ import org.xhtmlrenderer.pdf.ITextRenderer; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; +import javax.imageio.ImageIO; import javax.mail.MessagingException; import javax.mail.Part; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; +import javax.sql.rowset.serial.SerialBlob; +import javax.sql.rowset.serial.SerialException; +import java.awt.image.BufferedImage; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.File; @@ -159,6 +121,7 @@ import java.io.UnsupportedEncodingException; import java.io.Writer; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.sql.Blob; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -462,6 +425,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe AttachmentFile originalFile = null; AttachmentFile editedFile = null; + Collection<GeneratedPDFPage> pages = null; // dans tout les cas, les pieces jointes courante de l'attchent prévale // sur celles en base if (attachment.getOriginalFile() != null) { @@ -474,6 +438,11 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe } else { editedFile = currentAttachment.getEditedFile(); } + if (attachment.getGeneratedPDFPages() != null) { + pages = attachment.getGeneratedPDFPages(); + } else { + pages = currentAttachment.getGeneratedPDFPages(); + } // copy new data attachmentBinder.copyExcluding(attachment, currentAttachment, @@ -484,11 +453,13 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe Attachment.PROPERTY_ORIGINAL_FILE_NAME, Attachment.PROPERTY_TOPIA_CREATE_DATE, Attachment.PROPERTY_TOPIA_ID, - Attachment.PROPERTY_TOPIA_VERSION); + Attachment.PROPERTY_TOPIA_VERSION, + Attachment.PROPERTY_GENERATED_PDFPAGES); currentAttachment.setEmail(email); currentAttachment.setEditedFile(editedFile); currentAttachment.setOriginalFile(originalFile); + currentAttachment.setGeneratedPDFPages(pages); // ici les pieces jointes peuvent être sauvegardées sans que les pièces jointes // soit présentes dans les entités car l'ui ne les a pas copiées @@ -1262,6 +1233,18 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe return result; } + @Override + public Collection<GeneratedPDFPage> getGeneratedPDFPage(String attachmentId) { + AttachmentTopiaDao dao = getPersistenceContext().getAttachmentDao(); + Attachment attachment = dao.forTopiaIdEquals(attachmentId).findUnique(); + Collection<GeneratedPDFPage> result = attachment.getGeneratedPDFPages(); + if (result != null) { + // force lazy initialize + Hibernate.initialize(result); + } + return result; + } + @Override public ReplyContent getReplyContent(String replyId) { ReplyTopiaDao dao = getPersistenceContext().getReplyDao(); @@ -2359,4 +2342,29 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe return result; } + + public GeneratedPDFPage createGeneratedPDFPage(Attachment attachment, BufferedImage image) { + + GeneratedPDFPageTopiaDao dao = getPersistenceContext().getGeneratedPDFPageDao(); + GeneratedPDFPage generatedPDFPage = dao.newInstance(); + + + try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { + + ImageIO.write(image, "png", baos); + baos.flush(); + Blob pageBlob = new SerialBlob(baos.toByteArray()); + generatedPDFPage.setPage(pageBlob); + + attachment.addGeneratedPDFPages(generatedPDFPage); + //generatedPDFPage = dao.create(generatedPDFPage); + //getPersistenceContext().getAttachmentDao().update(attachment); + } catch (IOException | SQLException e) { + log.error("Error while writing image", e); + } + + + return generatedPDFPage; + + } } diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V2_4180607_1__addGeneratedPDFPages.sql b/faxtomail-service/src/main/resources/db/migration/h2/V2_4180607_1__addGeneratedPDFPages.sql index 1fe41c8d..bc115c61 100644 --- a/faxtomail-service/src/main/resources/db/migration/h2/V2_4180607_1__addGeneratedPDFPages.sql +++ b/faxtomail-service/src/main/resources/db/migration/h2/V2_4180607_1__addGeneratedPDFPages.sql @@ -1,13 +1,13 @@ -- add generatedPDFPages -drop table GENERETADPDFPAGES; +drop table if exists GENERATEDPDFPAGE; -create table GENERETADPDFPAGES ( - page blob not null +create table GENERATEDPDFPAGE ( + page blob NOT NULL, topiaId VARCHAR(255) NOT NULL, topiaVersion BIGINT NOT NULL, - topiaCreateDate datetime2, - attachment VARCHAR(255) NOT NULL, + topiaCreateDate timestamp, + attachment VARCHAR(255), PRIMARY KEY (topiaId) ); diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4180607_1__addGeneratedPDFPages.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4180607_1__addGeneratedPDFPages.sql index a531e658..e8eb2d27 100644 --- a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4180607_1__addGeneratedPDFPages.sql +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_4180607_1__addGeneratedPDFPages.sql @@ -1,15 +1,11 @@ -- add generatedPDFPages -drop table GENERETADPDFPAGES; - -GO - -create table GENERETADPDFPAGES ( +create table GENERATEDPDFPAGE ( page blob not null topiaId VARCHAR(255) NOT NULL, topiaVersion BIGINT NOT NULL, topiaCreateDate datetime2, - attachment VARCHAR(255) NOT NULL, + attachment VARCHAR(255), PRIMARY KEY (topiaId) ); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java index 1f229ce2..413ffe9f 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java @@ -217,7 +217,7 @@ public class DemandeUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, initUI(ui); - DemandeUIModel model = getModel(); + final DemandeUIModel model = getModel(); Set<String> propertiesToIgnore = getPropertiesToIgnore(); monitor = new BeanMonitor(true, propertiesToIgnore.toArray(new String[propertiesToIgnore.size()])); monitor.setBean(model); @@ -247,9 +247,17 @@ public class DemandeUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, } initBeanFilterableComboBox(ui.getWaitingStateComboBox(), waitingStates, model.getWaitingState()); - JPanel editorPanel = ui.getMailBodyPanel(); - FaxToMailUIUtil.setEmailContentInTextPane(this, model, editorPanel, getConfig()); - FaxToMailUIUtil.initScrollPaneBars(getUI().getMailBodyScrollPane()); + final JPanel editorPanel = ui.getMailBodyPanel(); + //FaxToMailUIUtil.setEmailContentInTextPane(this, model, editorPanel, getConfig()); + //FaxToMailUIUtil.initScrollPaneBars(getUI().getMailBodyScrollPane()); + + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + FaxToMailUIUtil.setEmailContentInTextPane(DemandeUIHandler.this, model, editorPanel, getConfig()); + FaxToMailUIUtil.initScrollPaneBars(getUI().getMailBodyScrollPane()); + } + }); // init table final JXTable table = ui.getRangeTable(); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index 9b80aedc..fde1288b 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -127,6 +127,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -321,15 +322,27 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } public static boolean isFileAPDF(AttachmentFile file) { - return FileUtil.extension(file.getFilename()).toUpperCase().equals("PDF"); + return isFileAPDF(file.getFilename()); + } + + public static boolean isFileAPDF(String filename) { + return FileUtil.extension(filename).toUpperCase().equals("PDF"); } public static boolean isFileATxt(AttachmentFile file) { - return FileUtil.extension(file.getFilename()).toUpperCase().equals("TXT"); + return isFileATxt(file.getFilename()); + } + + public static boolean isFileATxt(String filename) { + return FileUtil.extension(filename).toUpperCase().equals("TXT"); } public static boolean isFileATif(AttachmentFile file) { - return FileUtil.extension(file.getFilename()).toUpperCase().equals("TIF"); + return isFileATif(file.getFilename()); + } + + public static boolean isFileATif(String filename) { + return FileUtil.extension(filename).toUpperCase().equals("TIF"); } public static boolean isFileTypeEditable(String fileName) { @@ -421,6 +434,56 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } } } + + public static AttachmentFile getLazyOriginalFile(FaxToMailUIContext context, Attachment attachment) { + if (log.isDebugEnabled()) { + log.debug("Force attachment loading " + attachment.getOriginalFileName()); + } + if (attachment.isPersisted()) { + FaxToMailServiceContext serviceContext = context.newServiceContext(); + EmailService service = serviceContext.getEmailService(); + if (attachment.getOriginalFile() == null) { + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), true); + attachment.setOriginalFile(file); + } + } + + return attachment.getOriginalFile(); + } + + public static Collection<GeneratedPDFPage> getLazyGeneratedPDFPage(FaxToMailUIContext context, Attachment attachment) { + if (log.isDebugEnabled()) { + log.debug("Force generated pages loading " + attachment.getOriginalFileName()); + } + if (attachment.isPersisted()) { + FaxToMailServiceContext serviceContext = context.newServiceContext(); + EmailService service = serviceContext.getEmailService(); + if (attachment.getGeneratedPDFPages() == null) { + Collection<GeneratedPDFPage> pages = service.getGeneratedPDFPage(attachment.getTopiaId()); + attachment.setGeneratedPDFPages(pages); + } + } + + return attachment.getGeneratedPDFPages(); + } + + public static AttachmentFile getLazyEditedFile(FaxToMailUIContext context, Attachment attachment) { + if (log.isDebugEnabled()) { + log.debug("Force attachment loading " + attachment.getOriginalFileName()); + } + if (attachment.isPersisted()) { + FaxToMailServiceContext serviceContext = context.newServiceContext(); + EmailService service = serviceContext.getEmailService(); + if (attachment.getEditedFile() == null) { + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), false); + attachment.setEditedFile(file); + } + } + + return attachment.getEditedFile(); + } + + /** * Force le chargement des contenu source binaire des réponses. @@ -952,9 +1015,11 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { FaxToMailConfiguration config) { if (isFileTypeEditable(attachment.getOriginalFileName())) { - forceAttachmentFileLoading(handler.getContext(), attachment); - final AttachmentFile originalAttachmentFile = attachment.getOriginalFile(); - final File originalFile = originalAttachmentFile.getFile(); + System.out.println(new Date()); + //forceAttachmentFileLoading(handler.getContext(), attachment); + System.out.println(new Date()); + //final AttachmentFile originalAttachmentFile = attachment.getOriginalFile(); + //final File originalFile = originalAttachmentFile.getFile(); Box box = Box.createVerticalBox(); box.setBorder(BorderFactory.createTitledBorder(attachment.getOriginalFileName())); @@ -969,10 +1034,10 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { }); try { - if (isFileAPDF(originalAttachmentFile)) { + if (isFileAPDF(attachment.getOriginalFileName())) { //get back images - Collection<GeneratedPDFPage> pages = attachment.getGeneratedPDFPages(); + Collection<GeneratedPDFPage> pages = getLazyGeneratedPDFPage(handler.getContext(),attachment); if (pages != null) { //Got pre-generated pages @@ -994,6 +1059,7 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } else { //No pre-generated pages - old school on the fly generation try { + File originalFile = getLazyOriginalFile(handler.getContext(),attachment).getFile(); PDDocument pdDocument = PDDocument.load(originalFile); PDFRenderer renderer = new PDFRenderer(pdDocument); for (int i = 0; i < pdDocument.getNumberOfPages(); i++) { @@ -1009,7 +1075,8 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } } - } else if (isFileATif(originalAttachmentFile)) { + } else if (isFileATif(attachment.getOriginalFileName())) { + File originalFile = getLazyOriginalFile(handler.getContext(),attachment).getFile(); FileInputStream fis = new FileInputStream(originalFile); try { FileChannel channel = fis.getChannel(); @@ -1041,8 +1108,9 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { IOUtils.closeQuietly(fis); } - } else if (isFileATxt(originalAttachmentFile)) { + } else if (isFileATxt(attachment.getOriginalFileName())) { JTextPane textPane = new JTextPane(); + File originalFile = getLazyOriginalFile(handler.getContext(),attachment).getFile(); textPane.setText(FileUtils.readFileToString(originalFile)); textPane.setAlignmentX(Component.LEFT_ALIGNMENT); box.add(textPane); @@ -1057,6 +1125,7 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } imagePanel.setScaleImageToFitPanel(true); + File originalFile = getLazyOriginalFile(handler.getContext(),attachment).getFile(); imagePanel.setImage(originalFile); imagePanel.setAlignmentX(Component.LEFT_ALIGNMENT); box.add(imagePanel); @@ -1068,7 +1137,7 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { } catch (IOException e) { if (log.isErrorEnabled()) { - log.error("Error while reading the file " + originalFile, e); + log.error("Error while reading the file " + attachment.getOriginalFileName(), e); } } } diff --git a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java index defb330d..ccbc6e07 100644 --- a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java +++ b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java @@ -471,26 +471,12 @@ public class MailFilterJob extends AbstractFaxToMailJob { PDDocument pdDocument = PDDocument.load(attachment.getOriginalFile().getContent()); PDFRenderer renderer = new PDFRenderer(pdDocument); - List<GeneratedPDFPage> pages = new ArrayList<> (); - for (int i = 0; i < pdDocument.getNumberOfPages(); i++) { BufferedImage pageImage = renderer.renderImage(i); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - ImageIO.write( pageImage, "png", baos ); - baos.flush(); - Blob pageBlob = new SerialBlob(baos.toByteArray()); - baos.close(); - - GeneratedPDFPage page = new GeneratedPDFPageImpl(); - page.setPage(pageBlob); - pages.add(page); - System.out.println("Page generated"); - + emailService.createGeneratedPDFPage(attachment, pageImage); } System.out.println("Pages generated"); - attachment.setGeneratedPDFPages(pages); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit b2586ff50ccffa77f9e06be828dcc3451bd9f456 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 13 09:46:37 2018 +0200 refs #9931 - Remove System.out.println - Tested : - generate PDF Pages on email reception - use PDF Pages on DemandUI - deal with PDF with no generated PDF (generate on the fly) - delete PDF Pages on archived mail - no previsualisation on DemandUI for Archived demands Still need to do : - use generate PDF Pages on printing - deal with PDF with no generated PDF (generate on the fly) while printing --- .../com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java | 6 ------ .../main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java | 1 - 2 files changed, 7 deletions(-) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index fde1288b..234ab4a3 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -1015,11 +1015,6 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { FaxToMailConfiguration config) { if (isFileTypeEditable(attachment.getOriginalFileName())) { - System.out.println(new Date()); - //forceAttachmentFileLoading(handler.getContext(), attachment); - System.out.println(new Date()); - //final AttachmentFile originalAttachmentFile = attachment.getOriginalFile(); - //final File originalFile = originalAttachmentFile.getFile(); Box box = Box.createVerticalBox(); box.setBorder(BorderFactory.createTitledBorder(attachment.getOriginalFileName())); @@ -1043,7 +1038,6 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { //Got pre-generated pages for (GeneratedPDFPage page : pages) { try { - System.out.println("get back image"); InputStream in = page.getPage().getBinaryStream(); BufferedImage pageImage = ImageIO.read(in); JImagePanel imagePanel = new JImagePanel(); diff --git a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java index ccbc6e07..d4fb8df5 100644 --- a/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java +++ b/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java @@ -476,7 +476,6 @@ public class MailFilterJob extends AbstractFaxToMailJob { emailService.createGeneratedPDFPage(attachment, pageImage); } - System.out.println("Pages generated"); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit ac88dacc54c0626a59a8d8a9ba1782920c4411ef Merge: 700f201c b2586ff5 Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 13 10:02:25 2018 +0200 Merge branch 'feature/9931-preRenderPDF' into develop faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 36261 -> 36986 bytes .../faxtomail/services/service/EmailService.java | 7 + .../services/service/EmailServiceImpl.java | 96 +++++++------- .../h2/V2_4180607_1__addGeneratedPDFPages.sql | 17 +++ .../V2_4180607_1__addGeneratedPDFPages.sql | 18 +++ .../ui/swing/content/demande/DemandeUIHandler.java | 16 ++- .../ui/swing/content/demande/DemandeUIModel.java | 8 +- .../content/demande/actions/ArchiveAction.java | 3 + .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 144 +++++++++++++++++---- faxtomail-ui-web/pom.xml | 5 + .../faxtomail/web/job/MailFilterJob.java | 43 ++++-- 11 files changed, 269 insertions(+), 88 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit dd2c22ad3036d1269afe2676265d0c3e6ee897c1 Merge: ac88dacc a224b1de Author: jcouteau <couteau@codelutin.com> Date: Wed Jun 13 10:22:39 2018 +0200 Merge branch 'develop' of https://gitlab.nuiton.org/franciaflex/faxtomail into develop faxtomail-persistence/pom.xml | 2 +- faxtomail-service/pom.xml | 2 +- faxtomail-ui-swing/pom.xml | 2 +- .../ui/swing/content/reply/ReplyFormUIHandler.java | 7 ++- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 56 ++++++++++++++++------ .../faxtomail/ui/swing/util/JImagePanel.java | 16 +++++-- .../i18n/faxtomail-ui-swing_fr_FR.properties | 3 +- faxtomail-ui-web/pom.xml | 2 +- pom.xml | 2 +- 9 files changed, 68 insertions(+), 24 deletions(-) diff --cc faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index 234ab4a3,a1f8fd35..75c30642 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@@ -434,57 -417,7 +433,57 @@@ public final class FaxToMailUIUtil exte } } } - + + public static AttachmentFile getLazyOriginalFile(FaxToMailUIContext context, Attachment attachment) { + if (log.isDebugEnabled()) { + log.debug("Force attachment loading " + attachment.getOriginalFileName()); + } + if (attachment.isPersisted()) { + FaxToMailServiceContext serviceContext = context.newServiceContext(); + EmailService service = serviceContext.getEmailService(); + if (attachment.getOriginalFile() == null) { + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), true); + attachment.setOriginalFile(file); + } + } + + return attachment.getOriginalFile(); + } + + public static Collection<GeneratedPDFPage> getLazyGeneratedPDFPage(FaxToMailUIContext context, Attachment attachment) { + if (log.isDebugEnabled()) { + log.debug("Force generated pages loading " + attachment.getOriginalFileName()); + } + if (attachment.isPersisted()) { + FaxToMailServiceContext serviceContext = context.newServiceContext(); + EmailService service = serviceContext.getEmailService(); + if (attachment.getGeneratedPDFPages() == null) { + Collection<GeneratedPDFPage> pages = service.getGeneratedPDFPage(attachment.getTopiaId()); + attachment.setGeneratedPDFPages(pages); + } + } + + return attachment.getGeneratedPDFPages(); + } + + public static AttachmentFile getLazyEditedFile(FaxToMailUIContext context, Attachment attachment) { + if (log.isDebugEnabled()) { + log.debug("Force attachment loading " + attachment.getOriginalFileName()); + } + if (attachment.isPersisted()) { + FaxToMailServiceContext serviceContext = context.newServiceContext(); + EmailService service = serviceContext.getEmailService(); + if (attachment.getEditedFile() == null) { + AttachmentFile file = service.getAttachmentFile(attachment.getTopiaId(), false); + attachment.setEditedFile(file); + } + } + + return attachment.getEditedFile(); + } + + - ++ /** * Force le chargement des contenu source binaire des réponses. * @@@ -1113,13 -1035,9 +1118,10 @@@ JImagePanel imagePanel = new JImagePanel(); int maxWidth = config.getMaxWidthImageInTextPane(); - if (maxWidth > 0) { - Dimension maximumSize = new Dimension(maxWidth, imagePanel.getMaximumSize().height); - imagePanel.setMaximumSize(maximumSize); - } + imagePanel.setMaxWidth(maxWidth); imagePanel.setScaleImageToFitPanel(true); + File originalFile = getLazyOriginalFile(handler.getContext(),attachment).getFile(); imagePanel.setImage(originalFile); imagePanel.setAlignmentX(Component.LEFT_ALIGNMENT); box.add(imagePanel); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm