X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FConfigurationSoneParser.java;h=4f80e08e4e22176f6e9fdd6f849a67ea9b8f19c7;hb=68d5537f9d502ce6dc7079ae55b52b9284a01899;hp=8f09b3b5ee5d5c329a56ebba8b79c8d8bdcbc0d7;hpb=11f3457415c9122b5d11840d24186971af28add9;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/ConfigurationSoneParser.java b/src/main/java/net/pterodactylus/sone/core/ConfigurationSoneParser.java index 8f09b3b..4f80e08 100644 --- a/src/main/java/net/pterodactylus/sone/core/ConfigurationSoneParser.java +++ b/src/main/java/net/pterodactylus/sone/core/ConfigurationSoneParser.java @@ -1,16 +1,18 @@ package net.pterodactylus.sone.core; -import java.util.Collection; import java.util.HashSet; import java.util.Set; import javax.annotation.Nullable; import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.PostReply; import net.pterodactylus.sone.data.Profile; import net.pterodactylus.sone.data.Sone; import net.pterodactylus.sone.database.PostBuilder; import net.pterodactylus.sone.database.PostBuilderFactory; +import net.pterodactylus.sone.database.PostReplyBuilder; +import net.pterodactylus.sone.database.PostReplyBuilderFactory; import net.pterodactylus.util.config.Configuration; /** @@ -69,7 +71,7 @@ public class ConfigurationSoneParser { .getValue(defaultValue); } - public Collection parsePosts(PostBuilderFactory postBuilderFactory) + public Set parsePosts(PostBuilderFactory postBuilderFactory) throws InvalidPostFound { Set posts = new HashSet(); while (true) { @@ -106,6 +108,49 @@ public class ConfigurationSoneParser { return (postRecipientId != null) && (postRecipientId.length() == 43); } + public Set parsePostReplies( + PostReplyBuilderFactory postReplyBuilderFactory) { + Set replies = new HashSet(); + while (true) { + String replyPrefix = "/Replies/" + replies.size(); + String replyId = getString(replyPrefix + "/ID", null); + if (replyId == null) { + break; + } + String postId = getString(replyPrefix + "/Post/ID", null); + long replyTime = getLong(replyPrefix + "/Time", 0L); + String replyText = getString(replyPrefix + "/Text", null); + if ((postId == null) || (replyTime == 0) || (replyText == null)) { + throw new InvalidPostReplyFound(); + } + PostReplyBuilder postReplyBuilder = postReplyBuilderFactory + .newPostReplyBuilder() + .withId(replyId) + .from(sone.getId()) + .to(postId) + .withTime(replyTime) + .withText(replyText); + replies.add(postReplyBuilder.build()); + } + return replies; + } + + public Set parseLikedPostIds() { + Set likedPostIds = new HashSet(); + while (true) { + String likedPostId = + getString("/Likes/Post/" + likedPostIds.size() + "/ID", + null); + if (likedPostId == null) { + break; + } + likedPostIds.add(likedPostId); + } + return likedPostIds; + } + public static class InvalidPostFound extends RuntimeException { } + public static class InvalidPostReplyFound extends RuntimeException { } + }