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
September 2014
- 2 participants
- 59 discussions
r626 - trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job
by echatellier@users.forge.codelutin.com 18 Sep '14
by echatellier@users.forge.codelutin.com 18 Sep '14
18 Sep '14
Author: echatellier
Date: 2014-09-18 15:06:47 +0200 (Thu, 18 Sep 2014)
New Revision: 626
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/626
Log:
Add usefull log
Modified:
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
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-09-18 12:54:30 UTC (rev 625)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-09-18 13:06:47 UTC (rev 626)
@@ -238,6 +238,9 @@
* @param folder the folder to check
*/
protected void checkEmailsOfFolder(EmailAccount emailAccount, Folder folder) {
+
+ int importedCount = 0;
+
try {
folder.open(Folder.READ_WRITE);
@@ -478,6 +481,7 @@
email.getClient() != null ? email.getClient().getCode() : null,
null,
modifiedProperties.toArray(new String[modifiedProperties.size()]));
+ importedCount++;
if (log.isDebugEnabled()) {
log.debug(" ==> Message placé dans le dossier " + email.getMailFolder().getName());
@@ -497,6 +501,11 @@
} catch (Exception e) {
log.error("Error while reading the emails", e);
}
+
+ // usefull log info (do not remove)
+ if (importedCount > 0 && log.isInfoEnabled()) {
+ log.info(String.format("Imported %d mail for account %s@%s", importedCount, emailAccount.getLogin(), emailAccount.getHost()));
+ }
}
/**
1
0
r625 - trunk/faxtomail-service/src/main/resources/db/migration/sqlserver
by echatellier@users.forge.codelutin.com 18 Sep '14
by echatellier@users.forge.codelutin.com 18 Sep '14
18 Sep '14
Author: echatellier
Date: 2014-09-18 14:54:30 +0200 (Thu, 18 Sep 2014)
New Revision: 625
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/625
Log:
Correction du code de migration SQL server
Modified:
trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_620__modification_newclient_edireturn.sql
Modified: trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_620__modification_newclient_edireturn.sql
===================================================================
--- trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_620__modification_newclient_edireturn.sql 2014-09-18 12:52:45 UTC (rev 624)
+++ trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_620__modification_newclient_edireturn.sql 2014-09-18 12:54:30 UTC (rev 625)
@@ -4,13 +4,13 @@
GO
create table newClient (
name varchar(MAX),
- emailAddress varchar(MAX),
- faxNumber varchar(MAX),
+ emailAddress varchar(255),
+ faxNumber varchar(255),
caracteristic1 varchar(MAX),
caracteristic2 varchar(MAX),
caracteristic3 varchar(MAX),
- code varchar(MAX) not null,
- company varchar(MAX) not null,
+ code varchar(255) not null,
+ company varchar(255) not null,
brand varchar(MAX),
personInCharge varchar(MAX),
unique (code, company, emailAddress, faxNumber)
@@ -35,14 +35,16 @@
-- add company in client
--drop constraint UK_b4ck8pelycojqmbrd8n36mdfw;
-alter table client drop emailAddress;
-alter table client drop faxNumber;
-alter table client drop id;
+alter table client drop column emailAddress;
+alter table client drop column faxNumber;
+alter table client drop column id;
-alter table client add company text not NULL;
+alter table client add company varchar(255) not NULL;
alter table client add emailAddressesJson varchar(MAX);
alter table client add faxNumbersJson varchar(MAX);
-alter table client alter brand drop not NULL;
+alter table client alter column code varchar(255) not NULL;
+alter table client alter column brand varchar(MAX) not NULL;
+
alter table client add constraint UK_kqpy7y2f4onck5julevr0hfg1 unique (code, company);
GO
1
0
r624 - in trunk: faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job
by kmorin@users.forge.codelutin.com 18 Sep '14
by kmorin@users.forge.codelutin.com 18 Sep '14
18 Sep '14
Author: kmorin
Date: 2014-09-18 14:52:45 +0200 (Thu, 18 Sep 2014)
New Revision: 624
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/624
Log:
- change object data
- in distinct values selection, join only if necessary
Modified:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.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-09-18 12:25:02 UTC (rev 623)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-09-18 12:52:45 UTC (rev 624)
@@ -918,10 +918,16 @@
args.put("archiveStatus", DemandStatus.ARCHIVED);
String query = "SELECT DISTINCT " + property +
- " FROM " + Email.class.getName() + " AS email" +
- " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client" +
- " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + folderAndStatusCondition;
+ " FROM " + Email.class.getName() + " AS email";
+ if (property.startsWith("client.")) {
+ query += " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client";
+
+ } else if (property.startsWith("rangeRow.")) {
+ query += " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow";
+ }
+ query += folderAndStatusCondition;
+
if (StringUtils.isNotBlank(condition)) {
query += " AND " + condition;
}
@@ -930,7 +936,7 @@
Set<Object> result = new HashSet<>(queryResults);
// check if the property is sometimes null
- if (property.startsWith("rangeRow")) {
+ if (property.startsWith("rangeRow.")) {
query = "FROM " + Email.class.getName() + " AS email" +
" LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" +
folderAndStatusCondition + " AND rangeRow IS NULL";
@@ -942,11 +948,15 @@
}
if (!result.contains(null)) {
- query = "FROM " + Email.class.getName() + " AS email" +
- " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client" +
- " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" +
- folderAndStatusCondition + " AND " + property + " IS NULL";
+ query = "FROM " + Email.class.getName() + " AS email";
+ if (property.startsWith("client.")) {
+ query += " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client";
+ } else if (property.startsWith("rangeRow.")) {
+ query += " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow";
+ }
+ query += folderAndStatusCondition + " AND " + property + " IS NULL";
+
if (StringUtils.isNotBlank(condition)) {
query += " AND " + condition;
}
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-09-18 12:25:02 UTC (rev 623)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-09-18 12:52:45 UTC (rev 624)
@@ -323,17 +323,36 @@
String object;
if (client != null) {
//TODO echatellier : a valider que l'on affiche bien le premier mail du client
- String faxNumber = "-";
- if (CollectionUtils.isNotEmpty(client.getFaxNumbers())) {
- faxNumber = client.getFaxNumbers().get(0);
+ String contact = sender;
+ if (email.isFax()) {
+ String faxNumber = contact.substring(0, contact.indexOf('@')).replaceAll(" ", "");
+ // NumberUtils.isNumber peut echouer (notation octal)
+ if (StringUtils.isNumeric(faxNumber)) {
+ contact = StringUtils.leftPad(faxNumber, 10, '0');
+ }
}
- object = ObjectUtils.defaultIfNull(client.getCaracteristic1(), "-") + " / " +
- ObjectUtils.defaultIfNull(client.getCode(), "-") + " / " +
- ObjectUtils.defaultIfNull(client.getName(), "-") + " / " +
- faxNumber + " / " +
- DateFormat.getDateInstance(DateFormat.MEDIUM).format(new Date());
+ List<String> objectItems = new ArrayList<>();
+ if (StringUtils.isNotEmpty(client.getCaracteristic1())) {
+ objectItems.add(client.getCaracteristic1());
+ }
+ if (StringUtils.isNotEmpty(client.getCaracteristic2())) {
+ objectItems.add(client.getCaracteristic2());
+ }
+ if (StringUtils.isNotEmpty(client.getCaracteristic3())) {
+ objectItems.add(client.getCaracteristic3());
+ }
+ if (StringUtils.isNotEmpty(client.getCode())) {
+ objectItems.add(client.getCode());
+ }
+ if (StringUtils.isNotEmpty(client.getName())) {
+ objectItems.add(client.getName());
+ }
+ objectItems.add(contact);
+ objectItems.add(DateFormat.getDateInstance(DateFormat.MEDIUM).format(new Date()));
+ object = StringUtils.join(objectItems, " / ");
+
modifiedProperties.add(Email.PROPERTY_CLIENT);
} else {
1
0
r623 - trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande
by echatellier@users.forge.codelutin.com 18 Sep '14
by echatellier@users.forge.codelutin.com 18 Sep '14
18 Sep '14
Author: echatellier
Date: 2014-09-18 14:25:02 +0200 (Thu, 18 Sep 2014)
New Revision: 623
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/623
Log:
Fix very slow log
Modified:
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java
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-09-18 09:58:47 UTC (rev 622)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-09-18 12:25:02 UTC (rev 623)
@@ -206,14 +206,16 @@
if (Email.PROPERTY_RECEPTION_DATE.equals(property)) {
Set<Object> filteredDates = new HashSet<>();
- log.info("result size " + result.size() + " " + result);
+ if (log.isDebugEnabled()) {
+ log.debug("result size " + result.size() + " " + result);
+ }
for (Object o : result) {
Date date = (Date) o;
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
- boolean add = filteredDates.add(cal.getTime());
+ filteredDates.add(cal.getTime());
}
result = new HashSet<Object>(filteredDates);
}
1
0
18 Sep '14
Author: kmorin
Date: 2014-09-18 11:58:47 +0200 (Thu, 18 Sep 2014)
New Revision: 622
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/622
Log:
fixes #5529
Added:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java
Removed:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java
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/EmailService.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.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/actions/SearchAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.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/DemandeListUIModel.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-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java
trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
trunk/pom.xml
Deleted: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java 2014-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -1,435 +0,0 @@
-package com.franciaflex.faxtomail.persistence.entities;
-
-/*
- * #%L
- * FaxToMail :: Persistence
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2014 Franciaflex, Code Lutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-import java.util.Date;
-import java.util.List;
-
-import org.jdesktop.beans.AbstractSerializableBean;
-
-public class EmailFilter extends AbstractSerializableBean {
-
- /** serialVersionUID. */
- private static final long serialVersionUID = 7039570396201559352L;
-
- public static final String PROPERTY_SENDER = "sender";
- public static final String PROPERTY_DEMAND_OBJECT = "demandObject";
- public static final String PROPERTY_MESSAGE = "message";
- public static final String PROPERTY_BODY = "body";
- public static final String PROPERTY_WAITING_STATES = "WaitingStates";
- public static final String PROPERTY_GAMME = "gamme";
- public static final String PROPERTY_TAKEN_BY = "takenBy";
- public static final String PROPERTY_PRIORITY = "priority";
- public static final String PROPERTY_DEMAND_TYPE = "demandType";
- public static final String PROPERTY_DEMAND_STATUS = "demandStatus";
- public static final String PROPERTY_EDI_CODE_NUMBER = "ediCodeNumber";
- public static final String PROPERTY_PROJECT_REFERENCE = "projectReference";
- public static final String PROPERTY_LOCAL_REFERENCE = "localReference";
- public static final String PROPERTY_MODIFIED_BY = "modifiedBy";
- public static final String PROPERTY_PRINTING_BY = "printingBy";
- public static final String PROPERTY_ARCHIVED_BY = "archivedBy";
- public static final String PROPERTY_TRANSFER_BY = "transferBy";
- public static final String PROPERTY_REPLY_BY = "replyBy";
- public static final String PROPERTY_MIN_MODIFICATION_DATE = "minModificationDate";
- public static final String PROPERTY_MAX_MODIFICATION_DATE = "maxModificationDate";
- public static final String PROPERTY_MIN_RECEPTION_DATE = "minReceptionDate";
- public static final String PROPERTY_MAX_RECEPTION_DATE = "maxReceptionDate";
- public static final String PROPERTY_MIN_PRINTING_DATE = "minPrintingDate";
- public static final String PROPERTY_MAX_PRINTING_DATE = "maxPrintingDate";
- public static final String PROPERTY_MIN_ARCHIVED_DATE = "minArchivedDate";
- public static final String PROPERTY_MAX_ARCHIVED_DATE = "maxArchivedDate";
- public static final String PROPERTY_MIN_TRANSFER_DATE = "minTransferDate";
- public static final String PROPERTY_MAX_TRANSFER_DATE = "maxTransferDate";
- public static final String PROPERTY_MIN_REPLY_DATE = "minReplyDate";
- public static final String PROPERTY_MAX_REPLY_DATE = "maxReplyDate";
- public static final String PROPERTY_CLIENT_CODE = "clientCode";
-
- protected String sender;
-
- protected String demandObject;
-
- protected String message;
-
- protected String body;
-
- protected List<WaitingState> waitingStates;
-
- protected List<Priority> priority;
-
- protected List<DemandType> demandType;
-
- protected List<DemandStatus> demandStatus;
-
- protected List<Range> gamme;
-
- protected String ediCodeNumber;
-
- protected String projectReference;
-
- protected String localReference;
-
- protected FaxToMailUser takenBy;
-
- protected FaxToMailUser modifiedBy;
-
- protected FaxToMailUser printingBy;
-
- protected FaxToMailUser transferBy;
-
- protected FaxToMailUser archivedBy;
-
- protected FaxToMailUser replyBy;
-
- protected Date minModificationDate;
-
- protected Date maxModificationDate;
-
- protected Date minReceptionDate;
-
- protected Date maxReceptionDate;
-
- protected Date minPrintingDate;
-
- protected Date maxPrintingDate;
-
- protected Date minTransferDate;
-
- protected Date maxTransferDate;
-
- protected Date minArchivedDate;
-
- protected Date maxArchivedDate;
-
- protected Date minReplyDate;
-
- protected Date maxReplyDate;
-
- protected String clientCode;
-
- public String getSender() {
- return sender;
- }
-
- public void setSender(String sender) {
- String oldValue = this.sender;
- this.sender = sender;
- firePropertyChange(PROPERTY_SENDER, oldValue, sender);
- }
-
- public String getDemandObject() {
- return demandObject;
- }
-
- public void setDemandObject(String demandObject) {
- String oldValue = this.demandObject;
- this.demandObject = demandObject;
- firePropertyChange(PROPERTY_DEMAND_OBJECT, oldValue, demandObject);
- }
-
- public List<WaitingState> getWaitingStates() {
- return waitingStates;
- }
-
- public void setWaitingStates(List<WaitingState> waitingStates) {
- this.waitingStates = waitingStates;
- firePropertyChange(PROPERTY_WAITING_STATES, null, waitingStates);
- }
-
- public FaxToMailUser getTakenBy() {
- return takenBy;
- }
-
- public void setTakenBy(FaxToMailUser takenBy) {
- FaxToMailUser oldValue = this.takenBy;
- this.takenBy = takenBy;
- firePropertyChange(PROPERTY_TAKEN_BY, oldValue, takenBy);
- }
-
- public List<Priority> getPriority() {
- return priority;
- }
-
- public void setPriority(List<Priority> priority) {
- this.priority = priority;
- firePropertyChange(PROPERTY_PRIORITY, null, priority);
- }
-
- public List<DemandType> getDemandType() {
- return demandType;
- }
-
- public void setDemandType(List<DemandType> demandType) {
- this.demandType = demandType;
- firePropertyChange(PROPERTY_DEMAND_TYPE, null, demandType);
- }
-
- public List<DemandStatus> getDemandStatus() {
- return demandStatus;
- }
-
- public void setDemandStatus(List<DemandStatus> demandStatus) {
- this.demandStatus = demandStatus;
- firePropertyChange(PROPERTY_DEMAND_STATUS, null, demandStatus);
- }
-
- public String getEdiCodeNumber() {
- return ediCodeNumber;
- }
-
- public void setEdiCodeNumber(String ediCodeNumber) {
- String oldValue = this.ediCodeNumber;
- this.ediCodeNumber = ediCodeNumber;
- firePropertyChange(PROPERTY_EDI_CODE_NUMBER, oldValue, ediCodeNumber);
- }
-
- public String getProjectReference() {
- return projectReference;
- }
-
- public void setProjectReference(String projectReference) {
- String oldValue = this.projectReference;
- this.projectReference = projectReference;
- firePropertyChange(PROPERTY_PROJECT_REFERENCE, oldValue, projectReference);
- }
-
- public FaxToMailUser getModifiedBy() {
- return modifiedBy;
- }
-
- public void setModifiedBy(FaxToMailUser modifiedBy) {
- FaxToMailUser oldValue = modifiedBy;
- this.modifiedBy = modifiedBy;
- firePropertyChange(PROPERTY_MODIFIED_BY, oldValue, modifiedBy);
- }
-
- public Date getMinModificationDate() {
- return minModificationDate;
- }
-
- public void setMinModificationDate(Date minModificationDate) {
- Date oldValue = this.minModificationDate;
- this.minModificationDate = minModificationDate;
- firePropertyChange(PROPERTY_MIN_MODIFICATION_DATE, oldValue, minModificationDate);
- }
-
- public Date getMaxModificationDate() {
- return maxModificationDate;
- }
-
- public void setMaxModificationDate(Date maxModificationDate) {
- Date oldValue = this.maxModificationDate;
- this.maxModificationDate = maxModificationDate;
- firePropertyChange(PROPERTY_MAX_MODIFICATION_DATE, oldValue, maxModificationDate);
- }
-
- public Date getMinReceptionDate() {
- return minReceptionDate;
- }
-
- public void setMinReceptionDate(Date minReceptionDate) {
- Date oldValue = this.minReceptionDate;
- this.minReceptionDate = minReceptionDate;
- firePropertyChange(PROPERTY_MIN_RECEPTION_DATE, oldValue, minReceptionDate);
- }
-
- public Date getMaxReceptionDate() {
- return maxReceptionDate;
- }
-
- public void setMaxReceptionDate(Date maxReceptionDate) {
- Date oldValue = this.maxReceptionDate;
- this.maxReceptionDate = maxReceptionDate;
- firePropertyChange(PROPERTY_MAX_RECEPTION_DATE, oldValue, maxReceptionDate);
- }
-
- public Date getMinPrintingDate() {
- return minPrintingDate;
- }
-
- public void setMinPrintingDate(Date minPrintingDate) {
- Date oldValue = this.minPrintingDate;
- this.minPrintingDate = minPrintingDate;
- firePropertyChange(PROPERTY_MIN_PRINTING_DATE, oldValue, minPrintingDate);
- }
-
- public Date getMaxPrintingDate() {
- return maxPrintingDate;
- }
-
- public void setMaxPrintingDate(Date maxPrintingDate) {
- Date oldValue = this.maxPrintingDate;
- this.maxPrintingDate = maxPrintingDate;
- firePropertyChange(PROPERTY_MAX_PRINTING_DATE, oldValue, maxPrintingDate);
- }
-
- public String getClientCode() {
- return clientCode;
- }
-
- public void setClientCode(String clientCode) {
- String oldValue = this.clientCode;
- this.clientCode = clientCode;
- firePropertyChange(PROPERTY_CLIENT_CODE, oldValue, clientCode);
- }
-
- public String getMessage() {
- return message;
- }
-
- public void setMessage(String message) {
- String oldValue = this.message;
- this.message = message;
- firePropertyChange(PROPERTY_MESSAGE, oldValue, message);
- }
-
- public String getBody() {
- return body;
- }
-
- public void setBody(String body) {
- String oldValue = this.body;
- this.body = body;
- firePropertyChange(PROPERTY_BODY, oldValue, body);
- }
-
- public List<Range> getGamme() {
- return gamme;
- }
-
- public void setGamme(List<Range> gamme) {
- this.gamme = gamme;
- firePropertyChange(PROPERTY_GAMME, null, gamme);
- }
-
- public String getLocalReference() {
- return localReference;
- }
-
- public void setLocalReference(String localReference) {
- String oldValue = this.localReference;
- this.localReference = localReference;
- firePropertyChange(PROPERTY_LOCAL_REFERENCE, oldValue, localReference);
- }
-
- public FaxToMailUser getPrintingBy() {
- return printingBy;
- }
-
- public void setPrintingBy(FaxToMailUser printingBy) {
- FaxToMailUser oldValue = this.printingBy;
- this.printingBy = printingBy;
- firePropertyChange(PROPERTY_PRINTING_BY, oldValue, printingBy);
- }
-
- public FaxToMailUser getTransferBy() {
- return transferBy;
- }
-
- public void setTransferBy(FaxToMailUser transferBy) {
- FaxToMailUser oldValue = this.transferBy;
- this.transferBy = transferBy;
- firePropertyChange(PROPERTY_TRANSFER_BY, oldValue, transferBy);
- }
-
- public FaxToMailUser getArchivedBy() {
- return archivedBy;
- }
-
- public void setArchivedBy(FaxToMailUser archivedBy) {
- FaxToMailUser oldValue = this.archivedBy;
- this.archivedBy = archivedBy;
- firePropertyChange(PROPERTY_ARCHIVED_BY, oldValue, archivedBy);
- }
-
- public FaxToMailUser getReplyBy() {
- return replyBy;
- }
-
- public void setReplyBy(FaxToMailUser replyBy) {
- FaxToMailUser oldValue = this.replyBy;
- this.replyBy = replyBy;
- firePropertyChange(PROPERTY_REPLY_BY, oldValue, replyBy);
- }
-
- public Date getMinTransferDate() {
- return minTransferDate;
- }
-
- public void setMinTransferDate(Date minTransferDate) {
- Date oldValue = this.minTransferDate;
- this.minTransferDate = minTransferDate;
- firePropertyChange(PROPERTY_MIN_TRANSFER_DATE, oldValue, minTransferDate);
- }
-
- public Date getMaxTransferDate() {
- return maxTransferDate;
- }
-
- public void setMaxTransferDate(Date maxTransferDate) {
- Date oldValue = this.maxTransferDate;
- this.maxTransferDate = maxTransferDate;
- firePropertyChange(PROPERTY_MAX_TRANSFER_DATE, oldValue, maxTransferDate);
- }
-
- public Date getMinArchivedDate() {
- return minArchivedDate;
- }
-
- public void setMinArchivedDate(Date minArchivedDate) {
- Date oldValue = this.minArchivedDate;
- this.minArchivedDate = minArchivedDate;
- firePropertyChange(PROPERTY_MIN_ARCHIVED_DATE, oldValue, minArchivedDate);
- }
-
- public Date getMaxArchivedDate() {
- return maxArchivedDate;
- }
-
- public void setMaxArchivedDate(Date maxArchivedDate) {
- Date oldValue = this.maxArchivedDate;
- this.maxArchivedDate = maxArchivedDate;
- firePropertyChange(PROPERTY_MAX_ARCHIVED_DATE, oldValue, maxArchivedDate);
- }
-
- public Date getMinReplyDate() {
- return minReplyDate;
- }
-
- public void setMinReplyDate(Date minReplyDate) {
- Date oldValue = this.minReplyDate;
- this.minReplyDate = minReplyDate;
- firePropertyChange(PROPERTY_MIN_REPLY_DATE, oldValue, minReplyDate);
- }
-
- public Date getMaxReplyDate() {
- return maxReplyDate;
- }
-
- public void setMaxReplyDate(Date maxReplyDate) {
- Date oldValue = this.maxReplyDate;
- this.maxReplyDate = maxReplyDate;
- firePropertyChange(PROPERTY_MAX_REPLY_DATE, oldValue, maxReplyDate);
- }
-}
Added: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java (rev 0)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -0,0 +1,303 @@
+package com.franciaflex.faxtomail.persistence.entities;
+
+/*
+ * #%L
+ * FaxToMail :: Persistence
+ * $Id: EmailFilter.java 598 2014-09-03 13:58:29Z echatellier $
+ * $HeadURL: https://svn.codelutin.com/faxtomail/trunk/faxtomail-persistence/src/main/ja… $
+ * %%
+ * Copyright (C) 2014 Franciaflex, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import org.jdesktop.beans.AbstractSerializableBean;
+
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+public class EmailFilter extends AbstractSerializableBean {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 7039570396201559352L;
+
+ public static final String PROPERTY_PRIORITIES = "priorities";
+ public static final String PROPERTY_DEMAND_TYPES = "demandTypes";
+ public static final String PROPERTY_DEMAND_OBJECTS = "demandObjects";
+ public static final String PROPERTY_CLIENT_CODES = "clientCodes";
+ public static final String PROPERTY_CLIENT_BRANDS = "clientBrands";
+ public static final String PROPERTY_SENDERS = "senders";
+ public static final String PROPERTY_PROJECT_REFERENCES = "projectReferences";
+ public static final String PROPERTY_LOCAL_REFERENCES = "localReferences";
+ public static final String PROPERTY_REFERENCES = "references";
+ public static final String PROPERTY_RECEPTION_DATES = "receptionDates";
+ public static final String PROPERTY_RECIPIENTS = "recipients";
+ public static final String PROPERTY_DEMAND_STATUS = "demandStatus";
+ public static final String PROPERTY_PRODUCT_RANGES = "productsRanges";
+ public static final String PROPERTY_SAV_RANGES = "savRanges";
+ public static final String PROPERTY_QUOTATION_RANGES = "quotationRanges";
+ public static final String PROPERTY_TAKEN_BYS = "takenBys";
+ public static final String PROPERTY_COMMENTS = "comments";
+ public static final String PROPERTY_EDI_CODE_NUMBERS = "ediCodeNumbers";
+ public static final String PROPERTY_LAST_ATTACHMENT_OPENERS = "lastAttachmentOpeners";
+ public static final String PROPERTY_WAITING_STATES = "waitingStates";
+
+
+ protected Set<Priority> priorities;
+
+ protected Set<DemandType> demandTypes;
+
+ protected Set<String> demandObjects;
+
+ protected Set<String> clientCodes;
+
+ protected Set<String> clientBrands;
+
+ protected Set<String> senders;
+
+ protected Set<String> projectReferences;
+
+ protected Set<String> localReferences;
+
+ protected Set<String> references;
+
+ protected Set<Date> receptionDates;
+
+ protected Set<String> recipients;
+
+ protected Set<DemandStatus> demandStatus;
+
+ protected Set<Range> productsRanges;
+
+ protected Set<Range> savRanges;
+
+ protected Set<Range> quotationRanges;
+
+ protected Set<FaxToMailUser> takenBys;
+
+ protected Set<String> comments;
+
+ protected Set<String> ediCodeNumbers;
+
+ protected Set<FaxToMailUser> lastAttachmentOpeners;
+
+ protected Set<WaitingState> waitingStates;
+
+ public Set<Priority> getPriorities() {
+ return priorities;
+ }
+
+ public void setPriorities(Set<Priority> priorities) {
+ this.priorities = priorities;
+ firePropertyChange(PROPERTY_PRIORITIES, null, priorities);
+ }
+
+ public Set<DemandType> getDemandTypes() {
+ return demandTypes;
+ }
+
+ public void setDemandTypes(Set<DemandType> demandTypes) {
+ this.demandTypes = demandTypes;
+ firePropertyChange(PROPERTY_DEMAND_TYPES, null, demandTypes);
+ }
+
+ public Set<String> getDemandObjects() {
+ return demandObjects;
+ }
+
+ public void setDemandObjects(Set<String> demandObjects) {
+ this.demandObjects = demandObjects;
+ firePropertyChange(PROPERTY_DEMAND_OBJECTS, null, demandObjects);
+ }
+
+ public Set<String> getClientCodes() {
+ return clientCodes;
+ }
+
+ public void setClientCodes(Set<String> clientCodes) {
+ this.clientCodes = clientCodes;
+ firePropertyChange(PROPERTY_CLIENT_CODES, null, clientCodes);
+ }
+
+ public Set<String> getClientBrands() {
+ return clientBrands;
+ }
+
+ public void setClientBrands(Set<String> clientBrands) {
+ this.clientBrands = clientBrands;
+ firePropertyChange(PROPERTY_CLIENT_BRANDS, null, clientBrands);
+ }
+
+ public Set<String> getSenders() {
+ return senders;
+ }
+
+ public void setSenders(Set<String> senders) {
+ this.senders = senders;
+ firePropertyChange(PROPERTY_SENDERS, null, senders);
+ }
+
+ public Set<String> getProjectReferences() {
+ return projectReferences;
+ }
+
+ public void setProjectReferences(Set<String> projectReferences) {
+ this.projectReferences = projectReferences;
+ firePropertyChange(PROPERTY_PROJECT_REFERENCES, null, projectReferences);
+ }
+
+ public Set<String> getLocalReferences() {
+ return localReferences;
+ }
+
+ public void setLocalReferences(Set<String> localReferences) {
+ this.localReferences = localReferences;
+ firePropertyChange(PROPERTY_LOCAL_REFERENCES, null, localReferences);
+ }
+
+ public Set<String> getReferences() {
+ return references;
+ }
+
+ public void setReferences(Set<String> references) {
+ this.references = references;
+ firePropertyChange(PROPERTY_REFERENCES, null, references);
+ }
+
+ public Set<Date> getReceptionDates() {
+ return receptionDates;
+ }
+
+ public void setReceptionDates(Set<Date> receptionDates) {
+ this.receptionDates = receptionDates;
+ firePropertyChange(PROPERTY_RECEPTION_DATES, null, receptionDates);
+ }
+
+ public Set<String> getRecipients() {
+ return recipients;
+ }
+
+ public void setRecipients(Set<String> recipients) {
+ this.recipients = recipients;
+ firePropertyChange(PROPERTY_RECIPIENTS, null, recipients);
+ }
+
+ public Set<DemandStatus> getDemandStatus() {
+ return demandStatus;
+ }
+
+ public void setDemandStatus(Set<DemandStatus> demandStatus) {
+ this.demandStatus = demandStatus;
+ firePropertyChange(PROPERTY_DEMAND_STATUS, null, demandStatus);
+ }
+
+ public Set<Range> getProductsRanges() {
+ return productsRanges;
+ }
+
+ public void setProductsRanges(Set<Range> productsRanges) {
+ this.productsRanges = productsRanges;
+ firePropertyChange(PROPERTY_PRODUCT_RANGES, null, productsRanges);
+ }
+
+ public Set<Range> getSavRanges() {
+ return savRanges;
+ }
+
+ public void setSavRanges(Set<Range> savRanges) {
+ this.savRanges = savRanges;
+ firePropertyChange(PROPERTY_SAV_RANGES, null, savRanges);
+ }
+
+ public Set<Range> getQuotationRanges() {
+ return quotationRanges;
+ }
+
+ public void setQuotationRanges(Set<Range> quotationRanges) {
+ this.quotationRanges = quotationRanges;
+ firePropertyChange(PROPERTY_QUOTATION_RANGES, null, quotationRanges);
+ }
+
+ public Set<FaxToMailUser> getTakenBys() {
+ return takenBys;
+ }
+
+ public void setTakenBys(Set<FaxToMailUser> takenBys) {
+ this.takenBys = takenBys;
+ firePropertyChange(PROPERTY_TAKEN_BYS, null, takenBys);
+ }
+
+ public Set<String> getComments() {
+ return comments;
+ }
+
+ public void setComments(Set<String> comments) {
+ this.comments = comments;
+ firePropertyChange(PROPERTY_COMMENTS, null, comments);
+ }
+
+ public Set<String> getEdiCodeNumbers() {
+ return ediCodeNumbers;
+ }
+
+ public void setEdiCodeNumbers(Set<String> ediCodeNumbers) {
+ this.ediCodeNumbers = ediCodeNumbers;
+ firePropertyChange(PROPERTY_EDI_CODE_NUMBERS, null, ediCodeNumbers);
+ }
+
+ public Set<FaxToMailUser> getLastAttachmentOpeners() {
+ return lastAttachmentOpeners;
+ }
+
+ public void setLastAttachmentOpeners(Set<FaxToMailUser> lastAttachmentOpeners) {
+ this.lastAttachmentOpeners = lastAttachmentOpeners;
+ firePropertyChange(PROPERTY_LAST_ATTACHMENT_OPENERS, null, lastAttachmentOpeners);
+ }
+
+ public Set<WaitingState> getWaitingStates() {
+ return waitingStates;
+ }
+
+ public void setWaitingStates(Set<WaitingState> waitingStates) {
+ this.waitingStates = waitingStates;
+ firePropertyChange(PROPERTY_WAITING_STATES,null, waitingStates);
+ }
+
+ public void clear() {
+ setClientCodes(null);
+ setWaitingStates(null);
+ setDemandStatus(null);
+ setQuotationRanges(null);
+ setPriorities(null);
+ setClientBrands(null);
+ setComments(null);
+ setDemandObjects(null);
+ setDemandTypes(null);
+ setEdiCodeNumbers(null);
+ setLastAttachmentOpeners(null);
+ setTakenBys(null);
+ setLocalReferences(null);
+ setReferences(null);
+ setProjectReferences(null);
+ setProductsRanges(null);
+ setReceptionDates(null);
+ setRecipients(null);
+ setSavRanges(null);
+ setSenders(null);
+ }
+}
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-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailTopiaDao.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -27,6 +27,7 @@
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -35,6 +36,8 @@
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
import org.nuiton.topia.persistence.TopiaEntities;
import org.nuiton.topia.persistence.TopiaEntity;
@@ -51,15 +54,17 @@
public class EmailTopiaDao extends AbstractEmailTopiaDao<Email> {
+ private static final Log log = LogFactory.getLog(EmailTopiaDao.class);
+
/**
* Search for email using filter.
*
- * @param emailFilter email filter
+ * @param searchFilter email filter
* @param readMailFolders readable mail folders (for rights compute)
* @param pagination pagination
* @return email list matching query filters
*/
- public PaginationResult<Email> search(EmailFilter emailFilter, Set<MailFolder> readMailFolders, PaginationParameter pagination) {
+ public PaginationResult<Email> search(SearchFilter searchFilter, Set<MailFolder> readMailFolders, PaginationParameter pagination) {
//StringBuilder query = new StringBuilder("FROM " + Email.class.getName() + " E");
StringBuilder query = new StringBuilder();
@@ -70,218 +75,218 @@
args.put("readMailFolders", readMailFolders);
// email minReceptionDate
- if (emailFilter.getMinReceptionDate() != null) {
- Date date = DateUtils.truncate(emailFilter.getMinReceptionDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND E." + Email.PROPERTY_RECEPTION_DATE + " >= :" + EmailFilter.PROPERTY_MIN_RECEPTION_DATE);
- args.put(EmailFilter.PROPERTY_MIN_RECEPTION_DATE, date);
+ if (searchFilter.getMinReceptionDate() != null) {
+ Date date = DateUtils.truncate(searchFilter.getMinReceptionDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND E." + Email.PROPERTY_RECEPTION_DATE + " >= :" + SearchFilter.PROPERTY_MIN_RECEPTION_DATE);
+ args.put(SearchFilter.PROPERTY_MIN_RECEPTION_DATE, date);
}
// email maxReceptionDate
- if (emailFilter.getMaxReceptionDate() != null) {
- Date date = DateUtils.ceiling(emailFilter.getMaxReceptionDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND E." + Email.PROPERTY_RECEPTION_DATE + " <= :" + EmailFilter.PROPERTY_MAX_RECEPTION_DATE);
- args.put(EmailFilter.PROPERTY_MAX_RECEPTION_DATE, date);
+ if (searchFilter.getMaxReceptionDate() != null) {
+ Date date = DateUtils.ceiling(searchFilter.getMaxReceptionDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND E." + Email.PROPERTY_RECEPTION_DATE + " <= :" + SearchFilter.PROPERTY_MAX_RECEPTION_DATE);
+ args.put(SearchFilter.PROPERTY_MAX_RECEPTION_DATE, date);
}
// email taken by
- if (emailFilter.getTakenBy() != null) {
- query.append(" AND E." + Email.PROPERTY_TAKEN_BY + " = :" + EmailFilter.PROPERTY_TAKEN_BY);
- args.put(EmailFilter.PROPERTY_TAKEN_BY, emailFilter.getTakenBy());
+ if (searchFilter.getTakenBy() != null) {
+ query.append(" AND E." + Email.PROPERTY_TAKEN_BY + " = :" + SearchFilter.PROPERTY_TAKEN_BY);
+ args.put(SearchFilter.PROPERTY_TAKEN_BY, searchFilter.getTakenBy());
}
// history minModificationDate && modifiedBy
- if (emailFilter.getMinModificationDate() != null || emailFilter.getModifiedBy() != null) {
+ if (searchFilter.getMinModificationDate() != null || searchFilter.getModifiedBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :modificationType");
args.put("modificationType", HistoryType.MODIFICATION);
- if (emailFilter.getMinModificationDate() != null) {
- Date date = DateUtils.truncate(emailFilter.getMinModificationDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + EmailFilter.PROPERTY_MIN_MODIFICATION_DATE);
- args.put(EmailFilter.PROPERTY_MIN_MODIFICATION_DATE, date);
+ if (searchFilter.getMinModificationDate() != null) {
+ Date date = DateUtils.truncate(searchFilter.getMinModificationDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + SearchFilter.PROPERTY_MIN_MODIFICATION_DATE);
+ args.put(SearchFilter.PROPERTY_MIN_MODIFICATION_DATE, date);
}
- if (emailFilter.getModifiedBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_MODIFIED_BY);
- args.put(EmailFilter.PROPERTY_MODIFIED_BY, emailFilter.getModifiedBy());
+ if (searchFilter.getModifiedBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_MODIFIED_BY);
+ args.put(SearchFilter.PROPERTY_MODIFIED_BY, searchFilter.getModifiedBy());
}
query.append(")");
}
// history maxModificationDate && modifiedBy
- if (emailFilter.getMaxModificationDate() != null || emailFilter.getModifiedBy() != null) {
+ if (searchFilter.getMaxModificationDate() != null || searchFilter.getModifiedBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :modificationType");
args.put("modificationType", HistoryType.MODIFICATION);
- if (emailFilter.getMaxModificationDate() != null) {
- Date date = DateUtils.ceiling(emailFilter.getMaxModificationDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + EmailFilter.PROPERTY_MAX_MODIFICATION_DATE);
- args.put(EmailFilter.PROPERTY_MAX_MODIFICATION_DATE, date);
+ if (searchFilter.getMaxModificationDate() != null) {
+ Date date = DateUtils.ceiling(searchFilter.getMaxModificationDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + SearchFilter.PROPERTY_MAX_MODIFICATION_DATE);
+ args.put(SearchFilter.PROPERTY_MAX_MODIFICATION_DATE, date);
}
- if (emailFilter.getModifiedBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_MODIFIED_BY);
- args.put(EmailFilter.PROPERTY_MODIFIED_BY, emailFilter.getModifiedBy());
+ if (searchFilter.getModifiedBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_MODIFIED_BY);
+ args.put(SearchFilter.PROPERTY_MODIFIED_BY, searchFilter.getModifiedBy());
}
query.append(")");
}
// history minTransferDate && transferBy
- if (emailFilter.getMinTransferDate() != null || emailFilter.getTransferBy() != null) {
+ if (searchFilter.getMinTransferDate() != null || searchFilter.getTransferBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :transmissionType");
args.put("transmissionType", HistoryType.TRANSMISSION);
- if (emailFilter.getMinTransferDate() != null) {
- Date date = DateUtils.truncate(emailFilter.getMinTransferDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + EmailFilter.PROPERTY_MIN_TRANSFER_DATE);
- args.put(EmailFilter.PROPERTY_MIN_TRANSFER_DATE, date);
+ if (searchFilter.getMinTransferDate() != null) {
+ Date date = DateUtils.truncate(searchFilter.getMinTransferDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + SearchFilter.PROPERTY_MIN_TRANSFER_DATE);
+ args.put(SearchFilter.PROPERTY_MIN_TRANSFER_DATE, date);
}
- if (emailFilter.getTransferBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_TRANSFER_BY);
- args.put(EmailFilter.PROPERTY_TRANSFER_BY, emailFilter.getTransferBy());
+ if (searchFilter.getTransferBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_TRANSFER_BY);
+ args.put(SearchFilter.PROPERTY_TRANSFER_BY, searchFilter.getTransferBy());
}
query.append(")");
}
// history maxTransferDate && transferBy
- if (emailFilter.getMaxTransferDate() != null || emailFilter.getTransferBy() != null) {
+ if (searchFilter.getMaxTransferDate() != null || searchFilter.getTransferBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :transmissionType");
args.put("transmissionType", HistoryType.TRANSMISSION);
- if (emailFilter.getMaxTransferDate() != null) {
- Date date = DateUtils.ceiling(emailFilter.getMaxTransferDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + EmailFilter.PROPERTY_MAX_TRANSFER_DATE);
- args.put(EmailFilter.PROPERTY_MAX_TRANSFER_DATE, date);
+ if (searchFilter.getMaxTransferDate() != null) {
+ Date date = DateUtils.ceiling(searchFilter.getMaxTransferDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + SearchFilter.PROPERTY_MAX_TRANSFER_DATE);
+ args.put(SearchFilter.PROPERTY_MAX_TRANSFER_DATE, date);
}
- if (emailFilter.getTransferBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_TRANSFER_BY);
- args.put(EmailFilter.PROPERTY_TRANSFER_BY, emailFilter.getTransferBy());
+ if (searchFilter.getTransferBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_TRANSFER_BY);
+ args.put(SearchFilter.PROPERTY_TRANSFER_BY, searchFilter.getTransferBy());
}
query.append(")");
}
// history minArchivedDate && transferBy
- if (emailFilter.getMinArchivedDate() != null || emailFilter.getArchivedBy() != null) {
+ if (searchFilter.getMinArchivedDate() != null || searchFilter.getArchivedBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :archivedType");
args.put("archivedType", HistoryType.ARCHIVED);
- if (emailFilter.getMinArchivedDate() != null) {
- Date date = DateUtils.truncate(emailFilter.getMinArchivedDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + EmailFilter.PROPERTY_MIN_ARCHIVED_DATE);
- args.put(EmailFilter.PROPERTY_MIN_ARCHIVED_DATE, date);
+ if (searchFilter.getMinArchivedDate() != null) {
+ Date date = DateUtils.truncate(searchFilter.getMinArchivedDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + SearchFilter.PROPERTY_MIN_ARCHIVED_DATE);
+ args.put(SearchFilter.PROPERTY_MIN_ARCHIVED_DATE, date);
}
- if (emailFilter.getArchivedBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_ARCHIVED_BY);
- args.put(EmailFilter.PROPERTY_ARCHIVED_BY, emailFilter.getArchivedBy());
+ if (searchFilter.getArchivedBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_ARCHIVED_BY);
+ args.put(SearchFilter.PROPERTY_ARCHIVED_BY, searchFilter.getArchivedBy());
}
query.append(")");
}
// history maxArchivedDate && transferBy
- if (emailFilter.getMaxArchivedDate() != null || emailFilter.getArchivedBy() != null) {
+ if (searchFilter.getMaxArchivedDate() != null || searchFilter.getArchivedBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :transmissionType");
args.put("transmissionType", HistoryType.TRANSMISSION);
- if (emailFilter.getMaxArchivedDate() != null) {
- Date date = DateUtils.ceiling(emailFilter.getMaxArchivedDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + EmailFilter.PROPERTY_MAX_ARCHIVED_DATE);
- args.put(EmailFilter.PROPERTY_MAX_ARCHIVED_DATE, date);
+ if (searchFilter.getMaxArchivedDate() != null) {
+ Date date = DateUtils.ceiling(searchFilter.getMaxArchivedDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + SearchFilter.PROPERTY_MAX_ARCHIVED_DATE);
+ args.put(SearchFilter.PROPERTY_MAX_ARCHIVED_DATE, date);
}
- if (emailFilter.getArchivedBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_ARCHIVED_BY);
- args.put(EmailFilter.PROPERTY_ARCHIVED_BY, emailFilter.getArchivedBy());
+ if (searchFilter.getArchivedBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_ARCHIVED_BY);
+ args.put(SearchFilter.PROPERTY_ARCHIVED_BY, searchFilter.getArchivedBy());
}
query.append(")");
}
// email minPrintingDate
- if (emailFilter.getMinPrintingDate() != null || emailFilter.getPrintingBy() != null) {
+ if (searchFilter.getMinPrintingDate() != null || searchFilter.getPrintingBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :printingType");
args.put("printingType", HistoryType.PRINTING);
- if (emailFilter.getMinPrintingDate() != null) {
- Date date = DateUtils.truncate(emailFilter.getMinPrintingDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + EmailFilter.PROPERTY_MIN_PRINTING_DATE);
- args.put(EmailFilter.PROPERTY_MIN_PRINTING_DATE, date);
+ if (searchFilter.getMinPrintingDate() != null) {
+ Date date = DateUtils.truncate(searchFilter.getMinPrintingDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + SearchFilter.PROPERTY_MIN_PRINTING_DATE);
+ args.put(SearchFilter.PROPERTY_MIN_PRINTING_DATE, date);
}
- if (emailFilter.getPrintingBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_PRINTING_BY);
- args.put(EmailFilter.PROPERTY_PRINTING_BY, emailFilter.getPrintingBy());
+ if (searchFilter.getPrintingBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_PRINTING_BY);
+ args.put(SearchFilter.PROPERTY_PRINTING_BY, searchFilter.getPrintingBy());
}
query.append(")");
}
// email maxPrintingDate
- if (emailFilter.getMaxPrintingDate() != null || emailFilter.getPrintingBy() != null) {
+ if (searchFilter.getMaxPrintingDate() != null || searchFilter.getPrintingBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :printingType");
args.put("printingType", HistoryType.PRINTING);
- if (emailFilter.getMaxPrintingDate() != null) {
- Date date = DateUtils.ceiling(emailFilter.getMaxPrintingDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + EmailFilter.PROPERTY_MAX_PRINTING_DATE);
- args.put(EmailFilter.PROPERTY_MAX_PRINTING_DATE, date);
+ if (searchFilter.getMaxPrintingDate() != null) {
+ Date date = DateUtils.ceiling(searchFilter.getMaxPrintingDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + SearchFilter.PROPERTY_MAX_PRINTING_DATE);
+ args.put(SearchFilter.PROPERTY_MAX_PRINTING_DATE, date);
}
- if (emailFilter.getPrintingBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_PRINTING_BY);
- args.put(EmailFilter.PROPERTY_PRINTING_BY, emailFilter.getPrintingBy());
+ if (searchFilter.getPrintingBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_PRINTING_BY);
+ args.put(SearchFilter.PROPERTY_PRINTING_BY, searchFilter.getPrintingBy());
}
query.append(")");
}
// email minReplyDate
- if (emailFilter.getMinReplyDate() != null || emailFilter.getReplyBy() != null) {
+ if (searchFilter.getMinReplyDate() != null || searchFilter.getReplyBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :replyType");
args.put("replyType", HistoryType.REPLY);
- if (emailFilter.getMinReplyDate() != null) {
- Date date = DateUtils.truncate(emailFilter.getMinReplyDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + EmailFilter.PROPERTY_MIN_REPLY_DATE);
- args.put(EmailFilter.PROPERTY_MIN_REPLY_DATE, date);
+ if (searchFilter.getMinReplyDate() != null) {
+ Date date = DateUtils.truncate(searchFilter.getMinReplyDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " >= :" + SearchFilter.PROPERTY_MIN_REPLY_DATE);
+ args.put(SearchFilter.PROPERTY_MIN_REPLY_DATE, date);
}
- if (emailFilter.getReplyBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_REPLY_BY);
- args.put(EmailFilter.PROPERTY_REPLY_BY, emailFilter.getReplyBy());
+ if (searchFilter.getReplyBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_REPLY_BY);
+ args.put(SearchFilter.PROPERTY_REPLY_BY, searchFilter.getReplyBy());
}
query.append(")");
}
// email maxReplyDate
- if (emailFilter.getMaxReplyDate() != null || emailFilter.getReplyBy() != null) {
+ if (searchFilter.getMaxReplyDate() != null || searchFilter.getReplyBy() != null) {
query.append(" AND EXISTS (FROM " + History.class.getName() + " H WHERE H in elements(E." + Email.PROPERTY_HISTORY + ")");
query.append(" AND H." + History.PROPERTY_TYPE + " = :replyType");
args.put("replyType", HistoryType.REPLY);
- if (emailFilter.getMaxReplyDate() != null) {
- Date date = DateUtils.ceiling(emailFilter.getMaxReplyDate(), Calendar.DAY_OF_MONTH);
- query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + EmailFilter.PROPERTY_MAX_REPLY_DATE);
- args.put(EmailFilter.PROPERTY_MAX_REPLY_DATE, date);
+ if (searchFilter.getMaxReplyDate() != null) {
+ Date date = DateUtils.ceiling(searchFilter.getMaxReplyDate(), Calendar.DAY_OF_MONTH);
+ query.append(" AND H." + History.PROPERTY_MODIFICATION_DATE + " <= :" + SearchFilter.PROPERTY_MAX_REPLY_DATE);
+ args.put(SearchFilter.PROPERTY_MAX_REPLY_DATE, date);
}
- if (emailFilter.getReplyBy() != null) {
- query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + EmailFilter.PROPERTY_REPLY_BY);
- args.put(EmailFilter.PROPERTY_REPLY_BY, emailFilter.getReplyBy());
+ if (searchFilter.getReplyBy() != null) {
+ query.append(" AND H." + History.PROPERTY_FAX_TO_MAIL_USER + " = :" + SearchFilter.PROPERTY_REPLY_BY);
+ args.put(SearchFilter.PROPERTY_REPLY_BY, searchFilter.getReplyBy());
}
query.append(")");
}
// email sender
- if (StringUtils.isNotBlank(emailFilter.getSender())) {
- query.append(" AND lower(E." + Email.PROPERTY_SENDER + ") LIKE lower(:" + EmailFilter.PROPERTY_SENDER + ")");
- args.put(EmailFilter.PROPERTY_SENDER, "%" + emailFilter.getSender() + "%");
+ if (StringUtils.isNotBlank(searchFilter.getSender())) {
+ query.append(" AND lower(E." + Email.PROPERTY_SENDER + ") LIKE lower(:" + SearchFilter.PROPERTY_SENDER + ")");
+ args.put(SearchFilter.PROPERTY_SENDER, "%" + searchFilter.getSender() + "%");
}
// client code
- if (StringUtils.isNoneBlank(emailFilter.getClientCode())) {
- query.append(" AND lower(E." + Email.PROPERTY_CLIENT + "." + Client.PROPERTY_CODE + ") LIKE lower(:" + EmailFilter.PROPERTY_CLIENT_CODE + ")");
- args.put(EmailFilter.PROPERTY_CLIENT_CODE, "%" + emailFilter.getClientCode() + "%");
+ if (StringUtils.isNoneBlank(searchFilter.getClientCode())) {
+ query.append(" AND lower(E." + Email.PROPERTY_CLIENT + "." + Client.PROPERTY_CODE + ") LIKE lower(:" + SearchFilter.PROPERTY_CLIENT_CODE + ")");
+ args.put(SearchFilter.PROPERTY_CLIENT_CODE, "%" + searchFilter.getClientCode() + "%");
}
// email subject
- if (StringUtils.isNotBlank(emailFilter.getDemandObject())) {
- query.append(" AND lower(E." + Email.PROPERTY_OBJECT + ") LIKE lower(:" + EmailFilter.PROPERTY_DEMAND_OBJECT + ")");
- args.put(EmailFilter.PROPERTY_DEMAND_OBJECT, "%" + emailFilter.getDemandObject() + "%");
+ if (StringUtils.isNotBlank(searchFilter.getDemandObject())) {
+ query.append(" AND lower(E." + Email.PROPERTY_OBJECT + ") LIKE lower(:" + SearchFilter.PROPERTY_DEMAND_OBJECT + ")");
+ args.put(SearchFilter.PROPERTY_DEMAND_OBJECT, "%" + searchFilter.getDemandObject() + "%");
}
// email demand type
- List<DemandType> demandType = emailFilter.getDemandType();
+ List<DemandType> demandType = searchFilter.getDemandType();
if (CollectionUtils.isNotEmpty(demandType)) {
- query.append(" AND (E." + Email.PROPERTY_DEMAND_TYPE + " IN (:" + EmailFilter.PROPERTY_DEMAND_TYPE + ")");
- args.put(EmailFilter.PROPERTY_DEMAND_TYPE, demandType);
+ query.append(" AND (E." + Email.PROPERTY_DEMAND_TYPE + " IN (:" + SearchFilter.PROPERTY_DEMAND_TYPE + ")");
+ args.put(SearchFilter.PROPERTY_DEMAND_TYPE, demandType);
if (demandType.contains(null)) {
query.append(" OR E." + Email.PROPERTY_DEMAND_TYPE + " IS NULL");
@@ -290,22 +295,22 @@
}
// email ediCodeNumber
- if (StringUtils.isNotBlank(emailFilter.getEdiCodeNumber())) {
- query.append(" AND lower(E." + Email.PROPERTY_EDI_ERROR + ") LIKE lower(:" + EmailFilter.PROPERTY_EDI_CODE_NUMBER + ")");
- args.put(EmailFilter.PROPERTY_EDI_CODE_NUMBER, "%" + emailFilter.getEdiCodeNumber() + "%");
+ if (StringUtils.isNotBlank(searchFilter.getEdiCodeNumber())) {
+ query.append(" AND lower(E." + Email.PROPERTY_EDI_ERROR + ") LIKE lower(:" + SearchFilter.PROPERTY_EDI_CODE_NUMBER + ")");
+ args.put(SearchFilter.PROPERTY_EDI_CODE_NUMBER, "%" + searchFilter.getEdiCodeNumber() + "%");
}
// email projectReference
- if (StringUtils.isNotBlank(emailFilter.getProjectReference())) {
- query.append(" AND lower(E." + Email.PROPERTY_PROJECT_REFERENCE + ") LIKE lower(:" + EmailFilter.PROPERTY_PROJECT_REFERENCE + ")");
- args.put(EmailFilter.PROPERTY_PROJECT_REFERENCE, "%" + emailFilter.getProjectReference() + "%");
+ if (StringUtils.isNotBlank(searchFilter.getProjectReference())) {
+ query.append(" AND lower(E." + Email.PROPERTY_PROJECT_REFERENCE + ") LIKE lower(:" + SearchFilter.PROPERTY_PROJECT_REFERENCE + ")");
+ args.put(SearchFilter.PROPERTY_PROJECT_REFERENCE, "%" + searchFilter.getProjectReference() + "%");
}
// email priority
- List<Priority> priority = emailFilter.getPriority();
+ List<Priority> priority = searchFilter.getPriority();
if (CollectionUtils.isNotEmpty(priority)) {
- query.append(" AND (E." + Email.PROPERTY_PRIORITY + " IN (:" + EmailFilter.PROPERTY_PRIORITY + ")");
- args.put(EmailFilter.PROPERTY_PRIORITY, priority);
+ query.append(" AND (E." + Email.PROPERTY_PRIORITY + " IN (:" + SearchFilter.PROPERTY_PRIORITY + ")");
+ args.put(SearchFilter.PROPERTY_PRIORITY, priority);
if (priority.contains(null)) {
query.append(" OR E." + Email.PROPERTY_PRIORITY + " IS NULL");
@@ -314,10 +319,10 @@
}
// email demand status
- List<DemandStatus> demandStatus = emailFilter.getDemandStatus();
+ List<DemandStatus> demandStatus = searchFilter.getDemandStatus();
if (CollectionUtils.isNotEmpty(demandStatus)) {
- query.append(" AND (E." + Email.PROPERTY_DEMAND_STATUS + " IN (:" + EmailFilter.PROPERTY_DEMAND_STATUS + ")");
- args.put(EmailFilter.PROPERTY_DEMAND_STATUS, demandStatus);
+ query.append(" AND (E." + Email.PROPERTY_DEMAND_STATUS + " IN (:" + SearchFilter.PROPERTY_DEMAND_STATUS + ")");
+ args.put(SearchFilter.PROPERTY_DEMAND_STATUS, demandStatus);
if (demandStatus.contains(null)) {
query.append(" OR E." + Email.PROPERTY_DEMAND_STATUS + " IS NULL");
@@ -326,10 +331,10 @@
}
// email etat attente
- List<WaitingState> waitingStates = emailFilter.getWaitingStates();
+ List<WaitingState> waitingStates = searchFilter.getWaitingStates();
if (CollectionUtils.isNotEmpty(waitingStates)) {
- query.append(" AND (E." + Email.PROPERTY_WAITING_STATE + " IN (:" + EmailFilter.PROPERTY_WAITING_STATES + ")");
- args.put(EmailFilter.PROPERTY_WAITING_STATES, waitingStates);
+ query.append(" AND (E." + Email.PROPERTY_WAITING_STATE + " IN (:" + SearchFilter.PROPERTY_WAITING_STATES + ")");
+ args.put(SearchFilter.PROPERTY_WAITING_STATES, waitingStates);
if (waitingStates.contains(null)) {
query.append(" OR E." + Email.PROPERTY_WAITING_STATE + " IS NULL");
@@ -338,17 +343,17 @@
}
// email message
- if (StringUtils.isNotBlank(emailFilter.getMessage())) {
- query.append(" AND lower(E." + Email.PROPERTY_ORIGINAL_EMAIL + ") LIKE lower(:" + EmailFilter.PROPERTY_MESSAGE + ")");
- args.put(EmailFilter.PROPERTY_MESSAGE, "%" + emailFilter.getMessage() + "%");
+ if (StringUtils.isNotBlank(searchFilter.getMessage())) {
+ query.append(" AND lower(E." + Email.PROPERTY_ORIGINAL_EMAIL + ") LIKE lower(:" + SearchFilter.PROPERTY_MESSAGE + ")");
+ args.put(SearchFilter.PROPERTY_MESSAGE, "%" + searchFilter.getMessage() + "%");
}
// email gamme
- List<Range> gamme = emailFilter.getGamme();
+ List<Range> gamme = searchFilter.getGamme();
if (CollectionUtils.isNotEmpty(gamme)) {
query.append(" AND ((EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")");
- query.append(" AND RR." + RangeRow.PROPERTY_RANGE + " IN (:" + EmailFilter.PROPERTY_GAMME + "))");
- args.put(EmailFilter.PROPERTY_GAMME, gamme);
+ query.append(" AND RR." + RangeRow.PROPERTY_RANGE + " IN (:" + SearchFilter.PROPERTY_GAMME + "))");
+ args.put(SearchFilter.PROPERTY_GAMME, gamme);
if (gamme.contains(null)) {
query.append(" OR NOT EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))");
@@ -357,11 +362,11 @@
}
// email localReference
- if (StringUtils.isNotBlank(emailFilter.getLocalReference())) {
+ if (StringUtils.isNotBlank(searchFilter.getLocalReference())) {
query.append(" AND (EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")");
- query.append(" AND lower(RR." + RangeRow.PROPERTY_COMMAND_NUMBER + ") LIKE lower(:" + EmailFilter.PROPERTY_LOCAL_REFERENCE + "))");
- query.append(" OR lower(E." + Email.PROPERTY_COMPANY_REFERENCE + ") LIKE lower(:" + EmailFilter.PROPERTY_LOCAL_REFERENCE + ")");
- args.put(EmailFilter.PROPERTY_LOCAL_REFERENCE, "%" + emailFilter.getLocalReference() + "%");
+ query.append(" AND lower(RR." + RangeRow.PROPERTY_COMMAND_NUMBER + ") LIKE lower(:" + SearchFilter.PROPERTY_LOCAL_REFERENCE + "))");
+ query.append(" OR lower(E." + Email.PROPERTY_COMPANY_REFERENCE + ") LIKE lower(:" + SearchFilter.PROPERTY_LOCAL_REFERENCE + ")");
+ args.put(SearchFilter.PROPERTY_LOCAL_REFERENCE, "%" + searchFilter.getLocalReference() + "%");
query.append(")");
}
@@ -442,6 +447,346 @@
}
/**
+ * Search for email using filter.
+ *
+ * @param emailFilter email filter
+ * @param folder readable mail folders (for rights compute)
+ * @param pagination pagination
+ * @return email list matching query filters
+ */
+ public PaginationResult<Email> getEmailForFolder(EmailFilter emailFilter, MailFolder folder, PaginationParameter pagination) {
+
+ 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;
+ 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_ATTACHMENT,
+ //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER,
+ //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FIELDS,
+ //Email.PROPERTY_EMAIL_GROUP + "." + EmailGroup.PROPERTY_EMAIL
+ ) + " WHERE E." + TopiaEntity.PROPERTY_TOPIA_ID + " in ( :topiaIdsForFetch_ )";
+
+ // code copied from topia to perform search
+ PaginationResult<String> pageResult = findPage(hqlForFetchStep1, args, pagination);
+ 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);
+ List<Email> entities = forHql(hqlForFetchStep2, step2Args).findAll();
+
+ sortedEntities = sortAccordingToIds(entities, step1ResultTopiaIds);
+ }
+
+ PaginationResult<Email> result = PaginationResult.of(sortedEntities, pageResult.getCount(), pageResult.getCurrentPage());
+
+ //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());
+ List<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());
+ }
+ }
+ return result;
+ }
+
+ protected String filteredDemandsOfFolderCondition(MailFolder folder, EmailFilter emailFilter, Map<String, Object> args) {
+ StringBuilder query = new StringBuilder();
+
+ query.append(" WHERE E." + Email.PROPERTY_MAIL_FOLDER + " = :folder AND E." + Email.PROPERTY_DEMAND_STATUS + " != :archiveStatus");
+ args.put("folder", folder);
+ args.put("archiveStatus", DemandStatus.ARCHIVED);
+
+ Set<Date> receptionDates = emailFilter.getReceptionDates();
+ if (receptionDates != null) {
+ query.append(" AND (");
+ int i = 0;
+ for (Date date : receptionDates) {
+ query.append(" E." + Email.PROPERTY_RECEPTION_DATE + " BETWEEN :" + EmailFilter.PROPERTY_RECEPTION_DATES + i + "Min");
+ query.append(" AND :" + EmailFilter.PROPERTY_RECEPTION_DATES + i + "Max");
+
+ args.put(EmailFilter.PROPERTY_RECEPTION_DATES + i + "Min", date);
+ args.put(EmailFilter.PROPERTY_RECEPTION_DATES + i + "Max", DateUtils.addMinutes(date, 1));
+
+ if (i++ < receptionDates.size() - 1) {
+ query.append(" OR");
+ }
+ }
+ query.append(")");
+ }
+
+ Set<DemandStatus> demandStatus = emailFilter.getDemandStatus();
+ if (demandStatus != null) {
+ query.append(" AND (E." + Email.PROPERTY_DEMAND_STATUS + " in (:" + EmailFilter.PROPERTY_DEMAND_STATUS + ")");
+ args.put(EmailFilter.PROPERTY_DEMAND_STATUS, demandStatus);
+
+ if (demandStatus.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_DEMAND_STATUS + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> senders = emailFilter.getSenders();
+ if (senders != null) {
+ query.append(" AND (E." + Email.PROPERTY_SENDER + " in (:" + EmailFilter.PROPERTY_SENDERS + ")");
+ args.put(EmailFilter.PROPERTY_SENDERS, senders);
+
+ if (senders.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_SENDER + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> clientBrands = emailFilter.getClientBrands();
+ if (clientBrands != null) {
+ query.append(" AND (E." + Email.PROPERTY_CLIENT + "." + Client.PROPERTY_BRAND + " IN (:" + EmailFilter.PROPERTY_CLIENT_BRANDS + ")");
+ args.put(EmailFilter.PROPERTY_CLIENT_BRANDS, clientBrands);
+
+ if (clientBrands.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_CLIENT + " IS NULL");
+ query.append(" OR E." + Email.PROPERTY_CLIENT + "." + Client.PROPERTY_BRAND + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> clientCodes = emailFilter.getClientCodes();
+ if (clientCodes != null) {
+ query.append(" AND (E." + Email.PROPERTY_CLIENT + "." + Client.PROPERTY_CODE + " IN (:" + EmailFilter.PROPERTY_CLIENT_CODES + ")");
+ args.put(EmailFilter.PROPERTY_CLIENT_CODES, clientCodes);
+
+ if (clientCodes.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_CLIENT + " IS NULL");
+ query.append(" OR E." + Email.PROPERTY_CLIENT + "." + Client.PROPERTY_CODE + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> comments = emailFilter.getComments();
+ if (comments != null) {
+ query.append(" AND (E." + Email.PROPERTY_COMMENT + " in (:" + EmailFilter.PROPERTY_COMMENTS + ")");
+ args.put(EmailFilter.PROPERTY_COMMENTS, comments);
+
+ if (comments.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_COMMENT + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> demandObjects = emailFilter.getDemandObjects();
+ if (demandObjects != null) {
+ query.append(" AND (E." + Email.PROPERTY_OBJECT + " in (:" + EmailFilter.PROPERTY_DEMAND_OBJECTS + ")");
+ args.put(EmailFilter.PROPERTY_DEMAND_OBJECTS, demandObjects);
+
+ if (demandObjects.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_OBJECT + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<DemandType> demandTypes = emailFilter.getDemandTypes();
+ if (demandTypes != null) {
+ query.append(" AND (E." + Email.PROPERTY_DEMAND_TYPE + " in (:" + EmailFilter.PROPERTY_DEMAND_TYPES + ")");
+ args.put(EmailFilter.PROPERTY_DEMAND_TYPES, demandTypes);
+
+ if (demandTypes.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_DEMAND_TYPE + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> ediCodeNumbers = emailFilter.getEdiCodeNumbers();
+ if (ediCodeNumbers != null) {
+ query.append(" AND (E." + Email.PROPERTY_EDI_ERROR + " in (:" + EmailFilter.PROPERTY_EDI_CODE_NUMBERS + ")");
+ args.put(EmailFilter.PROPERTY_EDI_CODE_NUMBERS, ediCodeNumbers);
+
+ if (ediCodeNumbers.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_EDI_ERROR + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<FaxToMailUser> takenBys = emailFilter.getTakenBys();
+ if (takenBys != null) {
+ query.append(" AND (E." + Email.PROPERTY_TAKEN_BY + " in (:" + EmailFilter.PROPERTY_TAKEN_BYS + ")");
+ args.put(EmailFilter.PROPERTY_TAKEN_BYS, takenBys);
+
+ if (takenBys.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_TAKEN_BY + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<FaxToMailUser> lastAttachmentOpeners = emailFilter.getLastAttachmentOpeners();
+ if (lastAttachmentOpeners != null) {
+ query.append(" AND (E." + Email.PROPERTY_LAST_ATTACHMENT_OPENER + " in (:" + EmailFilter.PROPERTY_LAST_ATTACHMENT_OPENERS + ")");
+ args.put(EmailFilter.PROPERTY_LAST_ATTACHMENT_OPENERS, lastAttachmentOpeners);
+
+ if (lastAttachmentOpeners.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_LAST_ATTACHMENT_OPENER + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> recipients = emailFilter.getRecipients();
+ if (recipients != null) {
+ query.append(" AND (E." + Email.PROPERTY_RECIPIENT + " in (:" + EmailFilter.PROPERTY_RECIPIENTS + ")");
+ args.put(EmailFilter.PROPERTY_RECIPIENTS, recipients);
+
+ if (recipients.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_RECIPIENT + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<Priority> priorities = emailFilter.getPriorities();
+ if (priorities != null) {
+ query.append(" AND (E." + Email.PROPERTY_PRIORITY + " in (:" + EmailFilter.PROPERTY_PRIORITIES + ")");
+ args.put(EmailFilter.PROPERTY_PRIORITIES, priorities);
+
+ if (priorities.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_PRIORITY + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<Range> productRanges = emailFilter.getProductsRanges();
+ if (CollectionUtils.isNotEmpty(productRanges)) {
+ query.append(" AND ((EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")");
+ query.append(" AND RR." + RangeRow.PROPERTY_RANGE + " IN (:" + EmailFilter.PROPERTY_PRODUCT_RANGES + ")");
+ query.append(" AND RR." + RangeRow.PROPERTY_PRODUCT_QUANTITY + " > 0 )");
+
+ if (productRanges.contains(null)) {
+ query.append(" OR NOT EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))");
+ }
+ query.append("))");
+
+ args.put(EmailFilter.PROPERTY_PRODUCT_RANGES, productRanges);
+ }
+
+ Set<Range> savRanges = emailFilter.getSavRanges();
+ if (CollectionUtils.isNotEmpty(savRanges)) {
+ query.append(" AND ((EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")");
+ query.append(" AND RR." + RangeRow.PROPERTY_RANGE + " IN (:" + EmailFilter.PROPERTY_SAV_RANGES + ")");
+ query.append(" AND RR." + RangeRow.PROPERTY_SAV_QUANTITY + " > 0 )");
+
+ if (savRanges.contains(null)) {
+ query.append(" OR NOT EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))");
+ }
+ query.append("))");
+
+ args.put(EmailFilter.PROPERTY_SAV_RANGES, savRanges);
+ }
+
+ Set<Range> quotationRanges = emailFilter.getQuotationRanges();
+ if (CollectionUtils.isNotEmpty(quotationRanges)) {
+ query.append(" AND ((EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")");
+ query.append(" AND RR." + RangeRow.PROPERTY_RANGE + " IN (:" + EmailFilter.PROPERTY_QUOTATION_RANGES + ")");
+ query.append(" AND RR." + RangeRow.PROPERTY_QUOTATION_QUANTITY + " > 0 )");
+
+ if (quotationRanges.contains(null)) {
+ query.append(" OR NOT EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))");
+ }
+ query.append("))");
+
+ args.put(EmailFilter.PROPERTY_QUOTATION_RANGES, quotationRanges);
+ }
+
+ Set<String> projectReferences = emailFilter.getProjectReferences();
+ if (projectReferences != null) {
+ query.append(" AND (E." + Email.PROPERTY_PROJECT_REFERENCE + " in (:" + EmailFilter.PROPERTY_PROJECT_REFERENCES + ")");
+ args.put(EmailFilter.PROPERTY_PROJECT_REFERENCES, projectReferences);
+
+ if (projectReferences.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_PROJECT_REFERENCE + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> localReferences = emailFilter.getLocalReferences();
+ if (localReferences != null) {
+ query.append(" AND (E." + Email.PROPERTY_COMPANY_REFERENCE + " in (:" + EmailFilter.PROPERTY_LOCAL_REFERENCES + ")");
+ args.put(EmailFilter.PROPERTY_LOCAL_REFERENCES, localReferences);
+
+ if (localReferences.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_COMPANY_REFERENCE + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ Set<String> references = emailFilter.getReferences();
+ if (references != null) {
+ query.append(" AND ((EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + ")");
+ query.append(" AND RR." + RangeRow.PROPERTY_COMMAND_NUMBER + " IN (:" + EmailFilter.PROPERTY_LOCAL_REFERENCES + "))");
+ query.append(" OR E." + Email.PROPERTY_COMPANY_REFERENCE + " IN (:" + EmailFilter.PROPERTY_LOCAL_REFERENCES + ")");
+ args.put(EmailFilter.PROPERTY_LOCAL_REFERENCES, references);
+
+ if (references.contains(null)) {
+ query.append(" OR (NOT EXISTS (FROM " + RangeRow.class.getName() + " RR WHERE RR in elements(E." + Email.PROPERTY_RANGE_ROW + "))");
+ query.append(" AND E." + Email.PROPERTY_COMPANY_REFERENCE + " IS NULL)");
+ }
+ query.append("))");
+ }
+
+ Set<WaitingState> waitingStates = emailFilter.getWaitingStates();
+ if (waitingStates != null) {
+ query.append(" AND (E." + Email.PROPERTY_WAITING_STATE + " in (:" + EmailFilter.PROPERTY_WAITING_STATES + ")");
+ args.put(EmailFilter.PROPERTY_WAITING_STATES, waitingStates);
+
+ if (waitingStates.contains(null)) {
+ query.append(" OR E." + Email.PROPERTY_WAITING_STATE + " IS NULL");
+ }
+ query.append(")");
+ }
+
+ return query.toString();
+ }
+
+ /**
* Retounre le nombre d'email par dossier.
*
* @return le nombre d'email par dossier
@@ -564,4 +909,53 @@
List<O> result = Lists.newArrayList(transformed);
return result;
}
+
+ public Set<Object> getDistinctValues(MailFolder folder, String property, String condition) {
+ Map<String, Object> args = new HashMap<>();
+ String folderAndStatusCondition = " WHERE email." + Email.PROPERTY_MAIL_FOLDER + " = :folder" +
+ " AND email." + Email.PROPERTY_DEMAND_STATUS + " != :archiveStatus";
+ args.put("folder", folder);
+ args.put("archiveStatus", DemandStatus.ARCHIVED);
+
+ String query = "SELECT DISTINCT " + property +
+ " FROM " + Email.class.getName() + " AS email" +
+ " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client" +
+ " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" + folderAndStatusCondition;
+
+ if (StringUtils.isNotBlank(condition)) {
+ query += " AND " + condition;
+ }
+
+ List<Object> queryResults = findAll(query, args);
+ Set<Object> result = new HashSet<>(queryResults);
+
+ // check if the property is sometimes null
+ if (property.startsWith("rangeRow")) {
+ query = "FROM " + Email.class.getName() + " AS email" +
+ " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" +
+ folderAndStatusCondition + " AND rangeRow IS NULL";
+
+ queryResults = findAll(query, args);
+ if (!queryResults.isEmpty()) {
+ result.add(null);
+ }
+ }
+
+ if (!result.contains(null)) {
+ query = "FROM " + Email.class.getName() + " AS email" +
+ " LEFT OUTER JOIN email." + Email.PROPERTY_CLIENT + " AS client" +
+ " LEFT OUTER JOIN email." + Email.PROPERTY_RANGE_ROW + " AS rangeRow" +
+ folderAndStatusCondition + " AND " + property + " IS NULL";
+
+ if (StringUtils.isNotBlank(condition)) {
+ query += " AND " + condition;
+ }
+ queryResults = findAll(query, args);
+ if (!queryResults.isEmpty()) {
+ result.add(null);
+ }
+ }
+
+ return result;
+ }
}
Copied: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java (from rev 618, trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EmailFilter.java)
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java (rev 0)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -0,0 +1,435 @@
+package com.franciaflex.faxtomail.persistence.entities;
+
+/*
+ * #%L
+ * FaxToMail :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Franciaflex, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import java.util.Date;
+import java.util.List;
+
+import org.jdesktop.beans.AbstractSerializableBean;
+
+public class SearchFilter extends AbstractSerializableBean {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 7039570396201559352L;
+
+ public static final String PROPERTY_SENDER = "sender";
+ public static final String PROPERTY_DEMAND_OBJECT = "demandObject";
+ public static final String PROPERTY_MESSAGE = "message";
+ public static final String PROPERTY_BODY = "body";
+ public static final String PROPERTY_WAITING_STATES = "WaitingStates";
+ public static final String PROPERTY_GAMME = "gamme";
+ public static final String PROPERTY_TAKEN_BY = "takenBy";
+ public static final String PROPERTY_PRIORITY = "priority";
+ public static final String PROPERTY_DEMAND_TYPE = "demandType";
+ public static final String PROPERTY_DEMAND_STATUS = "demandStatus";
+ public static final String PROPERTY_EDI_CODE_NUMBER = "ediCodeNumber";
+ public static final String PROPERTY_PROJECT_REFERENCE = "projectReference";
+ public static final String PROPERTY_LOCAL_REFERENCE = "localReference";
+ public static final String PROPERTY_MODIFIED_BY = "modifiedBy";
+ public static final String PROPERTY_PRINTING_BY = "printingBy";
+ public static final String PROPERTY_ARCHIVED_BY = "archivedBy";
+ public static final String PROPERTY_TRANSFER_BY = "transferBy";
+ public static final String PROPERTY_REPLY_BY = "replyBy";
+ public static final String PROPERTY_MIN_MODIFICATION_DATE = "minModificationDate";
+ public static final String PROPERTY_MAX_MODIFICATION_DATE = "maxModificationDate";
+ public static final String PROPERTY_MIN_RECEPTION_DATE = "minReceptionDate";
+ public static final String PROPERTY_MAX_RECEPTION_DATE = "maxReceptionDate";
+ public static final String PROPERTY_MIN_PRINTING_DATE = "minPrintingDate";
+ public static final String PROPERTY_MAX_PRINTING_DATE = "maxPrintingDate";
+ public static final String PROPERTY_MIN_ARCHIVED_DATE = "minArchivedDate";
+ public static final String PROPERTY_MAX_ARCHIVED_DATE = "maxArchivedDate";
+ public static final String PROPERTY_MIN_TRANSFER_DATE = "minTransferDate";
+ public static final String PROPERTY_MAX_TRANSFER_DATE = "maxTransferDate";
+ public static final String PROPERTY_MIN_REPLY_DATE = "minReplyDate";
+ public static final String PROPERTY_MAX_REPLY_DATE = "maxReplyDate";
+ public static final String PROPERTY_CLIENT_CODE = "clientCode";
+
+ protected String sender;
+
+ protected String demandObject;
+
+ protected String message;
+
+ protected String body;
+
+ protected List<WaitingState> waitingStates;
+
+ protected List<Priority> priority;
+
+ protected List<DemandType> demandType;
+
+ protected List<DemandStatus> demandStatus;
+
+ protected List<Range> gamme;
+
+ protected String ediCodeNumber;
+
+ protected String projectReference;
+
+ protected String localReference;
+
+ protected FaxToMailUser takenBy;
+
+ protected FaxToMailUser modifiedBy;
+
+ protected FaxToMailUser printingBy;
+
+ protected FaxToMailUser transferBy;
+
+ protected FaxToMailUser archivedBy;
+
+ protected FaxToMailUser replyBy;
+
+ protected Date minModificationDate;
+
+ protected Date maxModificationDate;
+
+ protected Date minReceptionDate;
+
+ protected Date maxReceptionDate;
+
+ protected Date minPrintingDate;
+
+ protected Date maxPrintingDate;
+
+ protected Date minTransferDate;
+
+ protected Date maxTransferDate;
+
+ protected Date minArchivedDate;
+
+ protected Date maxArchivedDate;
+
+ protected Date minReplyDate;
+
+ protected Date maxReplyDate;
+
+ protected String clientCode;
+
+ public String getSender() {
+ return sender;
+ }
+
+ public void setSender(String sender) {
+ String oldValue = this.sender;
+ this.sender = sender;
+ firePropertyChange(PROPERTY_SENDER, oldValue, sender);
+ }
+
+ public String getDemandObject() {
+ return demandObject;
+ }
+
+ public void setDemandObject(String demandObject) {
+ String oldValue = this.demandObject;
+ this.demandObject = demandObject;
+ firePropertyChange(PROPERTY_DEMAND_OBJECT, oldValue, demandObject);
+ }
+
+ public List<WaitingState> getWaitingStates() {
+ return waitingStates;
+ }
+
+ public void setWaitingStates(List<WaitingState> waitingStates) {
+ this.waitingStates = waitingStates;
+ firePropertyChange(PROPERTY_WAITING_STATES, null, waitingStates);
+ }
+
+ public FaxToMailUser getTakenBy() {
+ return takenBy;
+ }
+
+ public void setTakenBy(FaxToMailUser takenBy) {
+ FaxToMailUser oldValue = this.takenBy;
+ this.takenBy = takenBy;
+ firePropertyChange(PROPERTY_TAKEN_BY, oldValue, takenBy);
+ }
+
+ public List<Priority> getPriority() {
+ return priority;
+ }
+
+ public void setPriority(List<Priority> priority) {
+ this.priority = priority;
+ firePropertyChange(PROPERTY_PRIORITY, null, priority);
+ }
+
+ public List<DemandType> getDemandType() {
+ return demandType;
+ }
+
+ public void setDemandType(List<DemandType> demandType) {
+ this.demandType = demandType;
+ firePropertyChange(PROPERTY_DEMAND_TYPE, null, demandType);
+ }
+
+ public List<DemandStatus> getDemandStatus() {
+ return demandStatus;
+ }
+
+ public void setDemandStatus(List<DemandStatus> demandStatus) {
+ this.demandStatus = demandStatus;
+ firePropertyChange(PROPERTY_DEMAND_STATUS, null, demandStatus);
+ }
+
+ public String getEdiCodeNumber() {
+ return ediCodeNumber;
+ }
+
+ public void setEdiCodeNumber(String ediCodeNumber) {
+ String oldValue = this.ediCodeNumber;
+ this.ediCodeNumber = ediCodeNumber;
+ firePropertyChange(PROPERTY_EDI_CODE_NUMBER, oldValue, ediCodeNumber);
+ }
+
+ public String getProjectReference() {
+ return projectReference;
+ }
+
+ public void setProjectReference(String projectReference) {
+ String oldValue = this.projectReference;
+ this.projectReference = projectReference;
+ firePropertyChange(PROPERTY_PROJECT_REFERENCE, oldValue, projectReference);
+ }
+
+ public FaxToMailUser getModifiedBy() {
+ return modifiedBy;
+ }
+
+ public void setModifiedBy(FaxToMailUser modifiedBy) {
+ FaxToMailUser oldValue = modifiedBy;
+ this.modifiedBy = modifiedBy;
+ firePropertyChange(PROPERTY_MODIFIED_BY, oldValue, modifiedBy);
+ }
+
+ public Date getMinModificationDate() {
+ return minModificationDate;
+ }
+
+ public void setMinModificationDate(Date minModificationDate) {
+ Date oldValue = this.minModificationDate;
+ this.minModificationDate = minModificationDate;
+ firePropertyChange(PROPERTY_MIN_MODIFICATION_DATE, oldValue, minModificationDate);
+ }
+
+ public Date getMaxModificationDate() {
+ return maxModificationDate;
+ }
+
+ public void setMaxModificationDate(Date maxModificationDate) {
+ Date oldValue = this.maxModificationDate;
+ this.maxModificationDate = maxModificationDate;
+ firePropertyChange(PROPERTY_MAX_MODIFICATION_DATE, oldValue, maxModificationDate);
+ }
+
+ public Date getMinReceptionDate() {
+ return minReceptionDate;
+ }
+
+ public void setMinReceptionDate(Date minReceptionDate) {
+ Date oldValue = this.minReceptionDate;
+ this.minReceptionDate = minReceptionDate;
+ firePropertyChange(PROPERTY_MIN_RECEPTION_DATE, oldValue, minReceptionDate);
+ }
+
+ public Date getMaxReceptionDate() {
+ return maxReceptionDate;
+ }
+
+ public void setMaxReceptionDate(Date maxReceptionDate) {
+ Date oldValue = this.maxReceptionDate;
+ this.maxReceptionDate = maxReceptionDate;
+ firePropertyChange(PROPERTY_MAX_RECEPTION_DATE, oldValue, maxReceptionDate);
+ }
+
+ public Date getMinPrintingDate() {
+ return minPrintingDate;
+ }
+
+ public void setMinPrintingDate(Date minPrintingDate) {
+ Date oldValue = this.minPrintingDate;
+ this.minPrintingDate = minPrintingDate;
+ firePropertyChange(PROPERTY_MIN_PRINTING_DATE, oldValue, minPrintingDate);
+ }
+
+ public Date getMaxPrintingDate() {
+ return maxPrintingDate;
+ }
+
+ public void setMaxPrintingDate(Date maxPrintingDate) {
+ Date oldValue = this.maxPrintingDate;
+ this.maxPrintingDate = maxPrintingDate;
+ firePropertyChange(PROPERTY_MAX_PRINTING_DATE, oldValue, maxPrintingDate);
+ }
+
+ public String getClientCode() {
+ return clientCode;
+ }
+
+ public void setClientCode(String clientCode) {
+ String oldValue = this.clientCode;
+ this.clientCode = clientCode;
+ firePropertyChange(PROPERTY_CLIENT_CODE, oldValue, clientCode);
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ String oldValue = this.message;
+ this.message = message;
+ firePropertyChange(PROPERTY_MESSAGE, oldValue, message);
+ }
+
+ public String getBody() {
+ return body;
+ }
+
+ public void setBody(String body) {
+ String oldValue = this.body;
+ this.body = body;
+ firePropertyChange(PROPERTY_BODY, oldValue, body);
+ }
+
+ public List<Range> getGamme() {
+ return gamme;
+ }
+
+ public void setGamme(List<Range> gamme) {
+ this.gamme = gamme;
+ firePropertyChange(PROPERTY_GAMME, null, gamme);
+ }
+
+ public String getLocalReference() {
+ return localReference;
+ }
+
+ public void setLocalReference(String localReference) {
+ String oldValue = this.localReference;
+ this.localReference = localReference;
+ firePropertyChange(PROPERTY_LOCAL_REFERENCE, oldValue, localReference);
+ }
+
+ public FaxToMailUser getPrintingBy() {
+ return printingBy;
+ }
+
+ public void setPrintingBy(FaxToMailUser printingBy) {
+ FaxToMailUser oldValue = this.printingBy;
+ this.printingBy = printingBy;
+ firePropertyChange(PROPERTY_PRINTING_BY, oldValue, printingBy);
+ }
+
+ public FaxToMailUser getTransferBy() {
+ return transferBy;
+ }
+
+ public void setTransferBy(FaxToMailUser transferBy) {
+ FaxToMailUser oldValue = this.transferBy;
+ this.transferBy = transferBy;
+ firePropertyChange(PROPERTY_TRANSFER_BY, oldValue, transferBy);
+ }
+
+ public FaxToMailUser getArchivedBy() {
+ return archivedBy;
+ }
+
+ public void setArchivedBy(FaxToMailUser archivedBy) {
+ FaxToMailUser oldValue = this.archivedBy;
+ this.archivedBy = archivedBy;
+ firePropertyChange(PROPERTY_ARCHIVED_BY, oldValue, archivedBy);
+ }
+
+ public FaxToMailUser getReplyBy() {
+ return replyBy;
+ }
+
+ public void setReplyBy(FaxToMailUser replyBy) {
+ FaxToMailUser oldValue = this.replyBy;
+ this.replyBy = replyBy;
+ firePropertyChange(PROPERTY_REPLY_BY, oldValue, replyBy);
+ }
+
+ public Date getMinTransferDate() {
+ return minTransferDate;
+ }
+
+ public void setMinTransferDate(Date minTransferDate) {
+ Date oldValue = this.minTransferDate;
+ this.minTransferDate = minTransferDate;
+ firePropertyChange(PROPERTY_MIN_TRANSFER_DATE, oldValue, minTransferDate);
+ }
+
+ public Date getMaxTransferDate() {
+ return maxTransferDate;
+ }
+
+ public void setMaxTransferDate(Date maxTransferDate) {
+ Date oldValue = this.maxTransferDate;
+ this.maxTransferDate = maxTransferDate;
+ firePropertyChange(PROPERTY_MAX_TRANSFER_DATE, oldValue, maxTransferDate);
+ }
+
+ public Date getMinArchivedDate() {
+ return minArchivedDate;
+ }
+
+ public void setMinArchivedDate(Date minArchivedDate) {
+ Date oldValue = this.minArchivedDate;
+ this.minArchivedDate = minArchivedDate;
+ firePropertyChange(PROPERTY_MIN_ARCHIVED_DATE, oldValue, minArchivedDate);
+ }
+
+ public Date getMaxArchivedDate() {
+ return maxArchivedDate;
+ }
+
+ public void setMaxArchivedDate(Date maxArchivedDate) {
+ Date oldValue = this.maxArchivedDate;
+ this.maxArchivedDate = maxArchivedDate;
+ firePropertyChange(PROPERTY_MAX_ARCHIVED_DATE, oldValue, maxArchivedDate);
+ }
+
+ public Date getMinReplyDate() {
+ return minReplyDate;
+ }
+
+ public void setMinReplyDate(Date minReplyDate) {
+ Date oldValue = this.minReplyDate;
+ this.minReplyDate = minReplyDate;
+ firePropertyChange(PROPERTY_MIN_REPLY_DATE, oldValue, minReplyDate);
+ }
+
+ public Date getMaxReplyDate() {
+ return maxReplyDate;
+ }
+
+ public void setMaxReplyDate(Date maxReplyDate) {
+ Date oldValue = this.maxReplyDate;
+ this.maxReplyDate = maxReplyDate;
+ firePropertyChange(PROPERTY_MAX_REPLY_DATE, oldValue, maxReplyDate);
+ }
+}
Property changes on: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/SearchFilter.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -31,9 +31,12 @@
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.mail.MessagingException;
+import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
+import com.franciaflex.faxtomail.persistence.entities.SearchFilter;
import org.apache.commons.mail.EmailException;
import org.nuiton.util.pagination.PaginationParameter;
import org.nuiton.util.pagination.PaginationResult;
@@ -41,7 +44,6 @@
import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.AttachmentFile;
import com.franciaflex.faxtomail.persistence.entities.Email;
-import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.HistoryType;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
@@ -71,8 +73,10 @@
void transmitPendingDemandsToEdi();
- PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, PaginationParameter page);
+ Set<Object> getDistinctValues(MailFolder folder, String property, String condition);
+ PaginationResult<Email> getEmailForFolder(MailFolder folder, FaxToMailUser currentUser, EmailFilter filter, PaginationParameter page);
+
List<MailFolder> getChildrenRecursively(MailFolder folder);
Map<Range, Long[]> computeQuantitiesByRange(MailFolder rootFolder);
@@ -85,7 +89,7 @@
void unlockEmail(String emailId);
- PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination);
+ PaginationResult<Email> search(SearchFilter emailFilter, FaxToMailUser user, PaginationParameter pagination);
Email groupEmails(String email1Id, String email2Id, FaxToMailUser user);
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-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -613,6 +613,16 @@
dao.update(email);
}
+ @Override
+ public Set<Object> getDistinctValues(MailFolder folder, String property, String condition) {
+ Set<Object> result = null;
+ if (folder.isFolderReadable()) {
+ EmailTopiaDao dao = getPersistenceContext().getEmailDao();
+ result = dao.getDistinctValues(folder, property, condition);
+ }
+ return result;
+ }
+
/**
* Recupère les demandes d'un dossier visible par un utilisateur.
*
@@ -626,67 +636,77 @@
@Override
public PaginationResult<Email> getEmailForFolder(MailFolder folder,
FaxToMailUser currentUser,
+ EmailFilter filter,
PaginationParameter page) {
// perform request or not depending on rigths
PaginationResult<Email> result;
if (folder.isFolderReadable()) {
EmailTopiaDao dao = getPersistenceContext().getEmailDao();
-
- if (Boolean.getBoolean("faxtomail.fullfetch")) {
- result = dao.forMailFolderEquals(folder)
- .addNull(Email.PROPERTY_ARCHIVE_DATE)
- .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED)
- .addAllFetches(Email.PROPERTY_PRIORITY,
- Email.PROPERTY_DEMAND_TYPE,
- Email.PROPERTY_CLIENT,
- Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
- Email.PROPERTY_WAITING_STATE,
- Email.PROPERTY_TAKEN_BY,
- Email.PROPERTY_REPLIES,
- Email.PROPERTY_ATTACHMENT
- //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER
- ).findPage(page);
- } else {
- result = dao.forMailFolderEquals(folder)
- .addNull(Email.PROPERTY_ARCHIVE_DATE)
- .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED)
- .addAllFetches(Email.PROPERTY_PRIORITY,
- Email.PROPERTY_DEMAND_TYPE,
- Email.PROPERTY_CLIENT,
- //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
- Email.PROPERTY_WAITING_STATE,
- Email.PROPERTY_TAKEN_BY
- //Email.PROPERTY_REPLIES,
- //Email.PROPERTY_ATTACHMENT,
- //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER
- ).findPage(page);
-
-
- // manual fetch
- for (Email email : result.getElements()) {
- //Hibernate.initialize(email.getPriority());
- //Hibernate.initialize(email.getDemandType());
- //Hibernate.initialize(email.getClient());
- List<RangeRow> rangeRows = email.getRangeRow();
- if (rangeRows != null) {
- for (RangeRow rangeRow : rangeRows) {
- Hibernate.initialize(rangeRow.getRange());
- }
- }
- //Hibernate.initialize(email.getWaitingState());
- //Hibernate.initialize(email.getTakenBy());
- Hibernate.initialize(email.getReplies());
- Hibernate.initialize(email.getAttachment());
- /*List<History> histories = email.getHistory();
- if (histories != null) {
- for (History history : histories) {
- Hibernate.initialize(history.getFaxToMailUser());
- }
- }*/
- }
- }
+ result = dao.getEmailForFolder(filter, folder, page);
+// TopiaQueryBuilderAddCriteriaOrRunQueryStep<Email> builderAddCriteriaOrRunQueryStep =
+// dao.forMailFolderEquals(folder)
+// .addNull(Email.PROPERTY_ARCHIVE_DATE)
+// .addNotEquals(Email.PROPERTY_DEMAND_STATUS, DemandStatus.ARCHIVED);
+//
+// if (CollectionUtils.isNotEmpty(filter.getDemandStatus())) {
+// builderAddCriteriaOrRunQueryStep.addIn(Email.PROPERTY_DEMAND_STATUS, filter.getDemandStatus());
+// }
+// if (CollectionUtils.isNotEmpty(filter.getSenders())) {
+// builderAddCriteriaOrRunQueryStep.addIn(Email.PROPERTY_SENDER, filter.getSenders());
+// }
+//
+// if (Boolean.getBoolean("faxtomail.fullfetch")) {
+// result = builderAddCriteriaOrRunQueryStep
+// .addAllFetches(Email.PROPERTY_PRIORITY,
+// Email.PROPERTY_DEMAND_TYPE,
+// Email.PROPERTY_CLIENT,
+// Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
+// Email.PROPERTY_WAITING_STATE,
+// Email.PROPERTY_TAKEN_BY,
+// Email.PROPERTY_REPLIES,
+// Email.PROPERTY_ATTACHMENT
+// //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER
+// ).findPage(page);
+// } else {
+// result = builderAddCriteriaOrRunQueryStep
+// .addAllFetches(Email.PROPERTY_PRIORITY,
+// Email.PROPERTY_DEMAND_TYPE,
+// Email.PROPERTY_CLIENT,
+// //Email.PROPERTY_RANGE_ROW + "." + RangeRow.PROPERTY_RANGE,
+// Email.PROPERTY_WAITING_STATE,
+// Email.PROPERTY_TAKEN_BY
+// //Email.PROPERTY_REPLIES,
+// //Email.PROPERTY_ATTACHMENT,
+// //Email.PROPERTY_HISTORY + "." + History.PROPERTY_FAX_TO_MAIL_USER
+// ).findPage(page);
+//
+//
+// // manual fetch
+// for (Email email : result.getElements()) {
+// //Hibernate.initialize(email.getPriority());
+// //Hibernate.initialize(email.getDemandType());
+// //Hibernate.initialize(email.getClient());
+// List<RangeRow> rangeRows = email.getRangeRow();
+// if (rangeRows != null) {
+// for (RangeRow rangeRow : rangeRows) {
+// Hibernate.initialize(rangeRow.getRange());
+// }
+// }
+// //Hibernate.initialize(email.getWaitingState());
+// //Hibernate.initialize(email.getTakenBy());
+// Hibernate.initialize(email.getReplies());
+// Hibernate.initialize(email.getAttachment());
+// /*List<History> histories = email.getHistory();
+// if (histories != null) {
+// for (History history : histories) {
+// Hibernate.initialize(history.getFaxToMailUser());
+// }
+// }*/
+// }
+// }
+
} else {
List<Email> elements = Collections.emptyList();
result = PaginationResult.of(elements, 0, page);
@@ -897,7 +917,7 @@
}
@Override
- public PaginationResult<Email> search(EmailFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) {
+ public PaginationResult<Email> search(SearchFilter emailFilter, FaxToMailUser user, PaginationParameter pagination) {
// compute rigths
MailFolderTopiaDao mailFolderDao = getPersistenceContext().getMailFolderDao();
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -28,12 +28,12 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
+import com.franciaflex.faxtomail.persistence.entities.SearchFilter;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -44,7 +44,6 @@
import com.franciaflex.faxtomail.persistence.entities.AttachmentFile;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.Email;
-import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.Range;
@@ -78,7 +77,7 @@
PaginationParameter paginationParameter = PaginationParameter.of(0, 50);
// empty filter
- EmailFilter filter = new EmailFilter();
+ SearchFilter filter = new SearchFilter();
PaginationResult<Email> emails = service.search(filter, getCurrentUser(), paginationParameter);
Assert.assertEquals(10, emails.getCount());
@@ -132,7 +131,7 @@
// select a random test email
PaginationParameter paginationParameter = PaginationParameter.of(0, 1);
- EmailFilter filter = new EmailFilter();
+ SearchFilter filter = new SearchFilter();
PaginationResult<Email> emails = service.search(filter, getCurrentUser(), paginationParameter);
Email testEmail = emails.getElements().get(0);
@@ -148,7 +147,7 @@
public void testEmailDetails() {
// select a random test email
PaginationParameter paginationParameter = PaginationParameter.of(0, 1);
- EmailFilter filter = new EmailFilter();
+ SearchFilter filter = new SearchFilter();
PaginationResult<Email> emails = service.search(filter, getCurrentUser(), paginationParameter);
Email testEmail = emails.getElements().get(0);
@@ -169,11 +168,11 @@
// FIXME required for getEmailForFolder security check
cyril.setFolderReadable(true);
- PaginationResult<Email> page1 = service.getEmailForFolder(cyril, getCurrentUser(), page);
+ PaginationResult<Email> page1 = service.getEmailForFolder(cyril, getCurrentUser(), new EmailFilter(), page);
Assert.assertEquals(10, page1.getCount());
Assert.assertEquals(7, page1.getElements().size());
- PaginationResult<Email> page2 = service.getEmailForFolder(cyril, getCurrentUser(), page1.getNextPage());
+ PaginationResult<Email> page2 = service.getEmailForFolder(cyril, getCurrentUser(), new EmailFilter(), page1.getNextPage());
Assert.assertEquals(10, page2.getCount());
Assert.assertEquals(3, page2.getElements().size());
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-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/LoadFolderEmailsAction.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -32,14 +32,16 @@
import java.util.List;
import java.util.Map;
-import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport;
import com.franciaflex.faxtomail.persistence.entities.WaitingState;
import com.franciaflex.faxtomail.persistence.entities.MailField;
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;
@@ -72,7 +74,7 @@
DemandeListUIModel model = getModel();
MailFolder folder = model.getSelectedFolder();
- JXTable dataTable = getUI().getDataTable();
+ final JXTable dataTable = getUI().getDataTable();
setActionDescription(t("faxtomail.action.loadFolderEmails.tip", folder.getName()));
@@ -84,7 +86,7 @@
getContext().getSwingSession().add(dataTable, true);
// fixes #5528 filtre sur les colonnes : il manque l'icone qui indique que la colonne est filtrée
- TableRowFilterSupport.forFilter(handler.getTableFilter()).searchable(true).useTableRenderers(true).apply();
+ handler.initTableFilter();
return true;
}
@@ -106,6 +108,7 @@
PaginationResult<Email> paginationResult = getContext().newServiceContext().getEmailService()
.getEmailForFolder(folder,
currentUser,
+ getModel().getEmailFilter(),
model.getPaginationParameter());
List<Email> emails = paginationResult.getElements();
if (log.isDebugEnabled()) {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java 2014-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchAction.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -29,11 +29,11 @@
import java.util.ArrayList;
import java.util.List;
+import com.franciaflex.faxtomail.persistence.entities.SearchFilter;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
import org.nuiton.util.pagination.PaginationResult;
import com.franciaflex.faxtomail.persistence.entities.Email;
-import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUI;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchUIHandler;
@@ -55,10 +55,10 @@
SearchUIModel model = getModel();
getContext().setSearch(model);
- EmailFilter emailFilter = model.toEntity();
+ SearchFilter searchFilter = model.toEntity();
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- PaginationResult<Email> paginationResult = serviceContext.getEmailService().search(emailFilter,
+ PaginationResult<Email> paginationResult = serviceContext.getEmailService().search(searchFilter,
getContext().getCurrentUser(), getModel().getPaginationParameter());
List<Email> emails = paginationResult.getElements();
List<DemandeUIModel> result = new ArrayList<>();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java 2014-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SearchToGroupAction.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -25,7 +25,7 @@
*/
import com.franciaflex.faxtomail.persistence.entities.Email;
-import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
+import com.franciaflex.faxtomail.persistence.entities.SearchFilter;
import com.franciaflex.faxtomail.services.FaxToMailServiceContext;
import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel;
import com.franciaflex.faxtomail.ui.swing.content.search.SearchToGroupUI;
@@ -55,9 +55,9 @@
SearchUIModel model = getModel();
getContext().setSearch(model);
- EmailFilter emailFilter = model.toEntity();
+ SearchFilter searchFilter = model.toEntity();
FaxToMailServiceContext serviceContext = getContext().newServiceContext();
- PaginationResult<Email> paginationResult = serviceContext.getEmailService().search(emailFilter,
+ PaginationResult<Email> paginationResult = serviceContext.getEmailService().search(searchFilter,
getContext().getCurrentUser(), getModel().getPaginationParameter());
List<Email> emails = paginationResult.getElements();
Added: 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 (rev 0)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListTableFilter.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -0,0 +1,258 @@
+package com.franciaflex.faxtomail.ui.swing.content.demande;
+
+import com.franciaflex.faxtomail.persistence.entities.Client;
+import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
+import com.franciaflex.faxtomail.persistence.entities.DemandType;
+import com.franciaflex.faxtomail.persistence.entities.Email;
+import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
+import com.franciaflex.faxtomail.persistence.entities.MailFolder;
+import com.franciaflex.faxtomail.persistence.entities.Priority;
+import com.franciaflex.faxtomail.persistence.entities.Range;
+import com.franciaflex.faxtomail.persistence.entities.RangeRow;
+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.LoadFolderEmailsAction;
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
+import jaxx.runtime.JAXXUtil;
+import jaxx.runtime.swing.table.filter.AbstractTableFilter;
+import org.apache.commons.lang3.time.DateUtils;
+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.jaxx.application.swing.table.ColumnIdentifier;
+
+import javax.swing.table.TableModel;
+import java.text.DateFormat;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Kevin Morin (Code Lutin)
+ * @since x.x
+ */
+public class DemandeListTableFilter extends AbstractTableFilter<JXTable> {
+
+ private static final Log log = LogFactory.getLog(DemandeListTableFilter.class);
+
+ protected DemandeListUIHandler handler;
+
+ public DemandeListTableFilter(JXTable table, DemandeListUIHandler handler) {
+ super(table);
+ this.handler = handler;
+ }
+
+ @Override
+ protected boolean execute(int col, Collection<Object> items) {
+ EmailFilter emailFilter = handler.getModel().getEmailFilter();
+ String property = ((ColumnIdentifier) getTable().getColumn(col).getIdentifier()).getPropertyName();
+ boolean filtered = isFiltered(col);
+
+ switch (property) {
+ case Email.PROPERTY_DEMAND_STATUS:
+ emailFilter.setDemandStatus(!filtered ? null : new HashSet<DemandStatus>((Collection)items));
+ break;
+
+ case Email.PROPERTY_RECEPTION_DATE:
+ emailFilter.setReceptionDates(!filtered ? null : new HashSet<Date>((Collection)items));
+ break;
+
+ case Email.PROPERTY_RECIPIENT:
+ emailFilter.setRecipients(!filtered ? null : new HashSet<String>((Collection)items));
+ break;
+
+ case Email.PROPERTY_SENDER:
+ emailFilter.setSenders(!filtered ? null : new HashSet<String>((Collection)items));
+ break;
+
+ case Email.PROPERTY_OBJECT:
+ emailFilter.setDemandObjects(!filtered ? null : new HashSet<String>((Collection)items));
+ break;
+
+ case DemandeUIModel.PROPERTY_CLIENT_CODE:
+ emailFilter.setClientCodes(!filtered ? null : new HashSet<String>((Collection)items));
+ break;
+
+ case DemandeUIModel.PROPERTY_CLIENT_BRAND:
+ emailFilter.setClientBrands(!filtered ? null : new HashSet<String>((Collection)items));
+ break;
+
+ case Email.PROPERTY_DEMAND_TYPE:
+ emailFilter.setDemandTypes(!filtered ? null : new HashSet<DemandType>((Collection)items));
+ break;
+
+ case Email.PROPERTY_EDI_ERROR:
+ emailFilter.setEdiCodeNumbers(!filtered ? null : new HashSet<String>((Collection)items));
+ break;
+
+ case Email.PROPERTY_WAITING_STATE:
+ emailFilter.setWaitingStates(!filtered ? null : new HashSet<WaitingState>((Collection) items));
+ break;
+
+ case Email.PROPERTY_TAKEN_BY:
+ emailFilter.setTakenBys(!filtered ? null : new HashSet<FaxToMailUser>((Collection) items));
+ break;
+
+ case Email.PROPERTY_PRIORITY:
+ emailFilter.setPriorities(!filtered ? null : new HashSet<Priority>((Collection) items));
+ break;
+
+ case Email.PROPERTY_PROJECT_REFERENCE:
+ emailFilter.setProjectReferences(!filtered ? null : new HashSet<String>((Collection) items));
+ break;
+
+ case Email.PROPERTY_COMPANY_REFERENCE:
+ emailFilter.setLocalReferences(!filtered ? null : new HashSet<String>((Collection) items));
+ break;
+
+ case DemandeUIModel.PROPERTY_REFERENCE:
+ emailFilter.setReferences(!filtered ? null : new HashSet<String>((Collection) items));
+ break;
+
+ case DemandeUIModel.PROPERTY_PF_NB:
+ emailFilter.setProductsRanges(!filtered ? null : new HashSet<Range>((Collection) items));
+ break;
+
+ case DemandeUIModel.PROPERTY_SAV_NB:
+ emailFilter.setSavRanges(!filtered ? null : new HashSet<Range>((Collection) items));
+ break;
+
+ case DemandeUIModel.PROPERTY_QUOTATION_NB:
+ emailFilter.setQuotationRanges(!filtered ? null : new HashSet<Range>((Collection) items));
+ break;
+
+ case Email.PROPERTY_LAST_ATTACHMENT_OPENER:
+ emailFilter.setLastAttachmentOpeners(!filtered ? null : new HashSet<FaxToMailUser>((Collection) items));
+ break;
+
+ case Email.PROPERTY_COMMENT:
+ emailFilter.setComments(!filtered ? null : new HashSet<String>((Collection) items));
+ break;
+ }
+
+ executeFilter();
+ return true;
+ }
+
+ @Override
+ public void modelChanged(TableModel model) {
+ fireFilterChange();
+ }
+
+ @Override
+ public Set<Object> distinctValuesForColumn(int i) {
+ MailFolder selectedFolder = handler.getModel().getSelectedFolder();
+ if (selectedFolder == null) {
+ return null;
+ }
+
+ JXTable dataTable = handler.getUI().getDataTable();
+ EmailService emailService = handler.getContext().newServiceContext().getEmailService();
+ String property = ((ColumnIdentifier) dataTable.getColumn(i).getIdentifier()).getPropertyName();
+
+ Set<Object> result = new HashSet<>();
+
+ String condition = null;
+ String[] properties;
+ switch (property) {
+ case DemandeUIModel.PROPERTY_CLIENT_CODE:
+ properties = new String[] { "client." + Client.PROPERTY_CODE };
+ break;
+
+ case DemandeUIModel.PROPERTY_CLIENT_BRAND:
+ properties = new String[] { "client." + Client.PROPERTY_BRAND };
+ break;
+
+ case DemandeUIModel.PROPERTY_REFERENCE:
+ properties = new String[] { "email." + Email.PROPERTY_COMPANY_REFERENCE,
+ "rangeRow." + RangeRow.PROPERTY_COMMAND_NUMBER };
+ break;
+
+ case DemandeUIModel.PROPERTY_PF_NB:
+ condition = "rangeRow." + RangeRow.PROPERTY_PRODUCT_QUANTITY + " > 0";
+ properties = new String[] { "rangeRow." + RangeRow.PROPERTY_RANGE };
+ break;
+
+ case DemandeUIModel.PROPERTY_SAV_NB:
+ condition = "rangeRow." + RangeRow.PROPERTY_SAV_QUANTITY + " > 0";
+ properties = new String[] { "rangeRow." + RangeRow.PROPERTY_RANGE };
+ break;
+
+ case DemandeUIModel.PROPERTY_QUOTATION_NB:
+ condition = "rangeRow." + RangeRow.PROPERTY_QUOTATION_QUANTITY + " > 0";
+ properties = new String[] { "rangeRow." + RangeRow.PROPERTY_RANGE };
+ break;
+
+ case Email.PROPERTY_ATTACHMENT:
+ case Email.PROPERTY_REPLIES:
+ return null;
+
+ default:
+ properties = new String[] { "email." + property };
+ }
+
+ for (String prop : properties) {
+ result.addAll(emailService.getDistinctValues(selectedFolder,
+ prop,
+ condition));
+ }
+
+ if (Email.PROPERTY_RECEPTION_DATE.equals(property)) {
+ Set<Object> filteredDates = new HashSet<>();
+ log.info("result size " + result.size() + " " + result);
+ for (Object o : result) {
+ Date date = (Date) o;
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(date);
+ cal.set(Calendar.SECOND, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ boolean add = filteredDates.add(cal.getTime());
+ }
+ result = new HashSet<Object>(filteredDates);
+ }
+
+ return result;
+ }
+
+ @Override
+ public String toString(Object obj) {
+ String s = null;
+ if (obj != null) {
+ Decorator<?> decorator = handler.getDecorator(obj.getClass(), null);
+ if (decorator != null) {
+ s = decorator.toString(obj);
+ }
+ }
+ if (s == null) {
+ s = JAXXUtil.getStringValue(obj);
+ }
+ return s;
+ }
+
+ @Override
+ public void clear() {
+ super.clear();
+ handler.getModel().getEmailFilter().clear();
+ executeFilter();
+ }
+
+ protected void executeFilter() {
+ FaxToMailUIContext context = handler.getContext();
+ LoadFolderEmailsAction loadFolderEmailsAction =
+ context.getActionFactory().createLogicAction(handler, LoadFolderEmailsAction.class);
+
+ if (context.isActionInProgress(null)) {
+ context.getActionEngine().runInternalAction(loadFolderEmailsAction);
+ } else {
+ context.getActionEngine().runAction(loadFolderEmailsAction);
+ }
+ }
+
+}
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-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -38,10 +38,10 @@
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.swing.JComponent;
import javax.swing.JPopupMenu;
-import javax.swing.JTable;
import javax.swing.JTree;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
@@ -49,16 +49,19 @@
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
-import javax.swing.table.TableModel;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
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.services.service.EmailService;
import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.OpenMailFolderChooserFromListAction;
import jaxx.runtime.JAXXUtil;
+import jaxx.runtime.swing.table.filter.TableFilter;
+import jaxx.runtime.swing.table.filter.TableRowFilterSupport;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.collections4.CollectionUtils;
@@ -68,13 +71,11 @@
import org.jdesktop.swingx.decorator.ColorHighlighter;
import org.jdesktop.swingx.decorator.ComponentAdapter;
import org.jdesktop.swingx.decorator.HighlightPredicate;
+import org.nuiton.decorator.Decorator;
import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel;
+import org.nuiton.jaxx.application.swing.table.ColumnIdentifier;
import org.nuiton.jaxx.application.swing.util.CloseableUI;
-import com.ezware.oxbow.swingbits.table.filter.DistinctColumnItem;
-import com.ezware.oxbow.swingbits.table.filter.ITableFilter;
-import com.ezware.oxbow.swingbits.table.filter.JTableFilter;
-import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport;
import com.franciaflex.faxtomail.persistence.entities.Attachment;
import com.franciaflex.faxtomail.persistence.entities.AttachmentFile;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
@@ -112,9 +113,9 @@
protected Configuration config;
- protected ITableFilter<JTable> tableFilter;
+ protected TableFilter<JXTable> tableFilter;
- public ITableFilter<JTable> getTableFilter() {
+ public TableFilter<JXTable> getTableFilter() {
return tableFilter;
}
@@ -166,30 +167,10 @@
initDemandeTable(dataTable, false);
- tableFilter = new JTableFilter(dataTable) {
+ tableFilter = new DemandeListTableFilter(dataTable, this);
- @Override
- protected boolean execute(int col, Collection<DistinctColumnItem> items) {
- boolean b = super.execute(col, items);
- List<DemandeUIModel> filteredEmails = new ArrayList<DemandeUIModel>();
- AbstractApplicationTableModel<DemandeUIModel> dataTableModel = (AbstractApplicationTableModel<DemandeUIModel>) dataTable.getModel();
- for (int i = 0; i < dataTable.getRowCount(); i++) {
- int modelIndex = dataTable.convertRowIndexToModel(i);
- filteredEmails.add(dataTableModel.getEntry(modelIndex));
- }
- getModel().setFilteredEmails(filteredEmails);
- return b;
- }
+ initTableFilter();
- @Override
- public void modelChanged(TableModel model) {
- // do nothing, fix NPE
- // see http://forge.codelutin.com/issues/5620
- }
-
- };
- TableRowFilterSupport.forFilter(tableFilter).searchable(true).useTableRenderers(true).apply();
-
dataTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
@@ -202,7 +183,7 @@
} else {
List<DemandeUIModel> selectedRows = new ArrayList<DemandeUIModel>();
AbstractApplicationTableModel<DemandeUIModel> dataTableModel = (AbstractApplicationTableModel<DemandeUIModel>) dataTable.getModel();
- for (int i = source.getMinSelectionIndex() ; i <= source.getMaxSelectionIndex() ; i++) {
+ for (int i = source.getMinSelectionIndex(); i <= source.getMaxSelectionIndex(); i++) {
if (source.isSelectedIndex(i)) {
selectedRows.add(dataTableModel.getEntry(i));
}
@@ -218,15 +199,7 @@
List<DemandeUIModel> emails = (List<DemandeUIModel>) evt.getNewValue();
AbstractApplicationTableModel<DemandeUIModel> dataTableModel = (AbstractApplicationTableModel<DemandeUIModel>) dataTable.getModel();
dataTableModel.setRows(emails);
- tableFilter.clear();
- }
- });
- model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_FILTERED_EMAILS, new PropertyChangeListener() {
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- List<DemandeUIModel> emails = (List<DemandeUIModel>) evt.getNewValue();
-
int quotationNb = 0;
int pfNb = 0;
int savNb = 0;
@@ -333,6 +306,26 @@
}
}
+ public void 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).apply();
+ }
+
protected void loadFolderDemands(MailFolder folder, Map<MailFolder, FolderTreeNode> nodesByFolder) {
// a new transaction has been opened by getContext().createNewTransaction();
// 10 line upper
@@ -352,16 +345,16 @@
model.setComputeQuantitiesByRangeEnabled(readable);
model.setNewDemandEnabled(readable && folder != null && Boolean.TRUE.equals(folder.getAllowCreateDemandIntoFolder()));
- FaxToMailUIContext context = getContext();
- LoadFolderEmailsAction loadFolderEmailsAction =
- context.getActionFactory().createLogicAction(this,
- LoadFolderEmailsAction.class);
-
- if (context.isActionInProgress(null)) {
- context.getActionEngine().runInternalAction(loadFolderEmailsAction);
- } else {
- context.getActionEngine().runAction(loadFolderEmailsAction);
- }
+// FaxToMailUIContext context = getContext();
+// LoadFolderEmailsAction loadFolderEmailsAction =
+// context.getActionFactory().createLogicAction(this, LoadFolderEmailsAction.class);
+//
+// if (context.isActionInProgress(null)) {
+// context.getActionEngine().runInternalAction(loadFolderEmailsAction);
+// } else {
+// context.getActionEngine().runAction(loadFolderEmailsAction);
+// }
+ tableFilter.clear();
}
public void goToNextPage() {
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIModel.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -25,6 +25,7 @@
import java.util.ArrayList;
import java.util.List;
+import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import org.jdesktop.beans.AbstractSerializableBean;
import org.nuiton.util.pagination.PaginationParameter;
import org.nuiton.util.pagination.PaginationResult;
@@ -42,7 +43,6 @@
public static final String PROPERTY_EMAILS = "emails";
public static final String PROPERTY_PAGINATION_PARAMETER = "paginationParameter";
public static final String PROPERTY_PAGINATION_RESULT = "paginationResult";
- public static final String PROPERTY_FILTERED_EMAILS = "filteredEmails";
public static final String PROPERTY_SELECTED_EMAILS = "selectedEmails";
public static final String PROPERTY_EMAIL_NB = "emailNb";
public static final String PROPERTY_SELECTED_FOLDER = "selectedFolder";
@@ -61,14 +61,14 @@
protected List<DemandeUIModel> emails;
+ protected EmailFilter emailFilter = new EmailFilter();
+
protected int resultPerPage = 50;
protected PaginationParameter paginationParameter = PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false);
protected PaginationResult<Email> paginationResult = PaginationResult.of(null, 0, paginationParameter);
- protected List<DemandeUIModel> filteredEmails;
-
/** Currently selected email in table. */
protected List<DemandeUIModel> selectedEmails;
@@ -108,10 +108,17 @@
public void setEmails(List<DemandeUIModel> emails) {
this.emails = emails;
- setFilteredEmails(emails);
firePropertyChange(PROPERTY_EMAILS, null, emails);
}
+ public EmailFilter getEmailFilter() {
+ return emailFilter;
+ }
+
+ public void setEmailFilter(EmailFilter emailFilter) {
+ this.emailFilter = emailFilter;
+ }
+
public void setPaginationParameter(PaginationParameter paginationParameter) {
PaginationParameter oldValue = this.paginationParameter;
this.paginationParameter = paginationParameter;
@@ -136,18 +143,6 @@
return paginationResult;
}
- public List<DemandeUIModel> getFilteredEmails() {
- return filteredEmails;
- }
-
- public void setFilteredEmails(List<DemandeUIModel> filteredEmails) {
- Object oldValue = getEmailNb();
- this.filteredEmails = filteredEmails;
- Object newValue = getEmailNb();
- firePropertyChange(PROPERTY_FILTERED_EMAILS, null, this.filteredEmails);
- firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue);
- }
-
public List<DemandeUIModel> getSelectedEmails() {
return selectedEmails;
}
@@ -159,7 +154,7 @@
}
public int getEmailNb() {
- return filteredEmails == null ? 0 : filteredEmails.size();
+ return emails == null ? 0 : emails.size();
}
public void addEmail(DemandeUIModel email) {
@@ -177,10 +172,8 @@
if (emails != null) {
Object oldValue = getEmailNb();
this.emails.removeAll(emails);
- this.filteredEmails.removeAll(emails);
Object newValue = getEmailNb();
firePropertyChange(PROPERTY_EMAILS, null, this.emails);
- firePropertyChange(PROPERTY_FILTERED_EMAILS, null, this.filteredEmails);
firePropertyChange(PROPERTY_EMAIL_NB, oldValue, newValue);
}
}
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-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchToGroupUIHandler.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -47,6 +47,7 @@
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
+import com.franciaflex.faxtomail.persistence.entities.SearchFilter;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
@@ -59,7 +60,6 @@
import org.nuiton.jaxx.application.swing.util.Cancelable;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
-import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.MailField;
import com.franciaflex.faxtomail.ui.swing.actions.GroupAction;
@@ -139,27 +139,27 @@
initCheckBoxComboBox(ui.getDocTypeComboBox(),
getContext().getDemandTypeCache(),
model.getDemandType(),
- EmailFilter.PROPERTY_DEMAND_TYPE,
+ SearchFilter.PROPERTY_DEMAND_TYPE,
true);
initCheckBoxComboBox(ui.getPriorityComboBox(),
getContext().getPriorityCache(),
model.getPriority(),
- EmailFilter.PROPERTY_PRIORITY,
+ SearchFilter.PROPERTY_PRIORITY,
true);
initCheckBoxComboBox(ui.getWaitingStateComboBox(),
getContext().getWaitingStateCache(),
model.getWaitingStates(),
- EmailFilter.PROPERTY_WAITING_STATES,
+ SearchFilter.PROPERTY_WAITING_STATES,
true);
initCheckBoxComboBox(ui.getStatusComboBox(),
Arrays.asList(DemandStatus.values()),
model.getDemandStatus(),
- EmailFilter.PROPERTY_DEMAND_STATUS,
+ SearchFilter.PROPERTY_DEMAND_STATUS,
false);
initCheckBoxComboBox(ui.getGammeComboBox(),
getContext().getRangeCache(),
model.getGamme(),
- EmailFilter.PROPERTY_GAMME,
+ SearchFilter.PROPERTY_GAMME,
false);
final JXTable dataTable = getUI().getDataTable();
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-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIHandler.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -36,6 +36,7 @@
import javax.swing.JComponent;
import javax.swing.ListSelectionModel;
+import com.franciaflex.faxtomail.persistence.entities.SearchFilter;
import jaxx.runtime.validator.swing.SwingValidator;
import org.apache.commons.logging.Log;
@@ -45,7 +46,6 @@
import org.nuiton.jaxx.application.swing.util.CloseableUI;
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
-import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.MailField;
import com.franciaflex.faxtomail.ui.swing.actions.SearchAction;
@@ -124,27 +124,27 @@
initCheckBoxComboBox(ui.getDocTypeComboBox(),
getContext().getDemandTypeCache(),
model.getDemandType(),
- EmailFilter.PROPERTY_DEMAND_TYPE,
+ SearchFilter.PROPERTY_DEMAND_TYPE,
true);
initCheckBoxComboBox(ui.getPriorityComboBox(),
getContext().getPriorityCache(),
model.getPriority(),
- EmailFilter.PROPERTY_PRIORITY,
+ SearchFilter.PROPERTY_PRIORITY,
true);
initCheckBoxComboBox(ui.getWaitingStateComboBox(),
getContext().getWaitingStateCache(),
model.getWaitingStates(),
- EmailFilter.PROPERTY_WAITING_STATES,
+ SearchFilter.PROPERTY_WAITING_STATES,
true);
initCheckBoxComboBox(ui.getStatusComboBox(),
Arrays.asList(DemandStatus.values()),
model.getDemandStatus(),
- EmailFilter.PROPERTY_DEMAND_STATUS,
+ SearchFilter.PROPERTY_DEMAND_STATUS,
false);
initCheckBoxComboBox(ui.getGammeComboBox(),
getContext().getRangeCache(),
model.getGamme(),
- EmailFilter.PROPERTY_GAMME,
+ SearchFilter.PROPERTY_GAMME,
false);
final JXTable dataTable = getUI().getDataTable();
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/search/SearchUIModel.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -25,6 +25,7 @@
import java.util.Date;
import java.util.List;
+import com.franciaflex.faxtomail.persistence.entities.SearchFilter;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
import org.nuiton.util.pagination.PaginationParameter;
@@ -33,7 +34,6 @@
import com.franciaflex.faxtomail.persistence.entities.DemandStatus;
import com.franciaflex.faxtomail.persistence.entities.DemandType;
import com.franciaflex.faxtomail.persistence.entities.Email;
-import com.franciaflex.faxtomail.persistence.entities.EmailFilter;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.Priority;
import com.franciaflex.faxtomail.persistence.entities.Range;
@@ -45,7 +45,7 @@
* @author kmorin - kmorin(a)codelutin.com
*
*/
-public class SearchUIModel extends AbstractFaxToMailBeanUIModel<EmailFilter, SearchUIModel> {
+public class SearchUIModel extends AbstractFaxToMailBeanUIModel<SearchFilter, SearchUIModel> {
public static final String PROPERTY_RESULTS = "results";
public static final String PROPERTY_MENU_ENABLED = "menuEnabled";
@@ -54,7 +54,7 @@
public static final String PROPERTY_PAGINATION_RESULT = "paginationResult";
public static final String PROPERTY_RESULT_PER_PAGE = "resultPerPage";
- protected final EmailFilter editObject = new EmailFilter();
+ protected final SearchFilter editObject = new SearchFilter();
protected int resultPerPage = 50;
protected PaginationParameter paginationParameter = PaginationParameter.of(0, resultPerPage, Email.PROPERTY_RECEPTION_DATE, false);
@@ -65,12 +65,12 @@
protected boolean groupEnabled;
protected boolean showGroupesDemandsInResults;
- protected static Binder<SearchUIModel, EmailFilter> toBeanBinder =
+ protected static Binder<SearchUIModel, SearchFilter> toBeanBinder =
BinderFactory.newBinder(SearchUIModel.class,
- EmailFilter.class);
+ SearchFilter.class);
- protected static Binder<EmailFilter, SearchUIModel> fromBeanBinder =
- BinderFactory.newBinder(EmailFilter.class, SearchUIModel.class);
+ protected static Binder<SearchFilter, SearchUIModel> fromBeanBinder =
+ BinderFactory.newBinder(SearchFilter.class, SearchUIModel.class);
public SearchUIModel() {
super(fromBeanBinder, toBeanBinder);
@@ -80,7 +80,7 @@
public void setSender(String sender) {
Object oldValue = getSender();
editObject.setSender(sender);
- firePropertyChanged(EmailFilter.PROPERTY_SENDER, oldValue, sender);
+ firePropertyChanged(SearchFilter.PROPERTY_SENDER, oldValue, sender);
}
public String getSender() {
@@ -90,7 +90,7 @@
public void setDemandObject(String demandObject) {
Object oldValue = getDemandObject();
editObject.setDemandObject(demandObject);
- firePropertyChanged(EmailFilter.PROPERTY_DEMAND_OBJECT, oldValue, demandObject);
+ firePropertyChanged(SearchFilter.PROPERTY_DEMAND_OBJECT, oldValue, demandObject);
}
public String getDemandObject() {
@@ -100,7 +100,7 @@
public void setClientCode(String clientCode) {
Object oldValue = getClientCode();
editObject.setClientCode(clientCode);
- firePropertyChanged(EmailFilter.PROPERTY_CLIENT_CODE, oldValue, clientCode);
+ firePropertyChanged(SearchFilter.PROPERTY_CLIENT_CODE, oldValue, clientCode);
}
public String getClientCode() {
@@ -110,7 +110,7 @@
public void setMessage(String message) {
Object oldValue = getMessage();
editObject.setMessage(message);
- firePropertyChanged(EmailFilter.PROPERTY_MESSAGE, oldValue, message);
+ firePropertyChanged(SearchFilter.PROPERTY_MESSAGE, oldValue, message);
}
public String getMessage() {
@@ -120,7 +120,7 @@
public void setBody(String body) {
Object oldValue = getBody();
editObject.setBody(body);
- firePropertyChanged(EmailFilter.PROPERTY_BODY, oldValue, body);
+ firePropertyChanged(SearchFilter.PROPERTY_BODY, oldValue, body);
}
public String getBody() {
@@ -129,7 +129,7 @@
public void setWaitingState(List<WaitingState> waitingStates) {
editObject.setWaitingStates(waitingStates);
- firePropertyChanged(EmailFilter.PROPERTY_WAITING_STATES, null, waitingStates);
+ firePropertyChanged(SearchFilter.PROPERTY_WAITING_STATES, null, waitingStates);
}
public List<WaitingState> getWaitingStates() {
@@ -139,7 +139,7 @@
public void setTakenBy(FaxToMailUser faxToMailUser) {
Object oldValue = getTakenBy();
editObject.setTakenBy(faxToMailUser);
- firePropertyChanged(EmailFilter.PROPERTY_TAKEN_BY, oldValue, faxToMailUser);
+ firePropertyChanged(SearchFilter.PROPERTY_TAKEN_BY, oldValue, faxToMailUser);
}
public FaxToMailUser getTakenBy() {
@@ -153,7 +153,7 @@
public void setPrintingBy(FaxToMailUser faxToMailUser) {
Object oldValue = getPrintingBy();
editObject.setPrintingBy(faxToMailUser);
- firePropertyChanged(EmailFilter.PROPERTY_PRINTING_BY, oldValue, faxToMailUser);
+ firePropertyChanged(SearchFilter.PROPERTY_PRINTING_BY, oldValue, faxToMailUser);
}
public FaxToMailUser getArchivedBy() {
@@ -163,7 +163,7 @@
public void setArchivedBy(FaxToMailUser faxToMailUser) {
Object oldValue = getArchivedBy();
editObject.setArchivedBy(faxToMailUser);
- firePropertyChanged(EmailFilter.PROPERTY_ARCHIVED_BY, oldValue, faxToMailUser);
+ firePropertyChanged(SearchFilter.PROPERTY_ARCHIVED_BY, oldValue, faxToMailUser);
}
public FaxToMailUser getReplyBy() {
@@ -173,7 +173,7 @@
public void setReplyBy(FaxToMailUser faxToMailUser) {
Object oldValue = getReplyBy();
editObject.setReplyBy(faxToMailUser);
- firePropertyChanged(EmailFilter.PROPERTY_REPLY_BY, oldValue, faxToMailUser);
+ firePropertyChanged(SearchFilter.PROPERTY_REPLY_BY, oldValue, faxToMailUser);
}
public List<Priority> getPriority() {
@@ -182,7 +182,7 @@
public void setPriority(List<Priority> priority) {
editObject.setPriority(priority);
- firePropertyChanged(EmailFilter.PROPERTY_PRIORITY, null, priority);
+ firePropertyChanged(SearchFilter.PROPERTY_PRIORITY, null, priority);
}
public List<DemandType> getDemandType() {
@@ -191,7 +191,7 @@
public void setDemandType(List<DemandType> demandType) {
editObject.setDemandType(demandType);
- firePropertyChanged(EmailFilter.PROPERTY_DEMAND_TYPE, null, demandType);
+ firePropertyChanged(SearchFilter.PROPERTY_DEMAND_TYPE, null, demandType);
}
public List<DemandStatus> getDemandStatus() {
@@ -200,13 +200,13 @@
public void setDemandStatus(List<DemandStatus> demandStatus) {
editObject.setDemandStatus(demandStatus);
- firePropertyChanged(EmailFilter.PROPERTY_DEMAND_STATUS, null, demandStatus);
+ firePropertyChanged(SearchFilter.PROPERTY_DEMAND_STATUS, null, demandStatus);
}
public void setEdiCodeNumber(String ediCodeNumber) {
Object oldValue = getEdiCodeNumber();
editObject.setEdiCodeNumber(ediCodeNumber);
- firePropertyChanged(EmailFilter.PROPERTY_EDI_CODE_NUMBER, oldValue, ediCodeNumber);
+ firePropertyChanged(SearchFilter.PROPERTY_EDI_CODE_NUMBER, oldValue, ediCodeNumber);
}
public String getEdiCodeNumber() {
@@ -216,7 +216,7 @@
public void setProjectReference(String projectReference) {
Object oldValue = getProjectReference();
editObject.setProjectReference(projectReference);
- firePropertyChanged(EmailFilter.PROPERTY_PROJECT_REFERENCE, oldValue, projectReference);
+ firePropertyChanged(SearchFilter.PROPERTY_PROJECT_REFERENCE, oldValue, projectReference);
}
public String getProjectReference() {
@@ -230,7 +230,7 @@
public void setLocalReference(String localReference) {
Object oldValue = getLocalReference();
editObject.setLocalReference(localReference);
- firePropertyChanged(EmailFilter.PROPERTY_LOCAL_REFERENCE, oldValue, localReference);
+ firePropertyChanged(SearchFilter.PROPERTY_LOCAL_REFERENCE, oldValue, localReference);
}
public FaxToMailUser getModifiedBy() {
@@ -240,7 +240,7 @@
public void setModifiedBy(FaxToMailUser modifiedBy) {
Object oldValue = getModifiedBy();
editObject.setModifiedBy(modifiedBy);
- firePropertyChanged(EmailFilter.PROPERTY_MODIFIED_BY, oldValue, modifiedBy);
+ firePropertyChanged(SearchFilter.PROPERTY_MODIFIED_BY, oldValue, modifiedBy);
}
public FaxToMailUser getTransferBy() {
@@ -250,7 +250,7 @@
public void setTransferBy(FaxToMailUser transferBy) {
Object oldValue = getTransferBy();
editObject.setTransferBy(transferBy);
- firePropertyChanged(EmailFilter.PROPERTY_TRANSFER_BY, oldValue, transferBy);
+ firePropertyChanged(SearchFilter.PROPERTY_TRANSFER_BY, oldValue, transferBy);
}
public Date getMinModificationDate() {
@@ -260,7 +260,7 @@
public void setMinModificationDate(Date minModificationDate) {
Object oldValue = getMinModificationDate();
editObject.setMinModificationDate(minModificationDate);
- firePropertyChanged(EmailFilter.PROPERTY_MIN_MODIFICATION_DATE, oldValue, minModificationDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MIN_MODIFICATION_DATE, oldValue, minModificationDate);
}
public Date getMaxModificationDate() {
@@ -270,7 +270,7 @@
public void setMaxModificationDate(Date maxModificationDate) {
Object oldValue = getMaxModificationDate();
editObject.setMaxModificationDate(maxModificationDate);
- firePropertyChanged(EmailFilter.PROPERTY_MAX_MODIFICATION_DATE, oldValue, maxModificationDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MAX_MODIFICATION_DATE, oldValue, maxModificationDate);
}
public Date getMinReceptionDate() {
@@ -280,7 +280,7 @@
public void setMinReceptionDate(Date minReceptionDate) {
Object oldValue = getMinReceptionDate();
editObject.setMinReceptionDate(minReceptionDate);
- firePropertyChanged(EmailFilter.PROPERTY_MIN_RECEPTION_DATE, oldValue, minReceptionDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MIN_RECEPTION_DATE, oldValue, minReceptionDate);
}
public Date getMaxReceptionDate() {
@@ -290,7 +290,7 @@
public void setMaxReceptionDate(Date maxReceptionDate) {
Object oldValue = getMaxReceptionDate();
editObject.setMaxReceptionDate(maxReceptionDate);
- firePropertyChanged(EmailFilter.PROPERTY_MAX_RECEPTION_DATE, oldValue, maxReceptionDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MAX_RECEPTION_DATE, oldValue, maxReceptionDate);
}
public Date getMinPrintingDate() {
@@ -300,7 +300,7 @@
public void setMinPrintingDate(Date minPrintingDate) {
Object oldValue = getMinPrintingDate();
editObject.setMinPrintingDate(minPrintingDate);
- firePropertyChanged(EmailFilter.PROPERTY_MIN_PRINTING_DATE, oldValue, minPrintingDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MIN_PRINTING_DATE, oldValue, minPrintingDate);
}
public Date getMaxPrintingDate() {
@@ -310,7 +310,7 @@
public void setMaxPrintingDate(Date maxPrintingDate) {
Object oldValue = getMaxPrintingDate();
editObject.setMaxPrintingDate(maxPrintingDate);
- firePropertyChanged(EmailFilter.PROPERTY_MAX_PRINTING_DATE, oldValue, maxPrintingDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MAX_PRINTING_DATE, oldValue, maxPrintingDate);
}
public Date getMinArchivedDate() {
@@ -320,7 +320,7 @@
public void setMinArchivedDate(Date minArchivedDate) {
Object oldValue = getMinArchivedDate();
editObject.setMinArchivedDate(minArchivedDate);
- firePropertyChanged(EmailFilter.PROPERTY_MIN_ARCHIVED_DATE, oldValue, minArchivedDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MIN_ARCHIVED_DATE, oldValue, minArchivedDate);
}
public Date getMaxArchivedDate() {
@@ -330,7 +330,7 @@
public void setMaxArchivedDate(Date maxArchivedDate) {
Object oldValue = getMaxArchivedDate();
editObject.setMaxArchivedDate(maxArchivedDate);
- firePropertyChanged(EmailFilter.PROPERTY_MAX_ARCHIVED_DATE, oldValue, maxArchivedDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MAX_ARCHIVED_DATE, oldValue, maxArchivedDate);
}
public Date getMinReplyDate() {
@@ -340,7 +340,7 @@
public void setMinReplyDate(Date minReplyDate) {
Object oldValue = getMinReplyDate();
editObject.setMinReplyDate(minReplyDate);
- firePropertyChanged(EmailFilter.PROPERTY_MIN_REPLY_DATE, oldValue, minReplyDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MIN_REPLY_DATE, oldValue, minReplyDate);
}
public Date getMaxReplyDate() {
@@ -350,7 +350,7 @@
public void setMaxReplyDate(Date maxReplyDate) {
Object oldValue = getMaxReplyDate();
editObject.setMaxReplyDate(maxReplyDate);
- firePropertyChanged(EmailFilter.PROPERTY_MAX_REPLY_DATE, oldValue, maxReplyDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MAX_REPLY_DATE, oldValue, maxReplyDate);
}
public Date getMinTransferDate() {
@@ -360,7 +360,7 @@
public void setMinTransferDate(Date minTransferDate) {
Object oldValue = getMinTransferDate();
editObject.setMinTransferDate(minTransferDate);
- firePropertyChanged(EmailFilter.PROPERTY_MIN_TRANSFER_DATE, oldValue, minTransferDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MIN_TRANSFER_DATE, oldValue, minTransferDate);
}
public Date getMaxTransferDate() {
@@ -370,7 +370,7 @@
public void setMaxTransferDate(Date maxTransferDate) {
Object oldValue = getMaxTransferDate();
editObject.setMaxTransferDate(maxTransferDate);
- firePropertyChanged(EmailFilter.PROPERTY_MAX_TRANSFER_DATE, oldValue, maxTransferDate);
+ firePropertyChanged(SearchFilter.PROPERTY_MAX_TRANSFER_DATE, oldValue, maxTransferDate);
}
public List<Range> getGamme() {
@@ -379,7 +379,7 @@
public void setGamme(List<Range> gamme) {
editObject.setGamme(gamme);
- firePropertyChanged(EmailFilter.PROPERTY_GAMME, null, gamme);
+ firePropertyChanged(SearchFilter.PROPERTY_GAMME, null, gamme);
}
public List<DemandeUIModel> getResults() {
@@ -454,7 +454,7 @@
}
@Override
- protected EmailFilter newEntity() {
- return new EmailFilter();
+ protected SearchFilter newEntity() {
+ return new SearchFilter();
}
}
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-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java 2014-09-18 09:58:47 UTC (rev 622)
@@ -131,7 +131,6 @@
Preconditions.checkNotNull(type);
Decorator<O> decorator = decoratorService.getDecoratorByType(type, name);
- Preconditions.checkNotNull(decorator);
return decorator;
}
Modified: trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties
===================================================================
--- trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-09-18 09:47:05 UTC (rev 621)
+++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-09-18 09:58:47 UTC (rev 622)
@@ -42,7 +42,7 @@
faxtomail.alert.groupConfirmation.title=Confirmation du groupement
faxtomail.alert.noDemandToArchive.message=<html>Les éléments suivants ne peuvent pas être archivés car ils ne sont pas valides \:<br/>%sIl n'y a pas d'autres éléments à archiver.</html>
faxtomail.alert.noDemandToArchive.title=Aucun élément à archiver
-faxtomail.alert.noDemandToTransmit.message=<html>Les éléments suivants ne peuvent pas seront pas déplacés car ils ne sont pas valides \:<br/>%sIl n'y a pas d'autres éléments à déplacer.</html>
+faxtomail.alert.noDemandToTransmit.message=<html>Les éléments suivants ne seront pas déplacés car ils ne sont pas valides \:<br/>%sIl n'y a pas d'autres éléments à déplacer.</html>
faxtomail.alert.noDemandToTransmit.title=Aucun élément à déplacer
faxtomail.alert.transmit.groupedDemandsInSameFolder.message=<html>L'élément %1$s a un ou plusieurs éléments groupés dans le même dossier \:<br/>%2$sVoulez-vous les déplacer aussi ?</html>
faxtomail.alert.transmit.groupedDemandsInSameFolder.title=Déplacer les éléments groupés
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-09-18 09:47:05 UTC (rev 621)
+++ trunk/pom.xml 2014-09-18 09:58:47 UTC (rev 622)
@@ -110,7 +110,7 @@
<h2Version>1.3.176</h2Version>
<guavaVersion>18.0</guavaVersion>
- <jaxxVersion>2.12</jaxxVersion>
+ <jaxxVersion>2.13-SNAPSHOT</jaxxVersion>
<!-- do not upgrade to 1.6.5-1 -->
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.16.3</xworkVersion>
1
0
r621 - in trunk: faxtomail-persistence/src/main/xmi faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service
by echatellier@users.forge.codelutin.com 18 Sep '14
by echatellier@users.forge.codelutin.com 18 Sep '14
18 Sep '14
Author: echatellier
Date: 2014-09-18 11:47:05 +0200 (Thu, 18 Sep 2014)
New Revision: 621
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/621
Log:
Fix client and edireturn jobs
Modified:
trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo
===================================================================
(Binary files differ)
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-09-18 09:29:19 UTC (rev 620)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-09-18 09:47:05 UTC (rev 621)
@@ -1228,8 +1228,20 @@
String error = resultSet.getString(EdiReturn.PROPERTY_ERROR);
// manage email and range row
- RangeRow rangeRow = rangeRowTopiaDao.forTopiaIdEquals(rangeRowTopiaId).findUnique();
- Email email = emailTopiaDao.forRangeRowContains(rangeRow).findUnique();
+ RangeRow rangeRow = rangeRowTopiaDao.forTopiaIdEquals(rangeRowTopiaId).findUniqueOrNull();
+ if (rangeRow == null) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't find rangeRow " + rangeRowTopiaId + " to update");
+ }
+ continue;
+ }
+ Email email = emailTopiaDao.forRangeRowContains(rangeRow).findUniqueOrNull();
+ if (email == null) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't find email for " + rangeRowTopiaId + " to update");
+ }
+ continue;
+ }
if (StringUtils.isNotBlank(error)) {
//error
1
0
18 Sep '14
Author: echatellier
Date: 2014-09-18 11:29:19 +0200 (Thu, 18 Sep 2014)
New Revision: 620
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/620
Log:
Modifications newclient et edireturn
Added:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientImpl.java
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientTopiaDao.java
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EdiReturn.java
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClient.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportBean.java
trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_620__modification_newclient_edireturn.sql
trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_620__modification_newclient_edireturn.sql
trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_620__modification_newclient_edireturn.sql
Removed:
trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClientType.java
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/HistoryImpl.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/ClientServiceImpl.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/InitFaxToMailServiceImpl.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java
trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportModel.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestDataImpl.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MiscTest.java
trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/migration/FlywayMigrationTest.java
trunk/faxtomail-service/src/test/resources/csv/clients.csv
trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java
trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-input.jsp
trunk/pom.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-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/AbstractFaxToMailTopiaDao.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -33,8 +33,13 @@
import org.nuiton.topia.persistence.internal.AbstractTopiaDao;
import org.nuiton.util.pagination.PaginationParameter;
+import com.google.gson.Gson;
+
public abstract class AbstractFaxToMailTopiaDao<E extends TopiaEntity> extends AbstractTopiaDao<E> {
-
+
+ /** Instance unique de Gson. (certainement pas le meilleur endroit pour la placer). */
+ public static final Gson GSON_INSTANCE = new Gson();
+
/**
* Find all entity for current table not contained in provided collection.
*
Added: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientImpl.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientImpl.java (rev 0)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientImpl.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -0,0 +1,65 @@
+package com.franciaflex.faxtomail.persistence.entities;
+
+/*
+ * #%L
+ * FaxToMail :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Franciaflex
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import java.lang.reflect.Type;
+import java.util.List;
+
+import com.google.gson.reflect.TypeToken;
+
+public class ClientImpl extends ClientAbstract {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 645048064844251689L;
+
+ private static final Type LIST_STRING_GSON_TYPE = new TypeToken<List<String>>() {}.getType();
+
+ @Override
+ public void setEmailAddresses(List<String> emails) {
+ String json = AbstractFaxToMailTopiaDao.GSON_INSTANCE.toJson(emails);
+ setEmailAddressesJson(json);
+ }
+
+ @Override
+ public List<String> getEmailAddresses() {
+ String json = getEmailAddressesJson();
+ List<String> emailAddress = AbstractFaxToMailTopiaDao.GSON_INSTANCE.fromJson(json, LIST_STRING_GSON_TYPE);
+ return emailAddress;
+ }
+
+ @Override
+ public void setFaxNumbers(List<String> faxNumbers) {
+ String json = AbstractFaxToMailTopiaDao.GSON_INSTANCE.toJson(faxNumbers);
+ setFaxNumbersJson(json);
+ }
+
+ @Override
+ public List<String> getFaxNumbers() {
+ String json = getFaxNumbersJson();
+ List<String> faxNumbers = AbstractFaxToMailTopiaDao.GSON_INSTANCE.fromJson(json, LIST_STRING_GSON_TYPE);
+ return faxNumbers;
+ }
+
+}
Property changes on: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientImpl.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientTopiaDao.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientTopiaDao.java (rev 0)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientTopiaDao.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -0,0 +1,58 @@
+package com.franciaflex.faxtomail.persistence.entities;
+
+/*
+ * #%L
+ * FaxToMail :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Franciaflex, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+
+import com.google.common.base.Preconditions;
+
+public class ClientTopiaDao extends AbstractClientTopiaDao<Client> {
+
+ protected List<Client> forPropertyJsonLike(String property, String value) {
+ Preconditions.checkArgument(StringUtils.isNotBlank(value), "Empty value can produce unexcepted results");
+
+ String query = "FROM " + Client.class.getName() + " WHERE " + property + " LIKE :propValue";
+
+ Map<String, Object> args = new HashMap<>();
+ args.put("propValue", "%" + value + "%");
+ List<Client> result = findAll(query, args);
+ return result;
+ }
+
+ public List<Client> forEmailAddressesJsonLike(String emailAddress) {
+ List<Client> result = forPropertyJsonLike(Client.PROPERTY_EMAIL_ADDRESSES_JSON, emailAddress);
+ return result;
+ }
+
+ public List<Client> forFaxNumbersJsonLike(String faxNumber) {
+ List<Client> result = forPropertyJsonLike(Client.PROPERTY_FAX_NUMBERS_JSON, faxNumber);
+ return result;
+ }
+
+} //ClientTopiaDao
Property changes on: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/ClientTopiaDao.java
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EdiReturn.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EdiReturn.java (rev 0)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EdiReturn.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -0,0 +1,38 @@
+package com.franciaflex.faxtomail.persistence.entities;
+
+/*
+ * #%L
+ * FaxToMail :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Franciaflex, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Défini les colonnes de la table EdiReturn en base de données, mais non géré par Topia.
+ *
+ * @author Eric Chatellier
+ */
+public class EdiReturn {
+
+ public static final String PROPERTY_RANGE_ROW_TOPIA_ID = "rangeRowTopiaId";
+ public static final String PROPERTY_COMMAND_NUMBER = "commandNumber";
+ public static final String PROPERTY_ERROR = "error";
+
+}
Property changes on: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/EdiReturn.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryImpl.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryImpl.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/HistoryImpl.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -27,7 +27,6 @@
import java.lang.reflect.Type;
import java.util.Set;
-import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class HistoryImpl extends HistoryAbstract {
@@ -35,17 +34,18 @@
/** serialVersionUID. */
private static final long serialVersionUID = 7357010358014312848L;
+ private static final Type SET_STRING_GSON_TYPE = new TypeToken<Set<String>>() {}.getType();
+
@Override
public void setFields(Set<String> field) {
- String fieldsAsString = new Gson().toJson(field);
- setFieldsJson(fieldsAsString);
+ String json = AbstractFaxToMailTopiaDao.GSON_INSTANCE.toJson(field);
+ setFieldsJson(json);
}
@Override
public Set<String> getFields() {
- String fieldsAsString = getFieldsJson();
- Type type = new TypeToken<Set<String>>() {}.getType();
- Set<String> fields = new Gson().fromJson(fieldsAsString, type);
+ String json = getFieldsJson();
+ Set<String> fields = AbstractFaxToMailTopiaDao.GSON_INSTANCE.fromJson(json, SET_STRING_GSON_TYPE);
return fields;
}
Added: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClient.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClient.java (rev 0)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClient.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -0,0 +1,45 @@
+package com.franciaflex.faxtomail.persistence.entities;
+
+/*
+ * #%L
+ * FaxToMail :: Persistence
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Franciaflex, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+/**
+ * Défini les colonnes de la table NewClient en base de données, mais non géré par Topia.
+ *
+ * @author Eric Chatellier
+ */
+public class NewClient {
+
+ public static final String PROPERTY_NAME = "name";
+ public static final String PROPERTY_EMAIL_ADDRESS = "emailAddress";
+ public static final String PROPERTY_FAX_NUMBER = "faxNumber";
+ public static final String PROPERTY_CARACTERISTIC1 = "caracteristic1";
+ public static final String PROPERTY_CARACTERISTIC2 = "caracteristic2";
+ public static final String PROPERTY_CARACTERISTIC3 = "caracteristic3";
+ public static final String PROPERTY_CODE = "code";
+ public static final String PROPERTY_BRAND = "brand";
+ public static final String PROPERTY_COMPANY = "company";
+ public static final String PROPERTY_PERSON_IN_CHARGE = "personInCharge";
+
+}
Property changes on: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClient.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Deleted: trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClientType.java
===================================================================
--- trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClientType.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities/NewClientType.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -1,33 +0,0 @@
-package com.franciaflex.faxtomail.persistence.entities;
-
-/*
- * #%L
- * FaxToMail :: Persistence
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2014 Franciaflex, Code Lutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-/**
- * @author Kevin Morin (Code Lutin)
- */
-public enum NewClientType {
-
- CREATION, UPDATE, DELETION
-}
Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties
===================================================================
--- trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-persistence/src/main/xmi/faxtomail.properties 2014-09-18 09:29:19 UTC (rev 620)
@@ -42,13 +42,12 @@
com.franciaflex.faxtomail.persistence.entities.DemandType.attribute.requiredFields.tagvalue.hibernateAttributeType=com.franciaflex.faxtomail.persistence.hibernate.MailFieldEnumSetUserType
# Client
-com.franciaflex.faxtomail.persistence.entities.Client.attribute.brand.tagvalue.naturalId=true
+com.franciaflex.faxtomail.persistence.entities.Client.attribute.company.tagvalue.naturalId=true
com.franciaflex.faxtomail.persistence.entities.Client.attribute.code.tagvalue.naturalId=true
# NewClient
com.franciaflex.faxtomail.persistence.entities.NewClient.attribute.code.tagvalue.notNull=true
-com.franciaflex.faxtomail.persistence.entities.NewClient.attribute.brand.tagvalue.notNull=true
-com.franciaflex.faxtomail.persistence.entities.NewClient.attribute.type.tagvalue.notNull=true
+com.franciaflex.faxtomail.persistence.entities.NewClient.attribute.company.tagvalue.notNull=true
# EdiReturn
com.franciaflex.faxtomail.persistence.entities.EdiReturn.attribute.rangeRowTopiaId.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/ClientServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -24,14 +24,20 @@
* #L%
*/
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.beans.Binder;
-import org.nuiton.util.beans.BinderFactory;
+import org.nuiton.topia.persistence.support.TopiaSqlSupport;
+import org.nuiton.topia.persistence.support.TopiaSqlWork;
import com.franciaflex.faxtomail.persistence.entities.Client;
import com.franciaflex.faxtomail.persistence.entities.ClientImpl;
@@ -40,8 +46,6 @@
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.NewClient;
-import com.franciaflex.faxtomail.persistence.entities.NewClientTopiaDao;
-import com.franciaflex.faxtomail.persistence.entities.NewClientType;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
import com.google.common.base.Preconditions;
@@ -73,7 +77,7 @@
Client client = null;
List<Client> clients;
if (StringUtils.isNotBlank(emailAddress)) {
- clients = clientDao.forEmailAddressEquals(emailAddress).findAll();
+ clients = clientDao.forEmailAddressesJsonLike(emailAddress);
// on essaye de voir si on peut gérer l'adresse de l'expediteur comme un fax
if (CollectionUtils.isEmpty(clients)) {
@@ -81,7 +85,7 @@
// NumberUtils.isNumber peut echouer (notation octal)
if (StringUtils.isNumeric(faxNumber)) {
emailAddress = StringUtils.leftPad(faxNumber, 10, '0');
- clients = clientDao.forFaxNumberEquals(emailAddress).findAll();
+ clients = clientDao.forFaxNumbersJsonLike(emailAddress);
email.setFax(true);
}
}
@@ -119,75 +123,139 @@
*/
@Override
public void updateNewClients() {
- NewClientTopiaDao newClientDao = getPersistenceContext().getNewClientDao();
- ClientTopiaDao clientDao = getPersistenceContext().getClientDao();
- FaxToMailUserTopiaDao faxToMailUserDao = getPersistenceContext().getFaxToMailUserDao();
- Iterable<NewClient> newClients = newClientDao.findAll();
- Binder<NewClient, Client> binder = BinderFactory.newBinder(NewClient.class, Client.class);
-
- for (NewClient newClient : newClients) {
-
- NewClientType type = newClient.getType();
- switch (type) {
- case CREATION:
- case UPDATE:
- // find client to create or update
- Client client = clientDao.forCodeEquals(newClient.getCode())
- .addEquals(Client.PROPERTY_BRAND, newClient.getBrand()).findUniqueOrNull();
- if (client == null) {
- client = new ClientImpl();
- if (type == NewClientType.UPDATE && log.isWarnEnabled()) {
- log.warn(String.format("Can't find client code %s/%s to update. Client created.", newClient.getCode(), newClient.getBrand()));
+ final ClientTopiaDao clientDao = getPersistenceContext().getClientDao();
+ final FaxToMailUserTopiaDao faxToMailUserDao = getPersistenceContext().getFaxToMailUserDao();
+
+ TopiaSqlSupport sqlSupport = getPersistenceContext().getSqlSupport();
+ sqlSupport.doSqlWork(new TopiaSqlWork() {
+
+ @Override
+ public void execute(Connection connection) throws SQLException {
+
+ // attention, le sql à pour cible postgresql, mssql, h2, il doit rester simple
+ String query = String.format("SELECT %s, %s, %s, %s, %s, %s, %s, %s, %s, %s FROM %s",
+ NewClient.PROPERTY_NAME,
+ NewClient.PROPERTY_EMAIL_ADDRESS,
+ NewClient.PROPERTY_FAX_NUMBER,
+ NewClient.PROPERTY_CARACTERISTIC1,
+ NewClient.PROPERTY_CARACTERISTIC2,
+ NewClient.PROPERTY_CARACTERISTIC3,
+ NewClient.PROPERTY_CODE,
+ NewClient.PROPERTY_BRAND,
+ NewClient.PROPERTY_COMPANY,
+ NewClient.PROPERTY_PERSON_IN_CHARGE,
+ NewClient.class.getSimpleName());
+ Statement stat = connection.createStatement();
+
+ // get query result set
+ ResultSet resultSet = stat.executeQuery(query);
+ // cache utilise pour mettre à jour les mêmes client dans le cas ou
+ // il reviennt plusieurs fois
+ MultiKeyMap<String, Client> clientCache = new MultiKeyMap<>();
+
+ // parse result set
+ while (resultSet.next()) {
+ String name = resultSet.getString(NewClient.PROPERTY_NAME);
+ String emailAddress = resultSet.getString(NewClient.PROPERTY_EMAIL_ADDRESS);
+ String faxNumber = resultSet.getString(NewClient.PROPERTY_FAX_NUMBER);
+ String caracteristic1 = resultSet.getString(NewClient.PROPERTY_CARACTERISTIC1);
+ String caracteristic2 = resultSet.getString(NewClient.PROPERTY_CARACTERISTIC2);
+ String caracteristic3 = resultSet.getString(NewClient.PROPERTY_CARACTERISTIC3);
+ String code = resultSet.getString(NewClient.PROPERTY_CODE);
+ String brand = resultSet.getString(NewClient.PROPERTY_BRAND);
+ String company = resultSet.getString(NewClient.PROPERTY_COMPANY);
+ String personInCharge = resultSet.getString(NewClient.PROPERTY_PERSON_IN_CHARGE);
+
+ // clear some data
+ if ("null".equalsIgnoreCase(caracteristic1)) {
+ caracteristic1 = null;
+ }
+ if ("null".equalsIgnoreCase(caracteristic2)) {
+ caracteristic2 = null;
+ }
+ if ("null".equalsIgnoreCase(caracteristic3)) {
+ caracteristic3 = null;
+ }
+ if ("null".equalsIgnoreCase(brand)) {
+ brand = null;
+ }
+ if ("null".equalsIgnoreCase(emailAddress)) {
+ emailAddress = null;
+ }
+ if (faxNumber != null) {
+ faxNumber = StringUtils.removePattern(faxNumber, "[^0-9]");
+ if (faxNumber.isEmpty() || faxNumber.equals("0")) {
+ faxNumber = null;
}
- } else {
- if (type == NewClientType.CREATION && log.isWarnEnabled()) {
- log.warn(String.format("Creating a already existing client %s/%s. Client updated.", newClient.getCode(), newClient.getBrand()));
- }
}
- // update client instance
- binder.copyExcluding(newClient, client,
- Client.PROPERTY_TOPIA_ID,
- Client.PROPERTY_TOPIA_CREATE_DATE,
- Client.PROPERTY_TOPIA_VERSION);
+ // save data
+ Client client = clientCache.get(code, company);
+ if (client == null) {
+ client = clientDao.forCodeEquals(code).addEquals(Client.PROPERTY_COMPANY, company).findUnique();
+ if (client == null) {
+ client = new ClientImpl();
+ client.setCode(code);
+ client.setCompany(company);
+ }
- // update person in charge
- FaxToMailUser personInCharge = null;
- if (StringUtils.isNotBlank(newClient.getPersonInCharge())) {
- personInCharge = faxToMailUserDao.forLoginEquals(newClient.getPersonInCharge()).findUniqueOrNull();
- }
- client.setPersonInCharge(personInCharge);
+ client.setName(name);
+ client.setCaracteristic1(caracteristic1);
+ client.setCaracteristic2(caracteristic2);
+ client.setCaracteristic3(caracteristic3);
+ client.setBrand(brand);
+
+ // clear current adresses and fax numbers
+ client.setEmailAddresses(null);
+ client.setFaxNumbers(null);
- // persist
- if (client.isPersisted()) {
- clientDao.update(client);
- } else {
- clientDao.create(client);
+ // look for personInCharge
+ FaxToMailUser faxToMailUserInCharge = null;
+ if (StringUtils.isNotBlank(personInCharge)) {
+ faxToMailUserInCharge = faxToMailUserDao.forLoginEquals(personInCharge).findUniqueOrNull();
+ }
+ client.setPersonInCharge(faxToMailUserInCharge);
+
+ if (client.isPersisted()) {
+ client = clientDao.update(client);
+ } else {
+ client = clientDao.create(client);
+ }
+
+ // update cache
+ clientCache.put(code, company, client);
}
- break;
-
- case DELETION:
- Client deleteClient = clientDao.forCodeEquals(newClient.getCode())
- .addEquals(Client.PROPERTY_BRAND, newClient.getBrand()).findUniqueOrNull();
- if (deleteClient == null) {
- if (log.isWarnEnabled()) {
- log.warn(String.format("Can't find client code %s/%s to delete", newClient.getCode(), newClient.getBrand()));
+ // only manage emailAdress and faxNumber in this case client is in cache
+ if (StringUtils.isNotBlank(emailAddress)) {
+ List<String> currentAddresses = client.getEmailAddresses();
+ if (currentAddresses == null) {
+ currentAddresses = new ArrayList<String>();
}
- } else {
- // FIXME le delete ne fonctionnera pas si des mails porte sur ce client
- clientDao.delete(deleteClient);
- if (log.isDebugEnabled()) {
- log.debug(String.format("Client %s/%s deleted", newClient.getCode(), newClient.getBrand()));
+ currentAddresses.add(emailAddress);
+ client.setEmailAddresses(currentAddresses);
+ client = clientDao.update(client);
+ }
+ // and............................ faxNumber
+ if (StringUtils.isNotBlank(faxNumber)) {
+ List<String> faxNumbers = client.getFaxNumbers();
+ if (faxNumbers == null) {
+ faxNumbers = new ArrayList<String>();
}
+ faxNumbers.add(faxNumber);
+ client.setFaxNumbers(faxNumbers);
+ client = clientDao.update(client);
}
- break;
+ }
+
+ // delete all rows
+ stat = connection.createStatement();
+ stat.execute("DELETE FROM " + NewClient.class.getSimpleName());
+
}
-
- }
-
- newClientDao.deleteAll(newClients);
+ });
+
getPersistenceContext().commit();
}
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-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -37,6 +37,10 @@
import java.io.StringWriter;
import java.io.Writer;
import java.nio.charset.StandardCharsets;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -73,6 +77,8 @@
import org.nuiton.csv.ImportRuntimeException;
import org.nuiton.jaxx.application.ApplicationTechnicalException;
import org.nuiton.topia.persistence.TopiaEntities;
+import org.nuiton.topia.persistence.support.TopiaSqlSupport;
+import org.nuiton.topia.persistence.support.TopiaSqlWork;
import org.nuiton.util.beans.Binder;
import org.nuiton.util.beans.BinderFactory;
import org.nuiton.util.pagination.PaginationParameter;
@@ -94,7 +100,6 @@
import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -1195,45 +1200,56 @@
@Override
public void updateRangeRowsWithEdiReturns() {
- EdiReturnTopiaDao ediReturnDao = getPersistenceContext().getEdiReturnDao();
- RangeRowTopiaDao rangeRowTopiaDao = getPersistenceContext().getRangeRowDao();
- EmailTopiaDao emailTopiaDao = getPersistenceContext().getEmailDao();
+ final RangeRowTopiaDao rangeRowTopiaDao = getPersistenceContext().getRangeRowDao();
+ final EmailTopiaDao emailTopiaDao = getPersistenceContext().getEmailDao();
- Set<Email> emailsToUpdate = new HashSet<>();
+ final Set<Email> emailsToUpdate = new HashSet<>();
- List<EdiReturn> ediReturns = ediReturnDao.findAll();
- if (log.isDebugEnabled()) {
- log.debug(ediReturns.size() + " returns from edi");
- }
- List<String> rangeRowsIds = Lists.transform(ediReturns,new Function<EdiReturn, String>() {
+ TopiaSqlSupport sqlSupport = getPersistenceContext().getSqlSupport();
+ sqlSupport.doSqlWork(new TopiaSqlWork() {
+
@Override
- public String apply(EdiReturn ediReturn) {
- return ediReturn.getRangeRowTopiaId();
- }
- });
+ public void execute(Connection connection) throws SQLException {
- List<RangeRow> rangeRows = rangeRowTopiaDao.forTopiaIdIn(rangeRowsIds).findAll();
- Map<String, RangeRow> rangeRowsById = Maps.uniqueIndex(rangeRows, TopiaEntities.getTopiaIdFunction());
+ // attention, le sql à pour cible postgresql, mssql, h2, il doit rester simple
+ String query = String.format("SELECT %s, %s, %s FROM %s",
+ EdiReturn.PROPERTY_RANGE_ROW_TOPIA_ID,
+ EdiReturn.PROPERTY_COMMAND_NUMBER,
+ EdiReturn.PROPERTY_ERROR,
+ EdiReturn.class.getSimpleName());
+ Statement stat = connection.createStatement();
- for (EdiReturn ediReturn : ediReturns) {
- RangeRow rangeRow = rangeRowsById.get(ediReturn.getRangeRowTopiaId());
- Email email = emailTopiaDao.forRangeRowContains(rangeRow).findUnique();
+ // execute query
+ ResultSet resultSet = stat.executeQuery(query);
+ while (resultSet.next()) {
- if (StringUtils.isNotBlank(ediReturn.getError())) {
- //error
- email.setEdiError(ediReturn.getError());
+ String rangeRowTopiaId = resultSet.getString(EdiReturn.PROPERTY_RANGE_ROW_TOPIA_ID);
+ String commandNumber = resultSet.getString(EdiReturn.PROPERTY_COMMAND_NUMBER);
+ String error = resultSet.getString(EdiReturn.PROPERTY_ERROR);
- } else {
- rangeRow.setCommandNumber(ediReturn.getCommandNumber());
+ // manage email and range row
+ RangeRow rangeRow = rangeRowTopiaDao.forTopiaIdEquals(rangeRowTopiaId).findUnique();
+ Email email = emailTopiaDao.forRangeRowContains(rangeRow).findUnique();
+
+ if (StringUtils.isNotBlank(error)) {
+ //error
+ email.setEdiError(error);
+ } else {
+ rangeRow.setCommandNumber(commandNumber);
+ rangeRowTopiaDao.update(rangeRow);
+ }
+
+ email.setDemandStatus(DemandStatus.IN_PROGRESS);
+ emailsToUpdate.add(email);
+ }
+
+ // delete all rows
+ stat = connection.createStatement();
+ stat.execute("DELETE FROM " + EdiReturn.class.getSimpleName());
}
+ });
- email.setDemandStatus(DemandStatus.IN_PROGRESS);
- emailsToUpdate.add(email);
- }
-
- rangeRowTopiaDao.updateAll(rangeRows);
emailTopiaDao.updateAll(emailsToUpdate);
- ediReturnDao.deleteAll(ediReturns);
getPersistenceContext().commit();
}
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/InitFaxToMailServiceImpl.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -39,6 +39,7 @@
import java.util.Map;
import java.util.Random;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -344,12 +345,21 @@
List<RangeRow> rangeRows = new ArrayList<>();
Client client = clients.get(random.nextInt(clients.size()));
- String sender = client.getEmailAddress();
boolean fax = false;
- if (sender == null && client.getFaxNumber() != null) {
- sender = client.getFaxNumber();
+ List<String> senders = client.getEmailAddresses();
+ List<String> faxNumbers = client.getFaxNumbers();
+ if (CollectionUtils.isEmpty(senders) && CollectionUtils.isNotEmpty(faxNumbers)) {
+ senders = Collections.singletonList(client.getFaxNumbers().get(0));
fax = true;
}
+ String sender = null;
+ if (CollectionUtils.isNotEmpty(senders)) {
+ sender = senders.get(0);
+ }
+ String faxNumber = null;
+ if (CollectionUtils.isNotEmpty(faxNumbers)) {
+ faxNumber = faxNumbers.get(0);
+ }
boolean opened = random.nextBoolean();
@@ -371,7 +381,7 @@
Email.PROPERTY_FAX, fax,
Email.PROPERTY_CLIENT, client,
Email.PROPERTY_PROJECT_REFERENCE, projectRef,
- Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " + dateDecorator.toString(now),
+ Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + faxNumber + " / " + dateDecorator.toString(now),
Email.PROPERTY_RECEPTION_DATE, now,
Email.PROPERTY_MAIL_FOLDER, folder,
Email.PROPERTY_DEMAND_STATUS, opened ? DemandStatus.IN_PROGRESS : DemandStatus.UNTREATED,
@@ -419,7 +429,7 @@
Email.PROPERTY_FAX, fax,
Email.PROPERTY_CLIENT, client,
Email.PROPERTY_PROJECT_REFERENCE, projectRef,
- Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + client.getFaxNumber() + " / " + dateDecorator.toString(yesterday),
+ Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / " + client.getName() + " / " + faxNumber + " / " + dateDecorator.toString(yesterday),
Email.PROPERTY_RECEPTION_DATE, yesterday,
Email.PROPERTY_MAIL_FOLDER, folder,
Email.PROPERTY_DEMAND_STATUS, opened ? DemandStatus.IN_PROGRESS : DemandStatus.UNTREATED,
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -28,10 +28,13 @@
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
+import org.apache.commons.collections4.map.MultiKeyMap;
import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
import org.nuiton.csv.Import;
import org.nuiton.csv.ImportRuntimeException;
import org.nuiton.jaxx.application.ApplicationTechnicalException;
@@ -45,7 +48,6 @@
import com.franciaflex.faxtomail.persistence.entities.DemandTypeTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.EmailAccount;
import com.franciaflex.faxtomail.persistence.entities.EmailAccountTopiaDao;
-import com.franciaflex.faxtomail.persistence.entities.WaitingStateTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.MailFilter;
import com.franciaflex.faxtomail.persistence.entities.MailFilterTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.MailFolder;
@@ -54,7 +56,9 @@
import com.franciaflex.faxtomail.persistence.entities.Range;
import com.franciaflex.faxtomail.persistence.entities.RangeTopiaDao;
import com.franciaflex.faxtomail.persistence.entities.WaitingState;
+import com.franciaflex.faxtomail.persistence.entities.WaitingStateTopiaDao;
import com.franciaflex.faxtomail.services.FaxToMailServiceSupport;
+import com.franciaflex.faxtomail.services.service.imports.ClientImportBean;
import com.franciaflex.faxtomail.services.service.imports.ClientImportModel;
import com.franciaflex.faxtomail.services.service.imports.DemandTypeImportModel;
import com.franciaflex.faxtomail.services.service.imports.EmailAccountImportModel;
@@ -105,21 +109,51 @@
ClientTopiaDao dao = getPersistenceContext().getClientDao();
ClientImportModel clientImportModel = new ClientImportModel(';');
- Binder<Client, Client> clientBinder = BinderFactory.newBinder(Client.class);
- Import<Client> importer = null;
+ Binder<ClientImportBean, Client> clientBinder = BinderFactory.newBinder(ClientImportBean.class, Client.class);
+ Import<ClientImportBean> importer = null;
try {
importer = Import.newImport(clientImportModel, new InputStreamReader(inputStream, getApplicationConfig().getImportFileEncoding()));
- for (Client client : importer) {
-
- Client current = dao.forCodeEquals(client.getCode()).addEquals(Client.PROPERTY_BRAND, client.getBrand()).findAnyOrNull();
+
+ MultiKeyMap<String, Client> clientCache = new MultiKeyMap<>();
+ for (ClientImportBean client : importer) {
+
+ Client current = clientCache.get(client.getCode(), client.getCompany());
if (current == null) {
- current = new ClientImpl();
+ current = dao.forCodeEquals(client.getCode()).addEquals(Client.PROPERTY_COMPANY, client.getCompany()).findAnyOrNull();
+ if (current == null) {
+ current = new ClientImpl();
+ }
+
+ clientBinder.copyExcluding(client, current,
+ Client.PROPERTY_TOPIA_ID,
+ Client.PROPERTY_TOPIA_CREATE_DATE,
+ Client.PROPERTY_TOPIA_VERSION);
+
+ // clear current adresses and fax numbers
+ current.setEmailAddresses(null);
+ current.setFaxNumbers(null);
+
+ // update cache
+ clientCache.put(client.getCode(), client.getCompany(), current);
}
- clientBinder.copyExcluding(client, current,
- Client.PROPERTY_TOPIA_ID,
- Client.PROPERTY_TOPIA_CREATE_DATE,
- Client.PROPERTY_TOPIA_VERSION);
+ // manage special collections
+ if (StringUtils.isNotBlank(client.getEmailAddress())) {
+ List<String> currentAddresses = current.getEmailAddresses();
+ if (currentAddresses == null) {
+ currentAddresses = new ArrayList<String>();
+ }
+ currentAddresses.add(client.getEmailAddress());
+ current.setEmailAddresses(currentAddresses);
+ }
+ if (StringUtils.isNotBlank(client.getFaxNumber())) {
+ List<String> faxNumbers = current.getFaxNumbers();
+ if (faxNumbers == null) {
+ faxNumbers = new ArrayList<String>();
+ }
+ faxNumbers.add(client.getFaxNumber());
+ current.setFaxNumbers(faxNumbers);
+ }
if (client.isPersisted()) {
current = dao.update(current);
Added: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportBean.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportBean.java (rev 0)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportBean.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -0,0 +1,56 @@
+package com.franciaflex.faxtomail.services.service.imports;
+
+/*
+ * #%L
+ * FaxToMail :: Service
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2014 Franciaflex, Code Lutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/gpl-3.0.html>.
+ * #L%
+ */
+
+import com.franciaflex.faxtomail.persistence.entities.ClientImpl;
+
+public class ClientImportBean extends ClientImpl {
+
+ /** serialVersionUID. */
+ private static final long serialVersionUID = 5690836443815313312L;
+
+ public static final String PROPERTY_EMAIL_ADDRESS = "emailAddress";
+ public static final String PROPERTY_FAX_NUMBER = "faxNumber";
+
+ protected String emailAddress;
+
+ protected String faxNumber;
+
+ public String getEmailAddress() {
+ return emailAddress;
+ }
+
+ public void setEmailAddress(String emailAddress) {
+ this.emailAddress = emailAddress;
+ }
+
+ public String getFaxNumber() {
+ return faxNumber;
+ }
+
+ public void setFaxNumber(String faxNumber) {
+ this.faxNumber = faxNumber;
+ }
+}
Property changes on: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportBean.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportModel.java
===================================================================
--- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportModel.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ClientImportModel.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -25,7 +25,6 @@
*/
import com.franciaflex.faxtomail.persistence.entities.Client;
-import com.franciaflex.faxtomail.persistence.entities.ClientImpl;
import org.apache.commons.lang3.StringUtils;
import org.nuiton.csv.ValueParser;
@@ -37,7 +36,7 @@
* @author Kevin Morin (Code Lutin)
*
*/
-public class ClientImportModel extends AbstractImportModel<Client> {
+public class ClientImportModel extends AbstractImportModel<ClientImportBean> {
public ClientImportModel(char separator) {
super(separator);
@@ -61,19 +60,24 @@
}
if (s != null) {
s = StringUtils.removePattern(s, "[^0-9]");
+ if ("0".equals(s) || s.isEmpty()) {
+ s = null;
+ }
}
+
return s;
}
};
- newMandatoryColumn("Id_Correspondance", Client.PROPERTY_ID);
- newMandatoryColumn("Societe", Client.PROPERTY_BRAND);
+ newIgnoredColumn("Id_Correspondance");
+ newMandatoryColumn("Societe", Client.PROPERTY_COMPANY);
+ newMandatoryColumn("Marque", Client.PROPERTY_BRAND, nullParser);
newMandatoryColumn("Nom", Client.PROPERTY_NAME);
newMandatoryColumn("Caracteristique1", Client.PROPERTY_CARACTERISTIC1, nullParser);
newMandatoryColumn("Caracteristique2", Client.PROPERTY_CARACTERISTIC2, nullParser);
newMandatoryColumn("Caracteristique3", Client.PROPERTY_CARACTERISTIC3, nullParser);
- newMandatoryColumn("Numero_Fax", Client.PROPERTY_FAX_NUMBER, faxParser);
- newMandatoryColumn("Adresse_Mail", Client.PROPERTY_EMAIL_ADDRESS, nullParser);
+ newMandatoryColumn("Numero_Fax", ClientImportBean.PROPERTY_FAX_NUMBER, faxParser);
+ newMandatoryColumn("Adresse_Mail", ClientImportBean.PROPERTY_EMAIL_ADDRESS, nullParser);
newMandatoryColumn("Code_Client", Client.PROPERTY_CODE);
newIgnoredColumn("Client_Top");
@@ -82,7 +86,7 @@
}
@Override
- public Client newEmptyInstance() {
- return new ClientImpl();
+ public ClientImportBean newEmptyInstance() {
+ return new ClientImportBean();
}
}
Added: trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_620__modification_newclient_edireturn.sql
===================================================================
--- trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_620__modification_newclient_edireturn.sql (rev 0)
+++ trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_620__modification_newclient_edireturn.sql 2014-09-18 09:29:19 UTC (rev 620)
@@ -0,0 +1,43 @@
+
+-- remove topia from newclient
+drop table newclient;
+create table newClient (
+ name longvarchar,
+ emailAddress longvarchar,
+ faxNumber longvarchar,
+ caracteristic1 longvarchar,
+ caracteristic2 longvarchar,
+ caracteristic3 longvarchar,
+ code longvarchar not null,
+ company longvarchar not null,
+ brand longvarchar,
+ personInCharge longvarchar,
+ unique (code, company, emailAddress, faxNumber)
+);
+
+-- remove topia from edireturn
+drop table edireturn;
+create table ediReturn (
+ rangeRowTopiaId longvarchar not null,
+ commandNumber longvarchar,
+ error longvarchar,
+ unique (rangeRowTopiaId)
+);
+
+-- clear client table
+update email set client = null;
+delete from client;
+
+-- add company in client
+--drop constraint UK_b4ck8pelycojqmbrd8n36mdfw;
+
+alter table client drop emailAddress;
+alter table client drop faxNumber;
+alter table client drop id;
+
+alter table client add company longvarchar not NULL;
+alter table client add emailAddressesJson longvarchar;
+alter table client add faxNumbersJson longvarchar;
+alter table client alter brand SET NULL;
+
+alter table client add constraint UK_kqpy7y2f4onck5julevr0hfg1 unique (code, company);
Added: trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_620__modification_newclient_edireturn.sql
===================================================================
--- trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_620__modification_newclient_edireturn.sql (rev 0)
+++ trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_620__modification_newclient_edireturn.sql 2014-09-18 09:29:19 UTC (rev 620)
@@ -0,0 +1,43 @@
+
+-- remove topia from newclient
+drop table newclient;
+create table newClient (
+ name text,
+ emailAddress text,
+ faxNumber text,
+ caracteristic1 text,
+ caracteristic2 text,
+ caracteristic3 text,
+ code text not null,
+ company text not null,
+ brand text,
+ personInCharge text,
+ unique (code, company, emailAddress, faxNumber)
+);
+
+-- remove topia from edireturn
+drop table edireturn;
+create table ediReturn (
+ rangeRowTopiaId text not null,
+ commandNumber text,
+ error text,
+ unique (rangeRowTopiaId)
+);
+
+-- clear client table
+update email set client = null;
+delete from client;
+
+-- add company in client
+--drop constraint UK_b4ck8pelycojqmbrd8n36mdfw;
+
+alter table client drop emailAddress;
+alter table client drop faxNumber;
+alter table client drop id;
+
+alter table client add company text not NULL;
+alter table client add emailAddressesJson text;
+alter table client add faxNumbersJson text;
+alter table client alter brand drop not NULL;
+
+alter table client add constraint UK_kqpy7y2f4onck5julevr0hfg1 unique (code, company);
Added: trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_620__modification_newclient_edireturn.sql
===================================================================
--- trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_620__modification_newclient_edireturn.sql (rev 0)
+++ trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_620__modification_newclient_edireturn.sql 2014-09-18 09:29:19 UTC (rev 620)
@@ -0,0 +1,48 @@
+
+-- remove topia from newclient
+drop table newclient;
+GO
+create table newClient (
+ name varchar(MAX),
+ emailAddress varchar(MAX),
+ faxNumber varchar(MAX),
+ caracteristic1 varchar(MAX),
+ caracteristic2 varchar(MAX),
+ caracteristic3 varchar(MAX),
+ code varchar(MAX) not null,
+ company varchar(MAX) not null,
+ brand varchar(MAX),
+ personInCharge varchar(MAX),
+ unique (code, company, emailAddress, faxNumber)
+);
+GO
+
+-- remove topia from edireturn
+drop table edireturn;
+GO
+create table ediReturn (
+ rangeRowTopiaId varchar(255) not null,
+ commandNumber varchar(MAX),
+ error varchar(MAX),
+ unique (rangeRowTopiaId)
+);
+GO
+
+-- clear client table
+update email set client = null;
+delete from client;
+
+-- add company in client
+--drop constraint UK_b4ck8pelycojqmbrd8n36mdfw;
+
+alter table client drop emailAddress;
+alter table client drop faxNumber;
+alter table client drop id;
+
+alter table client add company text not NULL;
+alter table client add emailAddressesJson varchar(MAX);
+alter table client add faxNumbersJson varchar(MAX);
+alter table client alter brand drop not NULL;
+
+alter table client add constraint UK_kqpy7y2f4onck5julevr0hfg1 unique (code, company);
+GO
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/AbstractFaxToMailServiceTest.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -26,6 +26,9 @@
import java.io.File;
import java.io.IOException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -39,7 +42,8 @@
import org.hibernate.cfg.Environment;
import org.hibernate.dialect.H2Dialect;
import org.junit.After;
-import org.nuiton.util.FileUtil;
+import org.nuiton.topia.persistence.support.TopiaSqlSupport;
+import org.nuiton.topia.persistence.support.TopiaSqlWork;
import com.franciaflex.faxtomail.FaxToMailConfiguration;
import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaApplicationContext;
@@ -101,105 +105,71 @@
return hibernateH2Config;
}
- protected FaxToMailTopiaApplicationContext newApplicationContext(String dataBase) {
+ protected FaxToMailTopiaApplicationContext getApplicationContext() {
- Map<String, String> hibernateH2Config = getDatabaseConfiguration(dataBase);
+ if (applicationContext == null) {
+ String databaseName = UUID.randomUUID().toString();
+ Map<String, String> hibernateH2Config = getDatabaseConfiguration(databaseName);
- FaxToMailTopiaApplicationContext applicationContext = new FaxToMailTopiaApplicationContext(hibernateH2Config);
-
- if (log.isTraceEnabled()) {
- log.trace("created root context " + applicationContext);
+ applicationContext = new FaxToMailTopiaApplicationContext(hibernateH2Config);
+ addMissingTable(applicationContext);
+
+ if (log.isTraceEnabled()) {
+ log.trace("created root context " + applicationContext);
+ }
}
return applicationContext;
}
- protected boolean isDatabaseWithReferential() {
- return false;
- }
+ /**
+ * Ajoute manuellement les tables qui ne sont pas gérées par Topia.
+ *
+ * @param applicationContext application context
+ */
+ protected void addMissingTable(FaxToMailTopiaApplicationContext applicationContext) {
+ FaxToMailTopiaPersistenceContext persistenceContext = applicationContext.newPersistenceContext();
+ TopiaSqlSupport sqlSupport = persistenceContext.getSqlSupport();
+ sqlSupport.doSqlWork(new TopiaSqlWork() {
+ @Override
+ public void execute(Connection connection) throws SQLException {
+
+ Statement stat = connection.createStatement();
- protected FaxToMailTopiaApplicationContext getApplicationContext() {
+ stat.executeUpdate("create table newClient ( " +
+ "name longvarchar, " +
+ "emailAddress longvarchar, " +
+ "faxNumber longvarchar, " +
+ "caracteristic1 longvarchar, " +
+ "caracteristic2 longvarchar, " +
+ "caracteristic3 longvarchar, " +
+ "code longvarchar not null, " +
+ "company longvarchar not null, " +
+ "brand longvarchar, " +
+ "personInCharge longvarchar, " +
+ "unique (code, company, emailAddress, faxnumber)" +
+ "); ");
+
+ stat.executeUpdate("create table ediReturn ( " +
+ "rangeRowTopiaId longvarchar not null," +
+ "commandNumber longvarchar, " +
+ "error longvarchar, " +
+ "unique (rangeRowTopiaId) " +
+ ")");
+
+ connection.commit();
- String databaseName = UUID.randomUUID().toString();
-
- if (isDatabaseWithReferential()) {
-
- File tempDirFile = SystemUtils.getJavaIoTmpDir();
-
- File databaseRefFile = new File(tempDirFile, DATABASE_REF);
-
- if (!databaseRefFile.exists()) {
-
- if (log.isTraceEnabled()) {
- log.trace("create referential data base");
- }
-
- FaxToMailTopiaApplicationContext applicationContext = newApplicationContext(DATABASE_REF);
-
- FaxToMailServiceContext serviceContext = FaxToMailServiceContext.newDirectServiceContext(applicationContext);
-
- serviceContext.setApplicationConfig(getApplicationConfig());
-
- InitFaxToMailService initFaxToMailService = serviceContext.getInitFaxToMailService();
-
- initFaxToMailService.init();
-
- if (log.isTraceEnabled()) {
- log.trace("closing transaction " + applicationContext);
- }
-
- applicationContext.close();
-
- File lockFile = new File(databaseRefFile, "h2data.lock.db");
-
- int countWaiting = 0;
-
- while (lockFile.exists() && countWaiting < 150) {
- try {
- Thread.sleep(200);
- } catch (InterruptedException e) {
- throw new RuntimeException("can't wait", e);
- }
- countWaiting++;
- }
-
- if (lockFile.exists()) {
- throw new RuntimeException("database ref is not close after 30 seconds !");
- }
-
}
+ });
- File databaseFile = new File(tempDirFile, databaseName);
-
- if (log.isTraceEnabled()) {
- log.trace("Copy referential database to " + databaseFile.getName());
- }
-
- try {
- FileUtil.copyAndRenameRecursively(databaseRefFile, databaseFile, false, null, null, false);
- } catch (IOException e) {
- throw new RuntimeException("can't copy database Ref", e);
- }
-
- if (log.isTraceEnabled()) {
- log.trace("Copy referential database : Complete");
- }
- }
-
- return newApplicationContext(databaseName);
+ persistenceContext.close();
}
protected FaxToMailTopiaPersistenceContext newPersistenceContext() {
- if (applicationContext == null) {
-
- applicationContext = getApplicationContext();
-
- }
-
FaxToMailTopiaPersistenceContext persistenceContext;
- persistenceContext = applicationContext.newPersistenceContext();
+ persistenceContext = getApplicationContext().newPersistenceContext();
if (log.isTraceEnabled()) {
log.trace("opened transaction " + persistenceContext);
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -1,17 +1,5 @@
package com.franciaflex.faxtomail.services.service;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.franciaflex.faxtomail.persistence.entities.ClientTopiaDao;
-import com.franciaflex.faxtomail.persistence.entities.NewClient;
-import com.franciaflex.faxtomail.persistence.entities.NewClientImpl;
-import com.franciaflex.faxtomail.persistence.entities.NewClientTopiaDao;
-import com.franciaflex.faxtomail.persistence.entities.NewClientType;
-
/*
* #%L
* FaxToMail :: Service
@@ -36,6 +24,22 @@
* #L%
*/
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.topia.persistence.support.TopiaSqlSupport;
+import org.nuiton.topia.persistence.support.TopiaSqlWork;
+
+import com.franciaflex.faxtomail.persistence.entities.Client;
+import com.franciaflex.faxtomail.persistence.entities.ClientTopiaDao;
+import com.franciaflex.faxtomail.persistence.entities.NewClient;
+
/**
* Test de client service.
*
@@ -54,7 +58,12 @@
@Test
public void testImportClientCount() {
ClientTopiaDao clientDao = getServiceContext().getPersistenceContext().getClientDao();
+
+ // asserts
Assert.assertEquals(4, clientDao.count());
+ // les emails et les fax ont une gestion particuliere
+ Assert.assertFalse(clientDao.forEmailAddressesJsonLike("gerard.menvussa(a)code.com").isEmpty());
+ Assert.assertFalse(clientDao.forFaxNumbersJsonLike("0498877665").isEmpty());
}
/**
@@ -64,37 +73,51 @@
public void testAddNewClientInTmpTable() {
ClientService clientService = newService(ClientService.class);
- NewClientTopiaDao newClientDao = getServiceContext().getPersistenceContext().getNewClientDao();
ClientTopiaDao clientDao = getServiceContext().getPersistenceContext().getClientDao();
// asserts
- Assert.assertNull(clientDao.forEmailAddressEquals("gerard.menvussa(a)lutin.com").findAnyOrNull());
+ Assert.assertTrue(clientDao.forEmailAddressesJsonLike("gerard.menvussa(a)lutin.com").isEmpty());
// add new clients
- NewClient newClient = new NewClientImpl();
- newClient.setCode("99154");
- newClient.setBrand("FX");
- newClient.setEmailAddress("gerard.menvussa(a)lutin.com");
- newClient.setType(NewClientType.UPDATE);
- newClient = newClientDao.create(newClient);
+ TopiaSqlSupport sqlSupport = getServiceContext().getPersistenceContext().getSqlSupport();
+ sqlSupport.doSqlWork(new TopiaSqlWork() {
+ @Override
+ public void execute(Connection connection) throws SQLException {
- // precedure de mise à jour
- clientService.updateNewClients();
+ String query = String.format("INSERT INTO %s(%s,%s,%s,%s,%s) VALUES(?, ?, ?, ?, ?)",
+ NewClient.class.getSimpleName(),
+ NewClient.PROPERTY_CODE,
+ NewClient.PROPERTY_COMPANY,
+ NewClient.PROPERTY_BRAND,
+ NewClient.PROPERTY_EMAIL_ADDRESS,
+ NewClient.PROPERTY_NAME);
- // asserts
- Assert.assertNotNull(clientDao.forEmailAddressEquals("gerard.menvussa(a)lutin.com").findAnyOrNull());
+ PreparedStatement stat = connection.prepareStatement(query);
+ stat.setString(1, "99154");
+ stat.setString(2, "FX");
+ stat.setString(3, "FX");
+ stat.setString(4, "gerard.menvussa(a)lutin.com");
+ stat.setString(5, "Gerard");
+ int result = stat.executeUpdate();
+ Assert.assertEquals(1, result);
- // add new clients
- NewClient deleteClient = new NewClientImpl();
- deleteClient.setCode("99154");
- deleteClient.setBrand("FX");
- deleteClient.setType(NewClientType.DELETION);
- deleteClient = newClientDao.create(deleteClient);
+ stat.setString(1, "99154");
+ stat.setString(2, "FX");
+ stat.setString(3, "FX");
+ stat.setString(4, "gerard.menvussa+test(a)lutin.com");
+ stat.setString(5, "Gerard");
+ result = stat.executeUpdate();
+ Assert.assertEquals(1, result);
+ }
+ });
// precedure de mise à jour
clientService.updateNewClients();
// asserts
- Assert.assertNull(clientDao.forCodeEquals("99154").findAnyOrNull());
+ List<Client> clients = clientDao.forEmailAddressesJsonLike("gerard.menvussa(a)lutin.com");
+ Assert.assertEquals(1, clients.size());
+ Assert.assertEquals(2, clients.get(0).getEmailAddresses().size());
+
}
}
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-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/InitTestDataImpl.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -31,12 +31,14 @@
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
+import java.util.Collections;
import java.util.Date;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -242,12 +244,21 @@
List<RangeRow> rangeRows = new ArrayList<>();
Client client = clients.get(0);
- String sender = client.getEmailAddress();
boolean fax = false;
- if (sender == null && client.getFaxNumber() != null) {
- sender = client.getFaxNumber();
+ List<String> senders = client.getEmailAddresses();
+ List<String> faxNumbers = client.getFaxNumbers();
+ if (CollectionUtils.isEmpty(senders) && CollectionUtils.isNotEmpty(faxNumbers)) {
+ senders = Collections.singletonList(client.getFaxNumbers().get(0));
fax = true;
}
+ String sender = null;
+ if (CollectionUtils.isNotEmpty(senders)) {
+ sender = senders.get(0);
+ }
+ String faxNumber = null;
+ if (CollectionUtils.isNotEmpty(faxNumbers)) {
+ faxNumber = faxNumbers.get(0);
+ }
boolean opened = true; //random.nextBoolean();
@@ -264,12 +275,13 @@
String projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(now));
- Email email = emailDao.create(Email.PROPERTY_SENDER, sender,
+ Email email = emailDao.create(
+ Email.PROPERTY_SENDER, sender,
Email.PROPERTY_FAX, fax,
Email.PROPERTY_CLIENT, client,
Email.PROPERTY_PROJECT_REFERENCE, projectRef,
Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / "
- + client.getName() + " / " + client.getFaxNumber() + " / " + dateDecorator.toString(now),
+ + client.getName() + " / " + faxNumber + " / " + dateDecorator.toString(now),
Email.PROPERTY_RECEPTION_DATE, now,
Email.PROPERTY_MAIL_FOLDER, folder,
Email.PROPERTY_DEMAND_STATUS, opened ? DemandStatus.IN_PROGRESS : DemandStatus.UNTREATED,
@@ -282,9 +294,11 @@
DemandType demandType = types.get(0); // types.get(0) à des gammes obligatoires
if (FaxToMailServiceUtils.contains(demandType.getRequiredFields(), MailField.RANGE_ROW)) {
for (int j = 0; j < 4; j++) {
- RangeRow rangeRow = rangeRowDao.create(RangeRow.PROPERTY_RANGE, ranges.get(j),
- RangeRow.PROPERTY_COMMAND_NUMBER, RandomStringUtils.randomNumeric(6), RangeRow.PROPERTY_PRODUCT_QUANTITY,
- 50, RangeRow.PROPERTY_SAV_QUANTITY, 60);
+ RangeRow rangeRow = rangeRowDao.create(
+ RangeRow.PROPERTY_RANGE, ranges.get(j),
+ RangeRow.PROPERTY_COMMAND_NUMBER, RandomStringUtils.randomNumeric(6),
+ RangeRow.PROPERTY_PRODUCT_QUANTITY, 50,
+ RangeRow.PROPERTY_SAV_QUANTITY, 60);
rangeRows.add(rangeRow);
}
email.setRangeRow(rangeRows);
@@ -306,11 +320,12 @@
Email.PROPERTY_MAIL_FOLDER, Email.PROPERTY_DEMAND_STATUS));
projectRef = t("faxtomail.email.projectReference.default", dateDecorator.toString(yesterday));
- email = emailDao.create(Email.PROPERTY_SENDER, sender,
+ email = emailDao.create(
+ Email.PROPERTY_SENDER, sender,
Email.PROPERTY_FAX, fax,
Email.PROPERTY_CLIENT,client,
Email.PROPERTY_PROJECT_REFERENCE, projectRef, Email.PROPERTY_OBJECT, client.getCaracteristic1() + " / " + client.getCode() + " / "
- + client.getName() + " / " + client.getFaxNumber() + " / " + dateDecorator.toString(yesterday),
+ + client.getName() + " / " + faxNumber + " / " + dateDecorator.toString(yesterday),
Email.PROPERTY_RECEPTION_DATE, yesterday,
Email.PROPERTY_MAIL_FOLDER, folder,
Email.PROPERTY_DEMAND_STATUS, opened ? DemandStatus.IN_PROGRESS : DemandStatus.UNTREATED,
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MiscTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MiscTest.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/MiscTest.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -31,6 +31,8 @@
import org.junit.Ignore;
import org.junit.Test;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaApplicationContext;
+
/**
* Class utilitaire permettant de générer facilement les schemas pour différentes base de données.
*
@@ -68,6 +70,11 @@
hibernateH2Config.put(Environment.URL, "jdbc:postgresql:faxtomail");*/
return hibernateH2Config;
}
+
+ @Override
+ protected void addMissingTable(FaxToMailTopiaApplicationContext applicationContext) {
+ // not needed here (and not working)
+ }
@Test
public void getSqlServerSchema() {
Modified: trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/migration/FlywayMigrationTest.java
===================================================================
--- trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/migration/FlywayMigrationTest.java 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/migration/FlywayMigrationTest.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -43,6 +43,7 @@
import org.nuiton.topia.persistence.support.TopiaSqlQuery;
import org.nuiton.util.FileUtil;
+import com.franciaflex.faxtomail.persistence.entities.FaxToMailTopiaApplicationContext;
import com.franciaflex.faxtomail.services.service.AbstractFaxToMailServiceTest;
/**
@@ -80,6 +81,11 @@
return hibernateH2Config;
}
+
+ @Override
+ protected void addMissingTable(FaxToMailTopiaApplicationContext applicationContext) {
+ // on desactive la creation des tables dans ce cas car la base est existante
+ }
/**
* Vérifie la version de la base de données après les migrations qui sont sensées être passée.
Modified: trunk/faxtomail-service/src/test/resources/csv/clients.csv
===================================================================
--- trunk/faxtomail-service/src/test/resources/csv/clients.csv 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-service/src/test/resources/csv/clients.csv 2014-09-18 09:29:19 UTC (rev 620)
@@ -1,5 +1,5 @@
-Id_Correspondance;Societe;Nom;Caracteristique1;Caracteristique2;Caracteristique3;Numero_Fax;Adresse_Mail;Code_Client
-253042;FX;John Doe;A;71 Allo;NULL;03 12 34 56 78;john(a)doe.fr;99153
-253142;FX;Gerard Menvussa;A+;40 Nabi;NULL;05 12 23 34 45;gerard.menvussa(a)code.com;99154
-253242;FX;Ella Elli;NULL;38 LA;NULL;04 98 87 76 65;NULL;99184
-253243;FX;Cossé David;NULL;38 LA;NULL;04 98 87 76 65;david.cosse(a)sfr.fr;22152
\ No newline at end of file
+Id_Correspondance;Societe;Marque;Nom;Caracteristique1;Caracteristique2;Caracteristique3;Numero_Fax;Adresse_Mail;Code_Client
+253042;FX;FX;John Doe;A;71 Allo;NULL;03 12 34 56 78;john(a)doe.fr;99153
+253142;FX;;Gerard Menvussa;A+;40 Nabi;NULL;05 12 23 34 45;gerard.menvussa(a)code.com;99154
+253242;FX;FX;Ella Elli;NULL;38 LA;NULL;04 98 87 76 65;NULL;99184
+253243;FX;;Cossé David;NULL;38 LA;NULL;04 98 87 76 65;david.cosse(a)sfr.fr;22152
\ No newline at end of file
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-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-09-18 09:29:19 UTC (rev 620)
@@ -322,10 +322,16 @@
String object;
if (client != null) {
+ //TODO echatellier : a valider que l'on affiche bien le premier mail du client
+ String faxNumber = "-";
+ if (CollectionUtils.isNotEmpty(client.getFaxNumbers())) {
+ faxNumber = client.getFaxNumbers().get(0);
+ }
+
object = ObjectUtils.defaultIfNull(client.getCaracteristic1(), "-") + " / " +
ObjectUtils.defaultIfNull(client.getCode(), "-") + " / " +
ObjectUtils.defaultIfNull(client.getName(), "-") + " / " +
- ObjectUtils.defaultIfNull(client.getFaxNumber(), "-") + " / " +
+ faxNumber + " / " +
DateFormat.getDateInstance(DateFormat.MEDIUM).format(new Date());
modifiedProperties.add(Email.PROPERTY_CLIENT);
Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-input.jsp
===================================================================
--- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-input.jsp 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/import-input.jsp 2014-09-18 09:29:19 UTC (rev 620)
@@ -44,7 +44,7 @@
<div class="form-group">
<label for="clientField" class="control-label">Fichier client :</label>
<input type="file" id="clientField" name="clientFile" class="form-control">
- <p class="help-block">Format du fichier csv : <code>Id_Correspondance;Societe;Nom;Caracteristique1;Caracteristique2;Caracteristique3;Numero_Fax;Adresse_Mail;Code_Client</code><br />
+ <p class="help-block">Format du fichier csv : <code>Societe;Marque;Nom;Caracteristique1;Caracteristique2;Caracteristique3;Numero_Fax;Adresse_Mail;Code_Client</code><br />
Encodage du fichier csv : <code>${applicationConfig.importFileEncoding}</code></p>
</div>
<button type="submit" class="btn btn-primary navbar-btn">Valider</button>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-09-17 08:37:38 UTC (rev 619)
+++ trunk/pom.xml 2014-09-18 09:29:19 UTC (rev 620)
@@ -479,6 +479,12 @@
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>c3p0</groupId>
+ <artifactId>c3p0</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
1
0
Author: echatellier
Date: 2014-09-17 10:37:38 +0200 (Wed, 17 Sep 2014)
New Revision: 619
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/619
Log:
Update libs
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2014-09-10 13:30:37 UTC (rev 618)
+++ trunk/pom.xml 2014-09-17 08:37:38 UTC (rev 619)
@@ -96,21 +96,21 @@
<!-- libraries version -->
<nuitonI18nVersion>3.3</nuitonI18nVersion>
- <nuitonConfigVersion>3.0-rc-1</nuitonConfigVersion>
+ <nuitonConfigVersion>3.0-rc-2</nuitonConfigVersion>
<nuitonCsvVersion>3.0-rc-4</nuitonCsvVersion>
<nuitonDecoratorVersion>3.0-alpha-3</nuitonDecoratorVersion>
- <nuitonUpdaterVersion>3.0-alpha-2</nuitonUpdaterVersion>
- <nuitonUtilsVersion>3.0-SNAPSHOT</nuitonUtilsVersion>
+ <nuitonUpdaterVersion>3.0-rc-1</nuitonUpdaterVersion>
+ <nuitonUtilsVersion>3.0-rc-8</nuitonUtilsVersion>
<nuitonValidatorVersion>3.0-rc-2</nuitonValidatorVersion>
- <nuitonWebVersion>1.16</nuitonWebVersion>
+ <nuitonWebVersion>1.17</nuitonWebVersion>
<eugeneVersion>2.13</eugeneVersion>
- <topiaVersion>3.0-SNAPSHOT</topiaVersion>
+ <topiaVersion>3.0-beta-13</topiaVersion>
<hibernateVersion>4.3.6.Final</hibernateVersion>
<h2Version>1.3.176</h2Version>
<guavaVersion>18.0</guavaVersion>
- <jaxxVersion>2.12-SNAPSHOT</jaxxVersion>
+ <jaxxVersion>2.12</jaxxVersion>
<!-- do not upgrade to 1.6.5-1 -->
<swingXVersion>1.6.4</swingXVersion>
<xworkVersion>2.3.16.3</xworkVersion>
@@ -551,14 +551,14 @@
<dependency>
<groupId>org.nuiton.js</groupId>
<artifactId>nuiton-js-angularjs</artifactId>
- <version>1.2.23-1</version>
+ <version>1.2.25-1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.nuiton.js</groupId>
<artifactId>nuiton-js-font-awesome</artifactId>
- <version>4.1.0-1</version>
+ <version>4.2.0-1</version>
<scope>runtime</scope>
</dependency>
1
0
r618 - in trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing: . actions content content/demande
by kmorin@users.forge.codelutin.com 10 Sep '14
by kmorin@users.forge.codelutin.com 10 Sep '14
10 Sep '14
Author: kmorin
Date: 2014-09-10 15:30:37 +0200 (Wed, 10 Sep 2014)
New Revision: 618
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/618
Log:
fixes #5772 Impossible de selectionner un noeud de l'arbre
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/actions/AbstractChangeScreenAction.java
trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java
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/FaxToMailUIContext.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-09-10 10:04:17 UTC (rev 617)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java 2014-09-10 13:30:37 UTC (rev 618)
@@ -111,7 +111,7 @@
public static final String PROPERTY_HIDE_BODY = "hideBody";
- private static final String PROPERTY_ACTION_IN_PROGRESS = "actionInProgress";
+ public static final String PROPERTY_ACTION_IN_PROGRESS = "actionInProgress";
/**
* Application context (only one for all the application).
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java 2014-09-10 10:04:17 UTC (rev 617)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/AbstractChangeScreenAction.java 2014-09-10 13:30:37 UTC (rev 618)
@@ -74,8 +74,6 @@
public boolean prepareAction() throws Exception {
boolean result = super.prepareAction();
- setTopBarButtonEnabled(false);
-
result &= skipCheckCurrentScreen || getHandler().quitCurrentScreen();
return result;
}
@@ -102,17 +100,4 @@
context.setScreen(screen);
}
- @Override
- public void releaseAction() {
- super.releaseAction();
- setTopBarButtonEnabled(true);
- }
-
- protected void setTopBarButtonEnabled(boolean enabled) {
- MainUI ui = getUI();
- ui.getSearchButton().setEnabled(enabled);
- ui.getDemandListButton().setEnabled(enabled);
- ui.getExitButton().setEnabled(enabled);
- }
-
}
Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java
===================================================================
--- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-09-10 10:04:17 UTC (rev 617)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/MainUIHandler.java 2014-09-10 13:30:37 UTC (rev 618)
@@ -159,6 +159,17 @@
// SwingUtil.getLayer(ui.getBody()).setUI(new BetaLayerUI());
+ getContext().addPropertyChangeListener(FaxToMailUIContext.PROPERTY_ACTION_IN_PROGRESS, new PropertyChangeListener() {
+ @Override
+ public void propertyChange(PropertyChangeEvent evt) {
+ boolean inProgress = (boolean) evt.getNewValue();
+ MainUI ui = getUI();
+ ui.getSearchButton().setEnabled(!inProgress);
+ ui.getDemandListButton().setEnabled(!inProgress);
+ ui.getExitButton().setEnabled(!inProgress);
+ }
+ });
+
changeTitle();
JToolBar bar = ui.getBottomBar();
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-09-10 10:04:17 UTC (rev 617)
+++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeListUIHandler.java 2014-09-10 13:30:37 UTC (rev 618)
@@ -56,6 +56,7 @@
import com.franciaflex.faxtomail.persistence.entities.Configuration;
import com.franciaflex.faxtomail.persistence.entities.MailAction;
+import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext;
import com.franciaflex.faxtomail.ui.swing.actions.OpenMailFolderChooserFromListAction;
import jaxx.runtime.JAXXUtil;
import jaxx.runtime.validator.swing.SwingValidator;
@@ -268,12 +269,19 @@
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);
+ }
+ });
+
navigationTree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
FolderTreeNode folderNode = (FolderTreeNode) e.getPath().getLastPathComponent();
if (folderNode.isCanSelect()) {
- navigationTree.setEnabled(false);
MailFolder folder = folderNode.getMailFolder();
getModel().setSelectedFolder(folder);
@@ -294,31 +302,8 @@
model.addPropertyChangeListener(DemandeListUIModel.PROPERTY_SELECTED_FOLDER, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
-
- // a new transaction has been opened by getContext().createNewTransaction();
- // 10 line upper
-
- // reset pagination when folder change
- getModel().resetPaginationParameter();
-
MailFolder folder = (MailFolder) evt.getNewValue();
-
- FolderTreeNode folderNode = nodesByFolder.get(folder);
- boolean readable = folderNode.isCanRead();
-
- while (folder.getAllowCreateDemandIntoFolder() == null
- && folder.getParent() != null) {
- folder = folder.getParent();
- }
-
- DemandeListUIModel model = getModel();
- model.setComputeQuantitiesByRangeEnabled(readable);
- model.setNewDemandEnabled(readable && folder != null && Boolean.TRUE.equals(folder.getAllowCreateDemandIntoFolder()));
-
- LoadFolderEmailsAction loadFolderEmailsAction =
- getContext().getActionFactory().createLogicAction(DemandeListUIHandler.this,
- LoadFolderEmailsAction.class);
- getContext().getActionEngine().runAction(loadFolderEmailsAction);
+ loadFolderDemands(folder, nodesByFolder);
}
});
@@ -348,6 +333,37 @@
}
}
+ protected void loadFolderDemands(MailFolder folder, Map<MailFolder, FolderTreeNode> nodesByFolder) {
+ // a new transaction has been opened by getContext().createNewTransaction();
+ // 10 line upper
+
+ // reset pagination when folder change
+ getModel().resetPaginationParameter();
+
+ FolderTreeNode folderNode = nodesByFolder.get(folder);
+ boolean readable = folderNode.isCanRead();
+
+ while (folder.getAllowCreateDemandIntoFolder() == null
+ && folder.getParent() != null) {
+ folder = folder.getParent();
+ }
+
+ DemandeListUIModel model = getModel();
+ model.setComputeQuantitiesByRangeEnabled(readable);
+ model.setNewDemandEnabled(readable && folder != null && Boolean.TRUE.equals(folder.getAllowCreateDemandIntoFolder()));
+
+ FaxToMailUIContext context = getContext();
+ LoadFolderEmailsAction loadFolderEmailsAction =
+ context.getActionFactory().createLogicAction(this,
+ LoadFolderEmailsAction.class);
+
+ if (context.isActionInProgress(null)) {
+ context.getActionEngine().runInternalAction(loadFolderEmailsAction);
+ } else {
+ context.getActionEngine().runAction(loadFolderEmailsAction);
+ }
+ }
+
public void goToNextPage() {
getModel().setPaginationParameter(getModel().getPaginationResult().getNextPage());
runListAction();
1
0
r617 - in trunk/faxtomail-service/src/main/resources: db/migration/h2 db/migration/postgres db/migration/sqlserver pdf
by echatellier@users.forge.codelutin.com 10 Sep '14
by echatellier@users.forge.codelutin.com 10 Sep '14
10 Sep '14
Author: echatellier
Date: 2014-09-10 12:04:17 +0200 (Wed, 10 Sep 2014)
New Revision: 617
Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/617
Log:
Fix build
Modified:
trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_597__mise_a_jour_performances.sql
trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_597__mise_a_jour_performances.sql
trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_597__mise_a_jour_performances.sql
trunk/faxtomail-service/src/main/resources/pdf/demande.mustache
Property changes on: trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_597__mise_a_jour_performances.sql
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_597__mise_a_jour_performances.sql
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_597__mise_a_jour_performances.sql
___________________________________________________________________
Added: svn:eol-style
+ native
Added: svn:keywords
+ Author Date Id Revision HeadURL
Property changes on: trunk/faxtomail-service/src/main/resources/pdf/demande.mustache
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
1
0