X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=26da9b7c7751d1c672827e015c89ce06fb5f2340;hb=f0c0d175ae5058661d3af7cc99d0c188616a4d8f;hp=1e79f89a8738da34ed600ba7f231ef43e1cd07bf;hpb=f313a48bfc36f9968d18b76436739c093b562b7a;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 1e79f89..26da9b7 100644 --- a/src/main/java/net/pterodactylus/sone/data/Album.java +++ b/src/main/java/net/pterodactylus/sone/data/Album.java @@ -26,6 +26,9 @@ import java.util.Comparator; import java.util.List; import javax.annotation.Nonnull; +import net.pterodactylus.sone.database.AlbumBuilder; +import net.pterodactylus.sone.database.ImageBuilder; + import com.google.common.base.Function; import com.google.common.base.Predicate; import com.google.common.collect.FluentIterable; @@ -115,40 +118,9 @@ 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 - */ List getAlbums(); /** - * Adds an album to this album. - * - * @param album - * The album to add - */ - void addAlbum(Album album); - - /** - * Removes an album from this album. - * - * @param album - * The album to remove - */ - void removeAlbum(Album album); - - /** * Moves the given album up in this album’s albums. If the album is already the * first album, nothing happens. * @@ -178,22 +150,6 @@ public interface Album extends Identified, Fingerprintable { List getImages(); /** - * Adds the given image to this album. - * - * @param image - * The image to add - */ - void addImage(Image image); - - /** - * Removes the given image from this album. - * - * @param image - * The image to remove - */ - void removeImage(Image image); - - /** * Moves the given image up in this album’s images. If the image is already the * first image, nothing happens. * @@ -224,15 +180,6 @@ public interface Album extends Identified, Fingerprintable { 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 @@ -256,22 +203,6 @@ public interface Album extends Identified, Fingerprintable { Album getParent(); /** - * Sets the parent album of this album. - * - * @param parent - * The new parent album of this album - * @return This album - */ - Album setParent(Album parent); - - /** - * Removes the parent album of this album. - * - * @return This album - */ - Album removeParent(); - - /** * Returns the title of this album. * * @return The title of this album @@ -279,28 +210,44 @@ public interface Album extends Identified, Fingerprintable { String getTitle(); /** - * Sets the title of this album. + * Returns the description of this album. * - * @param title - * The title of this album - * @return This album + * @return The description of this album */ - Album setTitle(String title); + String getDescription(); + + AlbumBuilder newAlbumBuilder() throws IllegalStateException; + + ImageBuilder newImageBuilder() throws IllegalStateException; /** - * Returns the description of this album. + * Returns a modifier for this album. * - * @return The description of this album + * @return A modifier for this album + * @throws IllegalStateException + * if this album can not be modified */ - String getDescription(); + Modifier modify() throws IllegalStateException; + + void remove() throws IllegalStateException; /** - * Sets the description of this album. + * Allows modifying an album. Modifications are only performed once {@link + * #update()} has succesfully returned a new album with the modifications + * made. * - * @param description - * The description of this album - * @return This album + * @author David ‘Bombe’ Roden */ - Album setDescription(String description); + interface Modifier { + + Modifier setTitle(String title); + + Modifier setDescription(String description); + + Modifier setAlbumImage(String imageId); + + Album update() throws IllegalStateException; + + } }