package net.pterodactylus.sone.data.impl;
- import com.google.inject.Inject;
+ import net.pterodactylus.sone.database.PostBuilder;
+ import net.pterodactylus.sone.database.PostBuilderFactory;
+ import net.pterodactylus.sone.database.SoneProvider;
- import net.pterodactylus.sone.core.SoneProvider;
- import net.pterodactylus.sone.data.PostBuilder;
- import net.pterodactylus.sone.data.PostBuilderFactory;
++import com.google.inject.Inject;
+
/**
* {@link PostBuilderFactory} implementation that creates
* {@link PostBuilderImpl}s.
package net.pterodactylus.sone.data.impl;
- import net.pterodactylus.sone.core.PostProvider;
- import net.pterodactylus.sone.core.SoneProvider;
import net.pterodactylus.sone.data.Post;
import net.pterodactylus.sone.data.PostReply;
+ import net.pterodactylus.sone.database.PostProvider;
+ import net.pterodactylus.sone.database.SoneProvider;
+import com.google.common.base.Optional;
+
/**
* Simple {@link PostReply} implementation.
*
--- /dev/null
- public Post getPost(String postId);
+ /*
+ * Sone - PostProvider.java - Copyright © 2011–2013 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ package net.pterodactylus.sone.database;
+
+ import java.util.Collection;
+
+ import net.pterodactylus.sone.data.Post;
+
++import com.google.common.base.Optional;
++
+ /**
+ * Interface for objects that can provide {@link Post}s by their ID.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+ public interface PostProvider {
+
+ /**
+ * Returns the post with the given ID.
+ *
+ * @param postId
+ * The ID of the post to return
+ * @return The post with the given ID, or {@code null}
+ */
++ public Optional<Post> getPost(String postId);
+
+ /**
+ * Returns all posts that have the given Sone as recipient.
+ *
+ * @see Post#getRecipient()
+ * @param recipientId
+ * The ID of the recipient of the posts
+ * @return All posts that have the given Sone as recipient
+ */
+ public Collection<Post> getDirectedPosts(String recipientId);
+
+ }
--- /dev/null
- public PostReply getPostReply(String id);
+ /*
+ * Sone - PostReplyProvider.java - Copyright © 2013 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
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ package net.pterodactylus.sone.database;
+
+ import java.util.List;
+
+ import net.pterodactylus.sone.data.Post;
+ import net.pterodactylus.sone.data.PostReply;
+
++import com.google.common.base.Optional;
++
+ /**
+ * Interface for objects that can provide {@link PostReply}s.
+ *
+ * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
+ */
+ public interface PostReplyProvider {
+
+ /**
+ * Returns the reply with the given ID.
+ *
+ * @param id
+ * The ID of the reply to get
+ * @return The reply, or {@code null} if there is no such reply
+ */
++ public Optional<PostReply> getPostReply(String id);
+
+ /**
+ * Returns all replies for the given post, order ascending by time.
+ *
+ * @param post
+ * The post to get all replies for
+ * @return All replies for the given post
+ */
+ public List<PostReply> getReplies(Post post);
+
+ }
import java.util.regex.Matcher;
import java.util.regex.Pattern;
- import com.google.common.base.Optional;
-
- import net.pterodactylus.sone.core.PostProvider;
- import net.pterodactylus.sone.core.SoneProvider;
import net.pterodactylus.sone.data.Post;
import net.pterodactylus.sone.data.Sone;
+ import net.pterodactylus.sone.database.PostProvider;
+ import net.pterodactylus.sone.database.SoneProvider;
import net.pterodactylus.util.io.Closer;
import net.pterodactylus.util.logging.Logging;
++
++import com.google.common.base.Optional;
++
import freenet.keys.FreenetURI;
/**
for (StringTokenizer idTokenizer = new StringTokenizer(ids); idTokenizer.hasMoreTokens();) {
String id = idTokenizer.nextToken();
if (type.equals("post")) {
- Post post = webInterface.getCore().getPost(id);
- if (post == null) {
+ Optional<Post> post = webInterface.getCore().getPost(id);
+ if (!post.isPresent()) {
continue;
}
- webInterface.getCore().markPostKnown(post);
+ webInterface.getCore().markPostKnown(post.get());
} else if (type.equals("reply")) {
- PostReply reply = webInterface.getCore().getPostReply(id);
- if (reply == null) {
+ Optional<PostReply> reply = webInterface.getCore().getPostReply(id);
+ if (!reply.isPresent()) {
continue;
}
- webInterface.getCore().markReplyKnown(reply);
+ webInterface.getCore().markReplyKnown(reply.get());
} else if (type.equals("sone")) {
- Sone sone = webInterface.getCore().getSone(id, false);
+ Sone sone = webInterface.getCore().getSone(id);
if (sone == null) {
continue;
}
Core core = webInterface.getCore();
for (String id : ids) {
if (type.equals("post")) {
- Post post = core.getPost(id);
- if (post == null) {
+ Optional<Post> post = core.getPost(id);
+ if (!post.isPresent()) {
continue;
}
- core.markPostKnown(post);
+ core.markPostKnown(post.get());
} else if (type.equals("reply")) {
- PostReply reply = core.getPostReply(id);
- if (reply == null) {
+ Optional<PostReply> reply = core.getPostReply(id);
+ if (!reply.isPresent()) {
continue;
}
- core.markReplyKnown(reply);
+ core.markReplyKnown(reply.get());
} else if (type.equals("sone")) {
- Sone sone = core.getSone(id, false);
+ Sone sone = core.getSone(id);
if (sone == null) {
continue;
}