X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=c611eea01d4b7c24650ed65983ab5d532456a8e6;hp=3c5ef55834087a6ebc222132f992212ddc11aacb;hb=d0170947a5968260c73b9b985466ede0f7c12336;hpb=b6de5505ae5d2f835a235de6e9f23cb83affe4b7 diff --git a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java index 3c5ef55..c611eea 100644 --- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java +++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java @@ -116,8 +116,7 @@ public class MemoryDatabase extends AbstractService implements Database { private final Map allImages = new HashMap(); private final Multimap soneImages = HashMultimap.create(); - private final MemoryBookmarkDatabase memoryBookmarkDatabase = - new MemoryBookmarkDatabase(this); + private final MemoryBookmarkDatabase memoryBookmarkDatabase; /** * Creates a new memory database. @@ -132,6 +131,8 @@ public class MemoryDatabase extends AbstractService implements Database { this.soneProvider = soneProvider; this.configuration = configuration; this.configurationLoader = new ConfigurationLoader(configuration); + memoryBookmarkDatabase = + new MemoryBookmarkDatabase(this, configurationLoader); } // @@ -157,6 +158,7 @@ public class MemoryDatabase extends AbstractService implements Database { /** {@inheritDocs} */ @Override protected void doStart() { + memoryBookmarkDatabase.start(); loadKnownPosts(); loadKnownPostReplies(); notifyStarted(); @@ -166,6 +168,7 @@ public class MemoryDatabase extends AbstractService implements Database { @Override protected void doStop() { try { + memoryBookmarkDatabase.stop(); save(); notifyStopped(); } catch (DatabaseException de1) { @@ -354,51 +357,6 @@ public class MemoryDatabase extends AbstractService implements Database { } } - /** {@inheritDocs} */ - @Override - public void storePosts(Sone sone, Collection posts) throws IllegalArgumentException { - checkNotNull(sone, "sone must not be null"); - /* verify that all posts are from the same Sone. */ - for (Post post : posts) { - if (!sone.equals(post.getSone())) { - throw new IllegalArgumentException(String.format("Post from different Sone found: %s", post)); - } - } - - lock.writeLock().lock(); - try { - /* remove all posts by the Sone. */ - Collection oldPosts = getPostsFrom(sone.getId()); - for (Post post : oldPosts) { - allPosts.remove(post.getId()); - } - - /* add new posts. */ - getPostsFrom(sone.getId()).addAll(posts); - for (Post post : posts) { - allPosts.put(post.getId(), post); - } - } finally { - lock.writeLock().unlock(); - } - } - - /** {@inheritDocs} */ - @Override - public void removePosts(Sone sone) { - checkNotNull(sone, "sone must not be null"); - lock.writeLock().lock(); - try { - /* remove all posts by the Sone. */ - getPostsFrom(sone.getId()).clear(); - for (Post post : sone.getPosts()) { - allPosts.remove(post.getId()); - } - } finally { - lock.writeLock().unlock(); - } - } - // // POSTREPLYPROVIDER METHODS // @@ -458,32 +416,6 @@ public class MemoryDatabase extends AbstractService implements Database { /** {@inheritDocs} */ @Override - public void storePostReplies(Sone sone, Collection postReplies) { - checkNotNull(sone, "sone must not be null"); - /* verify that all posts are from the same Sone. */ - for (PostReply postReply : postReplies) { - if (!sone.equals(postReply.getSone())) { - throw new IllegalArgumentException(String.format("PostReply from different Sone found: %s", postReply)); - } - } - - lock.writeLock().lock(); - try { - /* remove all post replies of the Sone. */ - for (PostReply postReply : getRepliesFrom(sone.getId())) { - removePostReply(postReply); - } - for (PostReply postReply : postReplies) { - allPostReplies.put(postReply.getId(), postReply); - sonePostReplies.put(postReply.getSone().getId(), postReply); - } - } finally { - lock.writeLock().unlock(); - } - } - - /** {@inheritDocs} */ - @Override public void removePostReply(PostReply postReply) { lock.writeLock().lock(); try { @@ -493,21 +425,6 @@ public class MemoryDatabase extends AbstractService implements Database { } } - /** {@inheritDocs} */ - @Override - public void removePostReplies(Sone sone) { - checkNotNull(sone, "sone must not be null"); - - lock.writeLock().lock(); - try { - for (PostReply postReply : sone.getReplies()) { - removePostReply(postReply); - } - } finally { - lock.writeLock().unlock(); - } - } - // // ALBUMPROVDER METHODS // @@ -607,11 +524,6 @@ public class MemoryDatabase extends AbstractService implements Database { } @Override - public void bookmarkPost(String postId) { - memoryBookmarkDatabase.bookmarkPost(postId); - } - - @Override public void bookmarkPost(Post post) { memoryBookmarkDatabase.bookmarkPost(post); } @@ -764,22 +676,6 @@ public class MemoryDatabase extends AbstractService implements Database { } } - /** - * Returns all replies by the given Sone. - * - * @param id - * The ID of the Sone - * @return The post replies of the Sone, sorted by time (newest first) - */ - private Collection getRepliesFrom(String id) { - lock.readLock().lock(); - try { - return unmodifiableCollection(sonePostReplies.get(id)); - } finally { - lock.readLock().unlock(); - } - } - /** Loads the known post replies. */ private void loadKnownPostReplies() { Set knownPostReplies = configurationLoader.loadKnownPostReplies();