Compare commits

...

2 Commits

Author SHA1 Message Date
Namu
53cda5688f Feat: Decoration can transform notification content more freely
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after 19s
2025-10-06 10:43:33 +02:00
Namu
8a7ce73739 Feat: Decoration can transform notification content more freely 2025-10-06 10:43:01 +02:00
5 changed files with 8 additions and 24 deletions

View File

@@ -58,17 +58,11 @@ public abstract class Notification {
public String getContent() {
if (isSendable() && content != "") {
transitionState();
StringBuilder builder = new StringBuilder();
if (decorations.isEmpty())
return content;
builder.append(content);
for (final NotificationDecoration decoration : decorations)
builder.append(decoration.transformContent());
content = decoration.transformContent(content);
return builder.toString();
return content;
}
setKoState();
return "";

View File

@@ -11,7 +11,7 @@ public class DateNotificationDecoration extends NotificationDecoration {
}
@Override
public String transformContent() {
return ": " + date.toString();
public String transformContent(String content) {
return date.toString() + ": " + content;
}
}

View File

@@ -2,20 +2,10 @@ package notificationsDecorations;
import entities.Notification;
/**
* On cherche à pouvoir ajouter des décorations aux notifications.
*
* Pour ce faire, on part de cette classe abstraite qui permettra de faire du polymorphisme.
*
* Ensuite, les décorateurs ajouteront une décoration aux notifications qui ont une liste de
* décorations.
*/
public abstract class NotificationDecoration {
protected Notification notification;
/**
* Each decoration apply a transformation on the content of the Notifications
* @return the content transformed
*/
public abstract String transformContent();
public abstract String transformContent(String content);
}

View File

@@ -8,7 +8,7 @@ public class WatermarkNotificationDecoration extends NotificationDecoration {
}
@Override
public String transformContent() {
return "\n" + waterMark;
public String transformContent(String content) {
return content + "\n" + waterMark;
}
}

View File

@@ -26,7 +26,7 @@ public class NotificationObservable {
for (final var subscriber : this.subscribers) {
for (final var notificationType : subscriber.notificationsTypes()) {
var notification = factory.createNotification(notificationType, content, subscriber, subscriber.chosenNotificationStrategy());
// Ici j'applique automatiquement les décorations, évidement, il serait mieux de la faire dynamiquement.
BaseDecorator decorator = new WatermarkDecorator(new DateDecorator(notification, new Date()), "Thomas");
System.out.println(decorator.getContent());
}