summaryrefslogtreecommitdiff
path: root/graphs/java/notifyMe/src
diff options
context:
space:
mode:
authorMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:08:27 +0200
committerMartial Simon <msimon_fr@hotmail.com>2025-09-15 01:08:27 +0200
commitc9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch)
tree3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /graphs/java/notifyMe/src
add: graphs et rushs
Diffstat (limited to 'graphs/java/notifyMe/src')
-rw-r--r--graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/INotificationSender.java10
-rw-r--r--graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/notify/ShellNotifier.java22
-rw-r--r--graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/IMultiNotificationSender.java26
-rw-r--r--graphs/java/notifyMe/src/main/java/fr/epita/assistants/notifyme/user/User.java41
4 files changed, 99 insertions, 0 deletions
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<INotificationSender> 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<INotificationSender> 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<INotificationSender> 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<INotificationSender> getNotifiers() {
+ return parNotificationList;
+ }
+}