X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=7b245f96697ba3091974cd412537665a09108274;hb=5a9585e9a43a35e675fb59a9d9135ff62efac21a;hp=5b9d3688bf91314d11a40ddd42d84ed5a4822e0c;hpb=a77d4a36080bc90c8c09efb753eb9e46f4e677d9;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 5b9d368..7b245f9 100644 --- a/src/main/java/net/pterodactylus/sone/data/Album.java +++ b/src/main/java/net/pterodactylus/sone/data/Album.java @@ -26,10 +26,11 @@ import java.util.Comparator; 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; @@ -39,7 +40,7 @@ import com.google.common.collect.ImmutableList; * * @author David ‘Bombe’ Roden */ -public interface Album extends Identified, Fingerprintable { +public interface Album extends Identified, Fingerprintable, AlbumBuilderFactory { /** Compares two {@link Album}s by {@link #getTitle()}. */ Comparator TITLE_COMPARATOR = new Comparator() { @@ -121,71 +122,13 @@ public interface Album extends Identified, Fingerprintable { List getAlbums(); /** - * 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. - * - * @param album - * The album to move up - * @return The album that the given album swapped the place with, or - * null if the album did not change its place - */ - Album moveAlbumUp(Album album); - - /** - * Moves the given album down in this album’s albums. If the album is already - * the last album, nothing happens. - * - * @param album - * The album to move down - * @return The album that the given album swapped the place with, or - * null if the album did not change its place - */ - Album moveAlbumDown(Album album); - - /** * Returns the images in this album. * * @return The images in this album */ List getImages(); - /** - * Moves the given image up in this album’s images. If the image is already the - * first image, nothing happens. - * - * @param image - * The image to move up - * @return The image that the given image swapped the place with, or - * null if the image did not change its place - */ - Image moveImageUp(Image image); - - /** - * Moves the given image down in this album’s images. If the image is already - * the last image, nothing happens. - * - * @param image - * The image to move down - * @return The image that the given image swapped the place with, or - * null if the image did not change its place - */ - 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(); + Optional getAlbumImage(); /** * Returns whether this album contains any other albums or images. @@ -211,22 +154,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 @@ -240,8 +167,6 @@ public interface Album extends Identified, Fingerprintable { */ String getDescription(); - AlbumBuilder newAlbumBuilder() throws IllegalStateException; - ImageBuilder newImageBuilder() throws IllegalStateException; /** @@ -253,6 +178,12 @@ public interface Album extends Identified, Fingerprintable { */ Modifier modify() throws IllegalStateException; + void moveUp(); + + void moveDown(); + + void remove() throws IllegalStateException; + /** * Allows modifying an album. Modifications are only performed once {@link * #update()} has succesfully returned a new album with the modifications