import net.pterodactylus.sone.data.Sone;
import net.pterodactylus.sone.data.Sone.ShowCustomAvatars;
import net.pterodactylus.sone.data.Sone.SoneStatus;
+import net.pterodactylus.sone.data.SoneImpl;
import net.pterodactylus.sone.data.TemporaryImage;
import net.pterodactylus.sone.database.Database;
import net.pterodactylus.sone.database.DatabaseException;
synchronized (sones) {
Sone sone = sones.get(id);
if ((sone == null) && create) {
- sone = new Sone(id, true);
+ sone = new SoneImpl(id, true);
sones.put(id, sone);
}
if ((sone != null) && !sone.isLocal()) {
- sone = new Sone(id, true);
+ sone = new SoneImpl(id, true);
sones.put(id, sone);
}
return sone;
synchronized (sones) {
Sone sone = sones.get(id);
if ((sone == null) && create && (id != null) && (id.length() == 43)) {
- sone = new Sone(id, false);
+ sone = new SoneImpl(id, false);
sones.put(id, sone);
}
return sone;
return;
}
/* find removed posts. */
+ Collection<Post> removedPosts = new ArrayList<Post>();
+ Collection<Post> newPosts = new ArrayList<Post>();
Collection<Post> existingPosts = database.getPosts(sone.getId());
for (Post oldPost : existingPosts) {
if (!sone.getPosts().contains(oldPost)) {
- eventBus.post(new PostRemovedEvent(oldPost));
+ removedPosts.add(oldPost);
}
}
/* find new posts. */
if (newPost.getTime() < getSoneFollowingTime(sone)) {
newPost.setKnown(true);
} else if (!newPost.isKnown()) {
- eventBus.post(new NewPostFoundEvent(newPost));
+ newPosts.add(newPost);
}
}
/* store posts. */
database.storePosts(sone, sone.getPosts());
+ Collection<PostReply> newPostReplies = new ArrayList<PostReply>();
+ Collection<PostReply> removedPostReplies = new ArrayList<PostReply>();
if (!soneRescueMode) {
for (PostReply reply : storedSone.get().getReplies()) {
if (!sone.getReplies().contains(reply)) {
- eventBus.post(new PostReplyRemovedEvent(reply));
+ removedPostReplies.add(reply);
}
}
}
if (reply.getTime() < getSoneFollowingTime(sone)) {
reply.setKnown(true);
} else if (!reply.isKnown()) {
- eventBus.post(new NewPostReplyFoundEvent(reply));
+ newPostReplies.add(reply);
}
}
database.storePostReplies(sone, sone.getReplies());
database.removeImage(image);
}
}
+ for (Post removedPost : removedPosts) {
+ eventBus.post(new PostRemovedEvent(removedPost));
+ }
+ for (Post newPost : newPosts) {
+ eventBus.post(new NewPostFoundEvent(newPost));
+ }
+ for (PostReply removedPostReply : removedPostReplies) {
+ eventBus.post(new PostReplyRemovedEvent(removedPostReply));
+ }
+ for (PostReply newPostReply : newPostReplies) {
+ eventBus.post(new NewPostReplyFoundEvent(newPostReply));
+ }
for (Album album : sone.getRootAlbum().getAlbums()) {
database.storeAlbum(album);
for (Image image : album.getImages()) {
synchronized (sones) {
for (Entry<Sone, SoneInserter> soneInserter : soneInserters.entrySet()) {
soneInserter.getValue().stop();
- saveSone(soneInserter.getKey());
+ saveSone(getLocalSone(soneInserter.getKey().getId(), false));
}
}
saveConfiguration();