From 0f9d0da867b2fdd64a9971a26fc86af3d9ad2160 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Lizaga?= Date: Tue, 5 Oct 2021 07:52:03 +0200 Subject: [PATCH 1/3] Add Notifier domain service --- .gitignore | 3 +++ .../main/tv/codely/mooc/notification/domain/Notifier.java | 5 +++++ 2 files changed, 8 insertions(+) create mode 100644 src/mooc/main/tv/codely/mooc/notification/domain/Notifier.java diff --git a/.gitignore b/.gitignore index dc57c96..5fbc4a2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ out/ # Ignore Gradle GUI config gradle-app.setting +# IntelliJ .idea folder +.idea/ + diff --git a/src/mooc/main/tv/codely/mooc/notification/domain/Notifier.java b/src/mooc/main/tv/codely/mooc/notification/domain/Notifier.java new file mode 100644 index 0000000..c2e7a18 --- /dev/null +++ b/src/mooc/main/tv/codely/mooc/notification/domain/Notifier.java @@ -0,0 +1,5 @@ +package tv.codely.mooc.notification.domain; + +public interface Notifier { + void notify(String message); +} From 5b849942a2e0ad9b39e8a4e14437945299a0d97f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Lizaga?= Date: Tue, 5 Oct 2021 07:54:51 +0200 Subject: [PATCH 2/3] Add NotifyOnVideoPublished event --- .../create/NotifyOnVideoPublished.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/mooc/main/tv/codely/mooc/notification/application/create/NotifyOnVideoPublished.java diff --git a/src/mooc/main/tv/codely/mooc/notification/application/create/NotifyOnVideoPublished.java b/src/mooc/main/tv/codely/mooc/notification/application/create/NotifyOnVideoPublished.java new file mode 100644 index 0000000..db3632c --- /dev/null +++ b/src/mooc/main/tv/codely/mooc/notification/application/create/NotifyOnVideoPublished.java @@ -0,0 +1,27 @@ +package tv.codely.mooc.notification.application.create; + +import tv.codely.mooc.notification.domain.Notifier; +import tv.codely.mooc.video.domain.VideoPublished; +import tv.codely.shared.application.DomainEventSubscriber; + +public class NotifyOnVideoPublished implements DomainEventSubscriber { + private final Notifier notifier; + + public NotifyOnVideoPublished(Notifier notifier) { + this.notifier = notifier; + } + + @Override + public Class subscribedTo() { + return VideoPublished.class; + } + + @Override + public void consume(VideoPublished event) { + notifier.notify(String.format( + "Hey! There is a new video with title <%s> and description <%s>", + event.title(), + event.description() + )); + } +} From 017dca89c86f70124e1c6c1390c02db92b73439f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Lizaga?= Date: Tue, 5 Oct 2021 07:59:39 +0200 Subject: [PATCH 3/3] Add LogNotifier --- .../FileHandlerCantBeCreated.java | 7 +++++ .../infrastructure/LogNotifier.java | 26 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 src/mooc/main/tv/codely/mooc/notification/infrastructure/FileHandlerCantBeCreated.java create mode 100644 src/mooc/main/tv/codely/mooc/notification/infrastructure/LogNotifier.java diff --git a/src/mooc/main/tv/codely/mooc/notification/infrastructure/FileHandlerCantBeCreated.java b/src/mooc/main/tv/codely/mooc/notification/infrastructure/FileHandlerCantBeCreated.java new file mode 100644 index 0000000..aba65aa --- /dev/null +++ b/src/mooc/main/tv/codely/mooc/notification/infrastructure/FileHandlerCantBeCreated.java @@ -0,0 +1,7 @@ +package tv.codely.mooc.notification.infrastructure; + +public class FileHandlerCantBeCreated extends RuntimeException { + FileHandlerCantBeCreated(String reason) { + super("Can't create file handler:\n" + reason); + } +} diff --git a/src/mooc/main/tv/codely/mooc/notification/infrastructure/LogNotifier.java b/src/mooc/main/tv/codely/mooc/notification/infrastructure/LogNotifier.java new file mode 100644 index 0000000..5dbefa6 --- /dev/null +++ b/src/mooc/main/tv/codely/mooc/notification/infrastructure/LogNotifier.java @@ -0,0 +1,26 @@ +package tv.codely.mooc.notification.infrastructure; + +import tv.codely.mooc.notification.domain.Notifier; + +import java.io.IOException; +import java.util.logging.FileHandler; +import java.util.logging.Logger; + +public class LogNotifier implements Notifier { + private final static Logger logger = Logger.getLogger(LogNotifier.class.getName()); + + public LogNotifier(String fileName) throws FileHandlerCantBeCreated { + try { + FileHandler fileHandler = new FileHandler(fileName, true); + logger.addHandler(fileHandler); + } catch (IOException e) { + throw new FileHandlerCantBeCreated(fileName); + } + } + + @Override + public void notify(String text) { + logger.info(text); + } +} +