Override Object.hashCode() and Object.equals().
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / data / DefaultArtist.java
index d876169..151aeca 100644 (file)
 package net.pterodactylus.demoscenemusic.data;
 
 import java.util.Collection;
+import java.util.Comparator;
 
 /**
- * TODO
+ * Default implementation for an artist data container.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 public class DefaultArtist extends DefaultBase implements Artist {
 
+       /** Comparator that sorts artists by name. */
+       public static final Comparator<Artist> NAME_COMPARATOR = new Comparator<Artist>() {
+
+               @Override
+               public int compare(Artist leftArtist, Artist rightArtist) {
+                       return leftArtist.getName().compareToIgnoreCase(rightArtist.getName());
+               }
+       };
+
+       /**
+        * Creates a new artist data container.
+        *
+        * @param id
+        *            The ID of the artist
+        */
        public DefaultArtist(String id) {
                super(id);
        }
 
-       public String name() {
-               return value("name", String.class).get();
+       //
+       // ARTIST METHODS
+       //
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public String getName() {
+               return getValue("name", String.class).get();
        }
 
-       public Artist name(String name) {
-               value("name", String.class).set(name);
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public Artist setName(String name) {
+               getValue("name", String.class).set(name);
                return this;
        }
 
        /**
         * {@inheritDoc}
         */
+       @Override
        @SuppressWarnings("unchecked")
-       public Collection<Group> groups() {
-               return value("groups", Collection.class).get();
+       public Collection<Group> getGroups() {
+               return getValue("groups", Collection.class).get();
        }
 
        /**
         * {@inheritDoc}
         */
-       public Artist groups(Collection<Group> groups) {
-               value("groups", Collection.class).set(groups);
+       @Override
+       public Artist setGroups(Collection<Group> groups) {
+               getValue("groups", Collection.class).set(groups);
                return this;
        }
 
-       public Collection<Track> tracks() {
-               return value("tracks", Collection.class).get();
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       @SuppressWarnings({ "unchecked" })
+       public Collection<Track> getTracks() {
+               return getValue("tracks", Collection.class).get();
        }
 
+       /**
+        * {@inheritDoc}
+        */
        @Override
-       public Artist tracks(Collection<Track> tracks) {
-               value("tracks", Collection.class).set(tracks);
+       public Artist setTracks(Collection<Track> tracks) {
+               getValue("tracks", Collection.class).set(tracks);
                return this;
        }
 
+       //
+       // OBJECT METHODS
+       //
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public int hashCode() {
+               return getId().hashCode();
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean equals(Object object) {
+               if (!(object instanceof Artist)) {
+                       return false;
+               }
+               return ((Artist) object).getId().equals(getId());
+       }
+
 }