preparing for sending documents

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2025-07-17 20:15:28 +02:00
parent 93449e4bad
commit 6a58087ace
19 changed files with 146 additions and 110 deletions

View File

@@ -9,12 +9,13 @@ import static de.srsoftware.umbrella.message.Constants.*;
import static java.lang.System.Logger.Level.*;
import de.srsoftware.configuration.Configuration;
import de.srsoftware.umbrella.core.api.PostBox;
import de.srsoftware.umbrella.core.api.Translator;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.Envelope;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import de.srsoftware.umbrella.core.model.User;
import de.srsoftware.umbrella.message.model.CombinedMessage;
import de.srsoftware.umbrella.message.model.Envelope;
import de.srsoftware.umbrella.message.model.PostBox;
import jakarta.activation.DataHandler;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
@@ -31,7 +32,7 @@ import java.util.function.BiFunction;
public class MessageSystem implements PostBox {
public static final System.Logger LOG = System.getLogger(MessageSystem.class.getSimpleName());
private final Timer timer = new Timer();
private record Receiver(UmbrellaUser user, de.srsoftware.umbrella.message.model.Message message){}
private record Receiver(User user, de.srsoftware.umbrella.core.model.Message message){}
private class SubmissionTask extends TimerTask{
@@ -99,11 +100,11 @@ public class MessageSystem implements PostBox {
private synchronized void processMessages(Integer scheduledHour) {
LOG.log(INFO,"Running {0}…",scheduledHour == null ? "instantly" : "scheduled at "+scheduledHour);
var queue = new ArrayList<>(this.queue);
var dueRecipients = new ArrayList<UmbrellaUser>();
List<UmbrellaUser> recipients = queue.stream().map(Envelope::receivers).flatMap(Set::stream).filter(Objects::nonNull).distinct().toList();
var dueRecipients = new ArrayList<User>();
List<User> recipients = queue.stream().map(Envelope::receivers).flatMap(Set::stream).filter(Objects::nonNull).distinct().toList();
{ // for known users: get notification preferences, fallback to _immediately_ for unknown users
for (UmbrellaUser recv : recipients) {
for (User recv : recipients) {
if (recv instanceof UmbrellaUser uu) {
try {
if (!db.getSettings(uu).sendAt(scheduledHour)) continue;
@@ -157,7 +158,7 @@ public class MessageSystem implements PostBox {
}
private void send(CombinedMessage message, UmbrellaUser receiver, Date date) throws MessagingException {
private void send(CombinedMessage message, User receiver, Date date) throws MessagingException {
LOG.log(TRACE,"Sending combined message to {0}…",receiver);
session = session();
MimeMessage msg = new MimeMessage(session);