unified translation of events and event-related emails
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -5,10 +5,10 @@ import static de.srsoftware.tools.PathHandler.CONTENT_TYPE;
|
||||
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
|
||||
import static de.srsoftware.umbrella.core.constants.Constants.UTF8;
|
||||
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingConfig;
|
||||
import static de.srsoftware.umbrella.core.model.Translatable.t;
|
||||
import static de.srsoftware.umbrella.message.Constants.*;
|
||||
import static de.srsoftware.umbrella.messagebus.MessageBus.messageBus;
|
||||
import static java.lang.System.Logger.Level.*;
|
||||
import static java.text.MessageFormat.format;
|
||||
|
||||
import de.srsoftware.configuration.Configuration;
|
||||
import de.srsoftware.umbrella.core.ModuleRegistry;
|
||||
@@ -21,7 +21,7 @@ import de.srsoftware.umbrella.message.model.CombinedMessage;
|
||||
import de.srsoftware.umbrella.messagebus.EventListener;
|
||||
import de.srsoftware.umbrella.messagebus.events.Event;
|
||||
import jakarta.activation.DataHandler;
|
||||
import jakarta.mail.Message;
|
||||
import jakarta.mail.Message.RecipientType;
|
||||
import jakarta.mail.MessagingException;
|
||||
import jakarta.mail.Session;
|
||||
import jakarta.mail.Transport;
|
||||
@@ -31,7 +31,6 @@ import jakarta.mail.internet.MimeMultipart;
|
||||
import jakarta.mail.util.ByteArrayDataSource;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.function.BiFunction;
|
||||
|
||||
public class MessageSystem implements PostBox, EventListener {
|
||||
public static final System.Logger LOG = System.getLogger(MessageSystem.class.getSimpleName());
|
||||
@@ -95,14 +94,8 @@ public class MessageSystem implements PostBox, EventListener {
|
||||
@Override
|
||||
public void onEvent(Event<?> event) {
|
||||
for (var user : event.audience()){
|
||||
if (!"s.richter@srsoftware.de".equals(user.email().toString())) continue;
|
||||
var verb = switch (event.eventType()){
|
||||
case UPDATE -> "updated";
|
||||
case CREATE -> "created";
|
||||
case DELETE -> "deleted";
|
||||
};
|
||||
var title = format("{0} {1} {2} {3}",event.initiator().name(),verb,event.module(), event.payload());
|
||||
var message = new de.srsoftware.umbrella.core.model.Message(event.initiator(),title,event.describe(),null,null);
|
||||
if (debugAddress != null && !debugAddress.equals(user.email().toString())) continue;
|
||||
var message = new de.srsoftware.umbrella.core.model.Message(event.initiator(),event.subject(),event.describe(),null);
|
||||
var envelope = new Envelope(message,user);
|
||||
send(envelope);
|
||||
}
|
||||
@@ -135,14 +128,12 @@ public class MessageSystem implements PostBox, EventListener {
|
||||
var date = new Date();
|
||||
|
||||
for (var receiver : dueRecipients){
|
||||
BiFunction<String,Map<String,String>,String> translateFunction = (text,fills) -> ModuleRegistry.translator().translate(receiver.language(),text,fills);
|
||||
|
||||
var combined = new CombinedMessage("Collected messages",translateFunction);
|
||||
var combined = new CombinedMessage(t("Collected messages"),receiver);
|
||||
var envelopes = queue.stream().filter(env -> env.isFor(receiver)).toList();
|
||||
for (var envelope : envelopes) combined.merge(envelope.message());
|
||||
|
||||
try {
|
||||
send(combined,receiver,date);
|
||||
send(combined,date);
|
||||
for (var envelope : envelopes){
|
||||
var audience = envelope.receivers();
|
||||
audience.remove(receiver);
|
||||
@@ -176,7 +167,8 @@ public class MessageSystem implements PostBox, EventListener {
|
||||
}
|
||||
|
||||
|
||||
private void send(CombinedMessage message, User receiver, Date date) throws MessagingException {
|
||||
private void send(CombinedMessage message, Date date) throws MessagingException {
|
||||
var receiver = message.receiver();
|
||||
LOG.log(TRACE,"Sending combined message to {0}…",receiver);
|
||||
session = session();
|
||||
MimeMessage msg = new MimeMessage(session);
|
||||
@@ -187,7 +179,7 @@ public class MessageSystem implements PostBox, EventListener {
|
||||
msg.setSubject(message.subject(), UTF8);
|
||||
msg.setSentDate(date);
|
||||
var toEmail = debugAddress != null ? debugAddress : receiver.email().toString();
|
||||
msg.setRecipients(Message.RecipientType.TO, toEmail);
|
||||
msg.setRecipients(RecipientType.TO, toEmail);
|
||||
|
||||
if (message.attachments().isEmpty()){
|
||||
msg.setText(message.body(), UTF8);
|
||||
|
||||
Reference in New Issue
Block a user