X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2FPostDatabase.java;h=7bfa33a91fc9eafdd496f4dcd636f00c9c9d4c5f;hb=2bc058176f660752eb68688d1a96d8e5b3ae0a65;hp=1f9a2a81ad647acd8f08bafcc97a799adafb61e7;hpb=cf10defb0a5f633941427d56238298f1539790ed;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/database/PostDatabase.java b/src/main/java/net/pterodactylus/sone/database/PostDatabase.java index 1f9a2a8..7bfa33a 100644 --- a/src/main/java/net/pterodactylus/sone/database/PostDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/PostDatabase.java @@ -17,42 +17,83 @@ package net.pterodactylus.sone.database; -import net.pterodactylus.util.config.Configuration; -import net.pterodactylus.util.config.ConfigurationException; +import java.util.Collection; + +import net.pterodactylus.sone.data.Post; +import net.pterodactylus.sone.data.Sone; + +import com.google.common.base.Optional; /** - * Combines a {@link PostProvider}, a {@link PostBuilderFactory}, and a - * {@link PostStore} into a complete post database. + * Database for handling {@link Post}s. * * @author David ‘Bombe’ Roden */ -public interface PostDatabase extends PostProvider, PostBuilderFactory, PostStore { +public interface PostDatabase { + + /** + * 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} + */ + Optional getPost(String postId); + + /** + * Returns all posts from the given Sone. + * + * @param soneId + * The ID of the Sone + * @return All posts from the given Sone + */ + Collection getPosts(String soneId); - /* - * these methods have to be here until the database knows how to save its - * own stuff. all the configuration-specific stuff will have to leave! + /** + * 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 + */ + Collection getDirectedPosts(String recipientId); + + /** + * Adds the given post to the store. + * + * @param post + * The post to store + */ + void storePost(Post post); + + /** + * Removes the given post. + * + * @param post + * The post to remove */ + void removePost(Post post); /** - * Loads the knows posts. + * Stores the given posts as all posts of a single {@link Sone}. This method + * will removed all other posts from the Sone! * - * @param configuration - * The configuration to load the known posts from - * @param prefix - * The prefix for the configuration keys + * @param sone + * The Sone to store the posts for + * @param posts + * The posts to store + * @throws IllegalArgumentException + * if posts do not all belong to the same Sone */ - public void loadKnownPosts(Configuration configuration, String prefix); + void storePosts(Sone sone, Collection posts) throws IllegalArgumentException; /** - * Saves the knows posts. + * Removes all posts of the given {@link Sone} * - * @param configuration - * The configuration to save the known posts to - * @param prefix - * The prefix for the configuration keys - * @throws ConfigurationException - * if a value can not be stored in the configuration + * @param sone + * The Sone to remove all posts for */ - public void saveKnownPosts(Configuration configuration, String prefix) throws ConfigurationException; + void removePosts(Sone sone); }