Use database to return friends of a Sone.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 26 Nov 2014 05:35:21 +0000 (06:35 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Wed, 26 Nov 2014 05:35:21 +0000 (06:35 +0100)
src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java
src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java
src/main/java/net/pterodactylus/sone/database/memory/MemorySoneBuilder.java
src/test/java/net/pterodactylus/sone/core/SoneParserTest.java

index 4c9bcae..2fdd40c 100644 (file)
@@ -40,6 +40,7 @@ import net.pterodactylus.sone.data.Reply;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.data.SoneOptions;
 import net.pterodactylus.sone.data.SoneOptions.DefaultSoneOptions;
+import net.pterodactylus.sone.database.Database;
 import net.pterodactylus.sone.freenet.wot.Identity;
 import net.pterodactylus.sone.freenet.wot.OwnIdentity;
 
@@ -60,6 +61,9 @@ public class SoneImpl implements Sone {
        /** The logger. */
        private static final Logger logger = getLogger("Sone.Data");
 
+       /** The database. */
+       private final Database database;
+
        /** The ID of this Sone. */
        private final String id;
 
@@ -87,9 +91,6 @@ public class SoneImpl implements Sone {
        /** Whether this Sone is known. */
        private volatile boolean known;
 
-       /** All friend Sones. */
-       private final Set<String> friendSones = new CopyOnWriteArraySet<String>();
-
        /** All posts. */
        private final Set<Post> posts = new CopyOnWriteArraySet<Post>();
 
@@ -111,12 +112,14 @@ public class SoneImpl implements Sone {
        /**
         * Creates a new Sone.
         *
+        * @param database The database
         * @param identity
         *              The identity of the Sone
         * @param local
         *              {@code true} if the Sone is a local Sone, {@code false} otherwise
         */
-       public SoneImpl(Identity identity, boolean local) {
+       public SoneImpl(Database database, Identity identity, boolean local) {
+               this.database = database;
                this.id = identity.getId();
                this.identity = identity;
                this.local = local;
@@ -340,7 +343,7 @@ public class SoneImpl implements Sone {
         * @return The friend Sones of this Sone
         */
        public Collection<String> getFriends() {
-               return new ArrayList<String>(friendSones);
+               return database.getFriends(this);
        }
 
        /**
@@ -352,7 +355,7 @@ public class SoneImpl implements Sone {
         *         false} otherwise
         */
        public boolean hasFriend(String friendSoneId) {
-               return friendSones.contains(friendSoneId);
+               return database.isFriend(this, friendSoneId);
        }
 
        /**
@@ -685,7 +688,7 @@ public class SoneImpl implements Sone {
        /** {@inheritDoc} */
        @Override
        public String toString() {
-               return getClass().getName() + "[identity=" + identity + ",friends(" + friendSones.size() + "),posts(" + posts.size() + "),replies(" + replies.size() + "),albums(" + getRootAlbum().getAlbums().size() + ")]";
+               return getClass().getName() + "[identity=" + identity + ",posts(" + posts.size() + "),replies(" + replies.size() + "),albums(" + getRootAlbum().getAlbums().size() + ")]";
        }
 
 }
index 127b90c..b830ba5 100644 (file)
@@ -181,7 +181,7 @@ public class MemoryDatabase extends AbstractService implements Database {
 
        @Override
        public SoneBuilder newSoneBuilder() {
-               return new MemorySoneBuilder();
+               return new MemorySoneBuilder(this);
        }
 
        @Override
index c537bcb..49531a1 100644 (file)
@@ -3,6 +3,7 @@ package net.pterodactylus.sone.database.memory;
 import net.pterodactylus.sone.data.Sone;
 import net.pterodactylus.sone.data.impl.SoneImpl;
 import net.pterodactylus.sone.data.impl.AbstractSoneBuilder;
+import net.pterodactylus.sone.database.Database;
 
 /**
  * Memory-based {@link AbstractSoneBuilder} implementation.
@@ -11,10 +12,16 @@ import net.pterodactylus.sone.data.impl.AbstractSoneBuilder;
  */
 public class MemorySoneBuilder extends AbstractSoneBuilder {
 
+       private final Database database;
+
+       public MemorySoneBuilder(Database database) {
+               this.database = database;
+       }
+
        @Override
        public Sone build() throws IllegalStateException {
                validate();
-               return new SoneImpl(identity, local);
+               return new SoneImpl(database, identity, local);
        }
 
 }
index b6560f4..dc19195 100644 (file)
@@ -114,7 +114,7 @@ public class SoneParserTest {
                when(core.soneBuilder()).thenAnswer(new Answer<SoneBuilder>() {
                        @Override
                        public SoneBuilder answer(InvocationOnMock invocation) {
-                               return new MemorySoneBuilder();
+                               return new MemorySoneBuilder(null);
                        }
                });
        }