Add remix name and artists to track.
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / data / Track.java
index 1bb42ca..a1362db 100644 (file)
 
 package net.pterodactylus.demoscenemusic.data;
 
+import java.util.Collection;
+import java.util.List;
+
 /**
- * TODO
+ * Data interface for tracks.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class Track {
+public interface Track extends Base {
+
+       /**
+        * Returns the name of this track.
+        *
+        * @return The name of this track
+        */
+       public String getName();
+
+       /**
+        * Sets the name of this track.
+        *
+        * @param name
+        *            The name of this track
+        * @return This track
+        */
+       public Track setName(String name);
+
+       /**
+        * Returns all artists involved in this track.
+        *
+        * @return All involved artists in preferred order
+        */
+       public List<Artist> getArtists();
+
+       /**
+        * Sets all artists involved in this track.
+        *
+        * @param artists
+        *            All involved artists in preferred order
+        * @return This track
+        */
+       public Track setArtists(List<Artist> artists);
+
+       /**
+        * Returns all styles of this track.
+        *
+        * @return All styles of this track
+        */
+       public Collection<Style> getStyles();
 
-       private final String id;
-       private String name;
+       /**
+        * Sets all styles of this track.
+        *
+        * @param styles
+        *            All styles of this track
+        * @return This track
+        */
+       public Track setStyles(Collection<? extends Style> styles);
 
-       public Track(String id) {
-               this.id = id;
-       }
+       /**
+        * Returns the name of this remix. If this track is not a remix,
+        * {@code null} is returned.
+        *
+        * @return The name of this remix, or {@code null} if this track is not a
+        *         remix
+        */
+       public String getRemix();
 
-       public String id() {
-               return id;
-       }
+       /**
+        * Sets the name of the remix.
+        *
+        * @param remix
+        *            The name of this remix, or {@code null} if this track is not a
+        *            remix
+        * @return This track
+        */
+       public Track setRemix(String remix);
 
-       public String name() {
-               return name;
-       }
+       /**
+        * Returns all remix artists involved in this track.
+        *
+        * @return All remix artists involved in this track
+        */
+       public List<Artist> getRemixArtists();
 
-       public Track name(String name) {
-               this.name = name;
-               return this;
-       }
+       /**
+        * Sets all remix artists involved in this track.
+        *
+        * @param remixArtists
+        *            All remix artists involved in this track
+        * @return This track
+        */
+       public Track setRemixArtists(List<Artist> remixArtists);
 
 }