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