From 5a976696654327fcc75871de9ad2969736ef2516 Mon Sep 17 00:00:00 2001 From: Namu Date: Mon, 6 Oct 2025 09:08:51 +0200 Subject: [PATCH] Refactor: Make the Notification not send themself but rather create their content --- src/entities/MailNotification.java | 7 ------- src/entities/Notification.java | 29 +++++++++++++++++++++++------ src/entities/PushNotification.java | 6 ------ src/entities/SmsNotification.java | 6 ------ 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/entities/MailNotification.java b/src/entities/MailNotification.java index d6b314d..884dea4 100644 --- a/src/entities/MailNotification.java +++ b/src/entities/MailNotification.java @@ -6,11 +6,4 @@ public class MailNotification extends Notification { public MailNotification(String content, User user, SendNotificationStrategy strategy) { super(content, user, strategy); } - - @Override - public void send() { - if (isSendable()) - strategy.send(user.id() + " Mail: " + user.name() + " " + content); - } - } diff --git a/src/entities/Notification.java b/src/entities/Notification.java index 5bec2ea..ca6a512 100644 --- a/src/entities/Notification.java +++ b/src/entities/Notification.java @@ -6,6 +6,9 @@ import utils.SendNotificationStrategy; public abstract class Notification { protected String content; protected User user; + /** + * Pas de change state car chemin multiple. On reste sur des enum ! + */ protected NotificationState state; protected SendNotificationStrategy strategy; @@ -20,15 +23,29 @@ public abstract class Notification { return this.state != NotificationState.SENT && this.state != NotificationState.READ; } - public String getContent() { - return content; + /** + * Transition d'état spéciale pour indiquer que l'envoie de notification est en échec + */ + public void setKoState() { + state = NotificationState.KO; } /** - * Pas de change state car route non linéaire. On reste sur des enum ! + * Fait la transition des états */ + public void transitionState() { + switch (state) { + case PENDING -> state = NotificationState.SENT; + case SENT -> state = NotificationState.READ; + } + } - - - public abstract void send(); + public String getContent() { + if (isSendable()) { + transitionState(); + return strategy.makeContent(user.id() + " Push: " + user.name() + " " + content); + } + setKoState(); + return ""; + } } diff --git a/src/entities/PushNotification.java b/src/entities/PushNotification.java index dd2201e..5554c7c 100644 --- a/src/entities/PushNotification.java +++ b/src/entities/PushNotification.java @@ -6,10 +6,4 @@ public class PushNotification extends Notification { public PushNotification(String content, User user, SendNotificationStrategy strategy) { super(content, user, strategy); } - - @Override - public void send() { - if (isSendable()) - strategy.send(user.id() + " Push: " + user.name() + " " + content); - } } diff --git a/src/entities/SmsNotification.java b/src/entities/SmsNotification.java index 6b85817..9093dad 100644 --- a/src/entities/SmsNotification.java +++ b/src/entities/SmsNotification.java @@ -7,10 +7,4 @@ public class SmsNotification extends Notification { public SmsNotification(String content, User user, SendNotificationStrategy strategy) { super(content, user, strategy); } - - @Override - public void send() { - if (isSendable()) - strategy.send(user.id() + " Sms: " + user.name() + " " + content); - } }