This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit 1d36b8017e129925e3096f315ff4b7e3a5df8391 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 09:35:00 2016 +0200 modification des signatures : configurées par domaine au lieu de par utilisateur (refs #8258) --- .../src/main/resources/faxToMail.properties | 2 +- .../src/main/xmi/faxtomail.properties | 5 +- faxtomail-persistence/src/main/xmi/faxtomail.zargo | Bin 32858 -> 32715 bytes .../faxtomail/services/FaxToMailServiceUtils.java | 4 + .../services/service/ConfigurationService.java | 13 ++- .../services/service/ConfigurationServiceImpl.java | 89 ++++++++++++++++++++- .../services/service/LdapServiceImpl.java | 1 - .../services/service/ReferentielServiceImpl.java | 2 +- .../faxtomail/services/service/UserService.java | 4 - .../services/service/UserServiceImpl.java | 52 ------------ .../services/service/ldap/LdapServiceMock.java | 1 - ..._user_signings_and_add_signings_for_domains.sql | 16 ++++ ..._user_signings_and_add_signings_for_domains.sql | 18 +++++ .../services/service/ClientServiceTest.java | 4 +- 14 files changed, 141 insertions(+), 70 deletions(-) diff --git a/faxtomail-persistence/src/main/resources/faxToMail.properties b/faxtomail-persistence/src/main/resources/faxToMail.properties index 2bcc043..f7d5084 100644 --- a/faxtomail-persistence/src/main/resources/faxToMail.properties +++ b/faxtomail-persistence/src/main/resources/faxToMail.properties @@ -25,7 +25,7 @@ hibernate.dialect=org.hibernate.dialect.H2Dialect hibernate.connection.driver_class=org.h2.Driver #hibernate.connection.url=jdbc:h2:file:/tmp/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE -hibernate.connection.url=jdbc:h2:file:/opt/data/ftm/faxtomail/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE;CACHE_SIZE=8192 +hibernate.connection.url=jdbc:h2:file:/opt/data/ftm/faxtomail-2/h2data;MODE=MSSQLServer;AUTO_SERVER=TRUE;CACHE_SIZE=8192 hibernate.connection.username=sa hibernate.connection.password= diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.properties b/faxtomail-persistence/src/main/xmi/faxtomail.properties index faa06ad..583da0f 100644 --- a/faxtomail-persistence/src/main/xmi/faxtomail.properties +++ b/faxtomail-persistence/src/main/xmi/faxtomail.properties @@ -133,5 +133,6 @@ com.franciaflex.faxtomail.persistence.entities.MailLock.attribute.lockOn.stereot # BrandsForDomain com.franciaflex.faxtomail.persistence.entities.BrandsForDomain.attribute.domainName.tagvalue.notNull=true -#Stamp -#com.franciaflex.faxtomail.persistence.entities.Stamp.attribute.label.tagvalue.naturalId=true \ No newline at end of file +# SigningForDomain +com.franciaflex.faxtomail.persistence.entities.SigningForDomain.attribute.domainName.tagvalue.notNull=true +com.franciaflex.faxtomail.persistence.entities.SigningForDomain.attribute.domainName.stereotype=unique \ No newline at end of file diff --git a/faxtomail-persistence/src/main/xmi/faxtomail.zargo b/faxtomail-persistence/src/main/xmi/faxtomail.zargo index e512b8c..0d2edee 100644 Binary files a/faxtomail-persistence/src/main/xmi/faxtomail.zargo and b/faxtomail-persistence/src/main/xmi/faxtomail.zargo differ diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java index 526d1a9..695d7ba 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/FaxToMailServiceUtils.java @@ -169,4 +169,8 @@ public class FaxToMailServiceUtils { return subject; } + + public static String getDomainForEmailAddress(String emailAddress) { + return emailAddress.substring(emailAddress.lastIndexOf("@") + 1); + } } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java index f897299..b1c9960 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationService.java @@ -33,9 +33,11 @@ import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; import com.franciaflex.faxtomail.persistence.entities.MailField; import com.franciaflex.faxtomail.persistence.entities.MailFilter; import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; import com.franciaflex.faxtomail.persistence.entities.Stamp; import com.franciaflex.faxtomail.persistence.entities.WaitingState; import com.franciaflex.faxtomail.services.FaxToMailService; +import com.google.common.base.Optional; import java.util.Collection; import java.util.List; @@ -57,7 +59,8 @@ public interface ConfigurationService extends FaxToMailService { List<MailFolder> mailFolders, List<MailFilter> mailFilters, List<EmailAccount> emailAccounts, - List<BrandsForDomain> brandsForDomains); + List<BrandsForDomain> brandsForDomains, + List<SigningForDomain> signingForDomains); List<EmailAccount> getEmailAccountsWithoutPasswords(); @@ -79,6 +82,12 @@ public interface ConfigurationService extends FaxToMailService { List<BrandsForDomain> getAllBrandsForDomains(); - List<String> getBrandsForDomain(String domain); + List<String> getBrandsForEmailAddress(String emailAddress); + + List<SigningForDomain> getAllSigningsForDomains(); + + Optional<SigningForDomain> getSigningForEmailAddress(String emailAddress); + + } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java index 20313f8..4c37309 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ConfigurationServiceImpl.java @@ -24,9 +24,45 @@ package com.franciaflex.faxtomail.services.service; * #L% */ -import com.franciaflex.faxtomail.persistence.entities.*; +import com.franciaflex.faxtomail.persistence.entities.BrandsForDomain; +import com.franciaflex.faxtomail.persistence.entities.BrandsForDomainImpl; +import com.franciaflex.faxtomail.persistence.entities.BrandsForDomainTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Configuration; +import com.franciaflex.faxtomail.persistence.entities.ConfigurationImpl; +import com.franciaflex.faxtomail.persistence.entities.ConfigurationTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.DemandType; +import com.franciaflex.faxtomail.persistence.entities.DemandTypeImpl; +import com.franciaflex.faxtomail.persistence.entities.DemandTypeTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.EmailAccount; +import com.franciaflex.faxtomail.persistence.entities.EmailAccountImpl; +import com.franciaflex.faxtomail.persistence.entities.EmailAccountTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.EmailProtocol; +import com.franciaflex.faxtomail.persistence.entities.ExtensionCommand; +import com.franciaflex.faxtomail.persistence.entities.ExtensionCommandTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUser; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserGroup; +import com.franciaflex.faxtomail.persistence.entities.FaxToMailUserTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.GroupChef; +import com.franciaflex.faxtomail.persistence.entities.GroupChefTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.MailField; +import com.franciaflex.faxtomail.persistence.entities.MailFilter; +import com.franciaflex.faxtomail.persistence.entities.MailFilterTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.MailFolder; +import com.franciaflex.faxtomail.persistence.entities.MailFolderImpl; +import com.franciaflex.faxtomail.persistence.entities.MailFolderTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomain; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomainImpl; +import com.franciaflex.faxtomail.persistence.entities.SigningForDomainTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.Stamp; +import com.franciaflex.faxtomail.persistence.entities.StampImpl; +import com.franciaflex.faxtomail.persistence.entities.StampTopiaDao; +import com.franciaflex.faxtomail.persistence.entities.WaitingState; +import com.franciaflex.faxtomail.persistence.entities.WaitingStateImpl; +import com.franciaflex.faxtomail.persistence.entities.WaitingStateTopiaDao; import com.franciaflex.faxtomail.services.FaxToMailServiceSupport; +import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.google.common.base.Function; +import com.google.common.base.Optional; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.apache.commons.lang3.StringUtils; @@ -124,7 +160,8 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements List<MailFolder> mailFolders, List<MailFilter> mailFilters, List<EmailAccount> emailAccounts, - List<BrandsForDomain> brandsForDomains) { + List<BrandsForDomain> brandsForDomains, + List<SigningForDomain> signingForDomains) { Collection<MailFolder> toDeleteMailFolder = new ArrayList<>(); @@ -137,6 +174,7 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements saveMailFilters(mailFolderCache, mailFilters); saveEmailAccounts(emailAccounts); saveBrandsForDomains(brandsForDomains); + saveSigningsForDomains(signingForDomains); // delete after loop MailFolderTopiaDao mailFilterDao = getPersistenceContext().getMailFolderDao(); @@ -187,7 +225,6 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements Stamp currentStamp; if (StringUtils.isBlank(stamp.getTopiaId()) || stamp.getTopiaId().startsWith("new_")) { currentStamp = new StampImpl(); - currentStamp.setSigning(false); } else { currentStamp = allStampsIndex.remove(stamp.getTopiaId()); @@ -488,6 +525,38 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements brandsForDomainTopiaDao.deleteAll(brandsForDomainMap.values()); } + protected void saveSigningsForDomains(List<SigningForDomain> newSigningForDomains) { + SigningForDomainTopiaDao signingForDomainTopiaDao = getPersistenceContext().getSigningForDomainDao(); + List<SigningForDomain> signingForDomains = signingForDomainTopiaDao.findAll(); + + Map<String, SigningForDomain> signingsForDomainMap = new HashMap<>(Maps.uniqueIndex(signingForDomains, TopiaEntities.getTopiaIdFunction())); + Binder<SigningForDomain, SigningForDomain> binder = BinderFactory.newBinder(SigningForDomain.class); + + for (SigningForDomain newSigningForDomain : newSigningForDomains) { + SigningForDomain signingForDomain; + if (StringUtils.isBlank(newSigningForDomain.getTopiaId()) || newSigningForDomain.getTopiaId().startsWith("new_")) { + signingForDomain = new SigningForDomainImpl(); + + } else { + signingForDomain = signingsForDomainMap.remove(newSigningForDomain.getTopiaId()); + } + + binder.copyExcluding(newSigningForDomain, signingForDomain, + SigningForDomain.PROPERTY_TOPIA_ID, + SigningForDomain.PROPERTY_TOPIA_CREATE_DATE, + SigningForDomain.PROPERTY_TOPIA_VERSION); + + + if (signingForDomain.isPersisted()) { + signingForDomainTopiaDao.update(signingForDomain); + } else { + signingForDomainTopiaDao.create(signingForDomain); + } + } + + signingForDomainTopiaDao.deleteAll(signingsForDomainMap.values()); + } + @Override public void saveUserFolders(Map<String, Collection<MailFolder>> userFolders) { FaxToMailUserTopiaDao faxToMailUserTopiaDao = getPersistenceContext().getFaxToMailUserDao(); @@ -662,9 +731,21 @@ public class ConfigurationServiceImpl extends FaxToMailServiceSupport implements } @Override - public List<String> getBrandsForDomain(String domain) { + public List<String> getBrandsForEmailAddress(String emailAddress) { + String domain = FaxToMailServiceUtils.getDomainForEmailAddress(emailAddress); BrandsForDomainTopiaDao dao = getPersistenceContext().getBrandsForDomainDao(); BrandsForDomain brandsForDomain = dao.forDomainNameEquals(domain).findUnique(); return brandsForDomain.getBrands(); } + + @Override + public List<SigningForDomain> getAllSigningsForDomains() { + return getPersistenceContext().getSigningForDomainDao().findAll(); + } + + @Override + public Optional<SigningForDomain> getSigningForEmailAddress(String emailAddress) { + String domain = FaxToMailServiceUtils.getDomainForEmailAddress(emailAddress); + return getPersistenceContext().getSigningForDomainDao().forDomainNameEquals(domain).tryFindUnique(); + } } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java index 9045b20..023992b 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/LdapServiceImpl.java @@ -390,7 +390,6 @@ public class LdapServiceImpl extends FaxToMailServiceSupport implements LdapServ // force collection loading to force non lazy collections user.isAffectedFoldersEmpty(); user.isUserGroupsEmpty(); - user.isSigningsEmpty(); return user; } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java index 50e51b9..076deaf 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ReferentielServiceImpl.java @@ -100,7 +100,7 @@ public class ReferentielServiceImpl extends FaxToMailServiceSupport implements R @Override public List<Stamp> getAllStamps() { StampTopiaDao dao = getPersistenceContext().getStampDao(); - return dao.forSigningEquals(false).setOrderByArguments(Stamp.PROPERTY_LABEL).findAll(); + return dao.forAll().setOrderByArguments(Stamp.PROPERTY_LABEL).findAll(); } @Override diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java index 309a861..a6a4e86 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserService.java @@ -56,9 +56,5 @@ public interface UserService extends FaxToMailService { FaxToMailUser getUser(String topiaId); - Stamp saveSigning(FaxToMailUser user, Stamp signing, boolean defaultSigning); - - void deleteSigning(FaxToMailUser user, Stamp signing); - Collection<Stamp> getPdfEditorStamps(FaxToMailUser user); } diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java index 16aaab5..dc7fb43 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/UserServiceImpl.java @@ -97,58 +97,6 @@ public class UserServiceImpl extends FaxToMailServiceSupport implements UserServ } @Override - public Stamp saveSigning(FaxToMailUser user, Stamp signing, boolean defaultSigning) { - Preconditions.checkNotNull(user); - Preconditions.checkNotNull(signing); - Preconditions.checkArgument(!signing.isPersisted() || user.containsSignings(signing)); - - StampTopiaDao stampDao = getPersistenceContext().getStampDao(); - FaxToMailUserTopiaDao userDao = getPersistenceContext().getFaxToMailUserDao(); - - if (signing.isPersisted()) { - stampDao.update(signing); - - } else { - stampDao.create(signing); - user.addSignings(signing); - userDao.update(user); - } - - if (defaultSigning) { - user.setDefaultSigning(signing); - userDao.update(user); - } - - getPersistenceContext().commit(); - - return signing; - } - - @Override - public void deleteSigning(FaxToMailUser user, Stamp signing) { - Preconditions.checkNotNull(user); - Preconditions.checkNotNull(signing); - Preconditions.checkArgument(!signing.isPersisted() || user.containsSignings(signing)); - - - if (signing.isPersisted()) { - StampTopiaDao stampDao = getPersistenceContext().getStampDao(); - FaxToMailUserTopiaDao userDao = getPersistenceContext().getFaxToMailUserDao(); - - user.removeSignings(signing); - if (signing.equals(user.getDefaultSigning())) { - user.setDefaultSigning(null); - } - userDao.update(user); - - stampDao.delete(signing); - - getPersistenceContext().commit(); - } - - } - - @Override public Collection<Stamp> getPdfEditorStamps(FaxToMailUser user) { Preconditions.checkNotNull(user); diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java index fe29972..6de2dfd 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/ldap/LdapServiceMock.java @@ -109,7 +109,6 @@ public class LdapServiceMock extends LdapServiceImpl { // force collection loading to force non lazy collections result.isAffectedFoldersEmpty(); result.isUserGroupsEmpty(); - result.isSigningsEmpty(); return result; } diff --git a/faxtomail-service/src/main/resources/db/migration/h2/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql b/faxtomail-service/src/main/resources/db/migration/h2/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql new file mode 100644 index 0000000..9fa2e28 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/h2/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql @@ -0,0 +1,16 @@ +delete from stamp where signing = true; + +alter table stamp drop signing; +alter table stamp drop faxtomailuser; + +alter table faxtomailuser drop defaultsigning; + +create table signingForDomain ( + topiaId varchar(255) not null, + topiaVersion bigint not null, + topiaCreateDate timestamp, + domainName longvarchar unique, + image longvarchar, + text longvarchar, + primary key (topiaId) +); \ No newline at end of file diff --git a/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql new file mode 100644 index 0000000..bb32114 --- /dev/null +++ b/faxtomail-service/src/main/resources/db/migration/sqlserver/V2_0_4_160413__remove_user_signings_and_add_signings_for_domains.sql @@ -0,0 +1,18 @@ +delete from stamp where signing = 1; +GO + +alter table stamp drop signing; +alter table stamp drop faxtomailuser; +GO +alter table faxtomailuser drop defaultsigning; +GO + +create table signingForDomain ( + topiaId varchar(255) not null, + topiaVersion bigint not null, + topiaCreateDate datetime2, + domainName varchar(MAX) unique, + image varchar(MAX), + text varchar(MAX), + primary key (topiaId) +); \ No newline at end of file diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java index c80e8fe..bd3a864 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/ClientServiceTest.java @@ -164,7 +164,7 @@ public class ClientServiceTest extends AbstractFaxToMailServiceTest { client.setName("Test Test"); client = clientTopiaDao.create(client); - List<String> brands = getServiceContext().getConfigurationService().getBrandsForDomain(domain); + List<String> brands = getServiceContext().getConfigurationService().getBrandsForEmailAddress(domain); foundClients = getServiceContext().getClientService().getClientForEmailAddress(emailAddress, new EmailImpl(), "FX", brands); @@ -175,7 +175,7 @@ public class ClientServiceTest extends AbstractFaxToMailServiceTest { brandsForDomain.setBrands(Lists.newArrayList("CREAL", "FX")); brandsForDomain = brandsForDomainTopiaDao.update(brandsForDomain); - brands = getServiceContext().getConfigurationService().getBrandsForDomain(domain); + brands = getServiceContext().getConfigurationService().getBrandsForEmailAddress(domain); foundClients = getServiceContext().getClientService().getClientForEmailAddress(emailAddress, new EmailImpl(), "FX", brands); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.