X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fdemoscenemusic%2Fdata%2FDataManager.java;h=5523bbe89c013550d5cf680520701d7b506e4c12;hb=72b624fa52cc839f22e8133288d858bc5c2e2196;hp=e59512193c01e03826672de51d9a33f876957b27;hpb=fe0427884d64d9eb35d6abbff3617c56ad41b478;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 e595121..5523bbe 100644 --- a/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java +++ b/src/main/java/net/pterodactylus/demoscenemusic/data/DataManager.java @@ -50,6 +50,7 @@ public class DataManager { private final ObjectCreator artistCreator = new ArtistCreator(); private final ObjectCreator groupCreator = new GroupCreator(); + private final ObjectCreator trackCreator = new TrackCreator(); private final Database database; @@ -285,4 +286,57 @@ public class DataManager { } + private class LazyTrack extends DefaultTrack { + + private final Memoizer artistsMemoizer = new Memoizer(new Callable() { + + @Override + public Void call() throws Exception { + if (!hasValue("artists")) { + value("artists", List.class).set(getArtistsByTrack(id())); + } + return null; + } + + }); + + /** + * @param id + */ + public LazyTrack(String id) { + super(id); + } + + /** + * {@inheritDoc} + */ + @Override + public List artists() { + artistsMemoizer.get(); + return super.artists(); + } + + /** + * {@inheritDoc} + */ + @Override + public Collection