Add “LikePost” FCP command.
[Sone.git] / src / main / java / net / pterodactylus / sone / fcp / AbstractSoneCommand.java
index 4f53321..f3e2923 100644 (file)
@@ -139,11 +139,11 @@ public abstract class AbstractSoneCommand extends AbstractCommand {
                int soneIndex = 0;
                soneBuilder.put(prefix + "Count", sones.size());
                for (Sone sone : sones) {
-                       String sonePrefix = prefix + soneIndex++;
-                       soneBuilder.put(sonePrefix + ".ID", sone.getId());
-                       soneBuilder.put(sonePrefix + ".Name", sone.getName());
-                       soneBuilder.put(sonePrefix + ".NiceName", SoneAccessor.getNiceName(sone));
-                       soneBuilder.put(sonePrefix + ".Time", sone.getTime());
+                       String sonePrefix = prefix + soneIndex++ + ".";
+                       soneBuilder.put(sonePrefix + "ID", sone.getId());
+                       soneBuilder.put(sonePrefix + "Name", sone.getName());
+                       soneBuilder.put(sonePrefix + "NiceName", SoneAccessor.getNiceName(sone));
+                       soneBuilder.put(sonePrefix + "Time", sone.getTime());
                }
 
                return soneBuilder.get();
@@ -172,6 +172,7 @@ public abstract class AbstractSoneCommand extends AbstractCommand {
                }
                postBuilder.put(prefix + "Time", post.getTime());
                postBuilder.put(prefix + "Text", post.getText());
+               postBuilder.put(encodeLikes(core.getLikes(post), prefix + "Likes."));
 
                if (includeReplies) {
                        List<Reply> replies = core.getReplies(post);
@@ -194,7 +195,7 @@ public abstract class AbstractSoneCommand extends AbstractCommand {
         *            include the replies
         * @return The simple field set containing the posts
         */
-       public SimpleFieldSet encodePosts(Collection<? extends Post> posts, String prefix, boolean includeReplies) {
+       protected SimpleFieldSet encodePosts(Collection<? extends Post> posts, String prefix, boolean includeReplies) {
                SimpleFieldSetBuilder postBuilder = new SimpleFieldSetBuilder();
 
                int postIndex = 0;
@@ -220,20 +221,44 @@ public abstract class AbstractSoneCommand extends AbstractCommand {
         *            {@code null})
         * @return The simple field set containing the replies
         */
-       public SimpleFieldSet encodeReplies(Collection<? extends Reply> replies, String prefix) {
+       protected SimpleFieldSet encodeReplies(Collection<? extends Reply> replies, String prefix) {
                SimpleFieldSetBuilder replyBuilder = new SimpleFieldSetBuilder();
 
                int replyIndex = 0;
                replyBuilder.put(prefix + "Replies.Count", replies.size());
                for (Reply reply : replies) {
-                       String replyPrefix = prefix + "Replies." + replyIndex++;
-                       replyBuilder.put(replyPrefix + ".ID", reply.getId());
-                       replyBuilder.put(replyPrefix + ".Sone", reply.getSone().getId());
-                       replyBuilder.put(replyPrefix + ".Time", reply.getTime());
-                       replyBuilder.put(replyPrefix + ".Text", reply.getText());
+                       String replyPrefix = prefix + "Replies." + replyIndex++ + ".";
+                       replyBuilder.put(replyPrefix + "ID", reply.getId());
+                       replyBuilder.put(replyPrefix + "Sone", reply.getSone().getId());
+                       replyBuilder.put(replyPrefix + "Time", reply.getTime());
+                       replyBuilder.put(replyPrefix + "Text", reply.getText());
                }
 
                return replyBuilder.get();
        }
 
+       /**
+        * Creates a simple field set from the given collection of Sones that like
+        * an element.
+        *
+        * @param likes
+        *            The liking Sones
+        * @param prefix
+        *            The prefix for the field names (may be empty but not
+        *            {@code null})
+        * @return The simple field set containing the likes
+        */
+       protected SimpleFieldSet encodeLikes(Collection<? extends Sone> likes, String prefix) {
+               SimpleFieldSetBuilder likesBuilder = new SimpleFieldSetBuilder();
+
+               int likeIndex = 0;
+               likesBuilder.put(prefix + "Count", likes.size());
+               for (Sone sone : likes) {
+                       String sonePrefix = prefix + likeIndex++ + ".";
+                       likesBuilder.put(sonePrefix + "ID", sone.getId());
+               }
+
+               return likesBuilder.get();
+       }
+
 }