X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fdemoscenemusic%2Fdata%2FDataManager.java;h=967faa5fecd042ee0c6bb53f40df485e2a923943;hb=747a5afddade17479a3d0e951c1e5ce51a3b7950;hp=ad01bfed79d7c7c561649aabaac3ed75baea347a;hpb=7bae34cd2768314df3c169da542c2403161be3a1;p=demoscenemusic.git diff --git a/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java b/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java index ad01bfe..967faa5 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java @@ -329,6 +329,24 @@ public class DataManager { } /** + * Returns the track that contains the derivative with the given ID. + * + * @param id + * The ID of the track derivative + * @return The track the derivative belongs to, or {@code null} if there is + * no such track + * @throws DatabaseException + * if a database error occurs + */ + public Track getTrackByDerivativeId(String id) throws DatabaseException { + Query query = new Query(Type.SELECT, "TRACKS"); + query.addField(new Field("TRACKS.*")); + query.addJoin(new Join(JoinType.INNER, "TRACK_DERIVATIVES", new Field("TRACK_DERIVATIVES.TRACK"), new Field("TRACKS.ID"))); + query.addWhereClause(new ValueFieldWhereClause(new ValueField("TRACK_DERIVATIVES.ID", new StringParameter(id)))); + return loadTrackProperties(database.getSingle(query, trackCreator)); + } + + /** * Returns all tracks by the artist with the given ID. * * @param artistId @@ -515,6 +533,23 @@ public class DataManager { } /** + * Removes the given track derivative and all its properties from the + * database. + * + * @param trackDerivative + * The track derivative to remove + * @throws DatabaseException + * if a database error occurs + */ + public void removeTrackDerivative(TrackDerivative trackDerivative) throws DatabaseException { + Query query = new Query(Type.DELETE, "TRACK_DERIVATIVES"); + query.addWhereClause(new ValueFieldWhereClause(new ValueField("TRACK_DERIVATIVES.ID", new StringParameter(trackDerivative.getId())))); + database.update(query); + /* remove the properties. */ + saveProperties(new Properties().set("dirty", "true").removeAll(), "TRACK_DERIVATIVE_PROPERTIES", "TRACK_DERIVATIVE", trackDerivative.getId()); + } + + /** * Returns all groups the artist with the given ID belongs to. * * @param artistId