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 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); + }