X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2FAlbum.java;h=3aba77942154107ef0d672aa5ba549ac4d4504d6;hb=df0abbdc635a8b927474515bb100882e6d850336;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..3aba779 100644
--- a/src/main/java/net/pterodactylus/sone/data/Album.java
+++ b/src/main/java/net/pterodactylus/sone/data/Album.java
@@ -36,7 +36,7 @@ import com.google.common.collect.ImmutableList;
*
* @author David âBombeâ Roden
*/
-public interface Album extends Identified, Fingerprintable {
+public interface Album extends Fingerprintable {
/** Compares two {@link Album}s by {@link #getTitle()}. */
Comparator TITLE_COMPARATOR = new Comparator() {
@@ -107,6 +107,7 @@ public interface Album extends Identified, Fingerprintable {
* @return The ID of this album
*/
String getId();
+ String getInternalId();
/**
* Returns the Sone this album belongs to.
@@ -116,16 +117,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
@@ -224,15 +215,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
@@ -279,28 +261,40 @@ 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();
/**
- * 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;
/**
- * 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;
+
+ class AlbumTitleMustNotBeEmpty extends IllegalStateException { }
+
+ }
}