X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=97182c2f2ca4004981d2694c7f5b844a5e44fd80;hb=a7bfeae4450d7d4aecc7499f894b90eea40480f0;hp=c6476effcc0d37ecbf0d8b86a3c384c3a83fedbd;hpb=85aad5a15fc8213950d3a40dfe1737d23986da40;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index c6476ef..97182c2 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -25,6 +25,7 @@ import static java.lang.String.format; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -864,7 +865,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, logger.log(Level.FINE, String.format("Downloaded Sone %s is not newer than stored Sone %s.", sone, storedSone)); return; } - /* find removed posts. */ + final List events = new ArrayList(); SoneChangeDetector soneChangeDetector = new SoneChangeDetector(storedSone.get()); soneChangeDetector.onNewPosts(new PostProcessor() { @Override @@ -872,14 +873,14 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, if (post.getTime() < getSoneFollowingTime(sone)) { post.setKnown(true); } else if (!post.isKnown()) { - eventBus.post(new NewPostFoundEvent(post)); + events.add(new NewPostFoundEvent(post)); } } }); soneChangeDetector.onRemovedPosts(new PostProcessor() { @Override public void processPost(Post post) { - eventBus.post(new PostRemovedEvent(post)); + events.add(new PostRemovedEvent(post)); } }); soneChangeDetector.onNewPostReplies(new PostReplyProcessor() { @@ -888,18 +889,21 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, if (postReply.getTime() < getSoneFollowingTime(sone)) { postReply.setKnown(true); } else if (!postReply.isKnown()) { - eventBus.post(new NewPostReplyFoundEvent(postReply)); + events.add(new NewPostReplyFoundEvent(postReply)); } } }); soneChangeDetector.onRemovedPostReplies(new PostReplyProcessor() { @Override public void processPostReply(PostReply postReply) { - eventBus.post(new PostReplyRemovedEvent(postReply)); + events.add(new PostReplyRemovedEvent(postReply)); } }); soneChangeDetector.detectChanges(sone); database.storeSone(sone); + for (Object event : events) { + eventBus.post(event); + } sone.setOptions(storedSone.get().getOptions()); sone.setKnown(storedSone.get().isKnown()); sone.setStatus((sone.getTime() == 0) ? SoneStatus.unknown : SoneStatus.idle); @@ -1105,24 +1109,6 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, * @return The created post */ public Post createPost(Sone sone, Optional recipient, String text) { - return createPost(sone, recipient, System.currentTimeMillis(), text); - } - - /** - * Creates a new post. - * - * @param sone - * The Sone that creates the post - * @param recipient - * The recipient Sone, or {@code null} if this post does not have - * a recipient - * @param time - * The time of the post - * @param text - * The text of the post - * @return The created post - */ - public Post createPost(Sone sone, Optional recipient, long time, String text) { checkNotNull(text, "text must not be null"); checkArgument(text.trim().length() > 0, "text must not be empty"); if (!sone.isLocal()) { @@ -1130,7 +1116,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, return null; } PostBuilder postBuilder = database.newPostBuilder(); - postBuilder.from(sone.getId()).randomId().withTime(time).withText(text.trim()); + postBuilder.from(sone.getId()).randomId().currentTime().withText(text.trim()); if (recipient.isPresent()) { postBuilder.to(recipient.get().getId()); }