From e5dfa3c0302b45432e73bb8ee5ac4cb4b7122c3b Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Mon, 28 Oct 2019 14:56:56 +0100 Subject: [PATCH] Change persistence backend to requery (fix #8) --- .idea/gradle.xml | 2 - README.md | 7 + app/build.gradle | 9 +- .../messenger/RequeryDatabaseTest.java | 149 +++++ .../messenger/MercuryImApplication.java | 17 +- .../mercury_im/messenger/Notifications.java | 10 +- .../messenger/di/component/AppComponent.java | 12 +- .../di/module/AndroidPersistenceModule.java | 57 ++ .../messenger/di/module/AppModule.java | 6 +- .../mercury_im/messenger/ui/MainActivity.java | 3 +- .../messenger/ui/chat/ChatActivity.java | 4 +- .../messenger/ui/chat/ChatViewModel.java | 60 +- .../ui/chat/MessagesRecyclerViewAdapter.java | 2 +- .../chatlist/ChatListRecyclerViewAdapter.java | 63 ++- .../ui/chatlist/ChatListViewModel.java | 29 +- .../messenger/ui/login/AccountsFragment.java | 2 +- .../ui/login/AccountsRecyclerViewAdapter.java | 7 +- .../messenger/ui/login/AccountsViewModel.java | 23 +- .../messenger/ui/login/LoginActivity.java | 14 +- .../messenger/ui/login/LoginViewModel.java | 22 +- .../contacts/ContactListItemViewModel.java | 8 +- .../ContactListRecyclerViewAdapter.java | 28 +- .../roster/contacts/ContactListViewModel.java | 23 +- .../main/res/menu/actionmode_chat_single.xml | 11 + app/src/main/res/menu/actionmode_chatlist.xml | 8 + app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/themes.xml | 1 + build.gradle | 2 +- core/build.gradle | 16 + .../messenger/core/NotificationManager.java | 5 +- .../core/centers/ConnectionCenter.java | 66 ++- .../messenger/core/di/CenterModule.java | 23 +- .../messenger/core/di/XmppComponent.java | 7 +- .../core/stores/EntityCapsStore.java | 86 +-- .../core/stores/PlainMessageStore.java | 172 ++++-- .../messenger/core/stores/RosterStore.java | 164 +++--- .../messenger/core/util/ContactNameUtil.java | 18 +- persistence-room/.gitignore | 3 - persistence-room/README.md | 31 -- persistence-room/build.gradle | 56 -- persistence-room/proguard-rules.pro | 21 - .../1.json | 518 ------------------ .../2.json | 382 ------------- .../room/AbstractDatabaseTest.java | 51 -- .../room/ExampleInstrumentedTest.java | 111 ---- persistence-room/src/main/AndroidManifest.xml | 2 - .../persistence/room/AppDatabase.java | 112 ---- .../persistence/room/RoomModule.java | 86 --- .../room/RoomRepositoryModule.java | 67 --- .../persistence/room/dao/AccountDao.java | 52 -- .../persistence/room/dao/AvatarDao.java | 29 - .../persistence/room/dao/BaseDao.java | 40 -- .../persistence/room/dao/ChatDao.java | 56 -- .../persistence/room/dao/ContactDao.java | 79 --- .../persistence/room/dao/EntityCapsDao.java | 27 - .../persistence/room/dao/EntityDao.java | 26 - .../persistence/room/dao/MessageDao.java | 56 -- .../room/dao/RosterInformationDao.java | 27 - .../room/model/RoomAccountModel.java | 107 ---- .../room/model/RoomAvatarModel.java | 87 --- .../persistence/room/model/RoomChatModel.java | 126 ----- .../room/model/RoomContactModel.java | 153 ------ .../room/model/RoomEntityCapsModel.java | 51 -- .../room/model/RoomEntityModel.java | 94 ---- .../room/model/RoomMessageModel.java | 141 ----- .../model/RoomRosterInformationModel.java | 58 -- .../room/repository/IAccountRepository.java | 77 --- .../room/repository/IAvatarRepository.java | 46 -- .../room/repository/IChatRepository.java | 120 ---- .../repository/IEntityCapsRepository.java | 66 --- .../room/repository/IMessageRepository.java | 84 --- .../room/repository/IRosterRepository.java | 263 --------- .../room/type_converter/DateConverter.java | 18 - .../type_converter/DirectionConverter.java | 18 - .../EntityBareJidConverter.java | 25 - .../room/type_converter/FileConverter.java | 24 - .../src/main/res/values/strings.xml | 3 - .../persistence/room/ExampleUnitTest.java | 17 - persistence/README.md | 19 - persistence/build.gradle | 22 +- persistence/proguard-rules.pro | 21 - .../persistence/ExampleInstrumentedTest.java | 27 - persistence/src/main/AndroidManifest.xml | 2 - .../converter/EntityBareJidConverter.java | 33 ++ .../converter/SaslConditionConverter.java | 32 ++ .../SubscriptionDirectionConverter.java | 32 ++ .../persistence/di/RequeryModule.java | 52 ++ .../entity/AbstractAccountModel.java | 38 ++ .../persistence/entity/AbstractChatModel.java | 23 + .../entity/AbstractContactModel.java | 44 ++ .../entity/AbstractEntityCapsModel.java | 19 + .../entity/AbstractEntityModel.java | 35 ++ .../AbstractLastChatMessageRelation.java | 22 + .../AbstractLastReadChatMessageRelation.java | 22 + .../entity/AbstractMessageModel.java | 55 ++ ...AbstractSaslAuthenticationResultModel.java | 22 + .../persistence/enums/SaslCondition.java | 118 ++++ .../enums/SubscriptionDirection.java | 9 + .../model/AbstractAccountModel.java | 22 - .../persistence/model/AccountModel.java | 74 --- .../persistence/model/AvatarModel.java | 20 - .../persistence/model/ChatModel.java | 28 - .../persistence/model/ContactModel.java | 40 -- .../persistence/model/EntityCapsModel.java | 12 - .../persistence/model/EntityModel.java | 26 - .../persistence/model/MessageModel.java | 36 -- .../model/RosterInformationModel.java | 12 - .../messenger/persistence/pojo/Chat.java | 12 - .../repository/AbstractRepository.java | 89 +++ .../repository/AccountRepository.java | 55 +- .../repository/AvatarRepository.java | 20 - .../repository/ChatRepository.java | 123 +++-- .../repository/EntityCapsRepository.java | 34 +- .../repository/MessageRepository.java | 74 ++- .../repository/RequeryRepository.java | 34 ++ .../repository/RosterRepository.java | 366 +++++-------- .../util/ChatAndPossiblyContact.java | 23 + persistence/src/main/res/values/strings.xml | 3 - .../persistence/ExampleUnitTest.java | 17 - settings.gradle | 3 +- thread_utils/.gitignore | 1 + thread_utils/README.md | 5 + thread_utils/build.gradle | 8 + .../messenger/thread_utils/ThreadUtils.java | 16 + version.gradle | 3 + 125 files changed, 1836 insertions(+), 4515 deletions(-) create mode 100644 app/src/androidTest/java/org/mercury_im/messenger/RequeryDatabaseTest.java create mode 100644 app/src/main/java/org/mercury_im/messenger/di/module/AndroidPersistenceModule.java create mode 100644 app/src/main/res/menu/actionmode_chat_single.xml create mode 100644 app/src/main/res/menu/actionmode_chatlist.xml delete mode 100644 persistence-room/.gitignore delete mode 100644 persistence-room/README.md delete mode 100644 persistence-room/build.gradle delete mode 100644 persistence-room/proguard-rules.pro delete mode 100644 persistence-room/schemas/org.mercury_im.messenger.persistence.room.AppDatabase/1.json delete mode 100644 persistence-room/schemas/org.mercury_im.messenger.persistence.room.AppDatabase/2.json delete mode 100644 persistence-room/src/androidTest/java/org/mercury_im/messenger/persistence/room/AbstractDatabaseTest.java delete mode 100644 persistence-room/src/androidTest/java/org/mercury_im/messenger/persistence/room/ExampleInstrumentedTest.java delete mode 100644 persistence-room/src/main/AndroidManifest.xml delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/AppDatabase.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/RoomModule.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/RoomRepositoryModule.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/AccountDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/AvatarDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/BaseDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/ChatDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/ContactDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/EntityCapsDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/EntityDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/MessageDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/RosterInformationDao.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomAccountModel.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomAvatarModel.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomChatModel.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomContactModel.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomEntityCapsModel.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomEntityModel.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomMessageModel.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/model/RoomRosterInformationModel.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IAccountRepository.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IAvatarRepository.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IChatRepository.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IEntityCapsRepository.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IMessageRepository.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IRosterRepository.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/type_converter/DateConverter.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/type_converter/DirectionConverter.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/type_converter/EntityBareJidConverter.java delete mode 100644 persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/type_converter/FileConverter.java delete mode 100644 persistence-room/src/main/res/values/strings.xml delete mode 100644 persistence-room/src/test/java/org/mercury_im/messenger/persistence/room/ExampleUnitTest.java delete mode 100644 persistence/README.md delete mode 100644 persistence/proguard-rules.pro delete mode 100644 persistence/src/androidTest/java/org/mercury_im/messenger/persistence/ExampleInstrumentedTest.java delete mode 100644 persistence/src/main/AndroidManifest.xml create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/converter/EntityBareJidConverter.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/converter/SaslConditionConverter.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/converter/SubscriptionDirectionConverter.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/di/RequeryModule.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractAccountModel.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractChatModel.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractContactModel.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractEntityCapsModel.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractEntityModel.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractLastChatMessageRelation.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractLastReadChatMessageRelation.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractMessageModel.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/entity/AbstractSaslAuthenticationResultModel.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/enums/SaslCondition.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/enums/SubscriptionDirection.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/AbstractAccountModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/AccountModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/AvatarModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/ChatModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/ContactModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/EntityCapsModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/EntityModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/MessageModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/model/RosterInformationModel.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/pojo/Chat.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/repository/AbstractRepository.java delete mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/repository/AvatarRepository.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/repository/RequeryRepository.java create mode 100644 persistence/src/main/java/org/mercury_im/messenger/persistence/util/ChatAndPossiblyContact.java delete mode 100644 persistence/src/main/res/values/strings.xml delete mode 100644 persistence/src/test/java/org/mercury_im/messenger/persistence/ExampleUnitTest.java create mode 100644 thread_utils/.gitignore create mode 100644 thread_utils/README.md create mode 100644 thread_utils/build.gradle create mode 100644 thread_utils/src/main/java/org/mercury_im/messenger/thread_utils/ThreadUtils.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 2cb0567..8567414 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -80,8 +80,6 @@