Remove unused Comparator
[Sone.git] / src / main / java / net / pterodactylus / sone / data / Album.java
index 1e79f89..f90a42f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Sone - Album.java - Copyright © 2011–2013 David Roden
+ * Sone - Album.java - Copyright © 2011–2016 David Roden
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,7 +22,6 @@ import static java.util.Collections.emptyList;
 
 import java.util.ArrayList;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 import javax.annotation.Nonnull;
 
@@ -33,20 +32,9 @@ import com.google.common.collect.ImmutableList;
 
 /**
  * Container for images that can also contain nested {@link Album}s.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 public interface Album extends Identified, Fingerprintable {
 
-       /** Compares two {@link Album}s by {@link #getTitle()}. */
-       Comparator<Album> TITLE_COMPARATOR = new Comparator<Album>() {
-
-               @Override
-               public int compare(Album leftAlbum, Album rightAlbum) {
-                       return leftAlbum.getTitle().compareToIgnoreCase(rightAlbum.getTitle());
-               }
-       };
-
        /** Function that flattens the given album and all albums beneath it. */
        Function<Album, List<Album>> FLATTENER = new Function<Album, List<Album>>() {
 
@@ -116,16 +104,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
@@ -216,23 +194,6 @@ public interface Album extends Identified, Fingerprintable {
        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();
-
-       /**
-        * 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,15 +240,6 @@ public interface Album extends Identified, Fingerprintable {
        String getTitle();
 
        /**
-        * Sets the title of this album.
-        *
-        * @param title
-        *              The title of this album
-        * @return This album
-        */
-       Album setTitle(String title);
-
-       /**
         * Returns the description of this album.
         *
         * @return The description of this album
@@ -295,12 +247,29 @@ public interface Album extends Identified, Fingerprintable {
        String getDescription();
 
        /**
-        * Sets the description of this album.
+        * Returns a modifier for this album.
         *
-        * @param description
-        *              The description of this album
-        * @return This album
+        * @return A modifier for this album
+        * @throws IllegalStateException
+        *              if this album can not be modified
         */
-       Album setDescription(String description);
+       Modifier modify() throws IllegalStateException;
+
+       /**
+        * Allows modifying an album. Modifications are only performed once {@link
+        * #update()} has succesfully returned a new album with the modifications
+        * made.
+        */
+       interface Modifier {
+
+               Modifier setTitle(String title);
+
+               Modifier setDescription(String description);
+
+               Album update() throws IllegalStateException;
+
+               class AlbumTitleMustNotBeEmpty extends IllegalStateException { }
+
+       }
 
 }