r677 - in trunk: faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-ui-swing faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util faxtomail-ui-web faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin
Author: kmorin Date: 2014-10-15 15:09:19 +0200 (Wed, 15 Oct 2014) New Revision: 677 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/677 Log: fixes #5964 Probl?\195?\168mes de police sur l'?\195?\169diteur de pdf et l'impression Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java trunk/faxtomail-ui-swing/pom.xml trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java trunk/faxtomail-ui-web/pom.xml trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java 2014-10-10 15:19:24 UTC (rev 676) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java 2014-10-15 13:09:19 UTC (rev 677) @@ -217,10 +217,14 @@ // root folders (~companies) MailFolder franciaflex = folderDao.create(MailFolder.PROPERTY_NAME, "Franciaflex", + MailFolder.PROPERTY_USE_CURRENT_LEVEL_COMPANY, true, + MailFolder.PROPERTY_COMPANY, "FX", MailFolder.PROPERTY_USE_CURRENT_LEVEL_REJECT_RESPONSE_MAIL_ADDRESS, true, MailFolder.PROPERTY_USE_CURRENT_LEVEL_REJECT_RESPONSE_MESSAGE, true); MailFolder faber = folderDao.create(MailFolder.PROPERTY_NAME, "Faber"); - MailFolder franceFermeture = folderDao.create(MailFolder.PROPERTY_NAME, "France-fermeture"); + MailFolder franceFermeture = folderDao.create(MailFolder.PROPERTY_NAME, "France Fermetures", + MailFolder.PROPERTY_USE_CURRENT_LEVEL_COMPANY, true, + MailFolder.PROPERTY_COMPANY, "FF"); // categories MailFolder chargesClientelle = folderDao.create(MailFolder.PROPERTY_NAME, "Chargés de clientèle", Modified: trunk/faxtomail-ui-swing/pom.xml =================================================================== --- trunk/faxtomail-ui-swing/pom.xml 2014-10-10 15:19:24 UTC (rev 676) +++ trunk/faxtomail-ui-swing/pom.xml 2014-10-15 13:09:19 UTC (rev 677) @@ -226,11 +226,6 @@ </dependency> <dependency> - <groupId>org.apache.pdfbox</groupId> - <artifactId>pdfbox</artifactId> - </dependency> - - <dependency> <groupId>org.swinglabs</groupId> <artifactId>pdf-renderer</artifactId> </dependency> Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-10-10 15:19:24 UTC (rev 676) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-10-15 13:09:19 UTC (rev 677) @@ -52,15 +52,10 @@ import java.util.Comparator; import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.regex.Pattern; import javax.media.jai.PlanarImage; -import javax.print.PrintService; -import javax.print.attribute.HashPrintRequestAttributeSet; -import javax.print.attribute.PrintRequestAttributeSet; -import javax.print.attribute.standard.JobName; import javax.swing.Icon; import javax.swing.JTextPane; import javax.swing.JTree; @@ -73,7 +68,6 @@ import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; -import com.itextpdf.text.RectangleReadOnly; import jaxx.runtime.JAXXObject; import jaxx.runtime.JAXXUtil; @@ -86,7 +80,6 @@ import org.apache.commons.lang3.SystemUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.pdfbox.pdmodel.PDDocument; import org.nuiton.jaxx.application.ApplicationTechnicalException; import org.nuiton.jaxx.application.swing.util.ApplicationUIUtil; import org.nuiton.util.FileUtil; @@ -120,6 +113,8 @@ import com.sun.media.jai.codec.ImageCodec; import com.sun.media.jai.codec.ImageDecoder; import com.sun.media.jai.codec.SeekableStream; +import com.sun.pdfview.PDFFile; +import com.sun.pdfview.PDFPrintPage; /** * @author kmorin - morin@codelutin.com @@ -501,28 +496,40 @@ protected static boolean printWithPdfRenderer(String printName, FileInputStream fis, boolean defaultPrinter) { boolean result = false; - PDDocument document = null; try { + // Create a PDFFile from a File reference + FileChannel fc = fis.getChannel(); + ByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size()); + PDFFile pdfFile = new PDFFile(bb); // Create PDF Print Page + PDFPrintPage pages = new PDFPrintPage(pdfFile); + // fix fit to page + // see http://lynema.org/2010/12/29/printing-a-pdf-in-java-with-pdfrenderer PrinterJob pjob = PrinterJob.getPrinterJob(); + PageFormat pf = pjob.defaultPage(); + + Paper paper = new Paper(); + paper.setImageableArea(0, 0, paper.getWidth() * 2, paper.getHeight()); + pf.setPaper(paper); + + // Create Print Job pjob.setJobName(printName); + Book book = new Book(); + book.append(pages, pf, pdfFile.getNumPages()); + pjob.setPageable(book); - document = PDDocument.load(fis); - if (defaultPrinter) { - document.silentPrint(pjob); - } else { - document.print(pjob); + // Send print job to default printer + result = defaultPrinter || pjob.printDialog(); + if (result) { + pjob.print(); } - result = true; - } catch (PrinterException | IOException e) { + } catch (PrinterException | IOException ex) { if (log.isErrorEnabled()) { - log.error("can't print", e); + log.error("can't print", ex); } + } - } finally { - IOUtils.closeQuietly(document); - } return result; } Modified: trunk/faxtomail-ui-web/pom.xml =================================================================== --- trunk/faxtomail-ui-web/pom.xml 2014-10-10 15:19:24 UTC (rev 676) +++ trunk/faxtomail-ui-web/pom.xml 2014-10-15 13:09:19 UTC (rev 677) @@ -312,6 +312,7 @@ </dependencies> <build> + <finalName>faxtomail-${project.version}</finalName> <resources> Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java 2014-10-10 15:19:24 UTC (rev 676) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/FaxToMailInterceptor.java 2014-10-15 13:09:19 UTC (rev 677) @@ -87,6 +87,7 @@ if (CollectionUtils.isNotEmpty(faxToMailSession.getErrorMessages())) { for (String message : faxToMailSession.getErrorMessages()) { + log.info(message); faxToMailAction.addActionError(message); } faxToMailSession.getErrorMessages().clear(); @@ -204,8 +205,7 @@ FaxToMailApplicationContext extranetEncAhiApplicationContext = getFaxToMailApplicationContext(invocation); FaxToMailTopiaPersistenceContext persistenceContext = extranetEncAhiApplicationContext.newPersistenceContext(); - FaxToMailServiceContext serviceContext = - extranetEncAhiApplicationContext.newServiceContext(persistenceContext); + FaxToMailServiceContext serviceContext = extranetEncAhiApplicationContext.newServiceContext(persistenceContext); return serviceContext; } Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java 2014-10-10 15:19:24 UTC (rev 676) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/admin/ImportArchiveAction.java 2014-10-15 13:09:19 UTC (rev 677) @@ -60,8 +60,6 @@ protected EmailService emailService; - protected boolean disabledImport; - public void setEmailService(EmailService emailService) { this.emailService = emailService; } @@ -74,10 +72,6 @@ this.attachmentBase = attachmentBase; } - public boolean isDisabledImport() { - return disabledImport; - } - @Override public void prepare() throws Exception { // check authorization @@ -89,49 +83,39 @@ @Override @Action("import-archive-input") public String input() throws Exception { - checkDisabled(); return super.input(); } - protected boolean checkDisabled() { - - // pour eviter les erreurs, on considere que si 1000 mails archivés sont présents, il - // proviennent de la reprise des archives - if (emailService.getArchivedMailCount() > 1000) { - disabledImport = true; - } - return disabledImport; - } - @Override public void validate() { - if (StringUtils.isNotEmpty(attachmentBase) && !new File(attachmentBase).isDirectory()) { + if (StringUtils.isNotBlank(attachmentBase) && !new File(attachmentBase).isDirectory()) { addActionError("Le répertoire de base des pièces jointes n'est pas un répertoire lisible !"); } if (archiveFile == null) { addActionError("Le fichier d'archive est obligatoire !"); } - - checkDisabled(); } @Override @Action(results = {@Result(type = "redirectAction", params = {"actionName", "import-archive-input"})}) public String execute() throws Exception { String result = INPUT; - - if (!checkDisabled()) { - try (InputStream is = new FileInputStream(archiveFile)) { - File file = new File(attachmentBase); - emailService.importArchive(is, file); - result = SUCCESS; - } catch (Exception ex) { - if (log.isErrorEnabled()) { - log.error("Can't import archive file", ex); - } - addActionError("Can't import archive " + ex.getMessage()); + try (InputStream is = new FileInputStream(archiveFile)) { + File file = StringUtils.isNotBlank(attachmentBase) ? new File(attachmentBase) : null; + int imported = emailService.importArchive(is, file); + + log.info(imported + " imported elements"); + addActionMessage(imported + " éléments ont été importés."); + + result = SUCCESS; + + } catch (Exception ex) { + if (log.isErrorEnabled()) { + log.error("Can't import archive file", ex); } + addActionError("Erreur lors de l'import : " + ex.getMessage()); } + return result; } } Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp 2014-10-10 15:19:24 UTC (rev 676) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-archive-input.jsp 2014-10-15 13:09:19 UTC (rev 677) @@ -36,31 +36,26 @@ <h1 class="page-header">Reprise des archives</h1> - <s:if test="disabledImport"> - <em>L'import des archives a déjà été effectué, il n'est plus disponible</em> - </s:if> - <s:else> - <s:form id="main_form" action="import-archive" method="post" enctype="multipart/form-data"> - - <s:actionmessage/> - <s:actionerror/> - - <div class="form-group"> - <label for="archiveFile" class="control-label">Fichier d'archive :</label> - <input type="file" id="archiveFile" name="archiveFile" class="form-control"> - <p class="help-block">Format du fichier csv : <code>receptionDate;projectReference;sender;fax;recipient;object;archiveDate;companyReference;originalEmail;comment;etatAttente;demandType;priority;mailFolder;client-code;client-brand;attachments</code><br /> - Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p> - </div> - <div class="form-group"> - <label for="attachmentBase" class="control-label">Répertoire de base des pièces jointes :</label> - <input type="text" id="attachmentBase" name="attachmentBase" class="form-control"> - <p class="help-block">Dossier contenant les pièces jointes référencées dans le fichier d'archive</p> - </div> - <button type="submit" class="btn btn-primary navbar-btn">Valider</button> - <hr /> - - </s:form> - </s:else> + <s:form id="main_form" action="import-archive" method="post" enctype="multipart/form-data"> + + <s:actionmessage/> + <s:actionerror/> + + <div class="form-group"> + <label for="archiveFile" class="control-label">Fichier d'archive :</label> + <input type="file" id="archiveFile" name="archiveFile" class="form-control"> + <p class="help-block">Format du fichier csv : <code>receptionDate;projectReference;sender;fax;recipient;object;archiveDate;companyReference;originalEmail;comment;etatAttente;demandType;priority;mailFolder;client-code;client-brand;attachments</code><br /> + Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p> + </div> + <div class="form-group"> + <label for="attachmentBase" class="control-label">Répertoire de base des pièces jointes :</label> + <input type="text" id="attachmentBase" name="attachmentBase" class="form-control"> + <p class="help-block">Dossier contenant les pièces jointes référencées dans le fichier d'archive</p> + </div> + <button type="submit" class="btn btn-primary navbar-btn">Valider</button> + <hr /> + + </s:form> </div> </body> </html>
participants (1)
-
kmorin@users.forge.codelutin.com