From c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:08:27 +0200 Subject: add: graphs et rushs --- .../notifyme/notify/INotificationSender.java | 10 ++++++ .../assistants/notifyme/notify/ShellNotifier.java | 22 ++++++++++++ .../notifyme/user/IMultiNotificationSender.java | 26 ++++++++++++++ .../fr/epita/assistants/notifyme/user/User.java | 41 ++++++++++++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/INotificationSender.java create mode 100644 graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/ShellNotifier.java create mode 100644 graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/IMultiNotificationSender.java create mode 100644 graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/User.java (limited to 'graphs/java/notifyMe/src') diff --git a/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/INotificationSender.java b/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/INotificationSender.java new file mode 100644 index 0000000..6146e8e --- /dev/null +++ b/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/INotificationSender.java @@ -0,0 +1,10 @@ +package fr.epita.assistants.notifyme.notify; + +public interface INotificationSender { + /** + * Entrypoint to send notifications. + * @param parMessage the message to use for the notification - may be discarded by the␣ + ↪→implementation + */ + void notify(final String parSender, final String parReceiver, final String parMessage); +} diff --git a/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/ShellNotifier.java b/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/ShellNotifier.java new file mode 100644 index 0000000..c2631f7 --- /dev/null +++ b/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/ShellNotifier.java @@ -0,0 +1,22 @@ +package fr.epita.assistants.notifyme.notify; + +public class ShellNotifier implements INotificationSender { + final boolean err; + + /** + * Constructor + * + * @param parStdErr if true, print to stderr, otherwise print to stdout + */ + public ShellNotifier(final boolean parStdErr) { + err = parStdErr; + } + + @Override + public void notify(String parSender, String parReceiver, String parMessage) { + if (err) + System.err.println("Notification from " + parSender + " to " + parReceiver + " received: " + parMessage); + else + System.out.println("Notification from " + parSender + " to " + parReceiver + " received: " + parMessage); + } +} diff --git a/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/IMultiNotificationSender.java b/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/IMultiNotificationSender.java new file mode 100644 index 0000000..501a070 --- /dev/null +++ b/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/IMultiNotificationSender.java @@ -0,0 +1,26 @@ +package fr.epita.assistants.notifyme.user; + +import fr.epita.assistants.notifyme.notify.INotificationSender; + +import java.util.List; + +public interface IMultiNotificationSender { + /** + * Sends a notification to all registered notifiers + * @param parRecipient the recipient of the notification + * @param parMessage the message to send + */ + void sendNotifications(String parRecipient, String parMessage); + + /** + * Adds a notification sender to the list of possible recipients + * @param parNotifier the new notifier to add, should be ignored if null + */ + void addNotifier(INotificationSender parNotifier); + + /** + * Returns the list of notifiers + * @return the list of notifiers + */ + List getNotifiers(); +} diff --git a/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/User.java b/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/User.java new file mode 100644 index 0000000..58d4446 --- /dev/null +++ b/graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/User.java @@ -0,0 +1,41 @@ +package fr.epita.assistants.notifyme.user; + +import fr.epita.assistants.notifyme.notify.INotificationSender; + +import java.util.ArrayList; +import java.util.List; + +public class User implements IMultiNotificationSender { + final List parNotificationList; + final String username; + + public String getUsername() { + return username; + } + + public User(String username) { + this.username = username; + this.parNotificationList = new ArrayList<>(); + } + + public User(String username, List parNotificationList) { + this.parNotificationList = parNotificationList; + this.username = username; + } + + @Override + public void sendNotifications(String parRecipient, String parMessage) { + for (INotificationSender n : parNotificationList) + n.notify(username, parRecipient, parMessage); + } + + @Override + public void addNotifier(INotificationSender parNotifier) { + parNotificationList.add(parNotifier); + } + + @Override + public List getNotifiers() { + return parNotificationList; + } +} -- cgit v1.2.3