import java.util.List;
import javax.annotation.Nonnull;
-import net.pterodactylus.sone.database.AlbumBuilder;
+import net.pterodactylus.sone.database.AlbumBuilderFactory;
import net.pterodactylus.sone.database.ImageBuilder;
import com.google.common.base.Function;
+import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.FluentIterable;
import com.google.common.collect.ImmutableList;
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
-public interface Album extends Identified, Fingerprintable {
+public interface Album extends Identified, Fingerprintable, AlbumBuilderFactory {
/** Compares two {@link Album}s by {@link #getTitle()}. */
Comparator<Album> TITLE_COMPARATOR = new Comparator<Album>() {
*/
List<Image> getImages();
- /**
- * 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();
+ Optional<Image> getAlbumImage();
/**
* Returns whether this album contains any other albums or images.
*/
String getDescription();
- AlbumBuilder newAlbumBuilder() throws IllegalStateException;
-
ImageBuilder newImageBuilder() throws IllegalStateException;
/**