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
- 1934 discussions
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
r726 - in trunk: . faxtomail-service/src/main/java/com/franciaflex/faxtomail/services faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util
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 14:13:27 +0000 (Thu, 11 Dec 2014)
New Revision: 726
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/726
Log:
fixes #6284 Garder le filtre du tableau tout au long de l'application
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.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/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/DemandeTableModel.java
trunk/pom.xml
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java 2014-12-09 11:19:50 UTC (rev 725)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/DecoratorServiceImpl.java 2014-12-11 14:13:27 UTC (rev 726)
@@ -138,7 +138,7 @@
}
});
registerMultiJXPathDecorator(Reply.class, "${sentDate}$s#${subject}$s", SEPARATOR, " - ");
- registerMultiJXPathDecorator(FaxToMailUser.class, "${trigraph}$s#${firstName}$s#${lastName}$s", SEPARATOR, " ");
+ registerMultiJXPathDecorator(FaxToMailUser.class, "${lastName}$s#${firstName}$s#${trigraph}$s", SEPARATOR, " ");
}
};
}
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-09 11:19:50 UTC (rev 725)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-12-11 14:13:27 UTC (rev 726)
@@ -41,7 +41,9 @@
import javax.swing.JOptionPane;
import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.services.service.ldap.Contact;
+import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeListTableFilter;
import jaxx.runtime.swing.editor.bean.BeanDoubleList;
import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox;
import jaxx.runtime.swing.session.BeanDoubleListState;
@@ -49,6 +51,7 @@
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;
@@ -56,6 +59,7 @@
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;
@@ -225,6 +229,8 @@
/** */
protected List<Contact> contactCache;
+ protected EmailFilter emailFilter = new EmailFilter();
+
public static FaxToMailUIContext newContext(FaxToMailConfiguration config) {
Preconditions.checkNotNull(config);
Preconditions.checkState(applicationContext == null,
@@ -394,6 +400,7 @@
// init action UI
//--------------------------------------------------------------------//
setActionUI(new ApplicationActionUI(null, this));
+
}
/**
@@ -861,4 +868,12 @@
this.paginationResult = paginationResult;
}
}
+
+ public EmailFilter getEmailFilter() {
+ return emailFilter;
+ }
+
+ public void setEmailFilter(EmailFilter emailFilter) {
+ this.emailFilter = emailFilter;
+ }
}
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-09 11:19:50 UTC (rev 725)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-12-11 14:13:27 UTC (rev 726)
@@ -285,7 +285,7 @@
executeFilter();
}
- protected void executeFilter() {
+ public void executeFilter() {
FaxToMailUIContext context = handler.getContext();
// reset pagination when folder change
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-09 11:19:50 UTC (rev 725)
+++ 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)
@@ -30,12 +30,17 @@
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
+import java.beans.IntrospectionException;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
import java.util.ArrayList;
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;
@@ -51,17 +56,24 @@
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;
@@ -97,6 +109,10 @@
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;
/**
@@ -113,16 +129,26 @@
protected Configuration config;
- protected TableFilter<JXTable> tableFilter;
+ protected DemandeListTableFilter tableFilter;
+ protected final Binder<EmailFilter, EmailFilter> binder = BinderFactory.newBinder(EmailFilter.class);
+
public TableFilter<JXTable> getTableFilter() {
return tableFilter;
}
- public final PropertyChangeListener selectedDemandeChangeListener = new PropertyChangeListener() {
+ protected final PropertyChangeListener emailFilterPropertyChangeListener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
+ EmailFilter emailFilter = (EmailFilter) evt.getSource();
+ binder.copy(emailFilter, getContext().getEmailFilter(), evt.getPropertyName());
+ }
+ };
+ protected final PropertyChangeListener selectedDemandeChangeListener = new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+
String propertyName = evt.getPropertyName();
if (Email.PROPERTY_PRIORITY.equals(propertyName)) {
if (evt.getNewValue() != null || evt.getOldValue() != null) {
@@ -304,6 +330,12 @@
}
public void initTableFilter() {
+
+ 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) {
@@ -320,14 +352,156 @@
return s;
}
};
- TableRowFilterSupport.forFilter(tableFilter)
- .searchable(true)
- .searchDecorator(decorator)
- .useTableRenderers(true)
- .setPopupDefaultSize(new Dimension(250, 290))
- .apply();
+
+ JTable table = TableRowFilterSupport.forFilter(tableFilter)
+ .searchable(true)
+ .searchDecorator(decorator)
+ .useTableRenderers(true)
+ .setPopupDefaultSize(new Dimension(250, 290))
+ .apply();
+
+ tableFilter.modelChanged(table.getModel());
}
+ protected void filtersFromContextToModel() {
+ EmailFilter contextEmailFilter = getContext().getEmailFilter();
+ EmailFilter currentEmailFilter = getModel().getEmailFilter();
+
+ currentEmailFilter.clear();
+
+ List<MailField> fields = getColumns();
+ if (CollectionUtils.isEmpty(fields)) {
+ fields = Lists.newArrayList(MailField.getTableFields());
+ }
+
+ List<String> propertiesToBind = new ArrayList<>();
+
+ for (int i = 0; i < fields.size(); i++) {
+ String property = null;
+
+ MailField field = fields.get(i);
+ switch (field) {
+ case DEMAND_STATUS:
+ property = EmailFilter.PROPERTY_DEMAND_STATUS;
+ break;
+
+ case RECEPTION_DATE:
+ property = EmailFilter.PROPERTY_RECEPTION_DATES;
+ break;
+
+ case RECIPIENT:
+ property = EmailFilter.PROPERTY_RECIPIENTS;
+ break;
+
+ case SENDER:
+ property = EmailFilter.PROPERTY_SENDERS;
+ break;
+
+ case OBJECT:
+ property = EmailFilter.PROPERTY_DEMAND_OBJECTS;
+ break;
+
+ case CLIENT_CODE:
+ property = EmailFilter.PROPERTY_CLIENT_CODES;
+ break;
+
+ case CLIENT_BRAND:
+ property = EmailFilter.PROPERTY_CLIENT_BRANDS;
+ break;
+
+ case DEMAND_TYPE:
+ property = EmailFilter.PROPERTY_DEMAND_TYPES;
+ break;
+
+ case EDI_RETURN:
+ property = EmailFilter.PROPERTY_EDI_CODE_NUMBERS;
+ break;
+
+ case WAITING_STATE:
+ property = EmailFilter.PROPERTY_WAITING_STATES;
+ break;
+
+ case TAKEN_BY:
+ property = EmailFilter.PROPERTY_TAKEN_BYS;
+ break;
+
+ case PRIORITY:
+ property = EmailFilter.PROPERTY_PRIORITIES;
+ break;
+
+ case PROJECT_REFERENCE:
+ property = EmailFilter.PROPERTY_PROJECT_REFERENCES;
+ break;
+
+ case COMPANY_REFERENCE:
+ property = EmailFilter.PROPERTY_LOCAL_REFERENCES;
+ break;
+
+ case REFERENCE:
+ property = EmailFilter.PROPERTY_REFERENCES;
+ break;
+
+ case RANGE_ROW:
+ property = EmailFilter.PROPERTY_RANGES;
+ break;
+
+ case PF_NB:
+ property = EmailFilter.PROPERTY_PRODUCT_QUANTITIES;
+ break;
+
+ case SAV_NB:
+ property = EmailFilter.PROPERTY_SAV_QUANTITIES;
+ break;
+
+ case QUOTATION_NB:
+ property = EmailFilter.PROPERTY_QUOTATION_QUANTITIES;
+ break;
+
+ case LAST_ATTACHMENT_OPENING_IN_THIS_FOLDER_USER:
+ property = EmailFilter.PROPERTY_LAST_ATTACHMENT_OPENERS;
+ break;
+
+ case COMMENT:
+ property = EmailFilter.PROPERTY_COMMENTS;
+ break;
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug(i + "property to copy to model's emailfilter : " + property);
+ }
+ if (property != null) {
+ try {
+ Method getter = new PropertyDescriptor(property, EmailFilter.class).getReadMethod();
+ Collection value = (Collection) getter.invoke(contextEmailFilter);
+ tableFilter.setFilterState(i, value);
+
+ } catch (IntrospectionException e) {
+ if (log.isErrorEnabled()) {
+ log.error("error while introspecting emailfilter for property " + property, e);
+ }
+ } catch (InvocationTargetException e) {
+ if (log.isErrorEnabled()) {
+ log.error("error while calling getter for property " + property, e);
+ }
+ } catch (IllegalAccessException e) {
+ if (log.isErrorEnabled()) {
+ log.error("error while calling getter for property " + property, e);
+ }
+ }
+ propertiesToBind.add(property);
+
+ } else {
+ tableFilter.setFilterState(i, null);
+ }
+ }
+
+ binder.copy(contextEmailFilter, currentEmailFilter, propertiesToBind.toArray(new String[propertiesToBind.size()]));
+ }
+
+ public String populateColumnModel(JXTable table, boolean sortable) {
+ return super.populateColumnModel(table, sortable);
+ }
+
protected void loadFolderDemands(MailFolder folder, Map<MailFolder, FolderTreeNode> nodesByFolder) {
if (folder != null) {
FolderTreeNode folderNode = nodesByFolder.get(folder);
@@ -343,7 +517,7 @@
model.setNewDemandEnabled(readable && folder != null && Boolean.TRUE.equals(folder.getAllowCreateDemandIntoFolder()));
}
- tableFilter.clear();
+ tableFilter.executeFilter();
}
public void goToNextPage() {
@@ -443,6 +617,8 @@
log.debug("closing: " + ui);
}
+ getModel().getEmailFilter().removePropertyChangeListener(emailFilterPropertyChangeListener);
+
JTree tree = getUI().getNavigationTree();
TreeModel treeModel = tree.getModel();
Enumeration<TreePath> paths = tree.getExpandedDescendants(new TreePath(treeModel.getRoot()));
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-09 11:19:50 UTC (rev 725)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/DemandeTableModel.java 2014-12-11 14:13:27 UTC (rev 726)
@@ -360,9 +360,6 @@
public final Object getValueAt(int rowIndex, int columnIndex) {
DemandeUIModel entry = getEntry(rowIndex);
ColumnIdentifier<DemandeUIModel> identifier = getIdentifier(columnIndex);
- if (log.isDebugEnabled()) {
- log.debug("columnIndex: " + columnIndex + " :: " + identifier.getPropertyName());
- }
Object result = identifier.getValue(entry);
return result;
}
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-12-09 11:19:50 UTC (rev 725)
+++ trunk/pom.xml 2014-12-11 14:13:27 UTC (rev 726)
@@ -111,7 +111,7 @@
<h2Version>1.3.176</h2Version>
<guavaVersion>18.0</guavaVersion>
- <jaxxVersion>2.18-SNAPSHOT</jaxxVersion>
+ <jaxxVersion>2.19-SNAPSHOT</jaxxVersion>
<!-- do not upgrade to 1.6.5-1 -->
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.16.3</xworkVersion>
1
0
r725 - in trunk: faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job
by kmorin@users.forge.codelutin.com 09 Dec '14
by kmorin@users.forge.codelutin.com 09 Dec '14
09 Dec '14
Author: kmorin
Date: 2014-12-09 11:19:50 +0000 (Tue, 09 Dec 2014)
New Revision: 725
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/725
Log:
fixes #6276 Les mails ne sont pas rout?\195?\169s quand le destinataire est en copie cach?\195?\169
Modified:
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MailFolderServiceTest.java
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java 2014-12-08 11:53:29 UTC (rev 724)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderService.java 2014-12-09 11:19:50 UTC (rev 725)
@@ -29,12 +29,15 @@
import java.util.Map;
import java.util.Set;
+import com.franciaflex.faxtomail.persistence.entities.Email;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.MailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.persistence.entities.WaitingState;
import com.franciaflex.faxtomail.services.FaxToMailService;
+import javax.mail.Address;
+
/**
* @author Kevin Morin (Code Lutin)
*/
@@ -62,4 +65,6 @@
MailFolder getFolderForFaxToMailUser(FaxToMailUser customerResponsible);
MailFolder getMailFolder(String topiaId);
+
+ MailFilter findMailFilter(Email email, Set<String> modifiedProperties, List<Address> recipients);
}
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-12-08 11:53:29 UTC (rev 724)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/MailFolderServiceImpl.java 2014-12-09 11:19:50 UTC (rev 725)
@@ -32,6 +32,7 @@
import java.util.Map;
import java.util.Set;
+import com.franciaflex.faxtomail.persistence.entities.Email;
import org.apache.commons.collections4.CollectionUtils;
import org.hibernate.Hibernate;
import org.nuiton.util.pagination.PaginationParameter;
@@ -45,6 +46,8 @@
import com.franciaflex.faxtomail.persistence.entities.WaitingState;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
+import javax.mail.Address;
+
/**
* @author kmorin - kmorin(a)codelutin.com
*/
@@ -324,4 +327,32 @@
return result;
}
+ @Override
+ public MailFilter findMailFilter(Email email, Set<String> modifiedProperties, List<Address> recipients) {
+ MailFilter filter = null;
+ for (Address address : recipients) {
+
+ 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.toLowerCase();
+
+ List<MailFilter> filters = getFiltersForRecipient(recipient);
+
+ if (CollectionUtils.isNotEmpty(filters)) {
+ MailFilter mailFilter = filters.get(0);
+ // see #6161
+ if (filter == null || mailFilter.getPosition() < filter.getPosition()) {
+ filter = mailFilter;
+ email.setRecipient(recipient);
+ modifiedProperties.add(Email.PROPERTY_RECIPIENT);
+ }
+ }
+ }
+ return filter;
+ }
+
+
}
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MailFolderServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MailFolderServiceTest.java 2014-12-08 11:53:29 UTC (rev 724)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MailFolderServiceTest.java 2014-12-09 11:19:50 UTC (rev 725)
@@ -25,9 +25,13 @@
*/
import java.io.IOException;
+import java.util.HashSet;
import java.util.List;
+import com.franciaflex.faxtomail.persistence.entities.EmailImpl;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.MailFilter;
+import com.google.common.collect.Lists;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
@@ -36,6 +40,10 @@
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import javax.mail.Address;
+import javax.mail.internet.AddressException;
+import javax.mail.internet.InternetAddress;
+
/**
* @author Kevin Morin (Code Lutin)
*
@@ -58,6 +66,33 @@
public void testFindFilter() {
MailFolder folder = service.getFolderForRecipient("fx.savtest(a)franciaflex.com");
Assert.assertNotNull(folder);
+
+ try {
+ Address a1 = new InternetAddress(" etyhjsd sqhdksd sdlksqdj - sqjdsq <test(a)franciaflex.com>");
+ Address a2 = new InternetAddress("dfsdf fsf- sdfs<fx.adv%test(a)franciaflex.com>");
+ Address a3 = new InternetAddress("dsfdsf qd qsdsq d <fx.01test(a)franciaflex.com>");
+
+ EmailImpl email = new EmailImpl();
+ HashSet<String> modifiedProperties = new HashSet<String>();
+
+ MailFilter filter = service.findMailFilter(email, modifiedProperties, Lists.newArrayList(a1, a2, a3));
+ Assert.assertNotNull(filter);
+ Assert.assertEquals(filter.getMailFolder().getName(), "Cyril");
+
+ filter = service.findMailFilter(email, modifiedProperties, Lists.newArrayList(a1, a3, a2));
+ Assert.assertNotNull(filter);
+ Assert.assertEquals(filter.getMailFolder().getName(), "Cyril");
+
+ filter = service.findMailFilter(email, modifiedProperties, Lists.newArrayList(a3, a1, a2));
+ Assert.assertNotNull(filter);
+ Assert.assertEquals(filter.getMailFolder().getName(), "Cyril");
+
+
+ } catch (AddressException e) {
+ if (log.isErrorEnabled()) {
+ log.error("error on email creation", e);
+ }
+ }
}
@Test
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-08 11:53:29 UTC (rev 724)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-12-09 11:19:50 UTC (rev 725)
@@ -26,6 +26,9 @@
import static org.nuiton.i18n.I18n.t;
+import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.Lists;
import gui.ava.html.Html2Image;
import java.io.ByteArrayOutputStream;
@@ -43,6 +46,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Properties;
import java.util.Set;
import java.util.regex.Pattern;
@@ -52,6 +56,7 @@
import javax.mail.Address;
import javax.mail.Flags;
import javax.mail.Folder;
+import javax.mail.Header;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Part;
@@ -256,7 +261,7 @@
int unread = folder.getUnreadMessageCount();
if (log.isDebugEnabled()) {
- log.debug(count + " messages, " + unread + " unread");
+ log.debug(emailAccount.getLogin() + "@" + emailAccount.getHost() + " : " + count + " messages, " + unread + " unread");
}
for (int i = 0 ; i < count ; i++) {
@@ -275,26 +280,48 @@
log.debug(String.format("Message %d/%d : %s", i, count, message.getSubject()));
}
- List<Address> recipients = new ArrayList<>();
- Address[] toRecipients = message.getRecipients(Message.RecipientType.TO);
- if (toRecipients != null) {
- recipients.addAll(Arrays.asList(toRecipients));
+ List<Address> recipientAddresses = new ArrayList<>();
+ Address[] allRecipients = message.getAllRecipients();
+ if (allRecipients != null) {
+ recipientAddresses.addAll(Arrays.asList(allRecipients));
}
- Address[] ccRecipients = message.getRecipients(Message.RecipientType.CC);
- if (ccRecipients != null) {
- recipients.addAll(Arrays.asList(ccRecipients));
- }
+ Set<String> recipients = new HashSet<String>(
+ Collections2.transform(recipientAddresses, new Function<Address, String>() {
+ @Override
+ public String apply(Address address) {
+ 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.toLowerCase();
+ return recipient;
+ }
+ }));
- MailFilter filter = null;
- for (Address address : recipients) {
+ // try to find the real recipient, in case it is in the bcc
+ Enumeration allHeaders = message.getAllHeaders();
+ String regex = "^.*for<(.*)>.*$";
- String recipient = address.toString();
+ while (allHeaders.hasMoreElements()) {
+ Header header = (Header) allHeaders.nextElement();
+ if ("Received".equals(header.getName())) {
+ String forRecipient = StringUtils.removePattern(header.getValue(), "\\s");
- // 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.toLowerCase();
+ if (forRecipient != null && forRecipient.matches(regex)) {
+ forRecipient = forRecipient.replaceFirst(regex, "$1");
+ if (StringUtils.isNotBlank(forRecipient) && recipients.add(forRecipient)) {
+ if (log.isDebugEnabled()) {
+ log.debug("recipient found in \"Received\" header: " + forRecipient);
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ MailFilter filter = null;
+ for (String recipient : recipients) {
List<MailFilter> filters = mailFolderService.getFiltersForRecipient(recipient);
if (CollectionUtils.isNotEmpty(filters)) {
@@ -312,8 +339,8 @@
if (log.isDebugEnabled()) {
log.debug(" ==> No filter found for this message");
if (log.isTraceEnabled()) {
- for (Address address : recipients) {
- log.trace(" - for recipient " + address.toString());
+ for (String recipient : recipients) {
+ log.trace(" - for recipient " + recipient);
}
}
}
1
0