r622 - in trunk: . faxtomail-persistence/src/main/java/com/franciaflex/faxtomail/persistence/entities faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/sear
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/jav... $ + * %% + * 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@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>
participants (1)
-
kmorin@users.forge.codelutin.com