Use unique IDs for images
[Sone.git] / src / main / java / net / pterodactylus / sone / data / impl / SoneImpl.java
index f7ebfb1..97fe8eb 100644 (file)
@@ -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;
@@ -44,6 +46,9 @@ 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;
@@ -584,6 +589,16 @@ public class SoneImpl implements Sone {
                return rootAlbum;
        }
 
+       @Override
+       public Optional<Image> getImageByInternalId(final String internalId) {
+               return FluentIterable.from(toAllImages.apply(this)).filter(new Predicate<Image>() {
+                       @Override
+                       public boolean apply(@Nullable Image input) {
+                               return (input != null) && input.getInternalId().equals(internalId);
+                       }
+               }).first();
+       }
+
        /**
         * Returns Sone-specific options.
         *