X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FSoneImpl.java;h=eccce4b0193a8b2cc7ce0312fd2e3aaf1aabeb64;hb=f333f58180a7f112394cd768d86c95a3c9edf794;hp=b8953044e402a22900acf4dfacd8d1ab548305e9;hpb=0180e9f4ebbafc2846dec7727faf571e221a0b92;p=Sone.git 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 b895304..eccce4b 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java @@ -33,6 +33,7 @@ import java.util.logging.Logger; import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.Client; +import net.pterodactylus.sone.data.LocalSone; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.PostReply; import net.pterodactylus.sone.data.Profile; @@ -40,6 +41,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; @@ -55,11 +57,14 @@ import com.google.common.hash.Hashing; * * @author David ‘Bombe’ Roden */ -public class SoneImpl implements Sone { +public class SoneImpl implements LocalSone { /** 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; @@ -73,7 +78,7 @@ public class SoneImpl implements Sone { private volatile long latestEdition; /** The time of the last inserted update. */ - private volatile long time; + private final long time; /** The status of this Sone. */ private volatile SoneStatus status = SoneStatus.unknown; @@ -87,9 +92,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(); @@ -111,15 +113,18 @@ 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, long time) { + this.database = database; this.id = identity.getId(); this.identity = identity; this.local = local; + this.time = time; } // @@ -235,18 +240,6 @@ public class SoneImpl implements Sone { } /** - * Sets the time of the last inserted update of this Sone. - * - * @param time - * The time of the update (in milliseconds since Jan 1, 1970 UTC) - * @return This Sone (for method chaining) - */ - public Sone setTime(long time) { - this.time = time; - return this; - } - - /** * Returns the status of this Sone. * * @return The status of this Sone @@ -339,8 +332,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); } /** @@ -352,33 +345,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); } /** @@ -711,7 +678,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() + ")]"; } }