X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=c47d83fe633c9ee570ea127cb0966d7dd7a65b25;hb=d412e05eaa6268d648469536ac8a77a7184959fa;hp=cb7b4f3aad236355ae51da93507e4aeac83fff69;hpb=78da2db8d883349c8509a4f4794b844e2e6c6b31;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 cb7b4f3..c47d83f 100644 --- a/src/main/java/net/pterodactylus/sone/data/Album.java +++ b/src/main/java/net/pterodactylus/sone/data/Album.java @@ -69,6 +69,15 @@ public class Album implements Fingerprintable { } }; + /** Function that transforms an album into the images it contains. */ + public static final Function> IMAGES = new Function>() { + + @Override + public List apply(Album album) { + return album.getImages(); + } + }; + /** * Filter that removes all albums that do not have any images in any album * below it. @@ -77,11 +86,19 @@ public class Album implements Fingerprintable { @Override public boolean apply(Album album) { + /* so, we flatten all albums below the given one and check whether at least one album… */ return FluentIterable.from(asList(album)).transformAndConcat(FLATTENER).anyMatch(new Predicate() { @Override public boolean apply(Album album) { - return !album.getImages().isEmpty(); + /* …contains any inserted images. */ + return !album.getImages().isEmpty() && FluentIterable.from(album.getImages()).allMatch(new Predicate() { + + @Override + public boolean apply(Image input) { + return input.isInserted(); + } + }); } }); } @@ -186,7 +203,6 @@ public class Album implements Fingerprintable { public void addAlbum(Album album) { checkNotNull(album, "album must not be null"); checkArgument(album.getSone().equals(sone), "album must belong to the same Sone as this album"); - checkState((this.parent == null) || (this.parent.equals(album.parent)), "album must not already be set to some other Sone"); album.setParent(this); if (!albums.contains(album)) { albums.add(album);