Search in sources :

Example 66 with Transaction

use of com.haulmont.cuba.core.Transaction in project cuba by cuba-platform.

the class Emailer method persistMessages.

protected void persistMessages(List<SendingMessage> sendingMessageList, SendingStatus status) {
    MessagePersistingContext context = new MessagePersistingContext();
    try {
        try (Transaction tx = persistence.createTransaction()) {
            EntityManager em = persistence.getEntityManager();
            for (SendingMessage message : sendingMessageList) {
                message.setStatus(status);
                try {
                    persistSendingMessage(em, message, context);
                } catch (FileStorageException e) {
                    throw new RuntimeException("Failed to store message " + message.getCaption(), e);
                }
            }
            tx.commit();
        }
        context.finished();
    } finally {
        removeOrphanFiles(context);
    }
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) SendingMessage(com.haulmont.cuba.core.entity.SendingMessage)

Example 67 with Transaction

use of com.haulmont.cuba.core.Transaction in project cuba by cuba-platform.

the class Emailer method loadContentText.

@Override
public String loadContentText(SendingMessage sendingMessage) {
    SendingMessage msg;
    try (Transaction tx = persistence.createTransaction()) {
        EntityManager em = persistence.getEntityManager();
        msg = em.reload(sendingMessage, "sendingMessage.loadContentText");
        tx.commit();
    }
    Objects.requireNonNull(msg, "Sending message not found: " + sendingMessage.getId());
    if (msg.getContentTextFile() != null) {
        byte[] bodyContent;
        try {
            bodyContent = fileStorage.loadFile(msg.getContentTextFile());
        } catch (FileStorageException e) {
            throw new RuntimeFileStorageException("Unable to load file from file storage", e);
        }
        // noinspection UnnecessaryLocalVariable
        String res = bodyTextFromByteArray(bodyContent);
        return res;
    } else {
        return msg.getContentText();
    }
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) SendingMessage(com.haulmont.cuba.core.entity.SendingMessage)

Example 68 with Transaction

use of com.haulmont.cuba.core.Transaction in project cuba by cuba-platform.

the class Emailer method markAsSent.

protected void markAsSent(SendingMessage sendingMessage) {
    try (Transaction tx = persistence.createTransaction()) {
        EntityManager em = persistence.getEntityManager();
        SendingMessage msg = em.merge(sendingMessage);
        msg.setStatus(SendingStatus.SENT);
        msg.setAttemptsMade(msg.getAttemptsMade() + 1);
        msg.setDateSent(timeSource.currentTimestamp());
        if (config.isFileStorageUsed()) {
            msg.setContentText(null);
        }
        tx.commit();
    } catch (Exception e) {
        log.error("Error marking message to '{}' as sent", sendingMessage.getAddress(), e);
    }
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) SendingMessage(com.haulmont.cuba.core.entity.SendingMessage) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) SMTPAddressFailedException(com.sun.mail.smtp.SMTPAddressFailedException) AddressException(javax.mail.internet.AddressException) MailSendException(org.springframework.mail.MailSendException)

Example 69 with Transaction

use of com.haulmont.cuba.core.Transaction in project cuba by cuba-platform.

the class Emailer method migrateEmailsToFileStorage.

@Override
public void migrateEmailsToFileStorage(List<SendingMessage> messages) {
    try (Transaction tx = persistence.createTransaction()) {
        EntityManager em = persistence.getEntityManager();
        for (SendingMessage msg : messages) {
            migrateMessage(em, msg);
        }
        tx.commit();
    }
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) SendingMessage(com.haulmont.cuba.core.entity.SendingMessage)

Example 70 with Transaction

use of com.haulmont.cuba.core.Transaction in project cuba by cuba-platform.

the class Emailer method returnToQueue.

protected void returnToQueue(SendingMessage sendingMessage) {
    try (Transaction tx = persistence.createTransaction()) {
        EntityManager em = persistence.getEntityManager();
        SendingMessage msg = em.merge(sendingMessage);
        msg.setAttemptsMade(msg.getAttemptsMade() + 1);
        msg.setStatus(SendingStatus.QUEUE);
        if (config.isFileStorageUsed()) {
            msg.setContentText(null);
        }
        tx.commit();
    } catch (Exception e) {
        log.error("Error returning message to '{}' to the queue", sendingMessage.getAddress(), e);
    }
}
Also used : EntityManager(com.haulmont.cuba.core.EntityManager) Transaction(com.haulmont.cuba.core.Transaction) SendingMessage(com.haulmont.cuba.core.entity.SendingMessage) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) SMTPAddressFailedException(com.sun.mail.smtp.SMTPAddressFailedException) AddressException(javax.mail.internet.AddressException) MailSendException(org.springframework.mail.MailSendException)

Aggregations

Transaction (com.haulmont.cuba.core.Transaction)226 EntityManager (com.haulmont.cuba.core.EntityManager)142 Test (org.junit.jupiter.api.Test)59 Query (com.haulmont.cuba.core.Query)30 JpaEntityManager (org.eclipse.persistence.jpa.JpaEntityManager)27 User (com.haulmont.cuba.security.entity.User)25 View (com.haulmont.cuba.core.global.View)22 BeforeEach (org.junit.jupiter.api.BeforeEach)18 TypedQuery (com.haulmont.cuba.core.TypedQuery)13 Group (com.haulmont.cuba.security.entity.Group)12 List (java.util.List)10 SendingMessage (com.haulmont.cuba.core.entity.SendingMessage)8 MetaClass (com.haulmont.chile.core.model.MetaClass)7 Entity (com.haulmont.cuba.core.entity.Entity)7 SoftDeleteOneToOneA (com.haulmont.cuba.testmodel.softdelete_one_to_one.SoftDeleteOneToOneA)7 ChildCachedEntity (com.haulmont.cuba.testmodel.entity_cache.ChildCachedEntity)5 ParentCachedEntity (com.haulmont.cuba.testmodel.entity_cache.ParentCachedEntity)5 UUID (java.util.UUID)5 Nullable (javax.annotation.Nullable)5 EntityManagerFactory (javax.persistence.EntityManagerFactory)5