X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffcp%2FAbstractSoneCommand.java;h=ba3bc88fc5bdcc3df830ab82eca060fe96e5e59f;hb=ef7bc5f24ecedb78122d0a314bb20b7eacea6e43;hp=7cc4b0fd24f6cc1aa4e8f3b759b1026e71601448;hpb=3de13c41f62532117c638c09edbd328ccf6764c5;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java b/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java index 7cc4b0f..ba3bc88 100644 --- a/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java +++ b/src/main/java/net/pterodactylus/sone/fcp/AbstractSoneCommand.java @@ -28,6 +28,7 @@ import net.pterodactylus.sone.freenet.fcp.AbstractCommand; import net.pterodactylus.sone.freenet.fcp.Command; import net.pterodactylus.sone.freenet.fcp.FcpException; import net.pterodactylus.sone.template.SoneAccessor; +import net.pterodactylus.util.filter.Filters; import freenet.node.FSParseException; import freenet.support.SimpleFieldSet; @@ -96,6 +97,32 @@ public abstract class AbstractSoneCommand extends AbstractCommand { } /** + * Returns a post whose ID is a parameter in the given simple field set. + * + * @param simpleFieldSet + * The simple field set containing the ID of the post + * @param parameterName + * The name under which the post ID is stored in the simple field + * set + * @return The post + * @throws FcpException + * if there is no post ID stored under the given parameter name, + * or if the post ID is invalid + */ + protected Post getPost(SimpleFieldSet simpleFieldSet, String parameterName) throws FcpException { + try { + String postId = simpleFieldSet.getString(parameterName); + Post post = core.getPost(postId, false); + if (post == null) { + throw new FcpException("Could not load post from “" + postId + "”."); + } + return post; + } catch (FSParseException fspe1) { + throw new FcpException("Could not post ID from “" + parameterName + "”.", fspe1); + } + } + + /** * Creates a simple field set from the given collection of Sones. * * @param sones @@ -123,9 +150,12 @@ public abstract class AbstractSoneCommand extends AbstractCommand { * * @param posts * The posts to encode + * @param includeReplies + * {@code true} to include the replies, {@code false} to not + * include the replies * @return The simple field set containing the posts */ - public SimpleFieldSet encodePosts(Collection posts) { + public SimpleFieldSet encodePosts(Collection posts, boolean includeReplies) { SimpleFieldSetBuilder postBuilder = new SimpleFieldSetBuilder(); int postIndex = 0; @@ -139,6 +169,9 @@ public abstract class AbstractSoneCommand extends AbstractCommand { } postBuilder.put(postPrefix + ".Time", post.getTime()); postBuilder.put(postPrefix + ".Text", post.getText()); + if (includeReplies) { + postBuilder.put(encodeReplies(Filters.filteredList(core.getReplies(post), Reply.FUTURE_REPLIES_FILTER), postPrefix + ".")); + } } return postBuilder.get();