Convert image insert events to EventBus-based events.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / Core.java
index 07db844..e278629 100644 (file)
@@ -35,6 +35,7 @@ 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.ImageInsertFinishedEvent;
 import net.pterodactylus.sone.core.event.MarkPostKnownEvent;
 import net.pterodactylus.sone.core.event.MarkPostReplyKnownEvent;
 import net.pterodactylus.sone.core.event.MarkSoneKnownEvent;
@@ -43,9 +44,13 @@ 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;
@@ -82,6 +87,7 @@ import net.pterodactylus.util.version.Version;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
 import com.google.common.eventbus.EventBus;
+import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 
 import freenet.keys.FreenetURI;
@@ -91,7 +97,7 @@ import freenet.keys.FreenetURI;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class Core extends AbstractService implements IdentityListener, UpdateListener, SoneProvider, PostProvider, SoneInsertListener, ImageInsertListener {
+public class Core extends AbstractService implements IdentityListener, UpdateListener, SoneProvider, PostProvider, SoneInsertListener {
 
        /** The logger. */
        private static final Logger logger = Logging.getLogger(Core.class);
@@ -105,9 +111,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;
 
@@ -218,37 +221,13 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
                this.freenetInterface = freenetInterface;
                this.identityManager = identityManager;
                this.soneDownloader = new SoneDownloader(this, freenetInterface);
-               this.imageInserter = new ImageInserter(this, freenetInterface);
+               this.imageInserter = new ImageInserter(freenetInterface);
                this.updateChecker = new UpdateChecker(freenetInterface);
                this.webOfTrustUpdater = webOfTrustUpdater;
                this.eventBus = eventBus;
        }
 
        //
-       // 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
        //
 
@@ -381,7 +360,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);
                        }
@@ -2450,7 +2429,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));
        }
 
        //
@@ -2462,7 +2441,7 @@ public class Core extends AbstractService implements IdentityListener, UpdateLis
         */
        @Override
        public void insertStarted(Sone sone) {
-               coreListenerManager.fireSoneInserting(sone);
+               eventBus.post(new SoneInsertingEvent(sone));
        }
 
        /**
@@ -2470,7 +2449,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));
        }
 
        /**
@@ -2478,50 +2457,21 @@ 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));
        }
 
-       //
-       // SONEINSERTLISTENER METHODS
-       //
-
        /**
-        * {@inheritDoc}
-        */
-       @Override
-       public void imageInsertStarted(Image image) {
-               logger.log(Level.WARNING, String.format("Image insert started for %s...", image));
-               coreListenerManager.fireImageInsertStarted(image);
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       @Override
-       public void imageInsertAborted(Image image) {
-               logger.log(Level.WARNING, String.format("Image insert aborted for %s.", image));
-               coreListenerManager.fireImageInsertAborted(image);
-       }
-
-       /**
-        * {@inheritDoc}
+        * Deletes the temporary image.
+        *
+        * @param imageInsertFinishedEvent
+        *            The event
         */
-       @Override
-       public void imageInsertFinished(Image image, FreenetURI key) {
-               logger.log(Level.WARNING, String.format("Image insert finished for %s: %s", image, key));
-               image.setKey(key.toString());
-               deleteTemporaryImage(image.getId());
+       @Subscribe
+       public void imageInsertFinished(ImageInsertFinishedEvent imageInsertFinishedEvent) {
+               logger.log(Level.WARNING, String.format("Image insert finished for %s: %s", imageInsertFinishedEvent.image(), imageInsertFinishedEvent.resultingUri()));
+               imageInsertFinishedEvent.image().setKey(imageInsertFinishedEvent.resultingUri().toString());
+               deleteTemporaryImage(imageInsertFinishedEvent.image().getId());
                touchConfiguration();
-               coreListenerManager.fireImageInsertFinished(image);
-       }
-
-       /**
-        * {@inheritDoc}
-        */
-       @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);
        }
 
        /**