X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=f90a42f3b02a9154afe52b15012436bcc6f50b32;hp=1e79f89a8738da34ed600ba7f231ef43e1cd07bf;hb=f5fc7fdf598e1a10757069e0701c41a86047d266;hpb=f313a48bfc36f9968d18b76436739c093b562b7a diff --git a/src/main/java/net/pterodactylus/sone/data/Album.java b/src/main/java/net/pterodactylus/sone/data/Album.java index 1e79f89..f90a42f 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–2013 David Roden + * Sone - Album.java - Copyright © 2011–2016 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 @@ -22,7 +22,6 @@ 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; @@ -33,20 +32,9 @@ 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>() { @@ -116,16 +104,6 @@ public interface Album extends Identified, Fingerprintable { Sone getSone(); /** - * Sets the owner of the album. The owner can only be set as long as the - * current owner is {@code null}. - * - * @param sone - * The album owner - * @return This album - */ - Album setSone(Sone sone); - - /** * Returns the nested albums. * * @return The nested albums @@ -216,23 +194,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(); - - /** - * Sets the ID of the album image. - * - * @param id - * The ID of the album image - * @return This album - */ - Album setAlbumImage(String id); - - /** * Returns whether this album contains any other albums or images. * * @return {@code true} if this album is empty, {@code false} otherwise @@ -279,15 +240,6 @@ public interface Album extends Identified, Fingerprintable { String getTitle(); /** - * Sets the title of this album. - * - * @param title - * The title of this album - * @return This album - */ - Album setTitle(String title); - - /** * Returns the description of this album. * * @return The description of this album @@ -295,12 +247,29 @@ public interface Album extends Identified, Fingerprintable { String getDescription(); /** - * Sets the description of this album. + * Returns a modifier for this album. * - * @param description - * The description of this album - * @return This album + * @return A modifier for this album + * @throws IllegalStateException + * if this album can not be modified */ - Album setDescription(String description); + Modifier modify() throws IllegalStateException; + + /** + * Allows modifying an album. Modifications are only performed once {@link + * #update()} has succesfully returned a new album with the modifications + * made. + */ + interface Modifier { + + Modifier setTitle(String title); + + Modifier setDescription(String description); + + Album update() throws IllegalStateException; + + class AlbumTitleMustNotBeEmpty extends IllegalStateException { } + + } }