X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=5375d983dabae801be1e3053e39bbcb93bdcbda6;hb=fcd65a08073768114e9d1943aea2fd41bbc5fa61;hp=710387196b904f9e916859de887a2f30844b4018;hpb=e3a3dccdfcb0f7390f8bf30ec1af0f9d9fb69496;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/Album.java b/src/main/java/net/pterodactylus/sone/data/Album.java index 7103871..5375d98 100644 --- a/src/main/java/net/pterodactylus/sone/data/Album.java +++ b/src/main/java/net/pterodactylus/sone/data/Album.java @@ -32,6 +32,8 @@ import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicates; import com.google.common.collect.Collections2; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ImmutableList; import com.google.common.hash.Hasher; import com.google.common.hash.Hashing; @@ -51,6 +53,20 @@ public class Album implements Fingerprintable { } }; + /** Function that flattens the given album and all albums beneath it. */ + public static final Function> FLATTENER = new Function>() { + + @Override + public List apply(Album album) { + List albums = new ArrayList(); + albums.add(album); + for (Album subAlbum : album.getAlbums()) { + albums.addAll(FluentIterable.from(ImmutableList.of(subAlbum)).transformAndConcat(FLATTENER).toList()); + } + return albums; + } + }; + /** The ID of this album. */ private final String id;