Simplify album removal.
[Sone.git] / src / main / java / net / pterodactylus / sone / data / Album.java
index 09a7da4..26da9b7 100644 (file)
@@ -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<Album> 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<Image> 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.
         *
@@ -247,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
@@ -276,6 +216,10 @@ public interface Album extends Identified, Fingerprintable {
         */
        String getDescription();
 
+       AlbumBuilder newAlbumBuilder() throws IllegalStateException;
+
+       ImageBuilder newImageBuilder() throws IllegalStateException;
+
        /**
         * Returns a modifier for this album.
         *
@@ -285,6 +229,8 @@ public interface Album extends Identified, Fingerprintable {
         */
        Modifier modify() throws IllegalStateException;
 
+       void remove() throws IllegalStateException;
+
        /**
         * Allows modifying an album. Modifications are only performed once {@link
         * #update()} has succesfully returned a new album with the modifications