Refactor: Make the Notification not send themself but rather create their content

This commit is contained in:
Namu
2025-10-06 09:08:51 +02:00
parent 2ad93f4b91
commit 5a97669665
4 changed files with 23 additions and 25 deletions

View File

@@ -6,11 +6,4 @@ public class MailNotification extends Notification {
public MailNotification(String content, User user, SendNotificationStrategy strategy) { public MailNotification(String content, User user, SendNotificationStrategy strategy) {
super(content, user, strategy); super(content, user, strategy);
} }
@Override
public void send() {
if (isSendable())
strategy.send(user.id() + " Mail: " + user.name() + " " + content);
}
} }

View File

@@ -6,6 +6,9 @@ import utils.SendNotificationStrategy;
public abstract class Notification { public abstract class Notification {
protected String content; protected String content;
protected User user; protected User user;
/**
* Pas de change state car chemin multiple. On reste sur des enum !
*/
protected NotificationState state; protected NotificationState state;
protected SendNotificationStrategy strategy; protected SendNotificationStrategy strategy;
@@ -20,15 +23,29 @@ public abstract class Notification {
return this.state != NotificationState.SENT && this.state != NotificationState.READ; 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 String getContent() {
if (isSendable()) {
public abstract void send(); transitionState();
return strategy.makeContent(user.id() + " Push: " + user.name() + " " + content);
}
setKoState();
return "";
}
} }

View File

@@ -6,10 +6,4 @@ public class PushNotification extends Notification {
public PushNotification(String content, User user, SendNotificationStrategy strategy) { public PushNotification(String content, User user, SendNotificationStrategy strategy) {
super(content, user, strategy); super(content, user, strategy);
} }
@Override
public void send() {
if (isSendable())
strategy.send(user.id() + " Push: " + user.name() + " " + content);
}
} }

View File

@@ -7,10 +7,4 @@ public class SmsNotification extends Notification {
public SmsNotification(String content, User user, SendNotificationStrategy strategy) { public SmsNotification(String content, User user, SendNotificationStrategy strategy) {
super(content, user, strategy); super(content, user, strategy);
} }
@Override
public void send() {
if (isSendable())
strategy.send(user.id() + " Sms: " + user.name() + " " + content);
}
} }