diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-04-08 17:31:20 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-04-08 17:31:20 +0300 |
commit | 38bb26e356865a92b5cb4ef6067eff7853ace54f (patch) | |
tree | d0c267e70eb986522c35cc989360ca8b366e1d37 /app/src/main/java/it/niedermann | |
parent | ff2bc1f288b0c10a882c7f40ebe3a2c435ef4684 (diff) |
Refactor getIdMap
Diffstat (limited to 'app/src/main/java/it/niedermann')
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java | 16 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java | 26 |
2 files changed, 19 insertions, 23 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java index 3673c082..b84b3b46 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/NotesDatabase.java @@ -32,7 +32,6 @@ import org.json.JSONException; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -79,6 +78,7 @@ import static it.niedermann.owncloud.notes.edit.EditNoteActivity.ACTION_SHORTCUT import static it.niedermann.owncloud.notes.shared.util.NoteUtil.generateNoteExcerpt; import static it.niedermann.owncloud.notes.widget.notelist.NoteListWidget.updateNoteListWidgets; import static it.niedermann.owncloud.notes.widget.singlenote.SingleNoteWidget.updateSingleNoteWidgets; +import static java.util.stream.Collectors.toMap; @Database( entities = { @@ -215,15 +215,19 @@ public abstract class NotesDatabase extends RoomDatabase { }); } + /** + * @return a {@link Map} of remote IDs as keys and local IDs as values of all {@link Note}s of + * the given {@param accountId} which are note {@link DBStatus#LOCAL_DELETED} + */ @NonNull @WorkerThread public Map<Long, Long> getIdMap(long accountId) { validateAccountId(accountId); - Map<Long, Long> result = new HashMap<>(); - for (Note pair : getNoteDao().getRemoteIdAndId(accountId)) { - result.put(pair.getRemoteId(), pair.getId()); - } - return result; + return getNoteDao() + .getRemoteIdAndId(accountId) + .stream() + .filter(note -> note.getRemoteId() != null) + .collect(toMap(Note::getRemoteId, Note::getId)); } @AnyThread diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java index 0fe6f768..b0828717 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/dao/AccountDao.java @@ -20,10 +20,14 @@ public interface AccountDao { @Delete int deleteAccount(Account localAccount); - String getAccountById = "SELECT * FROM Account WHERE ID = :accountId"; - String getAccountByName = "SELECT * FROM Account WHERE ACCOUNTNAME = :accountName"; String getAccounts = "SELECT * FROM Account"; - String countAccounts = "SELECT COUNT(*) FROM Account"; + String getAccountById = "SELECT * FROM Account WHERE ID = :accountId"; + + @Query(getAccounts) + LiveData<List<Account>> getAccounts$(); + + @Query(getAccounts) + List<Account> getAccounts(); @Query(getAccountById) LiveData<Account> getAccountById$(long accountId); @@ -31,24 +35,12 @@ public interface AccountDao { @Query(getAccountById) Account getAccountById(long accountId); - @Query(getAccountByName) - LiveData<Account> getAccountByName$(String accountName); - - @Query(getAccountByName) + @Query("SELECT * FROM Account WHERE ACCOUNTNAME = :accountName") Account getAccountByName(String accountName); - @Query(getAccounts) - LiveData<List<Account>> getAccounts$(); - - @Query(getAccounts) - List<Account> getAccounts(); - - @Query(countAccounts) + @Query("SELECT COUNT(*) FROM Account") LiveData<Integer> countAccounts$(); - @Query(countAccounts) - Integer countAccounts(); - @Query("UPDATE Account SET COLOR = :color, TEXTCOLOR = :textColor WHERE id = :id") void updateBrand(long id, @ColorInt Integer color, @ColorInt Integer textColor); |