working on messagesystem, password reset form
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -1,53 +0,0 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.message.model;
|
||||
|
||||
|
||||
import de.srsoftware.umbrella.user.model.User;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* This maps recipient email addresses to the pending messages of that recipient
|
||||
*/
|
||||
public class MailQueue extends ArrayList<Envelope>{
|
||||
|
||||
private record Receiver(User user, Message message){}
|
||||
|
||||
private final HashMap<Receiver,List<Exception>> exceptions = new HashMap<>();
|
||||
|
||||
public interface Listener{
|
||||
public void messagesAdded();
|
||||
public void setQueue(MailQueue queue);
|
||||
}
|
||||
|
||||
private final Set<Listener> listeners = new HashSet<>();
|
||||
|
||||
public void addListener(Listener listener) {
|
||||
listeners.add(listener);
|
||||
listener.setQueue(this);
|
||||
}
|
||||
|
||||
public void commit() {
|
||||
listeners.forEach(Listener::messagesAdded);
|
||||
}
|
||||
|
||||
public List<Envelope> envelopesFor(User recv) {
|
||||
return stream().filter(env -> env.isFor(recv)).toList();
|
||||
}
|
||||
|
||||
public void failedAt(User receiver, CombinedMessage combined, Exception ex) {
|
||||
for (var message : combined.messages()) exceptions.computeIfAbsent(new Receiver(receiver,message), k -> new ArrayList<>()).add(ex);
|
||||
}
|
||||
|
||||
/**
|
||||
* return the email addresses of the recipients of all messages in the queue
|
||||
*
|
||||
* @return a list of email addresses
|
||||
*/
|
||||
public List<User> receivers() {
|
||||
return stream().map(Envelope::receivers)
|
||||
.flatMap(Set::stream)
|
||||
.filter(Objects::nonNull)
|
||||
.distinct()
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.message.model;
|
||||
|
||||
public interface PostBox {
|
||||
public void send(Envelope envelope);
|
||||
}
|
||||
Reference in New Issue
Block a user