X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=3164484a09369e2b795472dfdb86c0f4c4bb8ef9;hb=48d8d875299dcbcaf24912c58960b7a1c070d22b;hp=576cdf4e1cd80c16bffcd92d4544cca9ac1417b8;hpb=f3e3a22da8fde0575494059165a41a847b07d0ab;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 576cdf4..3164484 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -29,14 +29,9 @@ 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.Shell; -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; @@ -71,13 +66,13 @@ public class Core extends AbstractService { /* various caches follow here. */ /** Cache for all known Sones. */ - private final ShellCache soneCache = new ShellCache(SoneShell.creator); + private final Map soneCache = new HashMap(); /** Cache for all known posts. */ - private final ShellCache postCache = new ShellCache(PostShell.creator); + private final Map postCache = new HashMap(); /** Cache for all known replies. */ - private final ShellCache replyCache = new ShellCache(ReplyShell.creator); + private final Map replyCache = new HashMap(); /** * Creates a new core. @@ -125,18 +120,19 @@ public class Core extends AbstractService { } /** - * Returns a Sone or a {@link Shell} around one for the given ID. + * Returns the Sone with the given ID, or an empty Sone that has been + * initialized with the given ID. * * @param soneId * The ID of the Sone - * @return The Sone, or a {@link Shell} around one + * @return The Sone */ public Sone getSone(String soneId) { - Sone sone = soneCache.get(soneId); - if (sone instanceof SoneShell) { - soneCache.put(soneId, sone = ((SoneShell) sone).getShelled()); + if (!soneCache.containsKey(soneId)) { + Sone sone = new Sone(soneId); + soneCache.put(soneId, sone); } - return sone; + return soneCache.get(soneId); } // @@ -166,8 +162,10 @@ public class Core extends AbstractService { * The sone to watch */ public void addRemoteSone(Sone sone) { - Sone updatedSone = soneCache.put(sone.getId(), sone); - soneDownloader.addSone(updatedSone); + if (!soneCache.containsKey(sone.getId())) { + soneCache.put(sone.getId(), sone); + } + soneDownloader.addSone(sone); } /** @@ -217,7 +215,7 @@ public class Core extends AbstractService { Sone sone; try { logger.log(Level.FINEST, "Creating new Sone “%s” at %s (%s)…", new Object[] { name, finalRequestUri, finalInsertUri }); - sone = new Sone(UUID.randomUUID(), name, new FreenetURI(finalRequestUri).setKeyType("USK").setDocName("Sone-" + name), new FreenetURI(finalInsertUri).setKeyType("USK").setDocName("Sone-" + name)); + sone = new Sone(UUID.randomUUID().toString()).setName(name).setRequestUri(new FreenetURI(finalRequestUri).setKeyType("USK").setDocName("Sone-" + name)).setInsertUri(new FreenetURI(finalInsertUri).setKeyType("USK").setDocName("Sone-" + name)); sone.setProfile(new Profile()); /* set modification counter to 1 so it is inserted immediately. */ sone.setModificationCounter(1); @@ -296,7 +294,7 @@ public class Core extends AbstractService { profile.setFirstName(firstName); profile.setMiddleName(middleName); profile.setLastName(lastName); - Sone sone = new Sone(UUID.fromString(id), name, new FreenetURI(requestUri), new FreenetURI(insertUri)); + Sone sone = new Sone(id).setName(name).setRequestUri(new FreenetURI(requestUri)).setInsertUri(new FreenetURI(insertUri)); soneCache.put(id, sone); sone.setProfile(profile); int postId = 0; @@ -308,7 +306,7 @@ 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); + Post post = new Post(id, sone, time, text); postCache.put(id, post); sone.addPost(post); } while (true); @@ -319,16 +317,14 @@ public class Core extends AbstractService { if (replyId == null) { break; } - Sone replySone = soneCache.get(configuration.getStringValue(replyPrefix + "/Sone/ID").getValue(null)); + Sone replySone = getSone(configuration.getStringValue(replyPrefix + "/Sone/ID").getValue(null)); String replySoneKey = configuration.getStringValue(replyPrefix + "/Sone/Key").getValue(null); String replySoneName = configuration.getStringValue(replyPrefix + "/Sone/Name").getValue(null); - if (replySone instanceof SoneShell) { - ((SoneShell) replySone).setRequestUri(new FreenetURI(replySoneKey)).setName(replySoneName); - } + replySone.setRequestUri(new FreenetURI(replySoneKey)).setName(replySoneName); 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(); + Reply reply = new Reply(replyId, replySone, replyPost, replyTime, replyText); replyCache.put(replyId, reply); } while (true); @@ -341,13 +337,11 @@ public class Core extends AbstractService { break; } Sone friendSone = soneCache.get(friendId); - if (friendSone instanceof SoneShell) { - String friendKey = configuration.getStringValue(friendPrefix + "/Key").getValue(null); - String friendName = configuration.getStringValue(friendPrefix + "/Name").getValue(null); - ((SoneShell) friendSone).setRequestUri(new FreenetURI(friendKey)).setName(friendName); - } + String friendKey = configuration.getStringValue(friendPrefix + "/Key").getValue(null); + String friendName = configuration.getStringValue(friendPrefix + "/Name").getValue(null); + friendSone.setRequestUri(new FreenetURI(friendKey)).setName(friendName); addRemoteSone(friendSone); - sone.addFriendSone(sone); + sone.addFriend(sone); } sone.setModificationCounter(modificationCounter); @@ -406,7 +400,7 @@ public class Core extends AbstractService { configuration.getStringValue(sonePrefix + "/Reply." + replyId + "/ID").setValue(null); int friendId = 0; - for (Sone friend : sone.getFriendSones()) { + for (Sone friend : sone.getFriends()) { String friendPrefix = sonePrefix + "/Friend." + friendId++; configuration.getStringValue(friendPrefix + "/ID").setValue(friend.getId()); configuration.getStringValue(friendPrefix + "/Key").setValue(friend.getRequestUri().toString());