Only create new Sones if create is true.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / Core.java
index b21a087..8984cdd 100644 (file)
@@ -35,6 +35,25 @@ import java.util.logging.Logger;
 import net.pterodactylus.sone.core.Options.DefaultOption;
 import net.pterodactylus.sone.core.Options.Option;
 import net.pterodactylus.sone.core.Options.OptionWatcher;
+import net.pterodactylus.sone.core.event.ImageInsertAbortedEvent;
+import net.pterodactylus.sone.core.event.ImageInsertFailedEvent;
+import net.pterodactylus.sone.core.event.ImageInsertFinishedEvent;
+import net.pterodactylus.sone.core.event.ImageInsertStartedEvent;
+import net.pterodactylus.sone.core.event.MarkPostKnownEvent;
+import net.pterodactylus.sone.core.event.MarkPostReplyKnownEvent;
+import net.pterodactylus.sone.core.event.MarkSoneKnownEvent;
+import net.pterodactylus.sone.core.event.NewPostFoundEvent;
+import net.pterodactylus.sone.core.event.NewPostReplyFoundEvent;
+import net.pterodactylus.sone.core.event.NewSoneFoundEvent;
+import net.pterodactylus.sone.core.event.PostRemovedEvent;
+import net.pterodactylus.sone.core.event.PostReplyRemovedEvent;
+import net.pterodactylus.sone.core.event.SoneInsertAbortedEvent;
+import net.pterodactylus.sone.core.event.SoneInsertedEvent;
+import net.pterodactylus.sone.core.event.SoneInsertingEvent;
+import net.pterodactylus.sone.core.event.SoneLockedEvent;
+import net.pterodactylus.sone.core.event.SoneRemovedEvent;
+import net.pterodactylus.sone.core.event.SoneUnlockedEvent;
+import net.pterodactylus.sone.core.event.UpdateFoundEvent;
 import net.pterodactylus.sone.data.Album;
 import net.pterodactylus.sone.data.Client;
 import net.pterodactylus.sone.data.Image;
@@ -94,9 +113,6 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        /** The preferences. */
        private final Preferences preferences = new Preferences(options);
 
-       /** The core listener manager. */
-       private final CoreListenerManager coreListenerManager = new CoreListenerManager(this);
-
        /** The event bus. */
        private final EventBus eventBus;
 
@@ -214,30 +230,6 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        }
 
        //
-       // 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
        //
 
@@ -370,7 +362,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        @Override
        public Sone getSone(String id, boolean create) {
                synchronized (sones) {
-                       if (!sones.containsKey(id)) {
+                       if (!sones.containsKey(id) && create) {
                                Sone sone = new Sone(id, false);
                                sones.put(id, sone);
                        }
@@ -789,7 +781,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        public void lockSone(Sone sone) {
                synchronized (lockedSones) {
                        if (lockedSones.add(sone)) {
-                               coreListenerManager.fireSoneLocked(sone);
+                               eventBus.post(new SoneLockedEvent(sone));
                        }
                }
        }
@@ -804,7 +796,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        public void unlockSone(Sone sone) {
                synchronized (lockedSones) {
                        if (lockedSones.remove(sone)) {
-                               coreListenerManager.fireSoneUnlocked(sone);
+                               eventBus.post(new SoneUnlockedEvent(sone));
                        }
                }
        }
@@ -892,7 +884,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                }
                                sone.setKnown(!newSone);
                                if (newSone) {
-                                       coreListenerManager.fireNewSoneFound(sone);
+                                       eventBus.post(new NewSoneFoundEvent(sone));
                                        for (Sone localSone : getLocalSones()) {
                                                if (localSone.getOptions().getBooleanOption("AutoFollow").get()) {
                                                        followSone(localSone, sone);
@@ -1100,7 +1092,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                        for (Post post : storedSone.getPosts()) {
                                                posts.remove(post.getId());
                                                if (!sone.getPosts().contains(post)) {
-                                                       coreListenerManager.firePostRemoved(post);
+                                                       eventBus.post(new PostRemovedEvent(post));
                                                }
                                        }
                                }
@@ -1113,7 +1105,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                                                knownPosts.add(post.getId());
                                                                post.setKnown(true);
                                                        } else if (!knownPosts.contains(post.getId())) {
-                                                               coreListenerManager.fireNewPostFound(post);
+                                                               eventBus.post(new NewPostFoundEvent(post));
                                                        }
                                                }
                                                posts.put(post.getId(), post);
@@ -1125,7 +1117,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                        for (PostReply reply : storedSone.getReplies()) {
                                                replies.remove(reply.getId());
                                                if (!sone.getReplies().contains(reply)) {
-                                                       coreListenerManager.fireReplyRemoved(reply);
+                                                       eventBus.post(new PostReplyRemovedEvent(reply));
                                                }
                                        }
                                }
@@ -1138,7 +1130,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                                                                knownReplies.add(reply.getId());
                                                                reply.setKnown(true);
                                                        } else if (!knownReplies.contains(reply.getId())) {
-                                                               coreListenerManager.fireNewReplyFound(reply);
+                                                               eventBus.post(new NewPostReplyFoundEvent(reply));
                                                        }
                                                }
                                                replies.put(reply.getId(), reply);
@@ -1229,7 +1221,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
 
        /**
         * Marks the given Sone as known. If the Sone was not {@link Post#isKnown()
-        * known} before, a {@link CoreListener#markSoneKnown(Sone)} event is fired.
+        * known} before, a {@link MarkSoneKnownEvent} is fired.
         *
         * @param sone
         *            The Sone to mark as known
@@ -1240,7 +1232,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                        synchronized (knownSones) {
                                knownSones.add(sone.getId());
                        }
-                       coreListenerManager.fireMarkSoneKnown(sone);
+                       eventBus.post(new MarkSoneKnownEvent(sone));
                        touchConfiguration();
                }
        }
@@ -1542,7 +1534,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                synchronized (posts) {
                        posts.put(post.getId(), post);
                }
-               coreListenerManager.fireNewPostFound(post);
+               eventBus.post(new NewPostFoundEvent(post));
                sone.addPost(post);
                touchConfiguration();
                localElementTicker.registerEvent(System.currentTimeMillis() + 10 * 1000, new Runnable() {
@@ -1573,7 +1565,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                synchronized (posts) {
                        posts.remove(post.getId());
                }
-               coreListenerManager.firePostRemoved(post);
+               eventBus.post(new PostRemovedEvent(post));
                markPostKnown(post);
                touchConfiguration();
        }
@@ -1588,7 +1580,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        public void markPostKnown(Post post) {
                post.setKnown(true);
                synchronized (knownPosts) {
-                       coreListenerManager.fireMarkPostKnown(post);
+                       eventBus.post(new MarkPostKnownEvent(post));
                        if (knownPosts.add(post.getId())) {
                                touchConfiguration();
                        }
@@ -1681,7 +1673,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                        replies.put(reply.getId(), reply);
                }
                synchronized (knownReplies) {
-                       coreListenerManager.fireNewReplyFound(reply);
+                       eventBus.post(new NewPostReplyFoundEvent(reply));
                }
                sone.addReply(reply);
                touchConfiguration();
@@ -1731,7 +1723,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        public void markReplyKnown(PostReply reply) {
                reply.setKnown(true);
                synchronized (knownReplies) {
-                       coreListenerManager.fireMarkReplyKnown(reply);
+                       eventBus.post(new MarkPostReplyKnownEvent(reply));
                        if (knownReplies.add(reply.getId())) {
                                touchConfiguration();
                        }
@@ -2412,7 +2404,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                        synchronized (knownPosts) {
                                for (Post post : sone.getPosts()) {
                                        posts.remove(post.getId());
-                                       coreListenerManager.firePostRemoved(post);
+                                       eventBus.post(new PostRemovedEvent(post));
                                }
                        }
                }
@@ -2420,14 +2412,14 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                        synchronized (knownReplies) {
                                for (PostReply reply : sone.getReplies()) {
                                        replies.remove(reply.getId());
-                                       coreListenerManager.fireReplyRemoved(reply);
+                                       eventBus.post(new PostReplyRemovedEvent(reply));
                                }
                        }
                }
                synchronized (sones) {
                        sones.remove(identity.getId());
                }
-               coreListenerManager.fireSoneRemoved(sone);
+               eventBus.post(new SoneRemovedEvent(sone));
        }
 
        //
@@ -2439,7 +2431,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
         */
        @Override
        public void updateFound(Version version, long releaseTime, long latestEdition) {
-               coreListenerManager.fireUpdateFound(version, releaseTime, latestEdition);
+               eventBus.post(new UpdateFoundEvent(version, releaseTime, latestEdition));
        }
 
        //
@@ -2451,7 +2443,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
         */
        @Override
        public void insertStarted(Sone sone) {
-               coreListenerManager.fireSoneInserting(sone);
+               eventBus.post(new SoneInsertingEvent(sone));
        }
 
        /**
@@ -2459,7 +2451,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
         */
        @Override
        public void insertFinished(Sone sone, long insertDuration) {
-               coreListenerManager.fireSoneInserted(sone, insertDuration);
+               eventBus.post(new SoneInsertedEvent(sone, insertDuration));
        }
 
        /**
@@ -2467,7 +2459,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
         */
        @Override
        public void insertAborted(Sone sone, Throwable cause) {
-               coreListenerManager.fireSoneInsertAborted(sone, cause);
+               eventBus.post(new SoneInsertAbortedEvent(sone, cause));
        }
 
        //
@@ -2480,7 +2472,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        @Override
        public void imageInsertStarted(Image image) {
                logger.log(Level.WARNING, String.format("Image insert started for %s...", image));
-               coreListenerManager.fireImageInsertStarted(image);
+               eventBus.post(new ImageInsertStartedEvent(image));
        }
 
        /**
@@ -2489,7 +2481,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        @Override
        public void imageInsertAborted(Image image) {
                logger.log(Level.WARNING, String.format("Image insert aborted for %s.", image));
-               coreListenerManager.fireImageInsertAborted(image);
+               eventBus.post(new ImageInsertAbortedEvent(image));
        }
 
        /**
@@ -2501,7 +2493,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                image.setKey(key.toString());
                deleteTemporaryImage(image.getId());
                touchConfiguration();
-               coreListenerManager.fireImageInsertFinished(image);
+               eventBus.post(new ImageInsertFinishedEvent(image));
        }
 
        /**
@@ -2510,7 +2502,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
        @Override
        public void imageInsertFailed(Image image, Throwable cause) {
                logger.log(Level.WARNING, String.format("Image insert failed for %s." + image), cause);
-               coreListenerManager.fireImageInsertFailed(image, cause);
+               eventBus.post(new ImageInsertFailedEvent(image, cause));
        }
 
        /**