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 94eb3a903086b930bcf20eb38d7cf9906a90af26 Author: jcouteau <couteau@codelutin.com> Date: Tue Jul 3 14:56:09 2018 +0200 refs #9986 --- .../faxtomail/services/service/EmailService.java | 2 +- .../services/service/EmailServiceImpl.java | 51 +++++++++++++--------- .../services/service/EmailServiceTest.java | 4 +- .../demande/takenby/actions/TakenByAction.java | 23 ++++++---- 4 files changed, 48 insertions(+), 32 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java index 0afd616e..27dcbcc1 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailService.java @@ -78,7 +78,7 @@ public interface EmailService extends FaxToMailService { Email saveEmail(Email email, Collection<Attachment> attachments, Collection<Reply> replies, FaxToMailUser user, String... modifiedFields) throws InvalidClientException; - Email takeBy(Email email, FaxToMailUser user); + List<Email> takeBy(List<Email> email, FaxToMailUser user); void transmitPendingDemandsToEdi(); diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java index e3442bb2..086f2af0 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/service/EmailServiceImpl.java @@ -373,7 +373,7 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe @Override - public Email takeBy(final Email email, final FaxToMailUser user) { + public List<Email> takeBy(final List<Email> emails, final FaxToMailUser user) { TopiaSqlSupport sqlSupport = getPersistenceContext().getSqlSupport(); @@ -384,28 +384,31 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe HistoryTopiaDao historyDao = getPersistenceContext().getHistoryDao(); - Set<String> fieldSet = Sets.newHashSet(Email.PROPERTY_TAKEN_BY); - final History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, - History.PROPERTY_FAX_TO_MAIL_USER, user, - History.PROPERTY_MODIFICATION_DATE, now, - History.PROPERTY_EMAIL, email, - History.PROPERTY_FIELDS_JSON, AbstractFaxToMailTopiaDao.GSON_INSTANCE.toJson(fieldSet)); + for (Email email:emails) { - getPersistenceContext().getHibernateSupport().getHibernateSession().flush(); + Set<String> fieldSet = Sets.newHashSet(Email.PROPERTY_TAKEN_BY); + final History history = historyDao.create(History.PROPERTY_TYPE, HistoryType.MODIFICATION, + History.PROPERTY_FAX_TO_MAIL_USER, user, + History.PROPERTY_MODIFICATION_DATE, now, + History.PROPERTY_EMAIL, email, + History.PROPERTY_FIELDS_JSON, AbstractFaxToMailTopiaDao.GSON_INSTANCE.toJson(fieldSet)); - try (PreparedStatement updateStatement = connection.prepareStatement("UPDATE email SET takenby = ? WHERE topiaid = ?"); - PreparedStatement historyStatement = connection.prepareStatement("UPDATE history SET email = ? WHERE topiaid = ?")) { + getPersistenceContext().getHibernateSupport().getHibernateSession().flush(); - updateStatement.setString(1, user.getTopiaId()); - updateStatement.setString(2, email.getTopiaId()); - int result = updateStatement.executeUpdate(); + try (PreparedStatement updateStatement = connection.prepareStatement("UPDATE email SET takenby = ? WHERE topiaid = ?"); + PreparedStatement historyStatement = connection.prepareStatement("UPDATE history SET email = ? WHERE topiaid = ?")) { - historyStatement.setString(1, email.getTopiaId()); - historyStatement.setString(2, history.getTopiaId()); - int result2 = historyStatement.executeUpdate(); + updateStatement.setString(1, user.getTopiaId()); + updateStatement.setString(2, email.getTopiaId()); + int result = updateStatement.executeUpdate(); - if (result != 1 || result2 != 1) { - log.error(String.format("Could not take email ($s) by user ($s)", email.getTopiaId(), user.getTopiaId())); + historyStatement.setString(1, email.getTopiaId()); + historyStatement.setString(2, history.getTopiaId()); + int result2 = historyStatement.executeUpdate(); + + if (result != 1 || result2 != 1) { + log.error(String.format("Could not take email ($s) by user ($s)", email.getTopiaId(), user.getTopiaId())); + } } } @@ -417,11 +420,17 @@ public class EmailServiceImpl extends FaxToMailServiceSupport implements EmailSe getPersistenceContext().commit(); getPersistenceContext().getHibernateSupport().getHibernateSession().clear(); - getPersistenceContext().getHibernateSupport().getHibernateSession().refresh(email); - Email returnValue = getFullEmailById(email.getTopiaId()); + List<Email> returnValues= new ArrayList<>(); + + for (Email email:emails) { + + Email returnValue = getFullEmailById(email.getTopiaId()); + + returnValues.add(returnValue); + } - return returnValue; + return returnValues; } /** diff --git a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java index 9006683a..071e8636 100644 --- a/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java +++ b/faxtomail-service/src/test/java/com/franciaflex/faxtomail/services/service/EmailServiceTest.java @@ -62,6 +62,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -312,7 +313,7 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { Assert.assertNotEquals(cmarquis,email.getTakenBy()); - service.takeBy(email, cmarquis); + service.takeBy(emails, cmarquis); Email emailToTest = service.getEmailById(email.getTopiaId()); @@ -321,7 +322,6 @@ public class EmailServiceTest extends AbstractFaxToMailServiceTest { Assert.assertEquals(cmarquis.getTrigraph(),emailToTest.getTakenBy().getTrigraph()); //TODO should test history to - } @Test diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/takenby/actions/TakenByAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/takenby/actions/TakenByAction.java index 69b4f081..f6c08931 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/takenby/actions/TakenByAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/takenby/actions/TakenByAction.java @@ -34,7 +34,9 @@ import com.franciaflex.faxtomail.ui.swing.content.demande.takenby.TakenByFormUI; import com.franciaflex.faxtomail.ui.swing.content.demande.takenby.TakenByFormUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.takenby.TakenByFormUIModel; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -57,18 +59,23 @@ public class TakenByAction extends AbstractFaxToMailAction<TakenByFormUIModel, T FaxToMailUser user = getModel().getTakenBy(); Collection<DemandeUIModel> demands = getModel().getDemandsToTake(); - for (DemandeUIModel demand : demands) { - demand.setTakenBy(user); + List<Email> emails = new ArrayList<>(); - String topiaId = demand.getTopiaId(); - Email persistedEmail = emailService.getFullEmailById(topiaId); + for (DemandeUIModel demand : demands) { + Email email = demand.toEntity(); + emails.add(email); + } - Email email = demand.toEntity(persistedEmail); + List<Email> returnedEmails = emailService.takeBy(emails, user); - email = emailService.takeBy(email, user); - demand.fromEntity(email); - } + for (DemandeUIModel demand : demands) { + for (Email email : returnedEmails) { + if (demand.getTopiaId().equals(email.getTopiaId())){ + demand.fromEntity(email); + } + } + } } @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.