Faxtomail-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
December 2014
- 1 participants
- 25 discussions
r736 - in trunk: . faxtomail-ui-swing faxtomail-ui-swing/src/license faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util
by kmorin@users.forge.codelutin.com 24 Dec '14
by kmorin@users.forge.codelutin.com 24 Dec '14
24 Dec '14
Author: kmorin
Date: 2014-12-24 14:36:54 +0000 (Wed, 24 Dec 2014)
New Revision: 736
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/736
Log:
qualit?\195?\169 d'impression
Modified:
trunk/faxtomail-ui-swing/pom.xml
trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
trunk/pom.xml
Modified: trunk/faxtomail-ui-swing/pom.xml
===================================================================
--- trunk/faxtomail-ui-swing/pom.xml 2014-12-23 16:24:48 UTC (rev 735)
+++ trunk/faxtomail-ui-swing/pom.xml 2014-12-24 14:36:54 UTC (rev 736)
@@ -226,16 +226,6 @@
</dependency>
<dependency>
- <groupId>javax.media.jai</groupId>
- <artifactId>com.springsource.javax.media.jai.core</artifactId>
- </dependency>
-
- <dependency>
- <groupId>javax.media.jai</groupId>
- <artifactId>com.springsource.javax.media.jai.codec</artifactId>
- </dependency>
-
- <dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
</dependency>
@@ -250,23 +240,29 @@
<artifactId>activation</artifactId>
</dependency>
+ <dependency>
+ <groupId>javax.media.jai</groupId>
+ <artifactId>com.springsource.javax.media.jai.core</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.media.jai</groupId>
+ <artifactId>com.springsource.javax.media.jai.codec</artifactId>
+ </dependency>
+
<!-- for pdf edition -->
+ <!--<dependency>-->
+ <!--<groupId>org.jpedal</groupId>-->
+ <!--<artifactId>jpedal-lgpl</artifactId>-->
+ <!--</dependency>-->
+
<dependency>
- <groupId>org.jpedal</groupId>
- <artifactId>jpedal-lgpl</artifactId>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox</artifactId>
</dependency>
</dependencies>
- <!-- TODO -->
- <repositories>
- <repository>
- <id>com.springsource.repository.bundles.external</id>
- <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
- <url>http://repository.springsource.com/maven/bundles/external</url>
- </repository>
- </repositories>
-
<build>
<resources>
<resource>
Modified: trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties 2014-12-23 16:24:48 UTC (rev 735)
+++ trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties 2014-12-24 14:36:54 UTC (rev 736)
@@ -6,7 +6,6 @@
# - Apache License 2.0
# - Apache License, version 2.0
# - BSD License
-# - Bouncy Castle Licence
# - CDDL
# - Common Development and Distribution License
# - Common Development and Distribution License (CDDL) v1.0
@@ -25,10 +24,8 @@
# - GNU Library or Lesser General Public License
# - GPLv2+CE
# - General Public License (GPL)
-# - JDL (Java Distribution License)
# - LGPL
# - LGPL 2.1
-# - LGPL Open Source license
# - Lesser General Public License (LGPL)
# - Lesser General Public License (LGPL) v 3.0
# - MIT License
@@ -43,11 +40,10 @@
# Please fill the missing licenses for dependencies :
#
#
-#Mon Dec 15 12:35:36 CET 2014
+#Wed Dec 24 11:31:43 CET 2014
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
gui.ava--html2image--2.0.1=GNU Lesser General Public License, Version 2.1
-javax.media--jai_codec--1.1.3=Apache License
-javax.media.jai--com.springsource.javax.media.jai.codec--1.1.3=Apache License
-javax.media.jai--com.springsource.javax.media.jai.core--1.1.3=Apache License
+javax.media.jai--com.springsource.javax.media.jai.codec--1.1.3=The Apache Software License, Version 2.0
+javax.media.jai--com.springsource.javax.media.jai.core--1.1.3=The Apache Software License, Version 2.0
org.nuiton.thirdparty--sdoc--0.5.0-beta-patchcl=Lesser General Public License (LGPL) v 3.0
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-12-23 16:24:48 UTC (rev 735)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAction.java 2014-12-24 14:36:54 UTC (rev 736)
@@ -81,7 +81,7 @@
Email persistedEmail;
String topiaId = model.getTopiaId();
FaxToMailServiceContext serviceContext = context.newServiceContext();
- if (!StringUtils.isBlank(topiaId)) {
+ if (StringUtils.isNotBlank(topiaId)) {
persistedEmail = serviceContext.getEmailService().getFullEmailById(topiaId);
} else {
persistedEmail = new EmailImpl();
@@ -117,7 +117,8 @@
}
FaxToMailUser currentUser = context.getCurrentUser();
- if (model.getDemandStatus() != DemandStatus.ARCHIVED && takeIfNotTaken && model.getTakenBy() == null) {
+ DemandStatus demandStatus = model.getDemandStatus();
+ if (demandStatus != DemandStatus.ARCHIVED && takeIfNotTaken && model.getTakenBy() == null) {
model.setTakenBy(getContext().getCurrentUser());
}
@@ -132,9 +133,10 @@
model.fromEntity(email);
MailFolder folder = model.getMailFolder();
+ boolean folderWritable = folder.isFolderWritable();
if (model.getArchiveDate() != null
- || !folder.isFolderWritable()
- || !model.getDemandStatus().isEditableStatus()) {
+ || !folderWritable
+ || !demandStatus.isEditableStatus()) {
model.setEditable(false);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-12-23 16:24:48 UTC (rev 735)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/pdfeditor/PDFEditorUIHandler.java 2014-12-24 14:36:54 UTC (rev 736)
@@ -35,6 +35,7 @@
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.List;
@@ -42,16 +43,20 @@
import javax.swing.JComponent;
import javax.swing.JPanel;
+import com.itextpdf.text.pdf.PdfReader;
+import com.itextpdf.text.pdf.PdfStamper;
+import com.itextpdf.text.pdf.PdfWriter;
import jaxx.runtime.swing.ComponentMover;
import jaxx.runtime.swing.ComponentResizer;
import jaxx.runtime.swing.JAXXButtonGroup;
import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jpedal.PdfDecoder;
-import org.jpedal.exception.PdfException;
-import org.jpedal.fonts.FontMappings;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.rendering.ImageType;
+import org.apache.pdfbox.rendering.PDFRenderer;
import org.nuiton.jaxx.application.swing.util.Cancelable;
import org.nuiton.jaxx.application.swing.util.CloseableUI;
@@ -78,8 +83,9 @@
protected ComponentMover cm = new ComponentMover();
protected ComponentResizer cr = new ComponentResizer();
- protected PdfDecoder pdfDecoder;
+// protected PdfDecoder pdfDecoder;
// protected PDFFile pdf;
+ protected PDDocument pdDocument;
@Override
public void afterInit(PDFEditorUI pdfEditorUI) {
@@ -102,9 +108,6 @@
String value = (String) actionGroup.getSelectedValue();
model.setSelectedComponent(PDFEditorUIModel.EditionComponent.valueOf(value));
- pdfDecoder = new PdfDecoder();
- FontMappings.setFontReplacements();
-
ui.getContainer().addContainerListener(new ContainerListener() {
@Override
public void componentAdded(ContainerEvent e) {
@@ -182,17 +185,14 @@
getContext().getErrorHelper().showErrorDialog(t("faxtomail.pdfEditor.convertToPdf.error"));
}
}
+
if (FaxToMailUIUtil.isFileAPDF(attachmentFile)) {
try {
- pdfDecoder.closePdfFile();
- pdfDecoder.openPdfFile(file.getPath());
- pdfDecoder.setExtractionMode(0, 0, 1f);
- pdfDecoder.setCenterOnScaling(true);
-
- model.setPageNumber(pdfDecoder.getPageCount());
+ pdDocument = PDDocument.load(file);
+ model.setPageNumber(pdDocument.getNumberOfPages());
model.setCurrentPageIndex(1);
- } catch (PdfException e) {
+ } catch (IOException e) {
if (log.isErrorEnabled()) {
log.error("error while converting file to pdf", e);
}
@@ -254,7 +254,7 @@
@Override
public void onCloseUI() {
- pdfDecoder.closePdfFile();
+ IOUtils.closeQuietly(pdDocument);
}
public void addEditionComponent(MouseEvent event) {
@@ -349,19 +349,20 @@
}
protected void displayPage(int pageNb, float previousZoom, int previousRotation) {
- if (pageNb < 1 || pageNb > pdfDecoder.getPageCount()) {
+ if (pageNb < 1 || pageNb > pdDocument.getNumberOfPages()) {
return;
}
+ PDFRenderer renderer = new PDFRenderer(pdDocument);
+ float zoom = getModel().getZoom();
+ int rotation = getModel().getRotation();
+
try {
- float zoom = getModel().getZoom();
- int rotation = getModel().getRotation();
- pdfDecoder.setExtractionMode(0, 0, zoom);
- BufferedImage image = pdfDecoder.getPageAsImage(pageNb);
+ BufferedImage image = renderer.renderImage(pageNb - 1, zoom);
- int width = (int) (zoom * image.getWidth());
- int height = (int) (zoom * image.getHeight());
+ int width = image.getWidth();
+ int height = image.getHeight();
JPanel container = getUI().getContainer();
Dimension containerSize = new Dimension(rotation % 180 == 0 ? width : height,
@@ -508,7 +509,7 @@
container.updateUI();
- } catch (PdfException e) {
+ } catch (IOException e) {
if (log.isErrorEnabled()) {
log.error("error while displaying pdf", e);
}
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-12-23 16:24:48 UTC (rev 735)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-12-24 14:36:54 UTC (rev 736)
@@ -56,7 +56,6 @@
import javax.media.jai.PlanarImage;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
-import javax.print.attribute.standard.MediaPrintableArea;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
@@ -79,10 +78,10 @@
import org.apache.commons.lang3.SystemUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jpedal.PdfDecoder;
-import org.jpedal.examples.simpleviewer.paper.PaperSizes;
-import org.jpedal.exception.PdfException;
-import org.jpedal.fonts.FontMappings;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.printing.PDFPrinter;
+import org.apache.pdfbox.rendering.PDFRenderer;
import org.nuiton.jaxx.application.ApplicationTechnicalException;
import org.nuiton.jaxx.application.swing.util.ApplicationUIUtil;
import org.nuiton.util.FileUtil;
@@ -506,16 +505,13 @@
* @param defaultPrinter if {@code true}, do not display print dialog and print with default printer
* @return true if file has been printed, false otherwise
*/
+ //TODO kmorin print in an action
protected static boolean printWithPdfRenderer(String printName, FileInputStream fis, boolean defaultPrinter) {
boolean result = false;
- final PdfDecoder pdfDecoder = new PdfDecoder();
- FontMappings.setFontReplacements();
+ PDDocument pdDocument = null;
try {
- pdfDecoder.openPdfFileFromInputStream(fis, false);
- pdfDecoder.setExtractionMode(0, 0, 1f);
-
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setJobName(printName);
@@ -523,82 +519,90 @@
PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
result = defaultPrinter || printJob.printDialog(attributes);
- PageFormat pageFormat = printJob.getPageFormat(attributes);
- final double paperWidth = (int) pageFormat.getImageableWidth();
- final double paperHeight = (int) pageFormat.getImageableHeight();
- final int paperX = (int) pageFormat.getImageableX();
- final int paperY = (int) pageFormat.getImageableY();
+ if (result) {
+ pdDocument = PDDocument.load(fis);
+ final PDFRenderer renderer = new PDFRenderer(pdDocument);
+ final int numOfPages = pdDocument.getNumberOfPages();
- if (log.isDebugEnabled()) {
- log.debug("page width " + paperWidth);
- log.debug("page height " + paperHeight);
- log.debug("page x " + paperX);
- log.debug("page y " + paperY);
- }
+ printJob.setPrintable(new Printable() {
+ public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
+ try {
+ if (pageIndex >= numOfPages) {
+ return NO_SUCH_PAGE;
+ }
- printJob.setPrintable(new Printable() {
- public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
- try {
- if (pageIndex >= pdfDecoder.getPageCount()) {
- return NO_SUCH_PAGE;
- }
- BufferedImage image = pdfDecoder.getPageAsImage(pageIndex + 1);
+ double paperWidth = (int) pageFormat.getImageableWidth();
+ double paperHeight = (int) pageFormat.getImageableHeight();
+ int paperX = (int) pageFormat.getImageableX();
+ int paperY = (int) pageFormat.getImageableY();
- int imageWidth = image.getWidth();
- int imageHeight = image.getHeight();
- double widthRatio = paperWidth / imageWidth;
- double heightRatio = paperHeight / imageHeight;
+ if (log.isDebugEnabled()) {
+ log.debug("page width " + paperWidth);
+ log.debug("page height " + paperHeight);
+ log.debug("page x " + paperX);
+ log.debug("page y " + paperY);
+ }
- if (log.isDebugEnabled()) {
- log.debug("width ratio : " + widthRatio);
- log.debug("height ratio : " + heightRatio);
- }
+ BufferedImage image = renderer.renderImageWithDPI(pageIndex, 300);
- int width;
- int height;
- // if the image is smaller than the page
- if (widthRatio >= 1 && heightRatio >= 1) {
- width = imageWidth;
- height = imageHeight;
+ int imageWidth = image.getWidth();
+ int imageHeight = image.getHeight();
+ double widthRatio = paperWidth / imageWidth;
+ double heightRatio = paperHeight / imageHeight;
- } else {
- double minRatio = Math.min(widthRatio, heightRatio);
- width = (int) (minRatio * imageWidth);
- height = (int) (minRatio * imageHeight);
- }
+ if (log.isDebugEnabled()) {
+ log.debug("width ratio : " + widthRatio);
+ log.debug("height ratio : " + heightRatio);
+ }
- if (log.isDebugEnabled()) {
- log.debug("image width : " + width);
- log.debug("image height : " + height);
- }
- graphics.drawImage(image, paperX, paperY, width, height, null);
+ int width;
+ int height;
+ // if the image is smaller than the page
+ if (widthRatio >= 1 && heightRatio >= 1) {
+ width = imageWidth;
+ height = imageHeight;
- return PAGE_EXISTS;
+ } else {
+ double minRatio = Math.min(widthRatio, heightRatio);
+ width = (int) (minRatio * imageWidth);
+ height = (int) (minRatio * imageHeight);
+ }
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("error while printing", e);
+ if (log.isDebugEnabled()) {
+ log.debug("image width : " + width);
+ log.debug("image height : " + height);
+ }
+ graphics.drawImage(image, paperX, paperY, width, height, null);
+
+ return PAGE_EXISTS;
+
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("error while printing", e);
+ }
+ return NO_SUCH_PAGE;
}
- return NO_SUCH_PAGE;
}
- }
- });
+ });
- if (result) {
printJob.print(attributes);
}
- } catch (PrinterException | PdfException ex) {
+ } catch (PrinterException ex) {
if (log.isErrorEnabled()) {
log.error("can't print", ex);
}
+ } catch (IOException e) {
+ if (log.isErrorEnabled()) {
+ log.error("", e);
+ }
} finally {
if (log.isDebugEnabled()) {
log.debug("finally close the pdf file");
}
- pdfDecoder.closePdfFile();
+ IOUtils.closeQuietly(pdDocument);
}
return result;
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-12-23 16:24:48 UTC (rev 735)
+++ trunk/pom.xml 2014-12-24 14:36:54 UTC (rev 736)
@@ -150,6 +150,26 @@
<checksumPolicy>fail</checksumPolicy>
</releases>
</repository>
+
+ <repository>
+ <id>repository.apache.org</id>
+ <url>http://repository.apache.org/content/groups/snapshots</url>
+ <snapshots>
+ <enabled>true</enabled>
+ <checksumPolicy>fail</checksumPolicy>
+ </snapshots>
+ <releases>
+ <enabled>false</enabled>
+ <checksumPolicy>fail</checksumPolicy>
+ </releases>
+ </repository>
+
+ <repository>
+ <id>com.springsource.repository.bundles.external</id>
+ <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name>
+ <url>http://repository.springsource.com/maven/bundles/external</url>
+ </repository>
+
</repositories>
<pluginRepositories>
@@ -654,6 +674,12 @@
<version>4.74b27</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ </dependency>
+
</dependencies>
</dependencyManagement>
1
0
r735 - trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service
by kmorin@users.forge.codelutin.com 23 Dec '14
by kmorin@users.forge.codelutin.com 23 Dec '14
23 Dec '14
Author: kmorin
Date: 2014-12-23 16:24:48 +0000 (Tue, 23 Dec 2014)
New Revision: 735
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/735
Log:
refs #6335 Corriger les lenteurs d'affichage des listes
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-12-20 20:35:03 UTC (rev 734)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-12-23 16:24:48 UTC (rev 735)
@@ -166,31 +166,20 @@
Email email = getPersistenceContext().getEmailDao()
.forTopiaIdEquals(id)
.addAllFetches(Email.PROPERTY_DEMAND_TYPE,
- //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
- //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
- //Email.PROPERTY_REPLIES,
- //Email.PROPERTY_ATTACHMENT,
Email.PROPERTY_TAKEN_BY,
Email.PROPERTY_LAST_ATTACHMENT_OPENER,
Email.PROPERTY_CLIENT,
- //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL,
- //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + "." + Email.PROPERTY_MAIL_FOLDER,
Email.PROPERTY_WAITING_STATE,
Email.PROPERTY_ORIGINAL_EMAIL,
Email.PROPERTY_PRIORITY).findUnique();
// manual fetch
- //Hibernate.initialize(email.getPriority());
- //Hibernate.initialize(email.getDemandType());
- //Hibernate.initialize(email.getClient());
List<RangeRow> rangeRows = email.getRangeRow();
if (rangeRows != null) {
for (RangeRow rangeRow : rangeRows) {
Hibernate.initialize(rangeRow.getRange());
}
}
- //Hibernate.initialize(email.getWaitingState()));
- //Hibernate.initialize(email.getTakenBy());
Hibernate.initialize(email.getReplies());
Hibernate.initialize(email.getAttachment());
Collection<History> histories = email.getHistory();
@@ -312,6 +301,11 @@
}
}
+ OriginalEmail originalEmail = email.getOriginalEmail();
+ if (!originalEmail.isPersisted()) {
+ getPersistenceContext().getOriginalEmailDao().create(originalEmail);
+ }
+
Collection<History> histories;
if (!email.isPersisted()) {
histories = email.getHistory();
@@ -387,11 +381,6 @@
email.addHistory(history);
}
- OriginalEmail originalEmail = email.getOriginalEmail();
- if (!originalEmail.isPersisted()) {
- getPersistenceContext().getOriginalEmailDao().create(originalEmail);
- }
-
Email result = dao.update(email);
getPersistenceContext().commit();
@@ -749,159 +738,8 @@
PaginationResult<Email> result;
if (folder.isFolderReadable()) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
-
result = dao.getEmailForFolder(filter, folder, page);
-// result = dao.getEmailForFolder2(filter, folder, page);
-// result = dao.getEmailForFolder(filter, folder, page);
-// result = dao.getEmailForFolder3(filter, folder, page);
-//
-//
-// TopiaSqlSupport sqlSupport = getPersistenceContext().getSqlSupport();
-// sqlSupport.doSqlWork(new TopiaSqlWork() {
-//
-// @Override
-// public void execute(Connection connection) throws SQLException {
-//
-//
-// long time = new Date().getTime();
-// log.info("before sql : " + time);
-//
-// // attention, le sql à pour cible postgresql, mssql, h2, il doit rester simple
-// String query = String.format("select\n" +
-// " distinct top(%s) emailimpl0_.topiaId as topiaId1_7_,\n" +
-// " emailimpl0_.topiaVersion as topiaVer2_7_,\n" +
-// " emailimpl0_.topiaCreateDate as topiaCre3_7_,\n" +
-// " emailimpl0_.receptionDate as receptio4_7_,\n" +
-// " emailimpl0_.ediError as ediError5_7_,\n" +
-// " emailimpl0_.projectReference as projectR6_7_,\n" +
-// " emailimpl0_.sender as sender7_7_,\n" +
-// " emailimpl0_.fax as fax8_7_,\n" +
-// " emailimpl0_.recipient as recipien9_7_,\n" +
-// " emailimpl0_.object as object10_7_,\n" +
-// " emailimpl0_.archiveDate as archive11_7_,\n" +
-// " emailimpl0_.companyReference as company12_7_,\n" +
-// " emailimpl0_.originalEmail as origina13_7_,\n" +
-// " emailimpl0_.comment as comment14_7_,\n" +
-// " emailimpl0_.mailFolder as mailFol15_7_,\n" +
-// " emailimpl0_.demandType as demandT16_7_,\n" +
-// " emailimpl0_.priority as priorit17_7_,\n" +
-// " emailimpl0_.waitingState as waiting18_7_,\n" +
-// " emailimpl0_.takenBy as takenBy19_7_,\n" +
-// " emailimpl0_.client as client20_7_,\n" +
-// " emailimpl0_.demandStatus as demandS21_7_,\n" +
-// " emailimpl0_.emailGroup as emailGr22_7_,\n" +
-// " emailimpl0_.lastAttachmentOpener as lastAtt23_7_ \n" +
-// " from\n" +
-// " email emailimpl0_ \n" +
-// " where\n" +
-// " emailimpl0_.mailFolder='%s' \n" +
-// " and emailimpl0_.demandStatus<>'ARCHIVED' " +
-// "order by emailimpl0_.topiaCreateDate ASC",
-// page.getPageSize(),
-// folder.getTopiaId());
-// log.info(query);
-// Statement stat = connection.createStatement();
-//
-// long time2 = new Date().getTime();
-// log.info("after sql : " + time2 + "(" + (time2 - time) + ")");
-//
-// // get query result set
-// ResultSet resultSet = stat.executeQuery(query);
-// while (resultSet.next()) {
-// Email email = new EmailImpl();
-//// String topiaId = topiaId1_7_
-//// String topiaVersion = topiaVer2_7_
-//// String topiaCreateDate = topiaCre3_7_
-//// String receptionDate = receptio4_7_
-//// String ediError = ediError5_7_
-//// String projectReference = projectR6_7_
-//// String sender = sender7_7_
-//// String fax = fax8_7_
-//// String recipient = recipien9_7_
-//// String object = object10_7_
-//// String acrhiveDate = archive11_7_
-//// String companyReference = company12_7_
-//// String originalEmail = origina13_7_
-//// String comment = comment14_7_
-//// String mailFolder = mailFol15_7_
-//// String demandType = demandT16_7_
-//// String priority = priorit17_7_
-//// String waintingState = waiting18_7_
-//// String takenBy = takenBy19_7_
-//// String client = client20_7_
-//// String topiaId = demandS21_7_
-//// String topiaId = emailGr22_7_
-//// String topiaId = lastAtt23_7_
-// }
-//
-//
-// long time3 = new Date().getTime();
-// log.info("after sql : " + time2 + "(" + (time2 - time) + ")");
-// }
-// });
-// TopiaQueryBuilderAddCriteriaOrRunQueryStep<Email> builderAddCriteriaOrRunQueryStep =
-// dao.forMailFolderEquals(folder)
-// .addNull(Email.PROPERTY_ARCHIVE_DATE)
-// .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED);
-//
-// if (CollectionUtils.isNotEmpty(filter.getDemandStatus())) {
-// builderAddCriteriaOrRunQueryStep.addIn(Email.PROPERTY_DEMAND_STATUS, filter.getDemandStatus());
-// }
-// if (CollectionUtils.isNotEmpty(filter.getSenders())) {
-// builderAddCriteriaOrRunQueryStep.addIn(Email.PROPERTY_SENDER, filter.getSenders());
-// }
-//
-// if (Boolean.getBoolean("faxtomail.fullfetch")) {
-// result = builderAddCriteriaOrRunQueryStep
-// .addAllFetches(Email.PROPERTY_PRIORITY,
-// Email.PROPERTY_DEMAND_TYPE,
-// Email.PROPERTY_CLIENT,
-// Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
-// Email.PROPERTY_WAITING_STATE,
-// Email.PROPERTY_TAKEN_BY,
-// Email.PROPERTY_REPLIES,
-// Email.PROPERTY_ATTACHMENT
-// //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER
-// ).findPage(page);
-// } else {
-// result = builderAddCriteriaOrRunQueryStep
-// .addAllFetches(Email.PROPERTY_PRIORITY,
-// Email.PROPERTY_DEMAND_TYPE,
-// Email.PROPERTY_CLIENT,
-// //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
-// Email.PROPERTY_WAITING_STATE,
-// Email.PROPERTY_TAKEN_BY
-// //Email.PROPERTY_REPLIES,
-// //Email.PROPERTY_ATTACHMENT,
-// //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER
-// ).findPage(page);
-//
-//
-// // manual fetch
-// for (Email email : result.getElements()) {
-// //Hibernate.initialize(email.getPriority());
-// //Hibernate.initialize(email.getDemandType());
-// //Hibernate.initialize(email.getClient());
-// List<RangeRow> rangeRows = email.getRangeRow();
-// if (rangeRows != null) {
-// for (RangeRow rangeRow : rangeRows) {
-// Hibernate.initialize(rangeRow.getRange());
-// }
-// }
-// //Hibernate.initialize(email.getWaitingState());
-// //Hibernate.initialize(email.getTakenBy());
-// Hibernate.initialize(email.getReplies());
-// Hibernate.initialize(email.getAttachment());
-// /*List<History> histories = email.getHistory();
-// if (histories != null) {
-// for (History history : histories) {
-// Hibernate.initialize(history.getFaxToMailUser());
-// }
-// }*/
-// }
-// }
-
} else {
List<Email> elements = Collections.emptyList();
result = PaginationResult.of(elements, 0, page);
1
0
20 Dec '14
Author: kmorin
Date: 2014-12-20 20:35:03 +0000 (Sat, 20 Dec 2014)
New Revision: 734
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/734
Log:
refs #6335 Corriger les lenteurs d'affichage des listes
Added:
trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_1_0_733__extract_originalemail.sql
trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_0_733__extract_originalemail.sql
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties
trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportExportBean.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportExportModel.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestDataImpl.java
trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/DemandDetailAction.java
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -350,8 +350,8 @@
}
if (StringUtils.isNotBlank(searchFilter.getBody())) {
- query.append(" AND lower(E." + Email.PROPERTY_ORIGINAL_EMAIL + ") LIKE lower(:" + SearchFilter.PROPERTY_BODY + ")");
- args.put(SearchFilter.PROPERTY_BODY, "%" + searchFilter.getBody() + "%");
+ query.append(" AND lower(E." + Email.PROPERTY_ORIGINAL_EMAIL + "." + OriginalEmail.PROPERTY_CONTENT + ") LIKE lower(:" + SearchFilter.PROPERTY_CLIENT_CODE + ")");
+ args.put(SearchFilter.PROPERTY_CLIENT_CODE, "%" + searchFilter.getClientCode() + "%");
}
// email gamme
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties 2014-12-20 20:35:03 UTC (rev 734)
@@ -94,6 +94,9 @@
com.franciaflex.faxtomail.persistence.entities.Email.attribute.mailFolder.tagvalue.notNull=true
com.franciaflex.faxtomail.persistence.entities.Email.attribute.originalEmail.tagvalue.notNull=true
+# OriginalEmail
+com.franciaflex.faxtomail.persistence.entities.OriginalEmail.attribute.content.tagvalue.notNull=true
+
# Reply
com.franciaflex.faxtomail.persistence.entities.Reply.attribute.sentDate.tagvalue.notNull=true
com.franciaflex.faxtomail.persistence.entities.Reply.attribute.subject.tagvalue.notNull=true
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
===================================================================
(Binary files differ)
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -27,6 +27,7 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Date;
import java.util.List;
@@ -35,9 +36,11 @@
import javax.mail.MessagingException;
import javax.mail.Part;
+import javax.mail.internet.MimeMessage;
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.ExtensionCommand;
+import com.franciaflex.faxtomail.persistence.entities.OriginalEmail;
import com.franciaflex.faxtomail.persistence.entities.SearchFilter;
import com.franciaflex.faxtomail.services.service.imports.ArchiveImportResult;
import com.itextpdf.text.DocumentException;
@@ -126,6 +129,8 @@
void updateRangeRowsWithEdiReturns();
+ OriginalEmail originalEmailFromMessage(MimeMessage message, Charset charset) throws MessagingException, IOException;
+
AttachmentFile getEmailDetailAsAttachment(Email email);
/**
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -67,6 +67,7 @@
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;
@@ -78,6 +79,7 @@
import com.google.common.base.Optional;
import com.google.common.collect.Collections2;
import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
@@ -87,6 +89,7 @@
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.IteratorUtils;
import org.apache.commons.collections4.Predicate;
+import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
@@ -115,6 +118,7 @@
import org.nuiton.util.StringUtil;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
+import org.nuiton.util.pagination.PaginationOrder;
import org.nuiton.util.pagination.PaginationParameter;
import org.nuiton.util.pagination.PaginationResult;
import org.xhtmlrenderer.pdf.ITextRenderer;
@@ -167,10 +171,12 @@
//Email.PROPERTY_REPLIES,
//Email.PROPERTY_ATTACHMENT,
Email.PROPERTY_TAKEN_BY,
+ Email.PROPERTY_LAST_ATTACHMENT_OPENER,
Email.PROPERTY_CLIENT,
//Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL,
//Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + "." + Email.PROPERTY_MAIL_FOLDER,
Email.PROPERTY_WAITING_STATE,
+ Email.PROPERTY_ORIGINAL_EMAIL,
Email.PROPERTY_PRIORITY).findUnique();
// manual fetch
@@ -381,6 +387,11 @@
email.addHistory(history);
}
+ OriginalEmail originalEmail = email.getOriginalEmail();
+ if (!originalEmail.isPersisted()) {
+ getPersistenceContext().getOriginalEmailDao().create(originalEmail);
+ }
+
Email result = dao.update(email);
getPersistenceContext().commit();
@@ -729,10 +740,10 @@
* @return paginated results
*/
@Override
- public PaginationResult<Email> getEmailForFolder(MailFolder folder,
+ public PaginationResult<Email> getEmailForFolder(final MailFolder folder,
FaxToMailUser currentUser,
EmailFilter filter,
- PaginationParameter page) {
+ final PaginationParameter page) {
// perform request or not depending on rigths
PaginationResult<Email> result;
@@ -741,6 +752,94 @@
result = dao.getEmailForFolder(filter, folder, page);
// result = dao.getEmailForFolder2(filter, folder, page);
+// result = dao.getEmailForFolder(filter, folder, page);
+// result = dao.getEmailForFolder3(filter, folder, page);
+//
+//
+// TopiaSqlSupport sqlSupport = getPersistenceContext().getSqlSupport();
+// sqlSupport.doSqlWork(new TopiaSqlWork() {
+//
+// @Override
+// public void execute(Connection connection) throws SQLException {
+//
+//
+// long time = new Date().getTime();
+// log.info("before sql : " + time);
+//
+// // attention, le sql à pour cible postgresql, mssql, h2, il doit rester simple
+// String query = String.format("select\n" +
+// " distinct top(%s) emailimpl0_.topiaId as topiaId1_7_,\n" +
+// " emailimpl0_.topiaVersion as topiaVer2_7_,\n" +
+// " emailimpl0_.topiaCreateDate as topiaCre3_7_,\n" +
+// " emailimpl0_.receptionDate as receptio4_7_,\n" +
+// " emailimpl0_.ediError as ediError5_7_,\n" +
+// " emailimpl0_.projectReference as projectR6_7_,\n" +
+// " emailimpl0_.sender as sender7_7_,\n" +
+// " emailimpl0_.fax as fax8_7_,\n" +
+// " emailimpl0_.recipient as recipien9_7_,\n" +
+// " emailimpl0_.object as object10_7_,\n" +
+// " emailimpl0_.archiveDate as archive11_7_,\n" +
+// " emailimpl0_.companyReference as company12_7_,\n" +
+// " emailimpl0_.originalEmail as origina13_7_,\n" +
+// " emailimpl0_.comment as comment14_7_,\n" +
+// " emailimpl0_.mailFolder as mailFol15_7_,\n" +
+// " emailimpl0_.demandType as demandT16_7_,\n" +
+// " emailimpl0_.priority as priorit17_7_,\n" +
+// " emailimpl0_.waitingState as waiting18_7_,\n" +
+// " emailimpl0_.takenBy as takenBy19_7_,\n" +
+// " emailimpl0_.client as client20_7_,\n" +
+// " emailimpl0_.demandStatus as demandS21_7_,\n" +
+// " emailimpl0_.emailGroup as emailGr22_7_,\n" +
+// " emailimpl0_.lastAttachmentOpener as lastAtt23_7_ \n" +
+// " from\n" +
+// " email emailimpl0_ \n" +
+// " where\n" +
+// " emailimpl0_.mailFolder='%s' \n" +
+// " and emailimpl0_.demandStatus<>'ARCHIVED' " +
+// "order by emailimpl0_.topiaCreateDate ASC",
+// page.getPageSize(),
+// folder.getTopiaId());
+// log.info(query);
+// Statement stat = connection.createStatement();
+//
+// long time2 = new Date().getTime();
+// log.info("after sql : " + time2 + "(" + (time2 - time) + ")");
+//
+// // get query result set
+// ResultSet resultSet = stat.executeQuery(query);
+// while (resultSet.next()) {
+// Email email = new EmailImpl();
+//// String topiaId = topiaId1_7_
+//// String topiaVersion = topiaVer2_7_
+//// String topiaCreateDate = topiaCre3_7_
+//// String receptionDate = receptio4_7_
+//// String ediError = ediError5_7_
+//// String projectReference = projectR6_7_
+//// String sender = sender7_7_
+//// String fax = fax8_7_
+//// String recipient = recipien9_7_
+//// String object = object10_7_
+//// String acrhiveDate = archive11_7_
+//// String companyReference = company12_7_
+//// String originalEmail = origina13_7_
+//// String comment = comment14_7_
+//// String mailFolder = mailFol15_7_
+//// String demandType = demandT16_7_
+//// String priority = priorit17_7_
+//// String waintingState = waiting18_7_
+//// String takenBy = takenBy19_7_
+//// String client = client20_7_
+//// String topiaId = demandS21_7_
+//// String topiaId = emailGr22_7_
+//// String topiaId = lastAtt23_7_
+// }
+//
+//
+// long time3 = new Date().getTime();
+// log.info("after sql : " + time2 + "(" + (time2 - time) + ")");
+// }
+// });
+
// TopiaQueryBuilderAddCriteriaOrRunQueryStep<Email> builderAddCriteriaOrRunQueryStep =
// dao.forMailFolderEquals(folder)
// .addNull(Email.PROPERTY_ARCHIVE_DATE)
@@ -1465,6 +1564,22 @@
getPersistenceContext().commit();
}
+ public OriginalEmail originalEmailFromMessage(MimeMessage message, Charset charset) throws MessagingException, IOException {
+ StringBuilder emailSource = new StringBuilder();
+ Enumeration<String> headerLines = message.getAllHeaderLines();
+ while (headerLines.hasMoreElements()) {
+ String headerLine = headerLines.nextElement();
+ emailSource.append(headerLine).append("\n");
+ }
+ String originalContent = IOUtils.toString(message.getRawInputStream(), charset);
+ emailSource.append("\n").append(originalContent);
+
+ OriginalEmail originalEmail = getPersistenceContext().getOriginalEmailDao().newInstance();
+ originalEmail.setContent(emailSource.toString());
+
+ return originalEmail;
+ }
+
/**
* Generate email details as PDF and return it as an printable attachment.
*
@@ -1569,6 +1684,7 @@
AttachmentTopiaDao attachmentDao = persistenceContext.getAttachmentDao();
AttachmentFileTopiaDao attachmentFileDao = persistenceContext.getAttachmentFileDao();
HistoryTopiaDao historyDao = persistenceContext.getHistoryDao();
+ OriginalEmailTopiaDao originalEmailTopiaDao = getPersistenceContext().getOriginalEmailDao();
int commitThreshold = getApplicationConfig().getArchiveImportCommitTreshold();
if (log.isInfoEnabled()) {
@@ -1688,6 +1804,14 @@
Client client = getClientService().getClientForCode(archiveBean.getClientCode(), company);
email.setClient(client);
+ OriginalEmail originalEmail = originalEmailTopiaDao.newInstance();
+ String originalEmailContent = archiveBean.getOriginalEmailContent();
+ originalEmail.setContent(originalEmailContent != null ? originalEmailContent : "");
+ originalEmail.setTopiaId(getTopiaId(OriginalEmail.class, originalEmail));
+ statelessSession.insert(originalEmail);
+
+ email.setOriginalEmail(originalEmail);
+
// persist it
email.setTopiaId(getTopiaId(Email.class, email));
statelessSession.insert(email);
@@ -1701,9 +1825,9 @@
// email.addHistory(history);
- if (StringUtils.isNotBlank(email.getOriginalEmail())) {
+ if (StringUtils.isNotBlank(originalEmailContent)) {
try {
- Attachment contentAttachment = convertTextToPdf(email.getOriginalEmail(),
+ Attachment contentAttachment = convertTextToPdf(originalEmailContent,
t("faxtomail.email.content.attachment.plainfileName"));
AttachmentFile contentAttachmentFile = contentAttachment.getOriginalFile();
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportExportBean.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportExportBean.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportExportBean.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -42,6 +42,7 @@
protected static final String PROPERTY_CLIENT_CODE = "clientCode";
protected static final String PROPERTY_CLIENT_BRAND = "clientBrand";
protected static final String PROPERTY_ERROR = "error";
+ protected static final String PROPERTY_ORIGINAL_EMAIL_CONTENT = "originalEmailContent";
protected String mailFolderPath;
@@ -53,6 +54,8 @@
protected String error;
+ protected String originalEmailContent;
+
public String getMailFolderPath() {
return mailFolderPath;
}
@@ -92,4 +95,12 @@
public void setError(String error) {
this.error = error;
}
+
+ public String getOriginalEmailContent() {
+ return originalEmailContent;
+ }
+
+ public void setOriginalEmailContent(String originalEmailContent) {
+ this.originalEmailContent = originalEmailContent;
+ }
}
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportExportModel.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportExportModel.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportExportModel.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -93,7 +93,7 @@
newColumnForImportExport("object", ArchiveImportExportBean.PROPERTY_OBJECT);
newColumnForImportExport("archiveDate", ArchiveImportExportBean.PROPERTY_ARCHIVE_DATE, dateValueParserFormatter);
newColumnForImportExport("companyReference", ArchiveImportExportBean.PROPERTY_COMPANY_REFERENCE);
- newColumnForImportExport("originalEmail", ArchiveImportExportBean.PROPERTY_ORIGINAL_EMAIL);
+ newColumnForImportExport("originalEmail", ArchiveImportExportBean.PROPERTY_ORIGINAL_EMAIL_CONTENT);
newColumnForImportExport("comment", ArchiveImportExportBean.PROPERTY_COMMENT);
newColumnForImportExport("etatAttente", ArchiveImportExportBean.PROPERTY_WAITING_STATE, new HasLabelValueParserFormatter<WaitingState>() {
@Override
Copied: trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_1_0_733__extract_originalemail.sql (from rev 706, trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_662__add_company_in_mailfolder.sql)
===================================================================
--- trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_1_0_733__extract_originalemail.sql (rev 0)
+++ trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_1_0_733__extract_originalemail.sql 2014-12-20 20:35:03 UTC (rev 734)
@@ -0,0 +1,24 @@
+
+-- extract original email from email
+create table originalEmail (
+ topiaId varchar(255) not null,
+ topiaVersion bigint not null,
+ topiaCreateDate timestamp,
+ content longvarchar not null,
+ email varchar(255) not null,
+ primary key (topiaId)
+);
+
+insert into originalEmail (
+ select concat('com.franciaflex.faxtomail.persistence.entities.OriginalEmail_', RANDOM_UUID()), 0, topiaCreateDate, originalEmail, topiaId from email
+);
+
+merge into email(topiaId, originalEmail) key (topiaId) select email, topiaId from originalEmail;
+
+alter table email alter column originalEmail varchar(255);
+
+alter table email
+ add constraint UK_P4YIV4FRJSIKCMLMFOX8CF6RE
+ unique (originalEmail);
+
+alter table originalEmail drop column email;
Property changes on: trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_1_0_733__extract_originalemail.sql
___________________________________________________________________
Added: svn:eol-style
+ native
Added: trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_0_733__extract_originalemail.sql
===================================================================
--- trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_0_733__extract_originalemail.sql (rev 0)
+++ trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_1_0_733__extract_originalemail.sql 2014-12-20 20:35:03 UTC (rev 734)
@@ -0,0 +1,29 @@
+
+-- extract original email from email
+create table originalEmail (
+ topiaId varchar(255) not null,
+ topiaVersion bigint not null,
+ topiaCreateDate datetime2,
+ content varchar(MAX) not null,
+ email varchar(255) not null,
+ primary key (topiaId)
+);
+GO
+
+insert into originalEmail
+select 'com.franciaflex.faxtomail.persistence.entities.OriginalEmail_' + cast(newid() as varchar(255)), 0, topiaCreateDate, originalEmail, topiaId from email;
+
+merge into email as e
+using originalEmail as o
+on (e.topiaId = o.email)
+when matched then update set e.originalEmail = o.topiaId;
+GO
+
+alter table email alter column originalEmail varchar(255) not NULL;
+alter table email
+ add constraint UK_P4YIV4FRJSIKCMLMFOX8CF6RE
+ unique (originalEmail);
+GO
+
+alter table originalEmail drop column email;
+GO
\ No newline at end of file
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestDataImpl.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestDataImpl.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestDataImpl.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -38,6 +38,8 @@
import java.util.List;
import java.util.Map;
+import com.franciaflex.faxtomail.persistence.entities.OriginalEmail;
+import com.franciaflex.faxtomail.persistence.entities.OriginalEmailTopiaDao;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.logging.Log;
@@ -226,19 +228,20 @@
HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao();
RangeRowTopiaDao rangeRowDao = getPersistenceContext().getRangeRowDao();
EmailTopiaDao emailDao = getPersistenceContext().getEmailDao();
- createEmails(historyDao, rangeRowDao, emailDao, ranges, clients, types, priorities, cyrilFolder, cyril);
+ OriginalEmailTopiaDao originalEmailDao = getPersistenceContext().getOriginalEmailDao();
+ createEmails(historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, cyrilFolder, cyril);
}
- protected void createEmails(HistoryTopiaDao historyDao, RangeRowTopiaDao rangeRowDao, EmailTopiaDao emailDao, List<Range> ranges,
- List<Client> clients, List<DemandType> types, List<Priority> priorities, MailFolder folder, FaxToMailUser user)
+ protected void createEmails(HistoryTopiaDao historyDao, RangeRowTopiaDao rangeRowDao, EmailTopiaDao emailDao, OriginalEmailTopiaDao originalEmailDao,
+ List<Range> ranges, List<Client> clients, List<DemandType> types, List<Priority> priorities, MailFolder folder, FaxToMailUser user)
throws InvalidClientException {
for (int i = 0; i < 5; i++) {
- createEmail(historyDao, rangeRowDao, emailDao, ranges, clients, types, priorities, folder, user);
+ createEmail(historyDao, rangeRowDao, emailDao, originalEmailDao, ranges, clients, types, priorities, folder, user);
}
}
- protected void createEmail(HistoryTopiaDao historyDao, RangeRowTopiaDao rangeRowDao, EmailTopiaDao emailDao, List<Range> ranges,
- List<Client> clients, List<DemandType> types, List<Priority> priorities, MailFolder folder, FaxToMailUser user)
+ protected void createEmail(HistoryTopiaDao historyDao, RangeRowTopiaDao rangeRowDao, EmailTopiaDao emailDao, OriginalEmailTopiaDao originalEmailDao,
+ List<Range> ranges, List<Client> clients, List<DemandType> types, List<Priority> priorities, MailFolder folder, FaxToMailUser user)
throws InvalidClientException {
List<RangeRow> rangeRows = new ArrayList<>();
@@ -275,6 +278,8 @@
String projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(now));
+ OriginalEmail originalEmail = originalEmailDao.create(OriginalEmail.PROPERTY_CONTENT, "test");
+
Email email = emailDao.create(
Email.PROPERTY_SENDER, sender,
Email.PROPERTY_FAX, fax,
@@ -286,7 +291,7 @@
Email.PROPERTY_MAIL_FOLDER, folder,
Email.PROPERTY_DEMAND_STATUS, opened ? DemandStatus.IN_PROGRESS : DemandStatus.UNTREATED,
Email.PROPERTY_HISTORY, Lists.newArrayList(history),
- Email.PROPERTY_ORIGINAL_EMAIL, "test");
+ Email.PROPERTY_ORIGINAL_EMAIL, originalEmail);
if (opened) {
@@ -320,6 +325,8 @@
Email.PROPERTY_MAIL_FOLDER, Email.PROPERTY_DEMAND_STATUS));
projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(yesterday));
+ originalEmail = originalEmailDao.create(OriginalEmail.PROPERTY_CONTENT, "test");
+
email = emailDao.create(
Email.PROPERTY_SENDER, sender,
Email.PROPERTY_FAX, fax,
@@ -330,7 +337,7 @@
Email.PROPERTY_MAIL_FOLDER, folder,
Email.PROPERTY_DEMAND_STATUS, opened ? DemandStatus.IN_PROGRESS : DemandStatus.UNTREATED,
Email.PROPERTY_HISTORY, Lists.newArrayList(history),
- Email.PROPERTY_ORIGINAL_EMAIL, "test");
+ Email.PROPERTY_ORIGINAL_EMAIL, originalEmail);
if (opened) {
getEmailService().addToHistory(email.getTopiaId(), HistoryType.OPENING, user, now);
Modified: trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-swing/src/license/THIRD-PARTY.properties 2014-12-20 20:35:03 UTC (rev 734)
@@ -43,7 +43,7 @@
# Please fill the missing licenses for dependencies :
#
#
-#Tue Nov 18 15:49:51 CET 2014
+#Mon Dec 15 12:35:36 CET 2014
commons-primitives--commons-primitives--1.0=The Apache Software License, Version 2.0
dom4j--dom4j--1.6.1=BSD License
gui.ava--html2image--2.0.1=GNU Lesser General Public License, Version 2.1
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -51,7 +51,6 @@
import jaxx.runtime.swing.session.State;
import jaxx.runtime.swing.session.SwingSession;
-import jaxx.runtime.swing.table.filter.TableFilter;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@@ -59,7 +58,6 @@
import org.jdesktop.beans.AbstractBean;
import org.jdesktop.swingx.JXLoginPane;
import org.jdesktop.swingx.JXLoginPane.Status;
-import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.auth.LoginService;
import org.jdesktop.swingx.error.ErrorInfo;
import org.nuiton.i18n.I18n;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ArchiveAction.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -26,6 +26,7 @@
import static org.nuiton.i18n.I18n.t;
+import java.util.Collection;
import java.util.Date;
import javax.swing.JOptionPane;
@@ -80,8 +81,9 @@
MailFolder folder = model.getMailFolder();
MailFolder archiveChild = null;
do {
- if (folder.getChildren() != null) {
- Optional<MailFolder> optArchiveChild = Iterables.tryFind(folder.getChildren(), new Predicate<MailFolder>() {
+ Collection<MailFolder> children = folder.getChildren();
+ if (children != null) {
+ Optional<MailFolder> optArchiveChild = Iterables.tryFind(children, new Predicate<MailFolder>() {
@Override
public boolean apply(MailFolder mailFolder) {
return mailFolder.isArchiveFolder();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -34,6 +34,8 @@
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
import javax.swing.*;
@@ -47,6 +49,8 @@
*/
public class ShowDemandeAction extends AbstractChangeScreenAction {
+ private static final Log log = LogFactory.getLog(ShowDemandeAction.class);
+
// if true, take the email when opening
protected boolean takeEmail;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -54,6 +54,8 @@
import com.franciaflex.faxtomail.persistence.entities.Configuration;
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailAction;
+import com.franciaflex.faxtomail.persistence.entities.OriginalEmail;
+import com.franciaflex.faxtomail.persistence.entities.OriginalEmailImpl;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.OpenMailFolderChooserFromListAction;
import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel;
@@ -729,7 +731,11 @@
email.setTakenBy(currentUser);
email.setHistory(histories);
email.setDemandStatus(DemandStatus.UNTREATED);
- email.setOriginalEmail(""); // can't be null
+
+ OriginalEmailImpl originalEmail = new OriginalEmailImpl();
+ originalEmail.setContent("");
+ email.setOriginalEmail(originalEmail); // can't be null
+
openDemand(email);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIModel.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -44,6 +44,7 @@
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
+import com.franciaflex.faxtomail.persistence.entities.OriginalEmail;
import com.google.common.collect.Lists;
import com.sun.mail.util.MimeUtil;
import org.apache.commons.collections4.CollectionUtils;
@@ -357,14 +358,19 @@
return htmlContent;
}
- public void setOriginalEmail(String originalEmail) {
+ public void setOriginalEmail(OriginalEmail originalEmail) {
editObject.setOriginalEmail(originalEmail);
}
- public String getOriginalEmail() {
+ public OriginalEmail getOriginalEmail() {
return editObject.getOriginalEmail();
}
+ public String getOriginalEmailContent() {
+ OriginalEmail originalEmail = getOriginalEmail();
+ return originalEmail != null ? originalEmail.getContent() : null;
+ }
+
public void setClientCode(String clientCode) {
Object oldValue = getClientCode();
this.clientCode = clientCode;
@@ -880,7 +886,7 @@
protected void decomposeEmail() {
try {
// ce code peut provoquer une NPE avec les données de test
- Message message = MimeMessageUtils.createMimeMessage(null, getOriginalEmail());
+ Message message = MimeMessageUtils.createMimeMessage(null, getOriginalEmailContent());
Charset charset = FaxToMailServiceUtils.getCharset(message);
@@ -914,7 +920,7 @@
log.warn("error while parsing the original email content, may come from the imported archives", e);
}
//may comes from the imported archives
- plainContent = getOriginalEmail();
+ plainContent = getOriginalEmailContent();
toRecipients = Lists.newArrayList(getRecipient());
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -55,6 +55,7 @@
import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXDatePicker;
@@ -280,7 +281,9 @@
getConfig().save();
getModel().setResultPerPage(resultPerPage);
getModel().resetPaginationParameter();
- runSearchAction();
+ if (CollectionUtils.isNotEmpty(getModel().getResults())) {
+ runSearchAction();
+ }
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -45,6 +45,7 @@
import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXDatePicker;
@@ -258,7 +259,9 @@
getConfig().save();
getModel().setResultPerPage(resultPerPage);
getModel().resetPaginationParameter();
- runSearchAction();
+ if (CollectionUtils.isNotEmpty(getModel().getResults())) {
+ runSearchAction();
+ }
}
}
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/DemandDetailAction.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/DemandDetailAction.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/DemandDetailAction.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -34,6 +34,7 @@
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.History;
import com.franciaflex.faxtomail.persistence.entities.MailField;
+import com.franciaflex.faxtomail.persistence.entities.OriginalEmail;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.persistence.entities.Reply;
import com.franciaflex.faxtomail.persistence.entities.ReplyContent;
@@ -348,7 +349,10 @@
emailUIModel = new EmailUIModel();
try {
// ce code peut provoquer une NPE avec les données de test
- Message message = new MimeMessage(null, new ByteArrayInputStream(demand.getOriginalEmail().getBytes(StandardCharsets.UTF_8)));
+ OriginalEmail originalEmail = demand.getOriginalEmail();
+ String originalEmailContent = originalEmail.getContent();
+ ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(originalEmailContent.getBytes(StandardCharsets.UTF_8));
+ Message message = new MimeMessage(null, byteArrayInputStream);
emailUIModel.setSubject(message.getSubject());
List<String> toRecipients = new ArrayList<>();
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-12-18 17:37:10 UTC (rev 733)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-12-20 20:35:03 UTC (rev 734)
@@ -26,6 +26,7 @@
import static org.nuiton.i18n.I18n.t;
+import com.franciaflex.faxtomail.persistence.entities.OriginalEmail;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
@@ -489,15 +490,8 @@
email.setDemandStatus(DemandStatus.UNTREATED);
modifiedProperties.add(Email.PROPERTY_DEMAND_STATUS);
- StringBuilder emailSource = new StringBuilder();
- Enumeration<String> headerLines = ((MimeMessage)message).getAllHeaderLines();
- while (headerLines.hasMoreElements()) {
- String headerLine = headerLines.nextElement();
- emailSource.append(headerLine).append("\n");
- }
- String originalContent = IOUtils.toString(((MimeMessage) message).getRawInputStream(), charset);
- emailSource.append("\n").append(originalContent);
- email.setOriginalEmail(emailSource.toString());
+ OriginalEmail originalEmail = emailService.originalEmailFromMessage((MimeMessage) message, charset);
+ email.setOriginalEmail(originalEmail);
List<Attachment> attachments = new ArrayList<>();
if (message.isMimeType("multipart/*")) {
1
0
r733 - in trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing: actions content/demande util
by kmorin@users.forge.codelutin.com 18 Dec '14
by kmorin@users.forge.codelutin.com 18 Dec '14
18 Dec '14
Author: kmorin
Date: 2014-12-18 17:37:10 +0000 (Thu, 18 Dec 2014)
New Revision: 733
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/733
Log:
fixes #6349 "Aller au dossier" m?\195?\168ne bien au dossier mais ne rafraichit pas le dossier
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-12-18 10:47:18 UTC (rev 732)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-12-18 17:37:10 UTC (rev 733)
@@ -155,13 +155,13 @@
}
}
- demand.setValid(handler.isDemandeValid(demand));
demand.setMailFolder(folder);
demand.setEditable(folder.isFolderWritable() && demand.getDemandStatus().isEditableStatus());
WaitingState waitingState = email.getWaitingState();
if (waitingState != null) {
demand.setWaitingState(waitingStateById.get(waitingState.getTopiaId()));
}
+ demand.setValid(handler.isDemandeValid(demand));
demands.add(demand);
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-18 10:47:18 UTC (rev 732)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-18 17:37:10 UTC (rev 733)
@@ -311,7 +311,7 @@
public void propertyChange(PropertyChangeEvent evt) {
MailFolder folder = (MailFolder) evt.getNewValue();
getContext().setCurrentMailFolder(folder);
- loadFolderDemands(folder, nodesByFolder);
+ loadFolderDemands(nodesByFolder);
DefaultMutableTreeNode node = nodesByFolder.get(folder);
if (node != null) {
@@ -338,8 +338,7 @@
ApplicationUIAction<LoadFolderEmailsAction> refreshAction = getContext().getActionFactory().createUIAction(this, LoadFolderEmailsAction.class);
rootPane.getActionMap().put(REFRESH_FOLDER_ACTION, refreshAction);
- MailFolder folder = getContext().getCurrentMailFolder();
- loadFolderDemands(folder, nodesByFolder);
+ loadFolderDemands(nodesByFolder);
}
public void updateEmailFilterWithContextEmailFilter() {
@@ -488,7 +487,8 @@
return super.populateColumnModel(table, sortable);
}
- protected void loadFolderDemands(MailFolder folder, Map<MailFolder, FolderTreeNode> nodesByFolder) {
+ protected void loadFolderDemands(Map<MailFolder, FolderTreeNode> nodesByFolder) {
+ MailFolder folder = getModel().getSelectedFolder();
if (folder != null) {
FolderTreeNode folderNode = nodesByFolder.get(folder);
boolean readable = folderNode.isCanRead();
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-12-18 10:47:18 UTC (rev 732)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-12-18 17:37:10 UTC (rev 733)
@@ -158,7 +158,7 @@
}
}));
for (MailFolder folder : orderedFolders) {
- nodesByFolder.putAll(FaxToMailUIUtil.createFolderTree(root, folder));
+ nodesByFolder.putAll(FaxToMailUIUtil.createFolderTree(context, root, folder));
FolderTreeNode node = nodesByFolder.get(folder);
MailFolder parent = folder.getParent();
@@ -245,8 +245,9 @@
* @param folder the folder to add to the tree
* @return the map of the nodes by folder
*/
- protected static Map<MailFolder, FolderTreeNode> createFolderTree(DefaultMutableTreeNode parent,
- MailFolder folder) {
+ protected static Map<MailFolder, FolderTreeNode> createFolderTree(FaxToMailUIContext context,
+ DefaultMutableTreeNode parent,
+ MailFolder folder) {
Map<MailFolder, FolderTreeNode> result = new HashMap<MailFolder, FolderTreeNode>();
FolderTreeNode node = new FolderTreeNode(folder);
@@ -270,9 +271,16 @@
}
});
for (MailFolder child : children) {
- result.putAll(createFolderTree(node, child));
+ result.putAll(createFolderTree(context, node, child));
}
}
+
+ // set the folder instance with the needed data in the context
+ MailFolder currentFolder = context.getCurrentMailFolder();
+ if (currentFolder != null && currentFolder.getTopiaId().equals(folder.getTopiaId())) {
+ context.setCurrentMailFolder(folder);
+ }
+
return result;
}
1
0
r732 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util
by kmorin@users.forge.codelutin.com 18 Dec '14
by kmorin@users.forge.codelutin.com 18 Dec '14
18 Dec '14
Author: kmorin
Date: 2014-12-18 10:47:18 +0000 (Thu, 18 Dec 2014)
New Revision: 732
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/732
Log:
fixes #6260 Document rogn?\195?\169 ?\195?\160 l'impression
catch ClassCastException (c'est moche, ?\195?\160 voir comment faire mieux)
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-12-17 16:29:42 UTC (rev 731)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-12-18 10:47:18 UTC (rev 732)
@@ -330,11 +330,14 @@
return result;
}
+ // cf #5944 java.lang.ArrayIndexOutOfBoundsException: the rowIndex was 15, but should be int [0,14]
public final DemandeUIModel getEntry(int rowIndex) {
SwingUtil.ensureRowIndex(this, rowIndex);
int rowCount = getRowCount();
if (rowIndex > rowCount) {
- log.error("Error getting entry " + rowIndex + " int table model with " + rowCount + " items");
+ if (log.isErrorEnabled()) {
+ log.error("Error getting entry " + rowIndex + " int table model with " + rowCount + " items");
+ }
return null;
}
List<DemandeUIModel> data = getRows();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java 2014-12-17 16:29:42 UTC (rev 731)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailExceptionHandler.java 2014-12-18 10:47:18 UTC (rev 732)
@@ -50,16 +50,26 @@
}
protected void handleException(String tname, Throwable ex) {
+
+ Throwable cause = getCause(ex);
if (log.isErrorEnabled()) {
- log.error("Global application exception [" + tname + "]", ex);
+ log.error("Global application exception [" + tname + "] : " + (cause != null ? cause.getMessage() : ""), ex);
}
- Throwable cause = getCause(ex);
+ // FIXME 20141218 kmorin
+ // catch ClassCastException to avoid errors like these :
+ // java.lang.ClassCastException: javax.swing.plaf.FontUIResource cannot be cast to java.awt.Color
+ if (cause instanceof ClassCastException) {
+ if (log.isErrorEnabled()) {
+ log.error("ClassCastException caught", cause);
+ }
+ return;
+ }
- boolean backToScreen = false;
-
- AbstractFaxToMailAction action = null;
-
+// boolean backToScreen = false;
+//
+// AbstractFaxToMailAction action = null;
+//
if (cause instanceof ApplicationActionException) {
ApplicationActionException actionException = (ApplicationActionException) cause;
@@ -69,19 +79,19 @@
log.debug("Action error cause:", cause);
}
- action = (AbstractFaxToMailAction) actionException.getAction();
-
- if (action instanceof AbstractChangeScreenAction) {
- backToScreen = true;
- }
+// action = (AbstractFaxToMailAction) actionException.getAction();
+//
+// if (action instanceof AbstractChangeScreenAction) {
+// backToScreen = true;
+// }
}
showErrorDialog(cause != null ? cause.getMessage() : "", cause);
- if (backToScreen) {
-
-// action.getContext().setFallBackScreen();
- }
+// if (backToScreen) {
+//
+//// action.getContext().setFallBackScreen();
+// }
}
}
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-12-17 16:29:42 UTC (rev 731)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-12-18 10:47:18 UTC (rev 732)
@@ -511,19 +511,22 @@
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setJobName(printName);
- PageFormat pf = printJob.defaultPage();
- Paper paper = new Paper();
- paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
- pf.setPaper(paper);
+ // Send print job to default printer
+ PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
+ result = defaultPrinter || printJob.printDialog(attributes);
-// PaperSizes ps = new PaperSizes("A4");
-// log.info(ps.getAvailablePaperSizes());
+ PageFormat pageFormat = printJob.getPageFormat(attributes);
+ final double paperWidth = (int) pageFormat.getImageableWidth();
+ final double paperHeight = (int) pageFormat.getImageableHeight();
+ final int paperX = (int) pageFormat.getImageableX();
+ final int paperY = (int) pageFormat.getImageableY();
-// Paper paper = pf.getPaper();
-// final int paperWidth = (int) paper.getImageableWidth();
-// final int paperHeight = (int) paper.getImageableHeight();
-// final int paperX = (int) paper.getImageableX();
-// final int paperY = (int) paper.getImageableY();
+ if (log.isDebugEnabled()) {
+ log.debug("page width " + paperWidth);
+ log.debug("page height " + paperHeight);
+ log.debug("page x " + paperX);
+ log.debug("page y " + paperY);
+ }
printJob.setPrintable(new Printable() {
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
@@ -532,36 +535,49 @@
return NO_SUCH_PAGE;
}
BufferedImage image = pdfDecoder.getPageAsImage(pageIndex + 1);
- graphics.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
-// graphics.drawImage(image,
-// paperX,
-// paperY,
-// Math.min(paperWidth, image.getWidth()),
-// Math.min(paperHeight, image.getHeight()),
-// null);
+ int imageWidth = image.getWidth();
+ int imageHeight = image.getHeight();
+ double widthRatio = paperWidth / imageWidth;
+ double heightRatio = paperHeight / imageHeight;
+ if (log.isDebugEnabled()) {
+ log.debug("width ratio : " + widthRatio);
+ log.debug("height ratio : " + heightRatio);
+ }
+
+ int width;
+ int height;
+ // if the image is smaller than the page
+ if (widthRatio >= 1 && heightRatio >= 1) {
+ width = imageWidth;
+ height = imageHeight;
+
+ } else {
+ double minRatio = Math.min(widthRatio, heightRatio);
+ width = (int) (minRatio * imageWidth);
+ height = (int) (minRatio * imageHeight);
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("image width : " + width);
+ log.debug("image height : " + height);
+ }
+ graphics.drawImage(image, paperX, paperY, width, height, null);
+
return PAGE_EXISTS;
} catch (Exception e) {
- log.error("error while printing", e);
+ if (log.isErrorEnabled()) {
+ log.error("error while printing", e);
+ }
return NO_SUCH_PAGE;
}
}
});
- // Send print job to default printer
-// PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
-// float xmargin = 0.5f;
-// float ymargin = 0.5f;
-// float w = 595;
-// float h = 842;
-// attributes.add(new MediaPrintableArea(xmargin, ymargin, w - 2*xmargin, h - 2*ymargin, MediaPrintableArea.INCH));
-// result = defaultPrinter || printJob.printDialog(attributes);
- result = defaultPrinter || printJob.printDialog();
if (result) {
- printJob.print();
-// printJob.print(attributes);
+ printJob.print(attributes);
}
@@ -571,7 +587,9 @@
}
} finally {
- log.info("finally close the pdf file");
+ if (log.isDebugEnabled()) {
+ log.debug("finally close the pdf file");
+ }
pdfDecoder.closePdfFile();
}
1
0
r731 - in trunk/faxtomail-ui-web/src/main: java/com/franciaflex/faxtomail/web/action webapp/WEB-INF/content
by kmorin@users.forge.codelutin.com 17 Dec '14
by kmorin@users.forge.codelutin.com 17 Dec '14
17 Dec '14
Author: kmorin
Date: 2014-12-17 16:29:42 +0000 (Wed, 17 Dec 2014)
New Revision: 731
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/731
Log:
fixes #6299 L'historique n'appara?\195?\174t pas dans l'ordre dans la consultation via lien URL
Modified:
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/DemandDetailAction.java
trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/demand-detail.jsp
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/DemandDetailAction.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/DemandDetailAction.java 2014-12-16 15:25:54 UTC (rev 730)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/action/DemandDetailAction.java 2014-12-17 16:29:42 UTC (rev 731)
@@ -32,6 +32,7 @@
import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.EmailGroup;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.History;
import com.franciaflex.faxtomail.persistence.entities.MailField;
import com.franciaflex.faxtomail.persistence.entities.RangeRow;
import com.franciaflex.faxtomail.persistence.entities.Reply;
@@ -42,8 +43,10 @@
import com.franciaflex.faxtomail.services.service.EmailService;
import com.franciaflex.faxtomail.web.FaxToMailActionSupport;
import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
+import com.google.common.collect.Ordering;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
@@ -82,6 +85,8 @@
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import java.util.Map;
@@ -241,6 +246,7 @@
}
public List<EmailUIModel> getReplies() throws Exception {
+ Preconditions.checkNotNull(demand);
List<EmailUIModel> result = new ArrayList<>();
for (Reply reply : demand.getReplies()) {
@@ -278,6 +284,20 @@
return result;
}
+ public List<History> getHistories() {
+ Preconditions.checkNotNull(demand);
+ List<History> result = new ArrayList<>(demand.getHistory());
+
+ Collections.sort(result, Ordering.natural().onResultOf(new Function<History, Comparable>() {
+ @Override
+ public Comparable apply(History history) {
+ return history.getModificationDate();
+ }
+ }));
+
+ return result;
+ }
+
public String decorate(Object o) {
return decorate(o, " ");
}
Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/demand-detail.jsp
===================================================================
--- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/demand-detail.jsp 2014-12-16 15:25:54 UTC (rev 730)
+++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/demand-detail.jsp 2014-12-17 16:29:42 UTC (rev 731)
@@ -80,7 +80,7 @@
</a>
<s:if test="demand.sizeHistory() > 0">
<ul class="dropdown-menu" role="menu">
- <s:iterator value="demand.history" var="history">
+ <s:iterator value="histories" var="history">
<li><span>
<div>
le <s:text name="%{decorate(#history.modificationDate)}"/>
1
0
r730 - in trunk: faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util faxtomail-ui-swing/src/main/resources faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job
by kmorin@users.forge.codelutin.com 16 Dec '14
by kmorin@users.forge.codelutin.com 16 Dec '14
16 Dec '14
Author: kmorin
Date: 2014-12-16 15:25:54 +0000 (Tue, 16 Dec 2014)
New Revision: 730
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/730
Log:
refs #6315 fuites m?\195?\169moires
logs
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-12 15:05:59 UTC (rev 729)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-16 15:25:54 UTC (rev 730)
@@ -57,6 +57,7 @@
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.OpenMailFolderChooserFromListAction;
import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel;
+import com.franciaflex.faxtomail.ui.swing.util.RemoveablePropertyChangeListener;
import com.google.common.collect.Lists;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.swing.table.filter.TableFilter;
@@ -119,6 +120,14 @@
protected final Binder<EmailFilter, EmailFilter> binder = BinderFactory.newBinder(EmailFilter.class);
+ protected final PropertyChangeListener actionInProgressListener = new RemoveablePropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ boolean inProgress = (boolean) evt.getNewValue();
+ getUI().getNavigationTree().setEnabled(!inProgress);
+ }
+ };
+
public TableFilter<JXTable> getTableFilter() {
return tableFilter;
}
@@ -278,13 +287,7 @@
final Map<MailFolder, FolderTreeNode> nodesByFolder =
FaxToMailUIUtil.initFolderTree(getContext(), navigationTree, model.getFolders(), true);
- getContext().addPropertyChangeListener(FaxToMailUIContext.PROPERTY_ACTION_IN_PROGRESS, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- boolean inProgress = (boolean) evt.getNewValue();
- navigationTree.setEnabled(!inProgress);
- }
- });
+ getContext().addPropertyChangeListener(FaxToMailUIContext.PROPERTY_ACTION_IN_PROGRESS, actionInProgressListener);
navigationTree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
@@ -600,8 +603,16 @@
log.debug("closing: " + ui);
}
- getModel().getEmailFilter().removePropertyChangeListener(emailFilterPropertyChangeListener);
+ DemandeListUIModel model = getModel();
+ model.getEmailFilter().removePropertyChangeListener(emailFilterPropertyChangeListener);
+ List<DemandeUIModel> selectedEmails = model.getSelectedEmails();
+ if (selectedEmails != null) {
+ for (DemandeUIModel demand : selectedEmails) {
+ demand.removePropertyChangeListener(selectedDemandeChangeListener);
+ }
+ }
+
JTree tree = getUI().getNavigationTree();
TreeModel treeModel = tree.getModel();
Enumeration<TreePath> paths = tree.getExpandedDescendants(new TreePath(treeModel.getRoot()));
@@ -622,6 +633,8 @@
rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).remove(KeyStroke.getKeyStroke(REFRESH_KEY));
rootPane.getActionMap().remove(REFRESH_FOLDER_ACTION);
+ getContext().removePropertyChangeListener(FaxToMailUIContext.PROPERTY_ACTION_IN_PROGRESS, actionInProgressListener);
+
clearValidators();
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-12-12 15:05:59 UTC (rev 729)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-12-16 15:25:54 UTC (rev 730)
@@ -103,43 +103,96 @@
protected BeanMonitor monitor;
- @Override
- public void afterInit(DemandeUI ui) {
+ protected PropertyChangeListener rangeRowListener = new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ DemandeUIModel model = getModel();
+ String propertyName = evt.getPropertyName();
- initUI(ui);
+ if (RangeRowModel.PROPERTY_VALID.equals(propertyName)) {
+ RangeRowModel row = (RangeRowModel) evt.getSource();
+ Boolean valid = (Boolean) evt.getNewValue();
+ if (Boolean.TRUE.equals(valid)) {
+ model.addValidRangeRow(row);
+ } else {
+ model.removeValidRangeRow(row);
+ }
+ }
- final DemandeUIModel model = getModel();
- Set<String> propertiesToIgnore = getPropertiesToIgnore();
- monitor = new BeanMonitor(true, propertiesToIgnore.toArray(new String[propertiesToIgnore.size()]));
- monitor.setBean(model);
+ if (RangeRowModel.PROPERTY_VALID.equals(propertyName)
+ || RangeRow.PROPERTY_QUOTATION_QUANTITY.equals(propertyName)
+ || RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName)
+ || RangeRow.PROPERTY_SAV_QUANTITY.equals(propertyName)) {
- model.addPropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, new PropertyChangeListener() {
+ RangeTableModel rangeTableModel = (RangeTableModel) getUI().getRangeTable().getModel();
+ List<RangeRowModel> rangeRows = rangeTableModel.getRows();
+ Map<String, Integer> quantities = FaxToMailUIUtil.computeQuantities(rangeRows);
+ model.setQuotationNb(quantities.get(DemandeUIModel.PROPERTY_QUOTATION_NB));
+ model.setPfNb(quantities.get(DemandeUIModel.PROPERTY_PF_NB));
+ model.setSavNb(quantities.get(DemandeUIModel.PROPERTY_SAV_NB));
+ }
- private int dividerLocation = -1;
+ }
+ };
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- DemandType newType = (DemandType) evt.getNewValue();
- DemandType oldType = (DemandType) evt.getOldValue();
+ protected final PropertyChangeListener demandTypeListener = new PropertyChangeListener() {
- if (newType != null && (oldType == null
- || !Objects.equals(FaxToMailServiceUtils.contains(oldType.getRequiredFields(), MailField.RANGE_ROW),
- FaxToMailServiceUtils.contains(newType.getRequiredFields(), MailField.RANGE_ROW)))) {
- JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel();
+ private int dividerLocation = -1;
- if (FaxToMailServiceUtils.contains(newType.getRequiredFields(), MailField.RANGE_ROW)) {
- if (dividerLocation < 0) {
- dividerLocation = leftVerticalSplitPanel.getLeftComponent().getPreferredSize().height + 10;
- }
- leftVerticalSplitPanel.setDividerLocation(dividerLocation);
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ DemandType oldType = (DemandType) evt.getOldValue();
+ DemandType newType = (DemandType) evt.getNewValue();
- } else {
- dividerLocation = leftVerticalSplitPanel.getDividerLocation();
+ boolean oldRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible(oldType);
+ boolean newRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible(newType);
+
+ JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel();
+
+ if (oldRangePanelVisible != newRangePanelVisible) {
+ if (newRangePanelVisible) {
+ if (dividerLocation < 0) {
+ dividerLocation = leftVerticalSplitPanel.getLeftComponent().getPreferredSize().height + 10;
}
+ leftVerticalSplitPanel.setDividerLocation(dividerLocation);
+
+ } else {
+ dividerLocation = leftVerticalSplitPanel.getDividerLocation();
+ leftVerticalSplitPanel.setDividerLocation(leftVerticalSplitPanel.getHeight());
}
+
+ leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + newRangePanelVisible);
+ getContext().getSwingSession().add(leftVerticalSplitPanel, true);
}
- });
+
+// if (newType != null && (oldType == null
+// || !Objects.equals(FaxToMailServiceUtils.contains(oldType.getRequiredFields(), MailField.RANGE_ROW),
+// FaxToMailServiceUtils.contains(newType.getRequiredFields(), MailField.RANGE_ROW)))) {
+//
+// if (FaxToMailServiceUtils.contains(newType.getRequiredFields(), MailField.RANGE_ROW)) {
+// if (dividerLocation < 0) {
+// dividerLocation = leftVerticalSplitPanel.getLeftComponent().getPreferredSize().height + 10;
+// }
+// leftVerticalSplitPanel.setDividerLocation(dividerLocation);
+//
+// } else {
+// dividerLocation = leftVerticalSplitPanel.getDividerLocation();
+// }
+// }
+ }
+ };
+
+ @Override
+ public void afterInit(DemandeUI ui) {
+
+ initUI(ui);
+
+ DemandeUIModel model = getModel();
+ Set<String> propertiesToIgnore = getPropertiesToIgnore();
+ monitor = new BeanMonitor(true, propertiesToIgnore.toArray(new String[propertiesToIgnore.size()]));
+ monitor.setBean(model);
+
MailFolder folder = model.getMailFolder();
initBeanFilterableComboBox(ui.getPriorityComboBox(), getContext().getPriorityCache(), model.getPriority());
@@ -231,44 +284,13 @@
// add listener to update row validity and quantity totals
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
- protected PropertyChangeListener listener = new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- DemandeUIModel model = getModel();
- String propertyName = evt.getPropertyName();
-
- if (RangeRowModel.PROPERTY_VALID.equals(propertyName)) {
- RangeRowModel row = (RangeRowModel) evt.getSource();
- Boolean valid = (Boolean) evt.getNewValue();
- if (Boolean.TRUE.equals(valid)) {
- model.addValidRangeRow(row);
- } else {
- model.removeValidRangeRow(row);
- }
- }
-
- if (RangeRowModel.PROPERTY_VALID.equals(propertyName)
- || RangeRow.PROPERTY_QUOTATION_QUANTITY.equals(propertyName)
- || RangeRow.PROPERTY_PRODUCT_QUANTITY.equals(propertyName)
- || RangeRow.PROPERTY_SAV_QUANTITY.equals(propertyName)) {
-
- List<RangeRowModel> rangeRows = rangeTableModel.getRows();
- Map<String, Integer> quantities = FaxToMailUIUtil.computeQuantities(rangeRows);
- model.setQuotationNb(quantities.get(DemandeUIModel.PROPERTY_QUOTATION_NB));
- model.setPfNb(quantities.get(DemandeUIModel.PROPERTY_PF_NB));
- model.setSavNb(quantities.get(DemandeUIModel.PROPERTY_SAV_NB));
- }
-
- }
- };
-
protected RangeRowModel currentRow;
@Override
public void valueChanged(ListSelectionEvent e) {
ListSelectionModel source = (ListSelectionModel) e.getSource();
if (currentRow != null) {
- currentRow.removePropertyChangeListener(listener);
+ currentRow.removePropertyChangeListener(rangeRowListener);
}
if (source.isSelectionEmpty()) {
@@ -276,7 +298,7 @@
} else {
int rowIndex = source.getLeadSelectionIndex();
currentRow = rangeTableModel.getEntry(rowIndex);
- currentRow.addPropertyChangeListener(listener);
+ currentRow.addPropertyChangeListener(rangeRowListener);
}
}
});
@@ -410,24 +432,9 @@
}
);
- final JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel();
- model.addPropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- boolean oldRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible((DemandType) evt.getOldValue());
- boolean newRangePanelVisible = FaxToMailUIUtil.isRangePanelVisible((DemandType) evt.getNewValue());
+ JSplitPane leftVerticalSplitPanel = getUI().getLeftVerticalSplitPanel();
- if (oldRangePanelVisible != newRangePanelVisible) {
- leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + newRangePanelVisible);
- getContext().getSwingSession().add(leftVerticalSplitPanel, true);
- if (oldRangePanelVisible) {
- leftVerticalSplitPanel.setDividerLocation(leftVerticalSplitPanel.getHeight());
- } else {
- leftVerticalSplitPanel.setDividerLocation(getUI().getDemandForm().getPreferredSize().height);
- }
- }
- }
- });
+ model.addPropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, demandTypeListener);
leftVerticalSplitPanel.setName("leftVerticalSplitPanel" + FaxToMailUIUtil.isRangePanelVisible(model.getDemandType()));
getContext().getSwingSession().add(leftVerticalSplitPanel, true);
@@ -457,8 +464,17 @@
log.debug("closing: " + ui);
}
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- serviceContext.getEmailService().unlockEmail(getModel().getTopiaId());
+ DemandeUIModel model = getModel();
+
+ serviceContext.getEmailService().unlockEmail(model.getTopiaId());
+
+ model.removePropertyChangeListener(listModelListener);
+ model.removePropertyChangeListener(Email.PROPERTY_DEMAND_TYPE, demandTypeListener);
+ for (RangeRowModel row : model.getValidRangeRowModels()) {
+ row.removePropertyChangeListener(rangeRowListener);
+ }
+
clearValidators();
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-12-12 15:05:59 UTC (rev 729)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-12-16 15:25:54 UTC (rev 730)
@@ -39,6 +39,7 @@
import com.franciaflex.faxtomail.ui.swing.content.pdfeditor.PDFEditorUI;
import jaxx.runtime.validator.swing.SwingValidator;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler;
import org.nuiton.jaxx.application.swing.ApplicationUI;
import org.nuiton.jaxx.application.swing.action.AbstractApplicationAction;
@@ -63,10 +64,34 @@
*/
public class DemandesUIHandler extends AbstractFaxToMailUIHandler<DemandesUIModel, DemandesUI> implements TabContainerHandler, CloseableUI {
- protected DelegateTabContainerHandler delegateTabHandler;
protected Configuration config;
- protected SaveDemandeAction saveDemandeAction;
+ protected final PropertyChangeListener demandEnabledAndValidListener = new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
+ if (evt.getPropertyName().equals(DemandeUIModel.PROPERTY_VALID)
+ || evt.getPropertyName().equals(DemandeUIModel.PROPERTY_EDITABLE)
+ || evt.getPropertyName().equals(Email.PROPERTY_ARCHIVE_DATE)) {
+
+ DemandesUI ui = getUI();
+ ui.processDataBinding(DemandesUI.BINDING_ARCHIVE_BUTTON_ENABLED);
+ ui.processDataBinding(DemandesUI.BINDING_GROUP_BUTTON_ENABLED);
+ ui.processDataBinding(DemandesUI.BINDING_REPLY_BUTTON_ENABLED);
+ ui.processDataBinding(DemandesUI.BINDING_SAVE_BUTTON_ENABLED);
+ ui.processDataBinding(DemandesUI.BINDING_TRANSMIT_BUTTON_ENABLED);
+
+ }
+
+ if (evt.getPropertyName().equals(DemandeUIModel.PROPERTY_VALID)
+ || evt.getPropertyName().equals(DemandeUIModel.PROPERTY_EDITABLE)
+ || evt.getPropertyName().equals(Email.PROPERTY_WAITING_STATE)) {
+
+ updateButtonEnability();
+ }
+ }
+ };
+
@Override
public void beforeInit(DemandesUI ui) {
super.beforeInit(ui);
@@ -186,6 +211,7 @@
int tabCount = getTabPanel().getTabCount();
for (int i = 0 ; i < tabCount ; i++) {
DemandeUIHandler tabHandler = (DemandeUIHandler) getTabHandler(i);
+ tabHandler.getModel().removePropertyChangeListener(demandEnabledAndValidListener);
tabHandler.onCloseUI();
}
}
@@ -285,8 +311,6 @@
handler = getTabHandler(newIndex);
if (handler != null) {
handler.onShowTab(currentIndex, newIndex);
- saveDemandeAction = getContext().getActionFactory().createLogicAction((AbstractApplicationUIHandler) handler,
- SaveDemandeAction.class);
}
}
if (change) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java 2014-12-12 15:05:59 UTC (rev 729)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUIHandler.java 2014-12-16 15:25:54 UTC (rev 730)
@@ -55,6 +55,14 @@
*/
public class DemandGroupUIHandler extends AbstractToolbarPopupHandler<DemandeUIModel, DemandGroupUI> {
+ protected final PropertyChangeListener groupedDemandListener = new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ AbstractTableModel tableModel = (AbstractTableModel) getUI().getDemandGroup().getModel();
+ tableModel.fireTableDataChanged();
+ }
+ };
+
@Override
public void beforeInit(DemandGroupUI ui) {
super.beforeInit(ui);
@@ -69,13 +77,7 @@
initTable(ui.getDemandGroup());
- getModel().addPropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- AbstractTableModel tableModel = (AbstractTableModel) getUI().getDemandGroup().getModel();
- tableModel.fireTableDataChanged();
- }
- });
+ getModel().addPropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, groupedDemandListener);
}
protected void initTable(JXTable table) {
@@ -122,6 +124,7 @@
@Override
public void onCloseUI() {
+ getModel().removePropertyChangeListener(DemandeUIModel.PROPERTY_GROUPED_DEMANDES, groupedDemandListener);
}
@Override
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-12-12 15:05:59 UTC (rev 729)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-12-16 15:25:54 UTC (rev 730)
@@ -99,6 +99,22 @@
private static final Log log =
LogFactory.getLog(AbstractFaxToMailUIHandler.class);
+ protected final PropertyChangeListener listModelListener = new PropertyChangeListener() {
+
+ final Set<String> excludeProperties = getPropertiesToIgnore();
+
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ Object newValue = evt.getNewValue();
+ Object oldValue = evt.getOldValue();
+ if (!excludeProperties.contains(evt.getPropertyName())
+ //check that the new value and old value are not both null
+ && newValue != oldValue) {
+ ((AbstractFaxToMailBeanUIModel) evt.getSource()).setModify(true);
+ }
+ }
+ };
+
@Override
public void showInformationMessage(String message) {
getContext().showInformationMessage(message);
@@ -207,21 +223,7 @@
}
protected void listModelIsModify(AbstractFaxToMailBeanUIModel model) {
- model.addPropertyChangeListener(new PropertyChangeListener() {
-
- final Set<String> excludeProperties = getPropertiesToIgnore();
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- Object newValue = evt.getNewValue();
- Object oldValue = evt.getOldValue();
- if (!excludeProperties.contains(evt.getPropertyName())
- //check that the new value and old value are not both null
- && newValue != oldValue) {
- ((AbstractFaxToMailBeanUIModel) evt.getSource()).setModify(true);
- }
- }
- });
+ model.addPropertyChangeListener(listModelListener);
}
protected Set<String> getPropertiesToIgnore() {
Modified: trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml 2014-12-12 15:05:59 UTC (rev 729)
+++ trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml 2014-12-16 15:25:54 UTC (rev 730)
@@ -45,8 +45,9 @@
<Loggers>
<Logger name="com.franciaflex.faxtomail" level="info"/>
- <Logger name="com.franciaflex.faxtomail.persistence" level="debug"/>
- <Logger name="com.franciaflex.faxtomail.services" level="debug"/>
+ <!--<Logger name="com.franciaflex.faxtomail.persistence" level="debug"/>-->
+ <!--<Logger name="com.franciaflex.faxtomail.persistence.entities.AbstractFaxToMailTopiaDao" level="trace"/>-->
+ <!--<Logger name="com.franciaflex.faxtomail.services" level="debug"/>-->
<!--<Logger name="org.hibernate.SQL" level="debug"/>-->
<!--<Logger name="org.hibernate.type" level="all"/>-->
Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
===================================================================
--- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-12-12 15:05:59 UTC (rev 729)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-12-16 15:25:54 UTC (rev 730)
@@ -292,7 +292,7 @@
String recipient = address.toString();
// some recipient are like "toto tutu<toto.tutu73(a)gmail.com>"
// the regex is to extract email address from it
- recipient = recipient.replaceFirst("^.*<(.*)>$", "$1");
+ recipient = recipient.replaceAll("\\s", "").replaceFirst("^.*<(.*)>$", "$1");
recipient = recipient.toLowerCase();
return recipient;
}
1
0
r729 - in trunk: faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util faxtomail-ui-swing/src/main/resources
by kmorin@users.forge.codelutin.com 12 Dec '14
by kmorin@users.forge.codelutin.com 12 Dec '14
12 Dec '14
Author: kmorin
Date: 2014-12-12 15:05:59 +0000 (Fri, 12 Dec 2014)
New Revision: 729
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/729
Log:
use priorities in cache + add logs
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java 2014-12-12 12:51:00 UTC (rev 728)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java 2014-12-12 15:05:59 UTC (rev 729)
@@ -29,6 +29,8 @@
import java.util.List;
import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.topia.persistence.TopiaEntity;
import org.nuiton.topia.persistence.internal.AbstractTopiaDao;
import org.nuiton.util.pagination.PaginationParameter;
@@ -37,6 +39,8 @@
public abstract class AbstractFaxToMailTopiaDao<E extends TopiaEntity> extends AbstractTopiaDao<E> {
+ private static final Log log = LogFactory.getLog(AbstractFaxToMailTopiaDao.class);
+
/** Instance unique de Gson. (certainement pas le meilleur endroit pour la placer). */
public static final Gson GSON_INSTANCE = new Gson();
@@ -55,7 +59,27 @@
}
public <K> List<K> find(String hql, Map<String, Object> hqlParameters, PaginationParameter pager) {
+ if (log.isDebugEnabled()) {
+ String params = "";
+ for (String key : hqlParameters.keySet()) {
+ params += key + " : " + hqlParameters.get(key) + "\n";
+ }
+ log.debug("find:\n\t" + hql + "\n\t" + params + "\t" + GSON_INSTANCE.toJson(pager));
+ }
return super.find(hql, hqlParameters, pager);
}
+ /** only to log the query, in order to find why there is a java heap space exception */
+ protected <O> List<O> findAll(String hql, Map<String, Object> hqlParameters) {
+ if (log.isDebugEnabled()) {
+ String params = "";
+ for (String key : hqlParameters.keySet()) {
+ params += key + " : " + hqlParameters.get(key) + "\n";
+ }
+ log.debug("findAll:\n\t" + hql + "\t" + params);
+
+ }
+ return super.findAll(hql, hqlParameters);
+ }
+
}
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-12-12 12:51:00 UTC (rev 728)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-12-12 15:05:59 UTC (rev 729)
@@ -536,8 +536,8 @@
//Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL
) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )";
- if (log.isDebugEnabled()) {
- log.debug("getEmailForFolder 2 - " + hqlForFetchStep2);
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder 2 - " + hqlForFetchStep2);
}
// code copied from topia to perform search
@@ -651,149 +651,6 @@
return result;
}
- public PaginationResult<Email> getEmailForFolder2(EmailFilter emailFilter, MailFolder folder, PaginationParameter pagination) {
- long start = new Date().getTime();
-
- Map<String, Object> args = new HashMap<>();
- String query = filteredDemandsOfFolderCondition(folder, emailFilter, args);
-
- // add same fecth liste as emailService#getEmailForFolder()
- String hqlForFetchStep1 = "select E." + TopiaEntity.PROPERTY_TOPIA_ID + " FROM " + Email.class.getName() + " E " + query;
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 1 - " + hqlForFetchStep1);
- }
- String hqlForFetchStep2 = "select distinct E FROM " + Email.class.getName() + " E " + addAllFecthes(
- Email.PROPERTY_PRIORITY,
- Email.PROPERTY_DEMAND_TYPE,
- Email.PROPERTY_CLIENT,
- Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
- Email.PROPERTY_WAITING_STATE,
- Email.PROPERTY_TAKEN_BY,
- Email.PROPERTY_REPLIES,
- Email.PROPERTY_LAST_ATTACHMENT_OPENER
-// Email.PROPERTY_ATTACHMENT
-// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER
-// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS_JSON
-// Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + "." + Email.PROPERTY_ATTACHMENT,
-// Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + "." + Email.PROPERTY_MAIL_FOLDER
- ) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )";
-
- if (log.isDebugEnabled()) {
- log.debug("getEmailForFolder2 2 - " + hqlForFetchStep2);
- }
-
-
- // code copied from topia to perform search
- long time = new Date().getTime();
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 start query 1 : " + time);
- }
-
- PaginationResult<String> pageResult = findPage(hqlForFetchStep1, args, pagination);
-
- long time2 = new Date().getTime();
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 end query 1 : " + time2 + " (" + (time2 - time) + ")");
- }
-
- List<String> step1ResultTopiaIds = pageResult.getElements();
-
- List<Email> sortedEntities;
- if (CollectionUtils.isEmpty(step1ResultTopiaIds)) {
- sortedEntities = Lists.newArrayList();
- } else {
- Map<String, Object> step2Args = Maps.newHashMap();
- step2Args.put("topiaIdsForFetch_", step1ResultTopiaIds);
-
- time = new Date().getTime();
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 start query 2 : " + time);
- }
-
- List<Email> entities = forHql(hqlForFetchStep2, step2Args).findAll();
-
- time2 = new Date().getTime();
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 end query 2 : " + time2 + " (" + (time2 - time) + ")");
- }
- sortedEntities = sortAccordingToIds(entities, step1ResultTopiaIds);
-
- long time3 = new Date().getTime();
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 sort query 2 : " + time3 + " (" + (time3 - time2) + ")");
- }
- }
-
- time = new Date().getTime();
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 init results : " + time);
- }
-
- PaginationResult<Email> result = PaginationResult.of(sortedEntities, pageResult.getCount(), pageResult.getCurrentPage());
-
- time2 = new Date().getTime();
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 after pagination results : " + time2 + " (" + (time2 - time) + ")");
- }
-
- //PaginationResult<Email> result = findPage(query.toString(), args, pagination);
-
- // manual fetch
- // Email.PROPERTY_PRIORITY,
- // Email.PROPERTY_DEMAND_TYPE,
- // Email.PROPERTY_CLIENT,
- // Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
- // Email.PROPERTY_ETAT_ATTENTE,
- // Email.PROPERTY_TAKEN_BY,
- // Email.PROPERTY_REPLIES,
-// Email.PROPERTY_ATTACHMENT,
- // Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
- // Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS,
- // Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL)
- for (Email email : result.getElements()) {
- //Hibernate.initialize(email.getPriority());
- //Hibernate.initialize(email.getDemandType());
- //Hibernate.initialize(email.getClient());
-// List<RangeRow> rangeRows = email.getRangeRow();
-// if (rangeRows != null) {
-// for (RangeRow rangeRow : rangeRows) {
-// Hibernate.initialize(rangeRow.getRange());
-// }
-// }
- //Hibernate.initialize(email.getWaitingState());
- //Hibernate.initialize(email.getTakenBy());
-// Hibernate.initialize(email.getReplies());
- Hibernate.initialize(email.getAttachment());
-// Collection<History> histories = email.getHistory();
-// if (histories != null) {
-// for (History history : histories) {
-// Hibernate.initialize(history.getFaxToMailUser());
-// Hibernate.initialize(history.getFields());
-// }
-// }
- EmailGroup emailGroup = email.getEmailGroup();
- if (emailGroup != null) {
- Hibernate.initialize(emailGroup.getEmail());
- for (Email groupedEmail : emailGroup.getEmail()) {
- // initialize folder of the grouped demand to transmit the grouped emails of the same folder
- Hibernate.initialize(groupedEmail.getMailFolder());
- // initialize the attachments for the attachments in the replies
- Hibernate.initialize(groupedEmail.getAttachment());
- }
- }
- }
-
- long time3 = new Date().getTime();
- if (log.isTraceEnabled()) {
- log.trace("getEmailForFolder2 after hibernate initializing : " + time3 + " (" + (time3 - time2) + ")");
- }
- if (log.isDebugEnabled()) {
- log.debug("getEmailForFolder2 total : " + (time3 - start));
- }
-
- return result;
- }
-
protected String filteredDemandsOfFolderCondition(MailFolder folder, EmailFilter emailFilter, Map<String, Object> args) {
StringBuilder query = new StringBuilder();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-12-12 12:51:00 UTC (rev 728)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailDemandListHandler.java 2014-12-12 15:05:59 UTC (rev 729)
@@ -164,7 +164,7 @@
addComboDataColumnToModel(columnModel,
DemandeTableModel.COLUMN_IDENTIFIERS.get(columnName),
getDecorator(Priority.class, null),
- serviceContext.getReferentielService().getAllPriority()).setSortable(sortable);
+ getContext().getPriorityCache()).setSortable(sortable);
} else if (MailField.ATTACHMENT.equals(columnName)) {
addColumnToModel(columnModel,
Modified: trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml 2014-12-12 12:51:00 UTC (rev 728)
+++ trunk/faxtomail-ui-swing/src/main/resources/log4j2.xml 2014-12-12 15:05:59 UTC (rev 729)
@@ -45,8 +45,12 @@
<Loggers>
<Logger name="com.franciaflex.faxtomail" level="info"/>
- <!-- <Logger name="com.franciaflex.faxtomail.services" level="debug"/> -->
+ <Logger name="com.franciaflex.faxtomail.persistence" level="debug"/>
+ <Logger name="com.franciaflex.faxtomail.services" level="debug"/>
+ <!--<Logger name="org.hibernate.SQL" level="debug"/>-->
+ <!--<Logger name="org.hibernate.type" level="all"/>-->
+
<Root level="error">
<AppenderRef ref="Console" />
<AppenderRef ref="File" />
1
0
12 Dec '14
Author: kmorin
Date: 2014-12-12 12:51:00 +0000 (Fri, 12 Dec 2014)
New Revision: 728
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/728
Log:
fix filter issues
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-12-11 15:20:39 UTC (rev 727)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-12-12 12:51:00 UTC (rev 728)
@@ -407,7 +407,8 @@
Email.PROPERTY_CLIENT,
//Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
Email.PROPERTY_WAITING_STATE,
- Email.PROPERTY_TAKEN_BY
+ Email.PROPERTY_TAKEN_BY,
+ Email.PROPERTY_LAST_ATTACHMENT_OPENER
//Email.PROPERTY_REPLIES,
//Email.PROPERTY_ATTACHMENT,
//Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
@@ -460,13 +461,13 @@
//Hibernate.initialize(email.getTakenBy());
Hibernate.initialize(email.getReplies());
Hibernate.initialize(email.getAttachment());
- Collection<History> histories = email.getHistory();
- if (histories != null) {
- for (History history : histories) {
- Hibernate.initialize(history.getFaxToMailUser());
- Hibernate.initialize(history.getFields());
- }
- }
+// Collection<History> histories = email.getHistory();
+// if (histories != null) {
+// for (History history : histories) {
+// Hibernate.initialize(history.getFaxToMailUser());
+// Hibernate.initialize(history.getFields());
+// }
+// }
EmailGroup emailGroup = email.getEmailGroup();
if (emailGroup != null) {
Hibernate.initialize(emailGroup.getEmail());
@@ -510,18 +511,24 @@
*/
public PaginationResult<Email> getEmailForFolder(EmailFilter emailFilter, MailFolder folder, PaginationParameter pagination) {
+ long start = new Date().getTime();
+
Map<String, Object> args = new HashMap<>();
String query = filteredDemandsOfFolderCondition(folder, emailFilter, args);
// add same fecth liste as emailService#getEmailForFolder()
String hqlForFetchStep1 = "select E." + TopiaEntity.PROPERTY_TOPIA_ID + " FROM " + Email.class.getName() + " E " + query;
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder 1 - " + hqlForFetchStep1);
+ }
String hqlForFetchStep2 = "select distinct E FROM " + Email.class.getName() + " E " + addAllFecthes(
Email.PROPERTY_PRIORITY,
Email.PROPERTY_DEMAND_TYPE,
Email.PROPERTY_CLIENT,
//Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
Email.PROPERTY_WAITING_STATE,
- Email.PROPERTY_TAKEN_BY
+ Email.PROPERTY_TAKEN_BY,
+ Email.PROPERTY_LAST_ATTACHMENT_OPENER
//Email.PROPERTY_REPLIES,
//Email.PROPERTY_ATTACHMENT,
//Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
@@ -529,8 +536,23 @@
//Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL
) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )";
+ if (log.isDebugEnabled()) {
+ log.debug("getEmailForFolder 2 - " + hqlForFetchStep2);
+ }
+
// code copied from topia to perform search
+ long time = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder start query 1 : " + time);
+ }
+
PaginationResult<String> pageResult = findPage(hqlForFetchStep1, args, pagination);
+
+ long time2 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder end query 1 : " + time2 + " (" + (time2 - time) + ")");
+ }
+
List<String> step1ResultTopiaIds = pageResult.getElements();
List<Email> sortedEntities;
@@ -539,13 +561,38 @@
} else {
Map<String, Object> step2Args = Maps.newHashMap();
step2Args.put("topiaIdsForFetch_", step1ResultTopiaIds);
+
+ time = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder start query 2 : " + time);
+ }
+
List<Email> entities = forHql(hqlForFetchStep2, step2Args).findAll();
+ time2 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder end query 2 : " + time2 + " (" + (time2 - time) + ")");
+ }
sortedEntities = sortAccordingToIds(entities, step1ResultTopiaIds);
+
+ long time3 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder sort query 2 : " + time3 + " (" + (time3 - time2) + ")");
+ }
}
+ time = new Date().getTime();
+ if (log.isDebugEnabled()) {
+ log.trace("getEmailForFolder init results : " + time);
+ }
+
PaginationResult<Email> result = PaginationResult.of(sortedEntities, pageResult.getCount(), pageResult.getCurrentPage());
+ time2 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder after pagination results : " + time2 + " (" + (time2 - time) + ")");
+ }
+
//PaginationResult<Email> result = findPage(query.toString(), args, pagination);
// manual fetch
@@ -574,13 +621,156 @@
//Hibernate.initialize(email.getTakenBy());
Hibernate.initialize(email.getReplies());
Hibernate.initialize(email.getAttachment());
- Collection<History> histories = email.getHistory();
- if (histories != null) {
- for (History history : histories) {
- Hibernate.initialize(history.getFaxToMailUser());
- Hibernate.initialize(history.getFields());
+// Collection<History> histories = email.getHistory();
+// if (histories != null) {
+// for (History history : histories) {
+// Hibernate.initialize(history.getFaxToMailUser());
+// Hibernate.initialize(history.getFields());
+// }
+// }
+ EmailGroup emailGroup = email.getEmailGroup();
+ if (emailGroup != null) {
+ Hibernate.initialize(emailGroup.getEmail());
+ for (Email groupedEmail : emailGroup.getEmail()) {
+ // initialize folder of the grouped demand to transmit the grouped emails of the same folder
+ Hibernate.initialize(groupedEmail.getMailFolder());
+ // initialize the attachments for the attachments in the replies
+ Hibernate.initialize(groupedEmail.getAttachment());
}
}
+ }
+
+ long time3 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder after hibernate initializing : " + time3 + " (" + (time3 - time2) + ")");
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("getEmailFolder total : " + (time3 - start));
+ }
+
+ return result;
+ }
+
+ public PaginationResult<Email> getEmailForFolder2(EmailFilter emailFilter, MailFolder folder, PaginationParameter pagination) {
+ long start = new Date().getTime();
+
+ Map<String, Object> args = new HashMap<>();
+ String query = filteredDemandsOfFolderCondition(folder, emailFilter, args);
+
+ // add same fecth liste as emailService#getEmailForFolder()
+ String hqlForFetchStep1 = "select E." + TopiaEntity.PROPERTY_TOPIA_ID + " FROM " + Email.class.getName() + " E " + query;
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 1 - " + hqlForFetchStep1);
+ }
+ String hqlForFetchStep2 = "select distinct E FROM " + Email.class.getName() + " E " + addAllFecthes(
+ Email.PROPERTY_PRIORITY,
+ Email.PROPERTY_DEMAND_TYPE,
+ Email.PROPERTY_CLIENT,
+ Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
+ Email.PROPERTY_WAITING_STATE,
+ Email.PROPERTY_TAKEN_BY,
+ Email.PROPERTY_REPLIES,
+ Email.PROPERTY_LAST_ATTACHMENT_OPENER
+// Email.PROPERTY_ATTACHMENT
+// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER
+// Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS_JSON
+// Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + "." + Email.PROPERTY_ATTACHMENT,
+// Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL + "." + Email.PROPERTY_MAIL_FOLDER
+ ) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )";
+
+ if (log.isDebugEnabled()) {
+ log.debug("getEmailForFolder2 2 - " + hqlForFetchStep2);
+ }
+
+
+ // code copied from topia to perform search
+ long time = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 start query 1 : " + time);
+ }
+
+ PaginationResult<String> pageResult = findPage(hqlForFetchStep1, args, pagination);
+
+ long time2 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 end query 1 : " + time2 + " (" + (time2 - time) + ")");
+ }
+
+ List<String> step1ResultTopiaIds = pageResult.getElements();
+
+ List<Email> sortedEntities;
+ if (CollectionUtils.isEmpty(step1ResultTopiaIds)) {
+ sortedEntities = Lists.newArrayList();
+ } else {
+ Map<String, Object> step2Args = Maps.newHashMap();
+ step2Args.put("topiaIdsForFetch_", step1ResultTopiaIds);
+
+ time = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 start query 2 : " + time);
+ }
+
+ List<Email> entities = forHql(hqlForFetchStep2, step2Args).findAll();
+
+ time2 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 end query 2 : " + time2 + " (" + (time2 - time) + ")");
+ }
+ sortedEntities = sortAccordingToIds(entities, step1ResultTopiaIds);
+
+ long time3 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 sort query 2 : " + time3 + " (" + (time3 - time2) + ")");
+ }
+ }
+
+ time = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 init results : " + time);
+ }
+
+ PaginationResult<Email> result = PaginationResult.of(sortedEntities, pageResult.getCount(), pageResult.getCurrentPage());
+
+ time2 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 after pagination results : " + time2 + " (" + (time2 - time) + ")");
+ }
+
+ //PaginationResult<Email> result = findPage(query.toString(), args, pagination);
+
+ // manual fetch
+ // Email.PROPERTY_PRIORITY,
+ // Email.PROPERTY_DEMAND_TYPE,
+ // Email.PROPERTY_CLIENT,
+ // Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
+ // Email.PROPERTY_ETAT_ATTENTE,
+ // Email.PROPERTY_TAKEN_BY,
+ // Email.PROPERTY_REPLIES,
+// Email.PROPERTY_ATTACHMENT,
+ // Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
+ // Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS,
+ // Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL)
+ for (Email email : result.getElements()) {
+ //Hibernate.initialize(email.getPriority());
+ //Hibernate.initialize(email.getDemandType());
+ //Hibernate.initialize(email.getClient());
+// List<RangeRow> rangeRows = email.getRangeRow();
+// if (rangeRows != null) {
+// for (RangeRow rangeRow : rangeRows) {
+// Hibernate.initialize(rangeRow.getRange());
+// }
+// }
+ //Hibernate.initialize(email.getWaitingState());
+ //Hibernate.initialize(email.getTakenBy());
+// Hibernate.initialize(email.getReplies());
+ Hibernate.initialize(email.getAttachment());
+// Collection<History> histories = email.getHistory();
+// if (histories != null) {
+// for (History history : histories) {
+// Hibernate.initialize(history.getFaxToMailUser());
+// Hibernate.initialize(history.getFields());
+// }
+// }
EmailGroup emailGroup = email.getEmailGroup();
if (emailGroup != null) {
Hibernate.initialize(emailGroup.getEmail());
@@ -592,6 +782,15 @@
}
}
}
+
+ long time3 = new Date().getTime();
+ if (log.isTraceEnabled()) {
+ log.trace("getEmailForFolder2 after hibernate initializing : " + time3 + " (" + (time3 - time2) + ")");
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("getEmailForFolder2 total : " + (time3 - start));
+ }
+
return result;
}
@@ -998,7 +1197,7 @@
String propertyList;
if (sum) {
- propertyList = "sum(" + StringUtils.join(properties, "), sum(") + ")";
+ propertyList = "SUM(" + StringUtils.join(properties, "), SUM(") + ")";
} else {
propertyList = StringUtils.join(properties, ", ");
}
@@ -1020,7 +1219,7 @@
query += folderAndStatusCondition;
if (sum) {
- query += " group by email." + Email.PROPERTY_TOPIA_ID;
+ query += " GROUP BY email." + Email.PROPERTY_TOPIA_ID;
}
List<Object> queryResults = findAll(query, args);
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-12-11 15:20:39 UTC (rev 727)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-12-12 12:51:00 UTC (rev 728)
@@ -740,6 +740,7 @@
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
result = dao.getEmailForFolder(filter, folder, page);
+// result = dao.getEmailForFolder2(filter, folder, page);
// TopiaQueryBuilderAddCriteriaOrRunQueryStep<Email> builderAddCriteriaOrRunQueryStep =
// dao.forMailFolderEquals(folder)
// .addNull(Email.PROPERTY_ARCHIVE_DATE)
@@ -1258,6 +1259,7 @@
}
email.setMailFolder(newFolder);
email.setTakenBy(null);
+ email.setLastAttachmentOpener(null);
History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.TRANSMISSION,
History.PROPERTY_FAX_TO_MAIL_USER, currentUser,
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-12-11 15:20:39 UTC (rev 727)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-12-12 12:51:00 UTC (rev 728)
@@ -265,8 +265,7 @@
FaxToMailServiceContext serviceContext = newServiceContext();
useFolderCache = serviceContext.getApplicationConfig().isUseFolderCache();
- InitFaxToMailService initFaxToMailService =
- serviceContext.getInitFaxToMailService();
+ InitFaxToMailService initFaxToMailService = serviceContext.getInitFaxToMailService();
initFaxToMailService.init();
Map<Class, State> additionalStates = Maps.newHashMap();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-12-11 15:20:39 UTC (rev 727)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-12-12 12:51:00 UTC (rev 728)
@@ -38,12 +38,9 @@
import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import jaxx.runtime.JAXXUtil;
-import jaxx.runtime.swing.table.filter.TableRowFilterSupport;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.JXTable;
-import org.nuiton.decorator.Decorator;
import org.nuiton.topia.persistence.TopiaEntities;
import org.nuiton.util.pagination.PaginationResult;
@@ -104,7 +101,7 @@
getContext().getSwingSession().add(dataTable, true);
// fixes #5528 filtre sur les colonnes : il manque l'icone qui indique que la colonne est filtrée
- handler.initTableFilter();
+ handler.updateEmailFilterWithContextEmailFilter();
result = true;
}
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-12-11 15:20:39 UTC (rev 727)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-12-12 12:51:00 UTC (rev 728)
@@ -179,6 +179,7 @@
@Override
public Set<Object> distinctValuesForColumn(int i) {
+ log.info("distinctValuesForColumn " + i);
MailFolder selectedFolder = handler.getModel().getSelectedFolder();
if (selectedFolder == null) {
return null;
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-11 15:20:39 UTC (rev 727)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-12 12:51:00 UTC (rev 728)
@@ -27,8 +27,6 @@
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.beans.IntrospectionException;
import java.beans.PropertyChangeEvent;
@@ -40,10 +38,8 @@
import java.util.Collection;
import java.util.Date;
import java.util.Enumeration;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
@@ -56,24 +52,17 @@
import javax.swing.tree.TreePath;
import com.franciaflex.faxtomail.persistence.entities.Configuration;
-import com.franciaflex.faxtomail.persistence.entities.DemandType;
import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailAction;
-import com.franciaflex.faxtomail.persistence.entities.Priority;
-import com.franciaflex.faxtomail.persistence.entities.Range;
-import com.franciaflex.faxtomail.persistence.entities.WaitingState;
-import com.franciaflex.faxtomail.services.service.EmailService;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.OpenMailFolderChooserFromListAction;
import com.franciaflex.faxtomail.ui.swing.util.DemandeTableModel;
import com.google.common.collect.Lists;
import jaxx.runtime.JAXXUtil;
-import jaxx.runtime.swing.table.filter.FilterChangeListener;
import jaxx.runtime.swing.table.filter.TableFilter;
import jaxx.runtime.swing.table.filter.TableRowFilterSupport;
import jaxx.runtime.validator.swing.SwingValidator;
-import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -109,11 +98,8 @@
import com.franciaflex.faxtomail.ui.swing.util.PaginationComboModel;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap;
-import org.nuiton.util.ObjectUtil;
-import org.nuiton.util.beans.BeanUtil;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
-import org.nuiton.util.pagination.PaginationParameter;
/**
* Handler of UI {@link com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListUIHandler}.
@@ -195,8 +181,32 @@
tableFilter = new DemandeListTableFilter(dataTable, this);
- initTableFilter();
+ Decorator<Object> decorator = new Decorator<Object>(Object.class) {
+ @Override
+ public String toString(Object bean) {
+ String s = null;
+ if (bean != null) {
+ Decorator<?> decorator = getDecorator(bean.getClass(), null);
+ if (decorator != null) {
+ s = decorator.toString(bean);
+ }
+ }
+ if (s == null) {
+ s = JAXXUtil.getStringValue(bean);
+ }
+ return s;
+ }
+ };
+ TableRowFilterSupport.forFilter(tableFilter)
+ .searchable(true)
+ .searchDecorator(decorator)
+ .useTableRenderers(true)
+ .setPopupDefaultSize(new Dimension(250, 290))
+ .apply();
+
+ updateEmailFilterWithContextEmailFilter();
+
dataTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
@@ -329,38 +339,11 @@
loadFolderDemands(folder, nodesByFolder);
}
- public void initTableFilter() {
-
+ public void updateEmailFilterWithContextEmailFilter() {
EmailFilter emailFilter = getModel().getEmailFilter();
emailFilter.removePropertyChangeListener(emailFilterPropertyChangeListener);
filtersFromContextToModel();
emailFilter.addPropertyChangeListener(emailFilterPropertyChangeListener);
-
- Decorator<Object> decorator = new Decorator<Object>(Object.class) {
- @Override
- public String toString(Object bean) {
- String s = null;
- if (bean != null) {
- Decorator<?> decorator = getDecorator(bean.getClass(), null);
- if (decorator != null) {
- s = decorator.toString(bean);
- }
- }
- if (s == null) {
- s = JAXXUtil.getStringValue(bean);
- }
- return s;
- }
- };
-
- JTable table = TableRowFilterSupport.forFilter(tableFilter)
- .searchable(true)
- .searchDecorator(decorator)
- .useTableRenderers(true)
- .setPopupDefaultSize(new Dimension(250, 290))
- .apply();
-
- tableFilter.modelChanged(table.getModel());
}
protected void filtersFromContextToModel() {
@@ -466,8 +449,8 @@
break;
}
- if (log.isDebugEnabled()) {
- log.debug(i + "property to copy to model's emailfilter : " + property);
+ if (log.isTraceEnabled()) {
+ log.trace(i + "property to copy to model's emailfilter : " + property);
}
if (property != null) {
try {
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-12-11 15:20:39 UTC (rev 727)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java 2014-12-12 12:51:00 UTC (rev 728)
@@ -54,6 +54,9 @@
import java.util.regex.Pattern;
import javax.media.jai.PlanarImage;
+import javax.print.attribute.HashPrintRequestAttributeSet;
+import javax.print.attribute.PrintRequestAttributeSet;
+import javax.print.attribute.standard.MediaPrintableArea;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
@@ -77,6 +80,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jpedal.PdfDecoder;
+import org.jpedal.examples.simpleviewer.paper.PaperSizes;
import org.jpedal.exception.PdfException;
import org.jpedal.fonts.FontMappings;
import org.nuiton.jaxx.application.ApplicationTechnicalException;
@@ -512,6 +516,15 @@
paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight());
pf.setPaper(paper);
+// PaperSizes ps = new PaperSizes("A4");
+// log.info(ps.getAvailablePaperSizes());
+
+// Paper paper = pf.getPaper();
+// final int paperWidth = (int) paper.getImageableWidth();
+// final int paperHeight = (int) paper.getImageableHeight();
+// final int paperX = (int) paper.getImageableX();
+// final int paperY = (int) paper.getImageableY();
+
printJob.setPrintable(new Printable() {
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
try {
@@ -520,6 +533,14 @@
}
BufferedImage image = pdfDecoder.getPageAsImage(pageIndex + 1);
graphics.drawImage(image, 0, 0, image.getWidth(), image.getHeight(), null);
+
+// graphics.drawImage(image,
+// paperX,
+// paperY,
+// Math.min(paperWidth, image.getWidth()),
+// Math.min(paperHeight, image.getHeight()),
+// null);
+
return PAGE_EXISTS;
} catch (Exception e) {
@@ -530,9 +551,17 @@
});
// Send print job to default printer
+// PrintRequestAttributeSet attributes = new HashPrintRequestAttributeSet();
+// float xmargin = 0.5f;
+// float ymargin = 0.5f;
+// float w = 595;
+// float h = 842;
+// attributes.add(new MediaPrintableArea(xmargin, ymargin, w - 2*xmargin, h - 2*ymargin, MediaPrintableArea.INCH));
+// result = defaultPrinter || printJob.printDialog(attributes);
result = defaultPrinter || printJob.printDialog();
if (result) {
printJob.print();
+// printJob.print(attributes);
}
1
0
r727 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande
by kmorin@users.forge.codelutin.com 11 Dec '14
by kmorin@users.forge.codelutin.com 11 Dec '14
11 Dec '14
Author: kmorin
Date: 2014-12-11 15:20:39 +0000 (Thu, 11 Dec 2014)
New Revision: 727
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/727
Log:
fix diamond
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-11 14:13:27 UTC (rev 726)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-12-11 15:20:39 UTC (rev 727)
@@ -374,7 +374,7 @@
fields = Lists.newArrayList(MailField.getTableFields());
}
- List<String> propertiesToBind = new ArrayList<>();
+ List<String> propertiesToBind = new ArrayList<String>();
for (int i = 0; i < fields.size(); i++) {
String property = null;
1
0