X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FSoneImpl.java;h=97fe8eb80ca91d29db026d7081d1d2b8249eefd7;hb=e4daf856661958be1f88f0d3861823df91c78b1e;hp=154bfc8d24300b91d57704d7bf9b90f3ac6057c9;hpb=3d78e0dc7fc96009e708b19e0c69d6e3112eac72;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 154bfc8..97fe8eb 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java @@ -30,9 +30,11 @@ import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; import java.util.logging.Level; import java.util.logging.Logger; +import javax.annotation.Nullable; import net.pterodactylus.sone.data.Album; import net.pterodactylus.sone.data.Client; +import net.pterodactylus.sone.data.Image; import net.pterodactylus.sone.data.Post; import net.pterodactylus.sone.data.PostReply; import net.pterodactylus.sone.data.Profile; @@ -40,9 +42,13 @@ 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; +import com.google.common.base.Optional; +import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; import freenet.keys.FreenetURI; import com.google.common.hash.Hasher; @@ -58,7 +64,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; @@ -87,9 +96,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,12 +117,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 +348,7 @@ public class SoneImpl implements Sone { * @return The friend Sones of this Sone */ public Collection getFriends() { - return new ArrayList(friendSones); + return database.getFriends(this); } /** @@ -352,33 +360,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); } /** @@ -607,6 +589,16 @@ public class SoneImpl implements Sone { return rootAlbum; } + @Override + public Optional getImageByInternalId(final String internalId) { + return FluentIterable.from(toAllImages.apply(this)).filter(new Predicate() { + @Override + public boolean apply(@Nullable Image input) { + return (input != null) && input.getInternalId().equals(internalId); + } + }).first(); + } + /** * Returns Sone-specific options. * @@ -711,7 +703,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() + ")]"; } }