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);
}
+ //
+ // ARTIST METHODS
+ //
+
+ /**
+ * {@inheritDoc}
+ */
@Override
- public String name() {
- return value("name", String.class).get();
+ public String getName() {
+ return getValue("name", String.class).get();
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public Artist name(String name) {
- value("name", String.class).set(name);
+ public Artist setName(String name) {
+ getValue("name", String.class).set(name);
return this;
}
*/
@Override
@SuppressWarnings("unchecked")
- public Collection<Group> groups() {
- return value("groups", Collection.class).get();
+ public Collection<Group> getGroups() {
+ return getValue("groups", Collection.class).get();
}
/**
* {@inheritDoc}
*/
@Override
- public Artist groups(Collection<Group> groups) {
- value("groups", Collection.class).set(groups);
+ public Artist setGroups(Collection<Group> groups) {
+ getValue("groups", Collection.class).set(groups);
return this;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
- public Collection<Track> tracks() {
- return value("tracks", Collection.class).get();
+ @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());
+ }
+
}