Explicitly foreign key reference account from other tables

This commit is contained in:
Paul Schaub 2020-07-13 15:54:36 +02:00
parent c14cc304b1
commit aebbe29836
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
7 changed files with 29 additions and 4 deletions

View file

@ -35,7 +35,10 @@ import org.mercury_im.messenger.android.util.ColorUtil;
import org.mercury_im.messenger.core.viewmodel.accounts.FingerprintViewItem; import org.mercury_im.messenger.core.viewmodel.accounts.FingerprintViewItem;
import org.pgpainless.key.OpenPgpV4Fingerprint; import org.pgpainless.key.OpenPgpV4Fingerprint;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
@ -45,6 +48,8 @@ import io.reactivex.schedulers.Schedulers;
public class ContactDetailFragment extends Fragment { public class ContactDetailFragment extends Fragment {
private static final Logger LOGGER = Logger.getLogger(ContactDetailFragment.class.getName());
@BindView(R.id.contact_avatar) @BindView(R.id.contact_avatar)
ImageView contactAvatar; ImageView contactAvatar;
@ -184,6 +189,7 @@ public class ContactDetailFragment extends Fragment {
} }
private void setFingerprints(List<FingerprintViewItem> fingerprints) { private void setFingerprints(List<FingerprintViewItem> fingerprints) {
LOGGER.log(Level.INFO, "Display fingerprints: " + Arrays.asList(fingerprints.toArray()));
fingerprintsLayout.setVisibility(fingerprints.isEmpty() ? View.GONE : View.VISIBLE); fingerprintsLayout.setVisibility(fingerprints.isEmpty() ? View.GONE : View.VISIBLE);
fingerprintsAdapter.setItems(fingerprints); fingerprintsAdapter.setItems(fingerprints);
} }

View file

@ -3,6 +3,7 @@ package org.mercury_im.messenger.data.model;
import org.jxmpp.jid.EntityBareJid; import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.data.converter.EntityBareJidConverter; import org.mercury_im.messenger.data.converter.EntityBareJidConverter;
import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter; import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter;
import org.mercury_im.messenger.entity.Account;
import org.pgpainless.key.OpenPgpV4Fingerprint; import org.pgpainless.key.OpenPgpV4Fingerprint;
import java.util.Date; import java.util.Date;
@ -11,7 +12,9 @@ import java.util.UUID;
import io.requery.Column; import io.requery.Column;
import io.requery.Convert; import io.requery.Convert;
import io.requery.Entity; import io.requery.Entity;
import io.requery.ForeignKey;
import io.requery.Key; import io.requery.Key;
import io.requery.ReferentialAction;
import io.requery.Table; import io.requery.Table;
import io.requery.converter.UUIDConverter; import io.requery.converter.UUIDConverter;
@ -21,6 +24,7 @@ public class AbstractAnnouncedOpenPgpContactKey {
@Key @Key
@Convert(UUIDConverter.class) @Convert(UUIDConverter.class)
@ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE)
UUID accountId; UUID accountId;
@Key @Key

View file

@ -3,6 +3,7 @@ package org.mercury_im.messenger.data.model;
import org.jxmpp.jid.EntityBareJid; import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.data.converter.EntityBareJidConverter; import org.mercury_im.messenger.data.converter.EntityBareJidConverter;
import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter; import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter;
import org.mercury_im.messenger.entity.Account;
import org.pgpainless.key.OpenPgpV4Fingerprint; import org.pgpainless.key.OpenPgpV4Fingerprint;
import java.util.Date; import java.util.Date;
@ -11,7 +12,9 @@ import java.util.UUID;
import io.requery.Column; import io.requery.Column;
import io.requery.Convert; import io.requery.Convert;
import io.requery.Entity; import io.requery.Entity;
import io.requery.ForeignKey;
import io.requery.Key; import io.requery.Key;
import io.requery.ReferentialAction;
import io.requery.Table; import io.requery.Table;
import io.requery.converter.UUIDConverter; import io.requery.converter.UUIDConverter;
@ -21,6 +24,7 @@ public class AbstractOpenPgpKeyFetchDate {
@Key @Key
@Convert(UUIDConverter.class) @Convert(UUIDConverter.class)
@ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE)
UUID accountId; UUID accountId;
@Key @Key

View file

@ -5,13 +5,16 @@ import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.data.converter.EntityBareJidConverter; import org.mercury_im.messenger.data.converter.EntityBareJidConverter;
import org.mercury_im.messenger.data.converter.OpenPgpTrustConverter; import org.mercury_im.messenger.data.converter.OpenPgpTrustConverter;
import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter; import org.mercury_im.messenger.data.converter.OpenPgpV4FingerprintConverter;
import org.mercury_im.messenger.entity.Account;
import org.pgpainless.key.OpenPgpV4Fingerprint; import org.pgpainless.key.OpenPgpV4Fingerprint;
import java.util.UUID; import java.util.UUID;
import io.requery.Convert; import io.requery.Convert;
import io.requery.Entity; import io.requery.Entity;
import io.requery.ForeignKey;
import io.requery.Key; import io.requery.Key;
import io.requery.ReferentialAction;
import io.requery.Table; import io.requery.Table;
import io.requery.converter.UUIDConverter; import io.requery.converter.UUIDConverter;
@ -21,6 +24,7 @@ public class AbstractOpenPgpKeyTrust {
@Key @Key
@Convert(UUIDConverter.class) @Convert(UUIDConverter.class)
@ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE)
UUID accountId; UUID accountId;
@Key @Key

View file

@ -2,13 +2,16 @@ package org.mercury_im.messenger.data.model;
import org.jxmpp.jid.EntityBareJid; import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.data.converter.EntityBareJidConverter; import org.mercury_im.messenger.data.converter.EntityBareJidConverter;
import org.mercury_im.messenger.entity.Account;
import java.util.UUID; import java.util.UUID;
import io.requery.Column; import io.requery.Column;
import io.requery.Convert; import io.requery.Convert;
import io.requery.Entity; import io.requery.Entity;
import io.requery.ForeignKey;
import io.requery.Key; import io.requery.Key;
import io.requery.ReferentialAction;
import io.requery.Table; import io.requery.Table;
@Entity @Entity
@ -17,6 +20,7 @@ public class AbstractOpenPgpPublicKeyRing {
@Key @Key
@Column(name = "account_id", nullable = false) @Column(name = "account_id", nullable = false)
@ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE)
UUID accountId; UUID accountId;
@Key @Key

View file

@ -2,13 +2,16 @@ package org.mercury_im.messenger.data.model;
import org.jxmpp.jid.EntityBareJid; import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.data.converter.EntityBareJidConverter; import org.mercury_im.messenger.data.converter.EntityBareJidConverter;
import org.mercury_im.messenger.entity.Account;
import java.util.UUID; import java.util.UUID;
import io.requery.Column; import io.requery.Column;
import io.requery.Convert; import io.requery.Convert;
import io.requery.Entity; import io.requery.Entity;
import io.requery.ForeignKey;
import io.requery.Key; import io.requery.Key;
import io.requery.ReferentialAction;
import io.requery.Table; import io.requery.Table;
@Entity @Entity
@ -17,6 +20,7 @@ public class AbstractOpenPgpSecretKeyRing {
@Key @Key
@Column(name = "account_id", nullable = false) @Column(name = "account_id", nullable = false)
@ForeignKey(references = AbstractAccountModel.class, delete = ReferentialAction.CASCADE)
UUID accountId; UUID accountId;
@Key @Key

View file

@ -119,10 +119,10 @@ public class LoginViewModel implements MercuryViewModel {
Account account = createAccountEntity(); Account account = createAccountEntity();
MercuryConnection connection = connectionManager.createConnection(account); MercuryConnection connection = connectionManager.createConnection(account);
addDisposable(connection.connect() addDisposable(accountRepository.upsertAccount(account).ignoreElement()
.andThen(connection.connect())
.andThen(connection.login()) .andThen(connection.login())
.andThen(connectionManager.registerConnection(connection)) .andThen(connectionManager.registerConnection(connection))
.andThen(accountRepository.insertAccount(account))
.subscribeOn(schedulers.getNewThread()) .subscribeOn(schedulers.getNewThread())
.observeOn(schedulers.getUiScheduler()) .observeOn(schedulers.getUiScheduler())
.subscribe( .subscribe(
@ -140,8 +140,7 @@ public class LoginViewModel implements MercuryViewModel {
return account; return account;
} }
private void onLoginSuccessful(Account account) { private void onLoginSuccessful() {
LOGGER.log(Level.FINER, "Successfully added new account " + account);
isLoginSuccessful.onNext(true); isLoginSuccessful.onNext(true);
} }