Author: echatellier Date: 2014-08-14 15:15:53 +0200 (Thu, 14 Aug 2014) New Revision: 562 Url: http://forge.codelutin.com/projects/faxtomail/repository/revisions/562 Log: Correction du d?\195?\169verrouillage des demandes non group?\195?\169es Modified: trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 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-08-14 12:28:57 UTC (rev 561) +++ trunk/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java 2014-08-14 13:15:53 UTC (rev 562) @@ -722,19 +722,18 @@ // if no lock found, create new one if (mailLock == null) { - mailLock = new MailLockImpl(); - mailLock.setLockBy(currentUser); - mailLock.setLockOn(email); - mailLock = mailLockDao.create(mailLock); - - if (log.isDebugEnabled()) { - log.debug("[LOCK] " + emailId + " locked by " + currentUser.getLogin()); - } - + // dévérouillage automatique des mails qui ne font pas partit du même group que celui du mail // qui vient d'être locké - List<MailLock> mailLocksToRemove = mailLockDao.forLockByEquals(currentUser) - .addNotEquals(MailLock.PROPERTY_LOCK_ON + "." + Email.PROPERTY_EMAIL_GROUP, email.getEmailGroup()).findAll(); + List<MailLock> mailLocksToRemove; + if (email.getEmailGroup() != null) { + // si le mail courant à un group, ont déverrouilles tous les mails + // qui ne porte pas sur le même groupe + mailLocksToRemove = mailLockDao.forLockByEquals(currentUser) + .addNotEquals(MailLock.PROPERTY_LOCK_ON + "." + Email.PROPERTY_EMAIL_GROUP, email.getEmailGroup()).findAll(); + } else { + mailLocksToRemove = mailLockDao.forLockByEquals(currentUser).findAll(); + } if (log.isDebugEnabled()) { for (MailLock mailLockToRemove : mailLocksToRemove) { log.debug("[UNLOCK] " + mailLockToRemove.getLockOn().getTopiaId() + " unlocked (automatic)"); @@ -742,6 +741,16 @@ } mailLockDao.deleteAll(mailLocksToRemove); + // ajout d'un nouveau lock + mailLock = new MailLockImpl(); + mailLock.setLockBy(currentUser); + mailLock.setLockOn(email); + mailLock = mailLockDao.create(mailLock); + + if (log.isDebugEnabled()) { + log.debug("[LOCK] " + emailId + " locked by " + currentUser.getLogin()); + } + getPersistenceContext().commit(); } else if (!mailLock.getLockBy().equals(currentUser)) {