Remove @author tags
[Sone.git] / src / main / java / net / pterodactylus / sone / fcp / GetPostFeedCommand.java
index 2dc59a1..1e2ca7d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Sone - GetPostFeedCommand.java - Copyright © 2011 David Roden
+ * Sone - GetPostFeedCommand.java - Copyright © 2011–2016 David Roden
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 package net.pterodactylus.sone.fcp;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Set;
 
 import net.pterodactylus.sone.core.Core;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.freenet.fcp.FcpException;
-import net.pterodactylus.util.filter.Filters;
+
+import com.google.common.collect.Collections2;
+
 import freenet.support.SimpleFieldSet;
-import freenet.support.api.Bucket;
 
 /**
  * Implementation of an FCP interface for other clients or plugins to
  * communicate with Sone.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 public class GetPostFeedCommand extends AbstractSoneCommand {
 
@@ -53,30 +52,31 @@ public class GetPostFeedCommand extends AbstractSoneCommand {
         * {@inheritDoc}
         */
        @Override
-       public Reply execute(SimpleFieldSet parameters, Bucket data, AccessType accessType) throws FcpException {
-               Sone sone = getSone(parameters, "Sone");
+       public Response execute(SimpleFieldSet parameters) throws FcpException {
+               Sone sone = getSone(parameters, "Sone", true);
                int startPost = getInt(parameters, "StartPost", 0);
                int maxPosts = getInt(parameters, "MaxPosts", -1);
 
-               Set<Post> allPosts = new HashSet<Post>();
+               Collection<Post> allPosts = new HashSet<Post>();
                allPosts.addAll(sone.getPosts());
                for (String friendSoneId : sone.getFriends()) {
-                       if (!getCore().hasSone(friendSoneId)) {
+                       Sone friendSone = getCore().getSone(friendSoneId);
+                       if (friendSone == null) {
                                continue;
                        }
-                       allPosts.addAll(getCore().getSone(friendSoneId).getPosts());
+                       allPosts.addAll(friendSone.getPosts());
                }
-               allPosts.addAll(getCore().getDirectedPosts(sone));
-               allPosts = Filters.filteredSet(allPosts, Post.FUTURE_POSTS_FILTER);
+               allPosts.addAll(getCore().getDirectedPosts(sone.getId()));
+               allPosts = Collections2.filter(allPosts, Post.FUTURE_POSTS_FILTER);
 
                List<Post> sortedPosts = new ArrayList<Post>(allPosts);
-               Collections.sort(sortedPosts, Post.TIME_COMPARATOR);
+               Collections.sort(sortedPosts, Post.NEWEST_FIRST);
 
                if (sortedPosts.size() < startPost) {
-                       return new Reply(encodePosts(Collections.<Post> emptyList()));
+                       return new Response("PostFeed", encodePosts(Collections.<Post> emptyList(), "Posts.", false));
                }
 
-               return new Reply(encodePosts(sortedPosts.subList(startPost, (maxPosts == -1) ? sortedPosts.size() : Math.min(startPost + maxPosts, sortedPosts.size()))));
+               return new Response("PostFeed", encodePosts(sortedPosts.subList(startPost, (maxPosts == -1) ? sortedPosts.size() : Math.min(startPost + maxPosts, sortedPosts.size())), "Posts.", true));
        }
 
 }