r662 - in trunk: . faxtomail-persistence/src/main/xmi faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports faxtomail-service/src/main/resources/db/migration/h2 faxtomail-service/src/main/resources/db/migration/postgres faxtomail-service/src/main/resources/db/migration/sqlserver faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande faxtomail-ui-swing/src/m
Author: kmorin Date: 2014-10-03 11:14:56 +0200 (Fri, 03 Oct 2014) New Revision: 662 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/662 Log: - ajout de la soci?\195?\169t?\195?\169 dans le dossier de mail - passage a la version stable de jaxx - ajout propri?\195?\169t?\195?\169 ?\195?\160 ignorer sur les demandes Added: trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_662__add_company_in_mailfolder.sql trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_662__add_company_in_mailfolder.sql trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_662__add_company_in_mailfolder.sql Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientService.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js trunk/pom.xml Modified: trunk/faxtomail-persistence/src/main/xmi/faxtomail.zargo =================================================================== (Binary files differ) Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientService.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientService.java 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientService.java 2014-10-03 09:14:56 UTC (rev 662) @@ -32,9 +32,9 @@ * @author Kevin Morin (Code Lutin) */ public interface ClientService extends FaxToMailService { - Client getClientForEmailAddress(String emailAddress, Email email); + Client getClientForEmailAddress(String emailAddress, Email email, String company); - Client getClientForCode(String code); + Client getClientForCode(String code, String company); void updateNewClients(); } Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ClientServiceImpl.java 2014-10-03 09:14:56 UTC (rev 662) @@ -30,12 +30,14 @@ import java.sql.Statement; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.map.MultiKeyMap; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep; import org.nuiton.topia.persistence.support.TopiaSqlSupport; import org.nuiton.topia.persistence.support.TopiaSqlWork; @@ -65,10 +67,11 @@ * * @param emailAddress sender address * @param email email + * @param company company of the client * @return client for emailAddress (can be {@code null}) */ @Override - public Client getClientForEmailAddress(String emailAddress, Email email) { + public Client getClientForEmailAddress(String emailAddress, Email email, String company) { Preconditions.checkNotNull(email); Preconditions.checkNotNull(emailAddress); @@ -91,7 +94,13 @@ } if (CollectionUtils.isNotEmpty(clients)) { - client = clients.get(0); + int i = 0; + while (client == null && i < clients.size()) { + Client c = clients.get(i); + if (StringUtils.isBlank(company) || Objects.equals(company, c.getCompany())) { + client = c; + } + } } } @@ -101,19 +110,22 @@ } /** - * Recherche un client par code. + * Recherche un client par code et société. * - * FIXME echatellier 20140709 cette methodé récupére un client au hazard car le code peut être dupliqué par société - * * @param code client code - * @return un client au hasard + * @param company + * @return le client pour la société */ @Override - public Client getClientForCode(String code) { + public Client getClientForCode(String code, String company) { ClientTopiaDao clientDao = getPersistenceContext().getClientDao(); Client client = null; if (StringUtils.isNotBlank(code)) { - client = clientDao.forCodeEquals(code).findAnyOrNull(); + TopiaQueryBuilderAddCriteriaOrRunQueryStep<Client> ctqbacorqs = clientDao.forCodeEquals(code); + if (StringUtils.isNotBlank(company)) { + ctqbacorqs = ctqbacorqs.addEquals(Client.PROPERTY_COMPANY, company); + } + client = ctqbacorqs.findAnyOrNull(); } return client; } 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-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-10-03 09:14:56 UTC (rev 662) @@ -232,10 +232,16 @@ EmailTopiaDao dao = getPersistenceContext().getEmailDao(); HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); + MailFolder folder = email.getMailFolder(); + while (!folder.isUseCurrentLevelCompany() && folder.getParent() != null) { + folder = folder.getParent(); + } + String company = folder.getCompany(); + // if client code is null, do not manage client at all Client client = null; if (StringUtils.isNotBlank(clientCode)) { - client = getClientService().getClientForCode(clientCode); + client = getClientService().getClientForCode(clientCode, company); if (client == null) { String message = t("faxtomail.service.email.save.clientCode.error", clientCode); throw new InvalidClientException(message); Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java =================================================================== --- trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/imports/ArchiveImportModel.java 2014-10-03 09:14:56 UTC (rev 662) @@ -78,7 +78,14 @@ newMandatoryColumn("receptionDate", Email.PROPERTY_RECEPTION_DATE, dateValueParser); newMandatoryColumn("projectReference", Email.PROPERTY_PROJECT_REFERENCE); - newMandatoryColumn("sender", Email.PROPERTY_SENDER); + newMandatoryColumn("sender", Email.PROPERTY_SENDER, new ValueParser<Object>() { + @Override + public Object parse(String value) throws ParseException { + value = value.replaceFirst("^.*<(.*)>$", "$1"); + value = value.toLowerCase(); + return value; + } + }); newMandatoryColumn("fax", Email.PROPERTY_FAX, Common.PRIMITIVE_BOOLEAN); newMandatoryColumn("recipient", Email.PROPERTY_RECIPIENT); newMandatoryColumn("object", Email.PROPERTY_OBJECT); Added: trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_662__add_company_in_mailfolder.sql =================================================================== --- trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_662__add_company_in_mailfolder.sql (rev 0) +++ trunk/faxtomail-service/src/main/resources/db/migration/h2/V1_0_0_662__add_company_in_mailfolder.sql 2014-10-03 09:14:56 UTC (rev 662) @@ -0,0 +1,5 @@ + +-- add mail folder level configuration +alter table mailfolder add useCurrentLevelCompany boolean; +alter table mailfolder add company longvarchar; +update mailfolder set useCurrentLevelCompany = 'f'; \ No newline at end of file Added: trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_662__add_company_in_mailfolder.sql =================================================================== --- trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_662__add_company_in_mailfolder.sql (rev 0) +++ trunk/faxtomail-service/src/main/resources/db/migration/postgres/V1_0_0_662__add_company_in_mailfolder.sql 2014-10-03 09:14:56 UTC (rev 662) @@ -0,0 +1,5 @@ + +-- add mail folder level configuration +alter table mailfolder add useCurrentLevelCompany boolean; +alter table mailfolder add company text; +update mailfolder set useCurrentLevelCompany = 'f'; \ No newline at end of file Added: trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_662__add_company_in_mailfolder.sql =================================================================== --- trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_662__add_company_in_mailfolder.sql (rev 0) +++ trunk/faxtomail-service/src/main/resources/db/migration/sqlserver/V1_0_0_662__add_company_in_mailfolder.sql 2014-10-03 09:14:56 UTC (rev 662) @@ -0,0 +1,6 @@ + +-- add mail folder level configuration +alter table mailfolder add useCurrentLevelCompany bit; +alter table mailfolder add company varchar(MAX); +GO +update mailfolder set useCurrentLevelCompany = 0; \ No newline at end of file Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java 2014-10-03 09:14:56 UTC (rev 662) @@ -426,6 +426,7 @@ result.add(Email.PROPERTY_HISTORY); result.add(DemandeUIModel.PROPERTY_GROUPED_DEMANDES); result.add(Email.PROPERTY_REPLIES); + result.add(DemandeUIModel.PROPERTY_VALID_RANGE_ROW_MODELS); return result; } Modified: trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java =================================================================== --- trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java 2014-10-03 09:14:56 UTC (rev 662) @@ -146,7 +146,6 @@ boolean editable = model.isEditable(); boolean archived = model.getArchiveDate() != null; - boolean transmitEnabled = editable && isActionEnabled(model, MailAction.TRANSMIT, config); getModel().setTransmitEnabled(transmitEnabled); 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-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties 2014-10-03 09:14:56 UTC (rev 662) @@ -5,7 +5,7 @@ application.action.create.error= application.error.ui.business.warning= faxtomail.about.bottomText=Copyright %s - %s - version %s -faxtomail.about.message=<h3>FaxToMail</h3><p><strong>Outil de gestion d'emails.</strong></p><br/><p>Ce logiciel permet de router les emails reçus vers des dossiers et de les transformer en formulaires. Ils peuvent être déplacés entre dossiers pour êtres remplis par différentes personnes puis archivés.</p><p>Ce projet a été initiée en 2014 par le groupe MAC et réalisé par la société <a href\="http\://codelutin.com">Codelutin</a>.</p><hr/><br/><p>Pour plus d'informations, vous pouvez visiter le <a href\="http\://doc.codelutin.com/faxtomail">site du projet</a>.</p><p>Projet hébergé sur la forge <a href\="http\://forge.codelutin.com/projects/faxtomail">forge.codelutin.com</a>.</p> +faxtomail.about.message=<h3>FaxToMail</h3><p><strong>Outil de gestion d'emails.</strong></p><br/><p>Ce logiciel permet de router les emails reçus vers des dossiers et de les transformer en formulaires. Ils peuvent être déplacés entre dossiers pour êtres remplis par différentes personnes puis archivés.</p><p>Ce projet a été initiée en 2014 par le groupe MAC et réalisé par la société Code Lutin.</p> faxtomail.about.title=À propos de FaxToMail faxtomail.action.archive.tip=Archiver l'élément faxtomail.action.attachment.edit.tip=Edition du fichier %s Modified: trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java =================================================================== --- trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-ui-web/src/main/java/com/franciaflex/faxtomail/web/job/MailFilterJob.java 2014-10-03 09:14:56 UTC (rev 662) @@ -62,6 +62,7 @@ import org.apache.commons.io.FileUtils; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; @@ -311,6 +312,13 @@ continue; } + // find company of the filter folder + MailFolder filterFolder = filter.getMailFolder(); + while (!filterFolder.isUseCurrentLevelCompany() && filterFolder.getParent() != null) { + filterFolder = filterFolder.getParent(); + } + String company = filterFolder.getCompany(); + Address[] addresses = message.getFrom(); if (addresses != null && addresses.length > 0) { String sender = addresses[0].toString(); @@ -320,7 +328,7 @@ sender = sender.toLowerCase(); // Identification du client en fonction du numéro de fax appelant ou de l'adresse e-mail émettrice - Client client = clientService.getClientForEmailAddress(sender, email); + Client client = clientService.getClientForEmailAddress(sender, email, company); modifiedProperties.add(Email.PROPERTY_SENDER); String object; Modified: trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-ui-web/src/main/webapp/WEB-INF/content/admin/configuration-input.jsp 2014-10-03 09:14:56 UTC (rev 662) @@ -276,7 +276,20 @@ </div> <div id="collapse0" class="panel-collapse collapse" ng-form="generalForm"> <div class="panel-body"> + <div class="form-group" ng-if="selectedMailFolder.$parent"> + <label><input type="radio" ng-model="selectedMailFolder.useCurrentLevelCompany" ng-value="false" /> + Hériter de la société :</label> + <input type="text" class="form-control" disabled + ng-model="parentScopeValues.company" ng-if="!selectedMailFolder.useCurrentLevelCompany"> + </div> <div class="form-group"> + <label> + <input type="radio" ng-model="selectedMailFolder.useCurrentLevelCompany" ng-value="true" ng-if="selectedMailFolder.$parent" /> + Définir la société :</label> + <input name="company" class="form-control" ng-model="selectedMailFolder.company" ng-if="selectedMailFolder.useCurrentLevelCompany || !selectedMailFolder.$parent"> + </div> + + <div class="form-group"> <label class="control-label">Autoriser le déplacement de demandes vers ce dossier ?</label><br /> <label class="radio-inline"> <input type="radio" Modified: trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js =================================================================== --- trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/faxtomail-ui-web/src/main/webapp/js/configuration.js 2014-10-03 09:14:56 UTC (rev 662) @@ -375,6 +375,7 @@ useCurrentLevelEdiFolder: true, useCurrentLevelRejectResponseMessage: true, useCurrentLevelRejectResponseMailAddress: true, + useCurrentLevelCompany: true, archiveFolder: false }; @@ -407,6 +408,7 @@ useCurrentLevelEdiFolder: false, useCurrentLevelRejectResponseMessage: false, useCurrentLevelRejectResponseMailAddress: false, + useCurrentLevelCompany: false, archiveFolder: false }; @@ -442,6 +444,7 @@ useCurrentLevelEdiFolder: false, useCurrentLevelRejectResponseMessage: false, useCurrentLevelRejectResponseMailAddress: false, + useCurrentLevelCompany: false, useCurrentLevelDemandType: false, useCurrentLevelRange: false, archiveFolder: true @@ -701,6 +704,9 @@ if (angular.isUndefined($scope.parentScopeValues.rejectResponseMessage)) { $scope.parentScopeValues.rejectResponseMessage= folder.rejectResponseMessage; } + if (angular.isUndefined($scope.parentScopeValues.company)) { + $scope.parentScopeValues.company = folder.company; + } if ((!$scope.parentScopeValues.folderTableColumns || $scope.parentScopeValues.folderTableColumns.length == 0) && folder.folderTableColumns) { $scope.parentScopeValues.folderTableColumns = folder.folderTableColumns; } Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-10-02 15:02:04 UTC (rev 661) +++ trunk/pom.xml 2014-10-03 09:14:56 UTC (rev 662) @@ -110,7 +110,7 @@ <h2Version>1.3.176</h2Version> <guavaVersion>18.0</guavaVersion> - <jaxxVersion>2.14-SNAPSHOT</jaxxVersion> + <jaxxVersion>2.14</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