From f7f5b5be1bbde0f6e4dfe95ce1f0e23950484450 Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Fri, 29 Aug 2014 15:20:26 -0700 Subject: Update rating cache immediately --- .../dsub/service/CachedMusicService.java | 52 +++++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/github/daneren2005/dsub/service/CachedMusicService.java b/src/github/daneren2005/dsub/service/CachedMusicService.java index 90e5539c..01e50e95 100644 --- a/src/github/daneren2005/dsub/service/CachedMusicService.java +++ b/src/github/daneren2005/dsub/service/CachedMusicService.java @@ -792,8 +792,15 @@ public class CachedMusicService implements MusicService { } @Override - public void setRating(String id, int rating, Context context, ProgressListener progressListener) throws Exception { - musicService.setRating(id, rating, context, progressListener); + public void setRating(final String id, String parent, final int rating, Context context, ProgressListener progressListener) throws Exception { + musicService.setRating(id, parent, rating, context, progressListener); + + new GenericSongUpdater(context, parent, id) { + @Override + public void updateResult(Entry result) { + result.setRating(rating); + } + }.execute(); } @Override @@ -1222,6 +1229,47 @@ public class CachedMusicService implements MusicService { } } } + private abstract class GenericSongUpdater { + Context context; + String id; + String parent; + + public GenericSongUpdater(Context context, String id, String parent) { + this.context = context; + this.id = id; + this.parent = parent; + } + + public boolean checkResult(Entry check) { + return id.equals(check.getId()); + } + public abstract void updateResult(Entry result); + + public void execute() { + new MusicDirectoryUpdater(context, "directory", parent) { + @Override + public boolean checkResult(Entry check) { + return GenericSongUpdater.this.checkResult(check); + } + + @Override void updateResult(List objects, Entry result) { + GenericSongUpdater.this.updateResult(result); + } + }.execute(); + + new PlaylistDirectoryUpdater(context) { + @Override + public boolean checkResult(Entry check) { + return GenericSongUpdater.this.checkResult(check); + } + + @Override + public void updateResult(Entry result) { + GenericSongUpdater.this.updateResult(result); + } + }.execute(); + } + } private abstract class IndexesUpdater extends SerializeUpdater { Indexes indexes; -- cgit v1.2.3