X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FSoneImpl.java;h=f7ebfb10f4899383416727041cb779047f29b191;hp=32cefb16398b04b3bcb16ddf5f287eedd488df51;hb=3a7092e48f27cba6286946442783f539ad73a911;hpb=1bc68398c8912a992d87087b79ad9bbea8964c76 diff --git a/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java b/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java index 32cefb1..f7ebfb1 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java @@ -32,7 +32,6 @@ import java.util.logging.Level; import java.util.logging.Logger; import net.pterodactylus.sone.data.Album; -import net.pterodactylus.sone.data.AlbumImpl; import net.pterodactylus.sone.data.Client; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.PostReply; @@ -41,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; @@ -59,7 +59,10 @@ import com.google.common.hash.Hashing; public class SoneImpl implements Sone { /** The logger. */ - private static final Logger logger = getLogger("Sone.Data"); + private static final Logger logger = getLogger(SoneImpl.class.getName()); + + /** The database. */ + private final Database database; /** The ID of this Sone. */ private final String id; @@ -88,9 +91,6 @@ public class SoneImpl implements Sone { /** Whether this Sone is known. */ private volatile boolean known; - /** All friend Sones. */ - private final Set friendSones = new CopyOnWriteArraySet(); - /** All posts. */ private final Set posts = new CopyOnWriteArraySet(); @@ -112,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,8 +342,8 @@ public class SoneImpl implements Sone { * * @return The friend Sones of this Sone */ - public List getFriends() { - return new ArrayList(friendSones); + public Collection getFriends() { + return database.getFriends(this); } /** @@ -353,33 +355,7 @@ public class SoneImpl implements Sone { * false} otherwise */ public boolean hasFriend(String friendSoneId) { - return friendSones.contains(friendSoneId); - } - - /** - * Adds the given Sone as a friend Sone. - * - * @param friendSone - * The friend Sone to add - * @return This Sone (for method chaining) - */ - public Sone addFriend(String friendSone) { - if (!friendSone.equals(id)) { - friendSones.add(friendSone); - } - return this; - } - - /** - * Removes the given Sone as a friend Sone. - * - * @param friendSoneId - * The ID of the friend Sone to remove - * @return This Sone (for method chaining) - */ - public Sone removeFriend(String friendSoneId) { - friendSones.remove(friendSoneId); - return this; + return database.isFriend(this, friendSoneId); } /** @@ -712,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() + ")]"; } }