* @return The post, or {@code null} if there is no such post
*/
public Post getPost(String postId) {
+ return getPost(postId, true);
+ }
+
+ /**
+ * Returns the post with the given ID, optionally creating a new post.
+ *
+ * @param postId
+ * The ID of the post to get
+ * @param create
+ * {@code true} it create a new post if no post with the given ID
+ * exists, {@code false} to return {@code null}
+ * @return The post, or {@code null} if there is no such post
+ */
+ public Post getPost(String postId, boolean create) {
synchronized (posts) {
Post post = posts.get(postId);
- if (post == null) {
+ if ((post == null) && create) {
post = new Post(postId);
posts.put(postId, post);
}
return;
}
logger.log(Level.INFO, "Trying to restore Sone from Freenet…");
+ coreListenerManager.fireRescuingSone(sone);
lockSone(sone);
long edition = sone.getLatestEdition();
while (!stopped && (edition >= 0) && isSoneRescueMode()) {
--edition;
}
logger.log(Level.INFO, "Finished restoring Sone from Freenet, starting Inserter…");
+ saveSone(sone);
+ coreListenerManager.fireRescuedSone(sone);
soneInserter.start();
}
}
synchronized (newPosts) {
for (Post post : sone.getPosts()) {
+ post.setSone(getSone(post.getSone().getId()));
if (!storedSone.getPosts().contains(post) && !knownPosts.contains(post.getId())) {
- post.setSone(getSone(post.getSone().getId()));
newPosts.add(post.getId());
coreListenerManager.fireNewPostFound(post);
}
}
synchronized (newReplies) {
for (Reply reply : sone.getReplies()) {
+ reply.setSone(getSone(reply.getSone().getId()));
if (!storedSone.getReplies().contains(reply) && !knownReplies.contains(reply.getId())) {
newReplies.add(reply.getId());
coreListenerManager.fireNewReplyFound(reply);