Add parameter validation.
[Sone.git] / src / main / java / net / pterodactylus / sone / data / Album.java
index 919f797..792f518 100644 (file)
@@ -21,6 +21,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
+import net.pterodactylus.util.validation.Validation;
+
 /**
  * Container for images that can also contain nested {@link Album}s.
  *
@@ -31,6 +33,9 @@ public class Album {
        /** The ID of this album. */
        private final String id;
 
+       /** The Sone this album belongs to. */
+       private final Sone sone;
+
        /** Nested albums. */
        private final List<Album> albums = new ArrayList<Album>();
 
@@ -45,9 +50,12 @@ public class Album {
 
        /**
         * Creates a new album with a random ID.
+        *
+        * @param sone
+        *            The Sone this album belongs to
         */
-       public Album() {
-               this(UUID.randomUUID().toString());
+       public Album(Sone sone) {
+               this(UUID.randomUUID().toString(), sone);
        }
 
        /**
@@ -55,9 +63,13 @@ public class Album {
         *
         * @param id
         *            The ID of the album
+        * @param sone
+        *            The Sone this album belongs to
         */
-       public Album(String id) {
+       public Album(String id, Sone sone) {
+               Validation.begin().isNotNull("Album ID", id).isNotNull("Album Owner", sone).check();
                this.id = id;
+               this.sone = sone;
        }
 
        //
@@ -74,6 +86,15 @@ public class Album {
        }
 
        /**
+        * Returns the Sone this album belongs to.
+        *
+        * @return The Sone this album belongs to
+        */
+       public Sone getSone() {
+               return sone;
+       }
+
+       /**
         * Returns the nested albums.
         *
         * @return The nested albums
@@ -108,6 +129,7 @@ public class Album {
         * @return This album
         */
        public Album setName(String name) {
+               Validation.begin().isNotNull("Album Name", name).check();
                this.name = name;
                return this;
        }
@@ -129,6 +151,7 @@ public class Album {
         * @return This album
         */
        public Album setDescription(String description) {
+               Validation.begin().isNotNull("Album Description", description).check();
                this.description = description;
                return this;
        }
@@ -146,7 +169,7 @@ public class Album {
                        return false;
                }
                Album album = (Album) object;
-               return id.equals(album.id);
+               return sone.equals(album.sone) && id.equals(album.id);
        }
 
 }