From bfe3df366bdbb6c283bdd698f4cf2e3b9c4e9d9c Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sun, 14 Nov 2010 17:10:20 +0100 Subject: [PATCH] Add core listener. --- .../java/net/pterodactylus/sone/core/Core.java | 27 +++++++ .../net/pterodactylus/sone/core/CoreListener.java | 58 +++++++++++++++ .../sone/core/CoreListenerManager.java | 85 ++++++++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 src/main/java/net/pterodactylus/sone/core/CoreListener.java create mode 100644 src/main/java/net/pterodactylus/sone/core/CoreListenerManager.java diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index ffdece8..2f69bee 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -80,6 +80,9 @@ public class Core implements IdentityListener { /** The options. */ private final Options options = new Options(); + /** The core listener manager. */ + private final CoreListenerManager coreListenerManager = new CoreListenerManager(this); + /** The configuration. */ private final Configuration configuration; @@ -152,6 +155,30 @@ public class Core implements IdentityListener { } // + // LISTENER MANAGEMENT + // + + /** + * Adds a new core listener. + * + * @param coreListener + * The listener to add + */ + public void addCoreListener(CoreListener coreListener) { + coreListenerManager.addListener(coreListener); + } + + /** + * Removes a core listener. + * + * @param coreListener + * The listener to remove + */ + public void removeCoreListener(CoreListener coreListener) { + coreListenerManager.removeListener(coreListener); + } + + // // ACCESSORS // diff --git a/src/main/java/net/pterodactylus/sone/core/CoreListener.java b/src/main/java/net/pterodactylus/sone/core/CoreListener.java new file mode 100644 index 0000000..2547e63 --- /dev/null +++ b/src/main/java/net/pterodactylus/sone/core/CoreListener.java @@ -0,0 +1,58 @@ +/* + * Sone - CoreListener.java - Copyright © 2010 David Roden + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.pterodactylus.sone.core; + +import java.util.EventListener; + +import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.Reply; +import net.pterodactylus.sone.data.Sone; + +/** + * Listener interface for objects that want to be notified on certain + * {@link Core} events, such es discovery of new data. + * + * @author David ‘Bombe’ Roden + */ +public interface CoreListener extends EventListener { + + /** + * Notifies a listener that a new Sone has been discovered. + * + * @param sone + * The new Sone + */ + public void newSoneFound(Sone sone); + + /** + * Notifies a listener that a new post has been found. + * + * @param post + * The new post + */ + public void newPostFound(Post post); + + /** + * Notifies a listener that a new reply has been found. + * + * @param reply + * The new reply + */ + public void newReplyFound(Reply reply); + +} diff --git a/src/main/java/net/pterodactylus/sone/core/CoreListenerManager.java b/src/main/java/net/pterodactylus/sone/core/CoreListenerManager.java new file mode 100644 index 0000000..84dc5f0 --- /dev/null +++ b/src/main/java/net/pterodactylus/sone/core/CoreListenerManager.java @@ -0,0 +1,85 @@ +/* + * Sone - CoreListenerManager.java - Copyright © 2010 David Roden + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package net.pterodactylus.sone.core; + +import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.Reply; +import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.util.event.AbstractListenerManager; + +/** + * Manager for {@link CoreListener}s. + * + * @author David ‘Bombe’ Roden + */ +public class CoreListenerManager extends AbstractListenerManager { + + /** + * Creates a new core listener manager. + * + * @param source + * The Core + */ + public CoreListenerManager(Core source) { + super(source); + } + + // + // ACTIONS + // + + /** + * Notifies all listeners that a new Sone has been discovered. + * + * @see CoreListener#newSoneFound(Sone) + * @param sone + * The discovered sone + */ + void fireNewSoneFound(Sone sone) { + for (CoreListener coreListener : getListeners()) { + coreListener.newSoneFound(sone); + } + } + + /** + * Notifies all listeners that a new post has been found. + * + * @see CoreListener#newPostFound(Post) + * @param post + * The new post + */ + void fireNewPostFound(Post post) { + for (CoreListener coreListener : getListeners()) { + coreListener.newPostFound(post); + } + } + + /** + * Notifies all listeners that a new reply has been found. + * + * @see CoreListener#newReplyFound(Reply) + * @param reply + * The new reply + */ + void fireNewReplyFound(Reply reply) { + for (CoreListener coreListener : getListeners()) { + coreListener.newReplyFound(reply); + } + } + +} -- 2.7.4