X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneInserter.java;h=c15b1d09562eb4947b56bfda04c6e14be073ebdd;hb=0001614e7188967fabe8597d4c5663952ab19197;hp=e23d1a9c470c467a54b42c132cdbabb5239dec8c;hpb=8fbb593a0292420f02c5efad30347e7076abe581;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 e23d1a9..c15b1d0 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneInserter.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneInserter.java @@ -160,6 +160,17 @@ public class SoneInserter extends AbstractService { /* check every seconds. */ sleep(1000); + /* don’t insert locked Sones. */ + if (core.isLocked(sone)) { + /* trigger redetection when the Sone is unlocked. */ + synchronized (sone) { + modified = !sone.getFingerprint().equals(lastInsertFingerprint); + } + lastFingerprint = ""; + lastModificationTime = 0; + continue; + } + InsertInformation insertInformation = null; synchronized (sone) { String fingerprint = sone.getFingerprint(); @@ -171,7 +182,6 @@ public class SoneInserter extends AbstractService { } else { lastModificationTime = System.currentTimeMillis(); modified = true; - sone.setTime(lastModificationTime); logger.log(Level.FINE, "Sone %s has been modified, waiting %d seconds before inserting.", new Object[] { sone.getName(), insertionDelay }); } lastFingerprint = fingerprint; @@ -188,12 +198,15 @@ public class SoneInserter extends AbstractService { boolean success = false; try { core.setSoneStatus(sone, SoneStatus.inserting); + long insertTime = System.currentTimeMillis(); + insertInformation.setTime(insertTime); FreenetURI finalUri = freenetInterface.insertDirectory(insertInformation.getInsertUri().setKeyType("USK").setSuggestedEdition(0), insertInformation.generateManifestEntries(), "index.html"); /* at this point we might already be stopped. */ if (shouldStop()) { /* if so, bail out, don’t change anything. */ break; } + sone.setTime(insertTime); sone.setLatestEdition(finalUri.getEdition()); success = true; logger.log(Level.INFO, "Inserted Sone “%s” at %s.", new Object[] { sone.getName(), finalUri }); @@ -249,7 +262,7 @@ public class SoneInserter extends AbstractService { soneProperties.put("posts", new ArrayList(sone.getPosts())); soneProperties.put("replies", new HashSet(sone.getReplies())); soneProperties.put("likedPostIds", new HashSet(sone.getLikedPostIds())); - soneProperties.put("likeReplyIds", new HashSet(sone.getLikedReplyIds())); + soneProperties.put("likedReplyIds", new HashSet(sone.getLikedReplyIds())); } // @@ -265,6 +278,16 @@ public class SoneInserter extends AbstractService { return (FreenetURI) soneProperties.get("insertUri"); } + /** + * Sets the time of the Sone at the time of the insert. + * + * @param time + * The time of the Sone + */ + public void setTime(long time) { + soneProperties.put("time", time); + } + // // ACTIONS //