X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneInserter.java;h=c2e0cc6e3e670986655abf617d0531d052978f7b;hb=6e08990d7764f321237a896f55c517c9cbd98815;hp=314f1bd683fffbdbc2e4417b619b9cd27616116f;hpb=c69b92eb053a01cb651bce19c6f8656a679ff796;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/SoneInserter.java b/src/main/java/net/pterodactylus/sone/core/SoneInserter.java index 314f1bd..c2e0cc6 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneInserter.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneInserter.java @@ -25,6 +25,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -87,7 +88,7 @@ public class SoneInserter extends AbstractService { * The Sone to insert */ public SoneInserter(Core core, FreenetInterface freenetInterface, Sone sone) { - super("Sone Inserter for “" + sone.getName() + "”"); + super("Sone Inserter for “" + sone.getName() + "”", false); this.core = core; this.freenetInterface = freenetInterface; this.sone = sone; @@ -103,21 +104,24 @@ public class SoneInserter extends AbstractService { @Override protected void serviceRun() { long modificationCounter = 0; - boolean restartNow = true; + long lastModificationTime = 0; while (!shouldStop()) { - if (!restartNow) { - logger.log(Level.FINEST, "Waiting 60 seconds before checking Sone “" + sone.getName() + "”."); - sleep(60 * 1000); - } - restartNow = false; + /* check every seconds. */ + sleep(1000); + InsertInformation insertInformation = null; synchronized (sone) { - modificationCounter = sone.getModificationCounter(); - if (modificationCounter > 0) { - sone.setTime(System.currentTimeMillis()); + if (sone.getModificationCounter() > modificationCounter) { + modificationCounter = sone.getModificationCounter(); + lastModificationTime = System.currentTimeMillis(); + sone.setTime(lastModificationTime); + logger.log(Level.FINE, "Sone %s has been modified, waiting 60 seconds before inserting.", new Object[] { sone.getName() }); + } + if ((lastModificationTime > 0) && ((System.currentTimeMillis() - lastModificationTime) > (60 * 1000))) { insertInformation = new InsertInformation(sone); } } + if (insertInformation != null) { logger.log(Level.INFO, "Inserting Sone “%s”…", new Object[] { sone.getName() }); @@ -143,9 +147,8 @@ public class SoneInserter extends AbstractService { if (sone.getModificationCounter() == modificationCounter) { logger.log(Level.FINE, "Sone “%s” was not modified further, resetting counter…", new Object[] { sone }); sone.setModificationCounter(0); - } else { - logger.log(Level.FINE, "Sone “%s” was modified since the insert started, starting another insert…", new Object[] { sone }); - restartNow = true; + modificationCounter = 0; + lastModificationTime = 0; } } } @@ -180,8 +183,9 @@ public class SoneInserter extends AbstractService { soneProperties.put("profile", sone.getProfile()); soneProperties.put("posts", new ArrayList(sone.getPosts())); soneProperties.put("replies", new HashSet(sone.getReplies())); - soneProperties.put("friends", new HashSet(sone.getFriends())); soneProperties.put("blockedSoneIds", new HashSet(sone.getBlockedSoneIds())); + soneProperties.put("likedPostIds", new HashSet(sone.getLikedPostIds())); + soneProperties.put("likeReplyIds", new HashSet(sone.getLikedReplyIds())); } // @@ -245,6 +249,8 @@ public class SoneInserter extends AbstractService { } finally { Closer.close(templateInputStreamReader); } + @SuppressWarnings("unchecked") + final Set blockedSoneIds = (Set) soneProperties.get("blockedSoneIds"); Collection knownSones = Filters.filteredCollection(core.getKnownSones(), new Filter() { /** @@ -252,7 +258,7 @@ public class SoneInserter extends AbstractService { */ @Override public boolean filterObject(Sone object) { - return !soneProperties.containsKey(object.getId()) && !object.getId().equals(soneProperties.get("id")); + return !blockedSoneIds.contains(object.getId()) && !object.getId().equals(soneProperties.get("id")); } });