Integrate basic album storage and retrieval in memory database.
[Sone.git] / src / main / java / net / pterodactylus / sone / database / memory / MemoryDatabase.java
index 3f30d11..bc96715 100644 (file)
@@ -17,7 +17,8 @@
 
 package net.pterodactylus.sone.database.memory;
 
-import static com.google.common.base.Preconditions.*;
+import static com.google.common.base.Optional.fromNullable;
+import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -33,6 +34,7 @@ import java.util.TreeSet;
 import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
+import net.pterodactylus.sone.data.Album;
 import net.pterodactylus.sone.data.Post;
 import net.pterodactylus.sone.data.PostReply;
 import net.pterodactylus.sone.data.Reply;
@@ -98,6 +100,8 @@ public class MemoryDatabase extends AbstractService implements Database {
        /** Whether post replies are known. */
        private final Set<String> knownPostReplies = new HashSet<String>();
 
+       private final Map<String, Album> allAlbums = new HashMap<String, Album>();
+
        /**
         * Creates a new memory database.
         *
@@ -160,7 +164,7 @@ public class MemoryDatabase extends AbstractService implements Database {
        public Optional<Post> getPost(String postId) {
                lock.readLock().lock();
                try {
-                       return Optional.fromNullable(allPosts.get(postId));
+                       return fromNullable(allPosts.get(postId));
                } finally {
                        lock.readLock().unlock();
                }
@@ -294,7 +298,7 @@ public class MemoryDatabase extends AbstractService implements Database {
        public Optional<PostReply> getPostReply(String id) {
                lock.readLock().lock();
                try {
-                       return Optional.fromNullable(allPostReplies.get(id));
+                       return fromNullable(allPostReplies.get(id));
                } finally {
                        lock.readLock().unlock();
                }
@@ -412,6 +416,44 @@ public class MemoryDatabase extends AbstractService implements Database {
        }
 
        //
+       // ALBUMPROVDER METHODS
+       //
+
+       @Override
+       public Optional<Album> getAlbum(String albumId) {
+               lock.readLock().lock();
+               try {
+                       return fromNullable(allAlbums.get(albumId));
+               } finally {
+                       lock.readLock().unlock();
+               }
+       }
+
+       //
+       // ALBUMSTORE METHODS
+       //
+
+       @Override
+       public void storeAlbum(Album album) {
+               lock.writeLock().lock();
+               try {
+                       allAlbums.put(album.getId(), album);
+               } finally {
+                       lock.writeLock().unlock();
+               }
+       }
+
+       @Override
+       public void removeAlbum(Album album) {
+               lock.writeLock().lock();
+               try {
+                       allAlbums.remove(album.getId());
+               } finally {
+                       lock.writeLock().unlock();
+               }
+       }
+
+       //
        // PACKAGE-PRIVATE METHODS
        //