Move parsing of protocol version into its own method.
[Sone.git] / src / main / java / net / pterodactylus / sone / database / memory / MemoryDatabase.java
index 00443e4..d7cef49 100644 (file)
@@ -46,10 +46,9 @@ import net.pterodactylus.sone.data.Reply;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.database.Database;
 import net.pterodactylus.sone.database.DatabaseException;
-import net.pterodactylus.sone.database.PostBuilder;
 import net.pterodactylus.sone.database.PostDatabase;
-import net.pterodactylus.sone.database.PostReplyBuilder;
 import net.pterodactylus.sone.database.SoneBuilder;
+import net.pterodactylus.sone.freenet.wot.Identity;
 import net.pterodactylus.util.config.Configuration;
 import net.pterodactylus.util.config.ConfigurationException;
 
@@ -57,6 +56,7 @@ import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Maps;
 import com.google.common.collect.SortedSetMultimap;
 import com.google.common.collect.TreeMultimap;
 import com.google.common.util.concurrent.AbstractService;
@@ -75,6 +75,7 @@ public class MemoryDatabase extends AbstractService implements Database {
        /** The configuration. */
        private final Configuration configuration;
 
+       private final Map<String, Identity> identities = Maps.newHashMap();
        private final Map<String, Sone> sones = new HashMap<String, Sone>();
 
        /** All posts by their ID. */
@@ -128,12 +129,6 @@ public class MemoryDatabase extends AbstractService implements Database {
        // DATABASE METHODS
        //
 
-       /**
-        * Saves the database.
-        *
-        * @throws DatabaseException
-        *              if an error occurs while saving
-        */
        @Override
        public void save() throws DatabaseException {
                saveKnownPosts();
@@ -144,7 +139,6 @@ public class MemoryDatabase extends AbstractService implements Database {
        // SERVICE METHODS
        //
 
-       /** {@inheritDocs} */
        @Override
        protected void doStart() {
                loadKnownPosts();
@@ -152,7 +146,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                notifyStarted();
        }
 
-       /** {@inheritDocs} */
        @Override
        protected void doStop() {
                try {
@@ -164,6 +157,16 @@ public class MemoryDatabase extends AbstractService implements Database {
        }
 
        @Override
+       public Optional<Identity> getIdentity(String identityId) {
+               lock.readLock().lock();
+               try {
+                       return fromNullable(identities.get(identityId));
+               } finally {
+                       lock.readLock().unlock();
+               }
+       }
+
+       @Override
        public Optional<Sone> getSone(String soneId) {
                lock.readLock().lock();
                try {
@@ -212,7 +215,6 @@ public class MemoryDatabase extends AbstractService implements Database {
        // POSTPROVIDER METHODS
        //
 
-       /** {@inheritDocs} */
        @Override
        public Optional<Post> getPost(String postId) {
                lock.readLock().lock();
@@ -223,13 +225,11 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /** {@inheritDocs} */
        @Override
        public Collection<Post> getPosts(String soneId) {
                return new HashSet<Post>(getPostsFrom(soneId));
        }
 
-       /** {@inheritDocs} */
        @Override
        public Collection<Post> getDirectedPosts(String recipientId) {
                lock.readLock().lock();
@@ -245,7 +245,6 @@ public class MemoryDatabase extends AbstractService implements Database {
        // POSTSTORE METHODS
        //
 
-       /** {@inheritDocs} */
        @Override
        public void storePost(Post post) {
                checkNotNull(post, "post must not be null");
@@ -261,7 +260,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /** {@inheritDocs} */
        @Override
        public void removePost(Post post) {
                checkNotNull(post, "post must not be null");
@@ -278,7 +276,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /** {@inheritDocs} */
        @Override
        public void storePosts(Sone sone, Collection<Post> posts) throws IllegalArgumentException {
                checkNotNull(sone, "sone must not be null");
@@ -313,7 +310,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /** {@inheritDocs} */
        @Override
        public void removePosts(Sone sone) {
                checkNotNull(sone, "sone must not be null");
@@ -336,7 +332,6 @@ public class MemoryDatabase extends AbstractService implements Database {
        // POSTREPLYPROVIDER METHODS
        //
 
-       /** {@inheritDocs} */
        @Override
        public Optional<PostReply> getPostReply(String id) {
                lock.readLock().lock();
@@ -347,7 +342,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /** {@inheritDocs} */
        @Override
        public List<PostReply> getReplies(String postId) {
                lock.readLock().lock();
@@ -365,7 +359,33 @@ public class MemoryDatabase extends AbstractService implements Database {
        // POSTREPLYSTORE METHODS
        //
 
-       /** {@inheritDocs} */
+       /**
+        * Returns whether the given post reply is known.
+        *
+        * @param postReply
+        *              The post reply
+        * @return {@code true} if the given post reply is known, {@code false}
+        *         otherwise
+        */
+       public boolean isPostReplyKnown(PostReply postReply) {
+               lock.readLock().lock();
+               try {
+                       return knownPostReplies.contains(postReply.getId());
+               } finally {
+                       lock.readLock().unlock();
+               }
+       }
+
+       @Override
+       public void setPostReplyKnown(PostReply postReply) {
+               lock.writeLock().lock();
+               try {
+                       knownPostReplies.add(postReply.getId());
+               } finally {
+                       lock.writeLock().unlock();
+               }
+       }
+
        @Override
        public void storePostReply(PostReply postReply) {
                lock.writeLock().lock();
@@ -383,7 +403,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /** {@inheritDocs} */
        @Override
        public void storePostReplies(Sone sone, Collection<PostReply> postReplies) {
                checkNotNull(sone, "sone must not be null");
@@ -416,7 +435,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /** {@inheritDocs} */
        @Override
        public void removePostReply(PostReply postReply) {
                lock.writeLock().lock();
@@ -433,7 +451,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /** {@inheritDocs} */
        @Override
        public void removePostReplies(Sone sone) {
                checkNotNull(sone, "sone must not be null");
@@ -653,44 +670,6 @@ public class MemoryDatabase extends AbstractService implements Database {
                }
        }
 
-       /**
-        * Returns whether the given post reply is known.
-        *
-        * @param postReply
-        *              The post reply
-        * @return {@code true} if the given post reply is known, {@code false}
-        *         otherwise
-        */
-       boolean isPostReplyKnown(PostReply postReply) {
-               lock.readLock().lock();
-               try {
-                       return knownPostReplies.contains(postReply.getId());
-               } finally {
-                       lock.readLock().unlock();
-               }
-       }
-
-       /**
-        * Sets whether the given post reply is known.
-        *
-        * @param postReply
-        *              The post reply
-        * @param known
-        *              {@code true} if the post reply is known, {@code false} otherwise
-        */
-       void setPostReplyKnown(PostReply postReply, boolean known) {
-               lock.writeLock().lock();
-               try {
-                       if (known) {
-                               knownPostReplies.add(postReply.getId());
-                       } else {
-                               knownPostReplies.remove(postReply.getId());
-                       }
-               } finally {
-                       lock.writeLock().unlock();
-               }
-       }
-
        //
        // PRIVATE METHODS
        //