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.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.SoneLockedEvent;
+import net.pterodactylus.sone.core.event.SoneRemovedEvent;
+import net.pterodactylus.sone.core.event.SoneUnlockedEvent;
import net.pterodactylus.sone.data.Album;
import net.pterodactylus.sone.data.Client;
import net.pterodactylus.sone.data.Image;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
+import com.google.common.eventbus.EventBus;
import com.google.inject.Inject;
import freenet.keys.FreenetURI;
/** The core listener manager. */
private final CoreListenerManager coreListenerManager = new CoreListenerManager(this);
+ /** The event bus. */
+ private final EventBus eventBus;
+
/** The configuration. */
private Configuration configuration;
* The identity manager
* @param webOfTrustUpdater
* The WebOfTrust updater
+ * @param eventBus
+ * The event bus
*/
@Inject
- public Core(Configuration configuration, FreenetInterface freenetInterface, IdentityManager identityManager, WebOfTrustUpdater webOfTrustUpdater) {
+ public Core(Configuration configuration, FreenetInterface freenetInterface, IdentityManager identityManager, WebOfTrustUpdater webOfTrustUpdater, EventBus eventBus) {
super("Sone Core");
this.configuration = configuration;
this.freenetInterface = freenetInterface;
this.imageInserter = new ImageInserter(this, freenetInterface);
this.updateChecker = new UpdateChecker(freenetInterface);
this.webOfTrustUpdater = webOfTrustUpdater;
+ this.eventBus = eventBus;
}
//
public void lockSone(Sone sone) {
synchronized (lockedSones) {
if (lockedSones.add(sone)) {
- coreListenerManager.fireSoneLocked(sone);
+ eventBus.post(new SoneLockedEvent(sone));
}
}
}
public void unlockSone(Sone sone) {
synchronized (lockedSones) {
if (lockedSones.remove(sone)) {
- coreListenerManager.fireSoneUnlocked(sone);
+ eventBus.post(new SoneUnlockedEvent(sone));
}
}
}
}
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);
for (Post post : storedSone.getPosts()) {
posts.remove(post.getId());
if (!sone.getPosts().contains(post)) {
- coreListenerManager.firePostRemoved(post);
+ eventBus.post(new PostRemovedEvent(post));
}
}
}
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);
for (PostReply reply : storedSone.getReplies()) {
replies.remove(reply.getId());
if (!sone.getReplies().contains(reply)) {
- coreListenerManager.fireReplyRemoved(reply);
+ eventBus.post(new PostReplyRemovedEvent(reply));
}
}
}
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);
/**
* 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
synchronized (knownSones) {
knownSones.add(sone.getId());
}
- coreListenerManager.fireMarkSoneKnown(sone);
+ eventBus.post(new MarkSoneKnownEvent(sone));
touchConfiguration();
}
}
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() {
synchronized (posts) {
posts.remove(post.getId());
}
- coreListenerManager.firePostRemoved(post);
+ eventBus.post(new PostRemovedEvent(post));
markPostKnown(post);
touchConfiguration();
}
public void markPostKnown(Post post) {
post.setKnown(true);
synchronized (knownPosts) {
- coreListenerManager.fireMarkPostKnown(post);
+ eventBus.post(new MarkPostKnownEvent(post));
if (knownPosts.add(post.getId())) {
touchConfiguration();
}
replies.put(reply.getId(), reply);
}
synchronized (knownReplies) {
- coreListenerManager.fireNewReplyFound(reply);
+ eventBus.post(new NewPostReplyFoundEvent(reply));
}
sone.addReply(reply);
touchConfiguration();
public void markReplyKnown(PostReply reply) {
reply.setKnown(true);
synchronized (knownReplies) {
- coreListenerManager.fireMarkReplyKnown(reply);
+ eventBus.post(new MarkPostReplyKnownEvent(reply));
if (knownReplies.add(reply.getId())) {
touchConfiguration();
}
synchronized (knownPosts) {
for (Post post : sone.getPosts()) {
posts.remove(post.getId());
- coreListenerManager.firePostRemoved(post);
+ eventBus.post(new PostRemovedEvent(post));
}
}
}
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));
}
//