From 0305af2f9f8de9bba63e39eab25403f935641b9b Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Sun, 2 May 2021 16:16:05 +0200 Subject: [PATCH] Fix overwriting of data in song_genre_cross table --- .../play/repository/GenreRepository.java | 14 +++++++++++--- .../play/repository/SongGenreRepository.java | 14 +++----------- .../play/ui/fragment/SyncFragment.java | 2 +- .../com/cappielloantonio/play/util/SyncUtil.java | 3 ++- 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/repository/GenreRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/GenreRepository.java index 8f399650..788b6c9f 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/GenreRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/GenreRepository.java @@ -53,9 +53,17 @@ public class GenreRepository { } public void insertAll(ArrayList genres) { - InsertAllThreadSafe insertAll = new InsertAllThreadSafe(genreDao, genres); - Thread thread = new Thread(insertAll); - thread.start(); + try { + final Thread deleteAll = new Thread(new DeleteAllGenreThreadSafe(genreDao)); + final Thread insertAll = new Thread(new InsertAllThreadSafe(genreDao, genres)); + + deleteAll.start(); + deleteAll.join(); + insertAll.start(); + insertAll.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } } public void deleteAll() { diff --git a/app/src/main/java/com/cappielloantonio/play/repository/SongGenreRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/SongGenreRepository.java index 7383c599..15c58042 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/SongGenreRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/SongGenreRepository.java @@ -21,17 +21,9 @@ public class SongGenreRepository { } public void insertAll(List crosses) { - try { - final Thread delete = new Thread(new DeleteAllSongGenreCrossThreadSafe(songGenreCrossDao)); - final Thread insertAll = new Thread(new InsertAllThreadSafe(songGenreCrossDao, crosses)); - - delete.start(); - delete.join(); - insertAll.start(); - insertAll.join(); - } catch (InterruptedException e) { - e.printStackTrace(); - } + InsertAllThreadSafe insert = new InsertAllThreadSafe(songGenreCrossDao, crosses); + Thread thread = new Thread(insert); + thread.start(); } public void deleteAll() { diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SyncFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SyncFragment.java index 57ff3a8b..d058dfee 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SyncFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SyncFragment.java @@ -231,6 +231,7 @@ public class SyncFragment extends Fragment { @Override public void onLoadMedia(List media) { syncViewModel.setGenreList((ArrayList) media); + songGenreRepository.deleteAll(); genreRepository.insertAll(syncViewModel.getGenreList()); loadSectorInfo(GENRES, "Found " + syncViewModel.getGenreList().size() + " elements", true); } @@ -264,7 +265,6 @@ public class SyncFragment extends Fragment { @Override public void onLoadMedia(List media) { syncViewModel.setSongList((ArrayList) media); - songGenreRepository.deleteAll(); songRepository.insertAll(syncViewModel.getSongList()); syncSongArtistCross(syncViewModel.getSongList()); syncDownloadedSong(); diff --git a/app/src/main/java/com/cappielloantonio/play/util/SyncUtil.java b/app/src/main/java/com/cappielloantonio/play/util/SyncUtil.java index 4b59ec1d..458aa0a9 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/SyncUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/SyncUtil.java @@ -30,10 +30,11 @@ import java.util.List; import java.util.Map; public class SyncUtil { + private static final String TAG = "SyncUtil"; + public static final String SONG = "song"; public static final String ALBUM = "album"; public static final String ARTIST = "artist"; - private static final String TAG = "SyncUtil"; public static void getLibraries(Context context, MediaCallback callback) { String id = App.getApiClientInstance(context).getCurrentUserId();