X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fdemoscenemusic%2Fdata%2FDataManager.java;h=85f35faf3cea00034d17651c3a950e303584a9c1;hb=5f24f213aebba016708f1794d012d3e4189c487b;hp=928eebcf2223d0dfda7910443554792f8ef89494;hpb=f533deea6ecc3f1bd59ca8926c31dd7667ee572a;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 928eebc..85f35fa 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java @@ -118,6 +118,14 @@ public class DataManager { return trackLoader.all(); } + public Collection getGroupsByArtist(String artistId) throws DatabaseException { + Query query = new Query(Type.SELECT, "GROUPS"); + query.addField(new Field("GROUPS.*")); + query.addJoin(new Join(JoinType.INNER, "GROUP_ARTISTS", new Field("GROUPS.ID"), new Field("GROUP_ARTISTS.GROUP_"))); + query.addWhereClause(new ValueFieldWhereClause(new ValueField("GROUP_ARTISTS.ARTIST", new StringParameter(artistId)))); + return database.getMultiple(query, DefaultGroup.CREATOR); + } + private class TrackLoader implements ResultProcessor { private final List loadedTracks = new ArrayList(); @@ -185,7 +193,7 @@ public class DataManager { private class LazyArtist extends DefaultArtist { - private final Memoizer tracks = new Memoizer(new Callable() { + private final Memoizer tracksMemoizer = new Memoizer(new Callable() { public Void call() throws DatabaseException { if (!hasValue("tracks")) { value("tracks", Collection.class).set(getTracksByArtist(id())); @@ -199,7 +207,7 @@ public class DataManager { } public Collection tracks() { - tracks.get(); + tracksMemoizer.get(); return super.tracks(); }