X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=bf8f3ec41a1eed136880f16707181f4affbfc054;hp=698206d6f31be6a1f1a419a66fc9d70b37182611;hb=HEAD;hpb=1e9a08c2b73b16dc178437eb8c8025aaa083fcca diff --git a/src/main/java/net/pterodactylus/sone/data/Album.java b/src/main/java/net/pterodactylus/sone/data/Album.java index 698206d..bf8f3ec 100644 --- a/src/main/java/net/pterodactylus/sone/data/Album.java +++ b/src/main/java/net/pterodactylus/sone/data/Album.java @@ -1,5 +1,5 @@ /* - * Sone - Album.java - Copyright © 2011–2015 David Roden + * Sone - Album.java - Copyright © 2011–2020 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,90 +17,13 @@ package net.pterodactylus.sone.data; -import static java.util.Arrays.asList; -import static java.util.Collections.emptyList; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; import java.util.List; -import javax.annotation.Nonnull; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.ImmutableList; /** * Container for images that can also contain nested {@link Album}s. - * - * @author David ‘Bombe’ Roden */ public interface Album extends Identified, Fingerprintable { - /** Compares two {@link Album}s by {@link #getTitle()}. */ - Comparator TITLE_COMPARATOR = new Comparator() { - - @Override - public int compare(Album leftAlbum, Album rightAlbum) { - return leftAlbum.getTitle().compareToIgnoreCase(rightAlbum.getTitle()); - } - }; - - /** Function that flattens the given album and all albums beneath it. */ - Function> FLATTENER = new Function>() { - - @Override - @Nonnull - public List apply(Album album) { - if (album == null) { - return emptyList(); - } - List albums = new ArrayList(); - albums.add(album); - for (Album subAlbum : album.getAlbums()) { - albums.addAll(FluentIterable.from(ImmutableList.of(subAlbum)).transformAndConcat(FLATTENER).toList()); - } - return albums; - } - }; - - /** Function that transforms an album into the images it contains. */ - Function> IMAGES = new Function>() { - - @Override - @Nonnull - public List apply(Album album) { - return (album != null) ? album.getImages() : Collections.emptyList(); - } - }; - - /** - * Filter that removes all albums that do not have any images in any album - * below it. - */ - Predicate NOT_EMPTY = new Predicate() { - - @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) { - /* …contains any inserted images. */ - return !album.getImages().isEmpty() && FluentIterable.from(album.getImages()).allMatch(new Predicate() { - - @Override - public boolean apply(Image input) { - return input.isInserted(); - } - }); - } - }); - } - }; - /** * Returns the ID of this album. * @@ -206,14 +129,6 @@ public interface Album extends Identified, Fingerprintable { Image moveImageDown(Image image); /** - * Returns the album image of this album, or {@code null} if no album image has - * been set. - * - * @return The image to show when this album is listed - */ - Image getAlbumImage(); - - /** * Returns whether this album contains any other albums or images. * * @return {@code true} if this album is empty, {@code false} otherwise @@ -279,8 +194,6 @@ public interface Album extends Identified, Fingerprintable { * Allows modifying an album. Modifications are only performed once {@link * #update()} has succesfully returned a new album with the modifications * made. - * - * @author David ‘Bombe’ Roden */ interface Modifier { @@ -288,8 +201,6 @@ public interface Album extends Identified, Fingerprintable { Modifier setDescription(String description); - Modifier setAlbumImage(String imageId); - Album update() throws IllegalStateException; class AlbumTitleMustNotBeEmpty extends IllegalStateException { }