Override Object.hashCode() and Object.equals().
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / data / DefaultGroup.java
index 38ababe..16c1c76 100644 (file)
 
 package net.pterodactylus.demoscenemusic.data;
 
-import java.sql.ResultSet;
-import java.sql.SQLException;
-
-import net.pterodactylus.util.database.ObjectCreator;
+import java.util.Collection;
 
 /**
- * TODO
+ * Default implementation of a group data container.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 public class DefaultGroup extends DefaultBase implements Group {
 
-       public static final ObjectCreator<Group> CREATOR = new GroupCreator();
-
+       /**
+        * Creates a new group data container.
+        *
+        * @param id
+        *            The ID of the group
+        */
        public DefaultGroup(String id) {
                super(id);
        }
 
+       //
+       // GROUP METHODS
+       //
+
        /**
         * {@inheritDoc}
         */
-       public String name() {
-               return value("name", String.class).get();
+       @Override
+       public String getName() {
+               return getValue("name", String.class).get();
        }
 
        /**
         * {@inheritDoc}
         */
-       public Group name(String name) {
-               value("name", String.class).set(name);
+       @Override
+       public Group setName(String name) {
+               getValue("name", String.class).set(name);
                return this;
        }
 
        /**
         * {@inheritDoc}
         */
-       public String url() {
-               return value("url", String.class).get();
+       @Override
+       public String getUrl() {
+               return getValue("url", String.class).get();
        }
 
        /**
         * {@inheritDoc}
         */
-       public Group url(String url) {
-               value("url", String.class).set(url);
+       @Override
+       public Group setUrl(String url) {
+               getValue("url", String.class).set(url);
                return this;
        }
 
-       private static class GroupCreator implements ObjectCreator<Group> {
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       @SuppressWarnings("unchecked")
+       public Collection<Artist> getArtists() {
+               return getValue("artists", Collection.class).get();
+       }
 
-               /**
-                * {@inheritDoc}
-                */
-               @Override
-               public Group createObject(ResultSet resultSet) throws SQLException {
-                       return new DefaultGroup(resultSet.getString("GROUPS.ID")).name(resultSet.getString("GROUPS.NAME")).url(resultSet.getString("GROUPS.URL"));
-               }
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public Group setArtists(Collection<Artist> artists) {
+               getValue("artists", Collection.class).set(artists);
+               return this;
+       }
+
+       //
+       // OBJECT METHODS
+       //
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public int hashCode() {
+               return getId().hashCode();
+       }
 
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public boolean equals(Object object) {
+               if (!(object instanceof Group)) {
+                       return false;
+               }
+               return ((Group) object).getId().equals(getId());
        }
 
 }