X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FSoneImpl.java;h=97fe8eb80ca91d29db026d7081d1d2b8249eefd7;hb=cc18e5878bc71081da5137eb777d91821c3f4cce;hp=4c9bcaea3446d04b16098ef96f004f8a50af28c2;hpb=022590cd1b8be63e04847b4c76985f3d19fe489c;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 4c9bcae..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,7 +360,7 @@ public class SoneImpl implements Sone { * false} otherwise */ public boolean hasFriend(String friendSoneId) { - return friendSones.contains(friendSoneId); + return database.isFriend(this, friendSoneId); } /** @@ -581,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. * @@ -685,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() + ")]"; } }