Add remix name and artists to track.
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / data / Track.java
index ace6bd3..a1362db 100644 (file)
@@ -21,22 +21,93 @@ 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 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();
 
+       /**
+        * Sets all styles of this track.
+        *
+        * @param styles
+        *            All styles of this track
+        * @return This track
+        */
        public Track setStyles(Collection<? extends Style> styles);
 
+       /**
+        * 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();
+
+       /**
+        * 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);
+
+       /**
+        * Returns all remix artists involved in this track.
+        *
+        * @return All remix artists involved in this track
+        */
+       public List<Artist> getRemixArtists();
+
+       /**
+        * 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);
+
 }