From aebbe2983619f7e86aa74f294a16339e7d0d3023 Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Mon, 13 Jul 2020 15:54:36 +0200 Subject: [PATCH] Explicitly foreign key reference account from other tables --- .../ui/roster/contacts/detail/ContactDetailFragment.java | 6 ++++++ .../data/model/AbstractAnnouncedOpenPgpContactKey.java | 4 ++++ .../messenger/data/model/AbstractOpenPgpKeyFetchDate.java | 4 ++++ .../messenger/data/model/AbstractOpenPgpKeyTrust.java | 4 ++++ .../messenger/data/model/AbstractOpenPgpPublicKeyRing.java | 4 ++++ .../messenger/data/model/AbstractOpenPgpSecretKeyRing.java | 4 ++++ .../messenger/core/viewmodel/accounts/LoginViewModel.java | 7 +++---- 7 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailFragment.java b/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailFragment.java index 6164555..aa644ad 100644 --- a/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailFragment.java +++ b/app/src/main/java/org/mercury_im/messenger/android/ui/roster/contacts/detail/ContactDetailFragment.java @@ -35,7 +35,10 @@ import org.mercury_im.messenger.android.util.ColorUtil; import org.mercury_im.messenger.core.viewmodel.accounts.FingerprintViewItem; import org.pgpainless.key.OpenPgpV4Fingerprint; +import java.util.Arrays; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; import butterknife.BindView; import butterknife.ButterKnife; @@ -45,6 +48,8 @@ import io.reactivex.schedulers.Schedulers; public class ContactDetailFragment extends Fragment { + private static final Logger LOGGER = Logger.getLogger(ContactDetailFragment.class.getName()); + @BindView(R.id.contact_avatar) ImageView contactAvatar; @@ -184,6 +189,7 @@ public class ContactDetailFragment extends Fragment { } private void setFingerprints(List fingerprints) { + LOGGER.log(Level.INFO, "Display fingerprints: " + Arrays.asList(fingerprints.toArray())); fingerprintsLayout.setVisibility(fingerprints.isEmpty() ? View.GONE : View.VISIBLE); fingerprintsAdapter.setItems(fingerprints); } diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractAnnouncedOpenPgpContactKey.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractAnnouncedOpenPgpContactKey.java index 17c2ac7..92846fd 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractAnnouncedOpenPgpContactKey.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractAnnouncedOpenPgpContactKey.java @@ -3,6 +3,7 @@ package org.mercury_im.messenger.data.model; import org.jxmpp.jid.EntityBareJid; import org.mercury_im.messenger.data.converter.EntityBareJidConverter; import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter; +import org.mercury_im.messenger.entity.Account; import org.pgpainless.key.OpenPgpV4Fingerprint; import java.util.Date; @@ -11,7 +12,9 @@ import java.util.UUID; import io.requery.Column; import io.requery.Convert; import io.requery.Entity; +import io.requery.ForeignKey; import io.requery.Key; +import io.requery.ReferentialAction; import io.requery.Table; import io.requery.converter.UUIDConverter; @@ -21,6 +24,7 @@ public class AbstractAnnouncedOpenPgpContactKey { @Key @Convert(UUIDConverter.class) + @ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE) UUID accountId; @Key diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpKeyFetchDate.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpKeyFetchDate.java index 3167d8c..bf318c6 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpKeyFetchDate.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpKeyFetchDate.java @@ -3,6 +3,7 @@ package org.mercury_im.messenger.data.model; import org.jxmpp.jid.EntityBareJid; import org.mercury_im.messenger.data.converter.EntityBareJidConverter; import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter; +import org.mercury_im.messenger.entity.Account; import org.pgpainless.key.OpenPgpV4Fingerprint; import java.util.Date; @@ -11,7 +12,9 @@ import java.util.UUID; import io.requery.Column; import io.requery.Convert; import io.requery.Entity; +import io.requery.ForeignKey; import io.requery.Key; +import io.requery.ReferentialAction; import io.requery.Table; import io.requery.converter.UUIDConverter; @@ -21,6 +24,7 @@ public class AbstractOpenPgpKeyFetchDate { @Key @Convert(UUIDConverter.class) + @ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE) UUID accountId; @Key diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpKeyTrust.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpKeyTrust.java index cc145ed..dcb6419 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpKeyTrust.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpKeyTrust.java @@ -5,13 +5,16 @@ import org.jxmpp.jid.EntityBareJid; import org.mercury_im.messenger.data.converter.EntityBareJidConverter; import org.mercury_im.messenger.data.converter.OpenPgpTrustConverter; import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter; +import org.mercury_im.messenger.entity.Account; import org.pgpainless.key.OpenPgpV4Fingerprint; import java.util.UUID; import io.requery.Convert; import io.requery.Entity; +import io.requery.ForeignKey; import io.requery.Key; +import io.requery.ReferentialAction; import io.requery.Table; import io.requery.converter.UUIDConverter; @@ -21,6 +24,7 @@ public class AbstractOpenPgpKeyTrust { @Key @Convert(UUIDConverter.class) + @ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE) UUID accountId; @Key diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpPublicKeyRing.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpPublicKeyRing.java index 7e28ea7..1f96c73 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpPublicKeyRing.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpPublicKeyRing.java @@ -2,13 +2,16 @@ package org.mercury_im.messenger.data.model; import org.jxmpp.jid.EntityBareJid; import org.mercury_im.messenger.data.converter.EntityBareJidConverter; +import org.mercury_im.messenger.entity.Account; import java.util.UUID; import io.requery.Column; import io.requery.Convert; import io.requery.Entity; +import io.requery.ForeignKey; import io.requery.Key; +import io.requery.ReferentialAction; import io.requery.Table; @Entity @@ -17,6 +20,7 @@ public class AbstractOpenPgpPublicKeyRing { @Key @Column(name = "account_id", nullable = false) + @ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE) UUID accountId; @Key diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpSecretKeyRing.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpSecretKeyRing.java index dba4a69..a84b8c3 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpSecretKeyRing.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractOpenPgpSecretKeyRing.java @@ -2,13 +2,16 @@ package org.mercury_im.messenger.data.model; import org.jxmpp.jid.EntityBareJid; import org.mercury_im.messenger.data.converter.EntityBareJidConverter; +import org.mercury_im.messenger.entity.Account; import java.util.UUID; import io.requery.Column; import io.requery.Convert; import io.requery.Entity; +import io.requery.ForeignKey; import io.requery.Key; +import io.requery.ReferentialAction; import io.requery.Table; @Entity @@ -17,6 +20,7 @@ public class AbstractOpenPgpSecretKeyRing { @Key @Column(name = "account_id", nullable = false) + @ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE) UUID accountId; @Key diff --git a/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/accounts/LoginViewModel.java b/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/accounts/LoginViewModel.java index 53edd1b..7ad974c 100644 --- a/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/accounts/LoginViewModel.java +++ b/domain/src/main/java/org/mercury_im/messenger/core/viewmodel/accounts/LoginViewModel.java @@ -119,10 +119,10 @@ public class LoginViewModel implements MercuryViewModel { Account account = createAccountEntity(); MercuryConnection connection = connectionManager.createConnection(account); - addDisposable(connection.connect() + addDisposable(accountRepository.upsertAccount(account).ignoreElement() + .andThen(connection.connect()) .andThen(connection.login()) .andThen(connectionManager.registerConnection(connection)) - .andThen(accountRepository.insertAccount(account)) .subscribeOn(schedulers.getNewThread()) .observeOn(schedulers.getUiScheduler()) .subscribe( @@ -140,8 +140,7 @@ public class LoginViewModel implements MercuryViewModel { return account; } - private void onLoginSuccessful(Account account) { - LOGGER.log(Level.FINER, "Successfully added new account " + account); + private void onLoginSuccessful() { isLoginSuccessful.onNext(true); }