From e122164af747b806cc0b3d8cc17e82fa88aabaef Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Thu, 14 Oct 2010 14:48:12 +0200 Subject: [PATCH] Load replies and store everything in caches. --- .../java/net/pterodactylus/sone/core/Core.java | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/main/java/net/pterodactylus/sone/core/Core.java b/src/main/java/net/pterodactylus/sone/core/Core.java index d906055..4a75a03 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -29,9 +29,13 @@ import java.util.logging.Logger; import net.pterodactylus.sone.core.SoneException.Type; import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.PostShell; import net.pterodactylus.sone.data.Profile; import net.pterodactylus.sone.data.Reply; +import net.pterodactylus.sone.data.ReplyShell; +import net.pterodactylus.sone.data.ShellCache; import net.pterodactylus.sone.data.Sone; +import net.pterodactylus.sone.data.SoneShell; import net.pterodactylus.util.config.Configuration; import net.pterodactylus.util.config.ConfigurationException; import net.pterodactylus.util.logging.Logging; @@ -60,6 +64,17 @@ public class Core extends AbstractService { /** Sone inserters. */ private final Map soneInserters = new HashMap(); + /* various caches follow here. */ + + /** Cache for all known Sones. */ + private final ShellCache soneCache = new ShellCache(SoneShell.creator); + + /** Cache for all known posts. */ + private final ShellCache postCache = new ShellCache(PostShell.creator); + + /** Cache for all known replies. */ + private final ShellCache replyCache = new ShellCache(ReplyShell.creator); + /** * Creates a new core. */ @@ -249,6 +264,7 @@ public class Core extends AbstractService { profile.setMiddleName(middleName); profile.setLastName(lastName); Sone sone = new Sone(UUID.fromString(id), name, new FreenetURI(requestUri), new FreenetURI(insertUri)); + soneCache.put(id, sone); sone.setProfile(profile); int postId = 0; do { @@ -260,8 +276,23 @@ public class Core extends AbstractService { long time = configuration.getLongValue(postPrefix + "/Time").getValue(null); String text = configuration.getStringValue(postPrefix + "/Text").getValue(null); Post post = new Post(UUID.fromString(id), sone, time, text); + postCache.put(id, post); sone.addPost(post); } while (true); + int replyCounter = 0; + do { + String replyPrefix = sonePrefix + "/Reply." + replyCounter++; + String replyId = configuration.getStringValue(replyPrefix + "/ID").getValue(null); + if (replyId == null) { + break; + } + Sone replySone = soneCache.get(configuration.getStringValue(replyPrefix + "/Sone").getValue(null)); + Post replyPost = postCache.get(configuration.getStringValue(replyPrefix + "/Post").getValue(null)); + long replyTime = configuration.getLongValue(replyPrefix + "/Time").getValue(null); + String replyText = configuration.getStringValue(replyPrefix + "/Text").getValue(null); + Reply reply = new ReplyShell().setSone(replySone).setPost(replyPost).setTime(replyTime).setText(replyText).getShelled(); + replyCache.put(replyId, reply); + } while (true); sone.setModificationCounter(modificationCounter); addSone(sone); } catch (MalformedURLException mue1) { -- 2.7.4