Add remix name and artists to track.
[demoscenemusic.git] / src / main / java / net / pterodactylus / demoscenemusic / data / Track.java
index 172bea3..a1362db 100644 (file)
 
 package net.pterodactylus.demoscenemusic.data;
 
+import java.util.Collection;
 import java.util.List;
-import java.util.Set;
 
 /**
- * TODO
+ * Data interface for tracks.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
 public interface Track extends Base {
 
-       public String name();
+       /**
+        * Returns the name of this track.
+        *
+        * @return The name of this track
+        */
+       public String getName();
 
-       public Track name(String name);
+       /**
+        * Sets the name of this track.
+        *
+        * @param name
+        *            The name of this track
+        * @return This track
+        */
+       public Track setName(String name);
 
-       public List<Artist> artists();
+       /**
+        * Returns all artists involved in this track.
+        *
+        * @return All involved artists in preferred order
+        */
+       public List<Artist> getArtists();
 
-       public Track artists(List<Artist> artists);
+       /**
+        * Sets all artists involved in this track.
+        *
+        * @param artists
+        *            All involved artists in preferred order
+        * @return This track
+        */
+       public Track setArtists(List<Artist> artists);
 
-       public Set<Style> styles();
+       /**
+        * Returns all styles of this track.
+        *
+        * @return All styles of this track
+        */
+       public Collection<Style> getStyles();
 
-       public Track styles(Set<? extends Style> styles);
+       /**
+        * 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);
 
 }