X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FCore.java;h=b4a94e4cbe4c13e833653018ec44a75009e2f158;hb=50999afc14ced32f8f15b7512a896bbac1e61562;hp=90fc3142ac0b86ef9e3567cf0d3b97d9ef0329e9;hpb=9359e98d853739ec57c24ef0ff2d69c8ce29847d;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 90fc314..b4a94e4 100644 --- a/src/main/java/net/pterodactylus/sone/core/Core.java +++ b/src/main/java/net/pterodactylus/sone/core/Core.java @@ -99,6 +99,7 @@ import net.pterodactylus.util.thread.NamedThreadFactory; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Optional; +import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; @@ -435,8 +436,17 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, * {@inheritDoc} */ @Override - public Optional getPost(String postId) { - return database.getPost(postId); + public Optional getPost(final String postId) { + Optional post = database.getPost(postId); + if (post.isPresent() || !isCompatibilityMode(CompatibilityMode.oldElementIds)) { + return post; + } + return FluentIterable.from(getSones()).transformAndConcat(Sone.toAllPosts).filter(new Predicate() { + @Override + public boolean apply(Post input) { + return (input != null) && input.getInternalId().equals(postId); + } + }).first(); } /** @@ -1502,7 +1512,7 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, int replyCounter = 0; for (PostReply reply : sone.getReplies()) { String replyPrefix = sonePrefix + "/Replies/" + replyCounter++; - configuration.getStringValue(replyPrefix + "/ID").setValue(reply.getId()); + configuration.getStringValue(replyPrefix + "/ID").setValue(reply.getInternalId()); configuration.getStringValue(replyPrefix + "/Post/ID").setValue(reply.getPostId()); configuration.getLongValue(replyPrefix + "/Time").setValue(reply.getTime()); configuration.getStringValue(replyPrefix + "/Text").setValue(reply.getText()); @@ -1611,6 +1621,9 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, configuration.getStringValue("SoneFollowingTimes/" + soneCounter + "/Sone").setValue(null); } + /* save compatibility modes. */ + configuration.getBooleanValue("CompatibilityModes/OldElementIds").setValue(compatibilityModes.contains(CompatibilityMode.oldElementIds)); + /* save known posts. */ database.save(); @@ -1659,6 +1672,11 @@ public class Core extends AbstractService implements SoneProvider, PostProvider, } ++soneCounter; } + + /* load compatibility modes. */ + if (configuration.getBooleanValue("CompatibilityModes/OldElementIds").getValue(false)) { + setCompatibilityMode(CompatibilityMode.oldElementIds); + } } /**