X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fdemoscenemusic%2Fdata%2FTrack.java;h=cb9249fd97883a3a0ce9f0df0f658902dad3968c;hb=1e2c5a3d82db1f6c93adddd79b77278222979eca;hp=204cb770fad85e22b1696e53863a995d43a82b68;hpb=e3ac92367c0fde656598f388e9026f45c2868c4b;p=demoscenemusic.git
diff --git a/src/main/java/net/pterodactylus/demoscenemusic/data/Track.java b/src/main/java/net/pterodactylus/demoscenemusic/data/Track.java
index 204cb77..cb9249f 100644
--- a/src/main/java/net/pterodactylus/demoscenemusic/data/Track.java
+++ b/src/main/java/net/pterodactylus/demoscenemusic/data/Track.java
@@ -19,6 +19,7 @@ package net.pterodactylus.demoscenemusic.data;
import java.util.Collection;
import java.util.List;
+import java.util.Map;
/**
* Data interface for tracks.
@@ -28,6 +29,24 @@ import java.util.List;
public interface Track extends Base {
/**
+ * Defines relationships between tracks.
+ *
+ * @author David âBombeâ Roden
+ */
+ public enum Relationship {
+
+ /** The track is the original of a related track. */
+ original,
+
+ /** The track is a remix of a related track. */
+ remix,
+
+ /** The track is a cover version of a related track. */
+ cover,
+
+ }
+
+ /**
* Returns the name of this track.
*
* @return The name of this track
@@ -75,4 +94,88 @@ public interface Track extends Base {
*/
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 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 remixArtists);
+
+ /**
+ * Returns all derivatives of this track. A derivative of a MOD file could
+ * be a WAV or MP3 file.
+ *
+ * @return All derivatives of this track
+ */
+ public Collection getDerivatives();
+
+ /**
+ * Sets the derivatives of this track.
+ *
+ * @param derivatives
+ * The derivatives of this track
+ * @return This track
+ */
+ public Track setDerivatives(Collection derivatives);
+
+ /**
+ * Returns all tracks that are somehow related to this track.
+ *
+ * @return All tracks that are related to this track
+ */
+ public Map> getRelatedTracks();
+
+ /**
+ * Sets all related tracks.
+ *
+ * @param relatedTracks
+ * All related tracks
+ * @return This track
+ */
+ public Track setRelatedTracks(Map> relatedTracks);
+
+ /**
+ * Returns all parties this track was released at.
+ *
+ * @return All parties this track was released at
+ */
+ public Collection getParties();
+
+ /**
+ * Sets all parties this track was released at.
+ *
+ * @param parties
+ * All parties this track was released at
+ * @return This track
+ */
+ public Track setParties(Collection parties);
+
}