From 7905693fc7fc646004316ac7bd10ed4630b4ef2b Mon Sep 17 00:00:00 2001 From: Paul Schaub Date: Sat, 21 Dec 2019 16:30:14 +0100 Subject: [PATCH] Fix duplicates from inserting --- .../mercury_im/messenger/Notifications.java | 8 ++++--- .../messenger/ui/account/LoginActivity.java | 2 +- .../messenger/ui/chat/ChatActivity.java | 8 ++++--- .../messenger/ui/chat/ChatViewModel.java | 3 ++- .../ContactListRecyclerViewAdapter.java | 2 +- .../messenger/data/di/RepositoryModule.java | 5 +++-- .../data/mapping/AccountMapping.java | 1 + .../data/mapping/DirectChatMapping.java | 1 + .../messenger/data/mapping/PeerMapping.java | 3 ++- .../data/model/AbstractAccountModel.java | 8 +++++-- .../data/model/AbstractDirectChatModel.java | 12 ++++++++--- .../data/model/AbstractGroupChatModel.java | 9 ++++++-- .../data/model/AbstractMessageModel.java | 7 +++++-- .../data/model/AbstractPeerModel.java | 12 ++++++++--- .../repository/XmppAccountRepository.java | 5 +++-- .../repository/XmppDirectChatRepository.java | 18 +++++++++------- .../repository/XmppGroupChatRepository.java | 9 ++++---- .../data/repository/XmppPeerRepository.java | 21 ++++++++++--------- .../data/repository/dao/AccountDao.java | 6 ++++-- .../data/repository/dao/DirectChatDao.java | 8 ++++--- .../data/repository/dao/GroupChatDao.java | 8 ++++--- .../data/repository/dao/MessageDao.java | 4 +++- .../data/mapping/AccountMappingTest.java | 16 +------------- .../data/mapping/PeerMappingTest.java | 4 ++-- .../repository/AccountRepositoryTest.java | 1 - .../org/mercury_im/messenger/Messenger.java | 3 ++- .../data/repository/AccountRepository.java | 5 +++-- .../data/repository/DirectChatRepository.java | 5 +++-- .../data/repository/GroupChatRepository.java | 9 ++++---- .../data/repository/PeerRepository.java | 15 ++++++------- .../messenger/store/MercuryRosterStore.java | 9 ++++++++ .../mercury_im/messenger/entity/Account.java | 6 ++++-- .../mercury_im/messenger/entity/IAccount.java | 13 ++++++++---- .../messenger/entity/chat/Chat.java | 6 ++++-- .../messenger/entity/chat/IDirectChat.java | 12 ++++++++--- .../messenger/entity/chat/IGroupChat.java | 11 +++++++--- .../messenger/entity/contact/IPeer.java | 12 ++++++++--- .../messenger/entity/contact/Peer.java | 6 ++++-- .../messenger/entity/message/IMessage.java | 7 ++++--- .../messenger/entity/message/Message.java | 5 +++-- 40 files changed, 190 insertions(+), 115 deletions(-) diff --git a/app/src/main/java/org/mercury_im/messenger/Notifications.java b/app/src/main/java/org/mercury_im/messenger/Notifications.java index 4d22b87..823d844 100644 --- a/app/src/main/java/org/mercury_im/messenger/Notifications.java +++ b/app/src/main/java/org/mercury_im/messenger/Notifications.java @@ -14,6 +14,8 @@ import androidx.core.app.NotificationManagerCompat; import org.mercury_im.messenger.entity.chat.DirectChat; import org.mercury_im.messenger.ui.chat.ChatActivity; +import java.util.UUID; + public class Notifications { public static final String NOTIFICATION_CHANNEL__FOREGROUND_SERVICE = "foreground_service"; @@ -62,7 +64,7 @@ public class Notifications { public static int directChatMessageReceived(Context context, DirectChat chat, String contactName, String body) { NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context); - int id = (int) chat.getId(); + UUID id = chat.getId(); Intent tapAction = new Intent(context, ChatActivity.class); tapAction.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); @@ -78,9 +80,9 @@ public class Notifications { builder.setContentIntent(pendingIntent); builder.setAutoCancel(true); - notificationManagerCompat.notify(id, builder.build()); + notificationManagerCompat.notify(id.hashCode(), builder.build()); - return id; + return id.hashCode(); } } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/account/LoginActivity.java b/app/src/main/java/org/mercury_im/messenger/ui/account/LoginActivity.java index 2211ef8..300f9d3 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/account/LoginActivity.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/account/LoginActivity.java @@ -149,7 +149,7 @@ public class LoginActivity extends AppCompatActivity implements TextView.OnEdito case R.id.password: if (actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_NULL) { - viewModel.login(); + //viewModel.login(); return true; } } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatActivity.java b/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatActivity.java index 9d3d934..a6e2064 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatActivity.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatActivity.java @@ -19,6 +19,8 @@ import org.jxmpp.jid.impl.JidCreate; import org.mercury_im.messenger.MercuryImApplication; import org.mercury_im.messenger.R; +import java.util.UUID; + import butterknife.BindView; import butterknife.ButterKnife; import io.reactivex.disposables.CompositeDisposable; @@ -44,7 +46,7 @@ public class ChatActivity extends AppCompatActivity private EntityBareJid jid; - private long accountId; + private UUID accountId; @Override protected void onCreate(Bundle savedInstanceState) { @@ -72,7 +74,7 @@ public class ChatActivity extends AppCompatActivity jid = JidCreate.entityBareFromOrThrowUnchecked(jidString); // JID will never change, so just set it once getSupportActionBar().setSubtitle(jid.asUnescapedString()); - accountId = savedInstanceState.getLong(EXTRA_ACCOUNT); + accountId = UUID.fromString(savedInstanceState.getString(EXTRA_ACCOUNT)); chatViewModel = new ViewModelProvider(this).get(ChatViewModel.class); chatViewModel.init(accountId, jid); @@ -144,7 +146,7 @@ public class ChatActivity extends AppCompatActivity @Override protected void onSaveInstanceState(@NonNull Bundle outState) { outState.putString(EXTRA_JID, jid.toString()); - outState.putLong(EXTRA_ACCOUNT, accountId); + outState.putString(EXTRA_ACCOUNT, accountId.toString()); super.onSaveInstanceState(outState); } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatViewModel.java b/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatViewModel.java index 159335a..626c1f3 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatViewModel.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/chat/ChatViewModel.java @@ -14,6 +14,7 @@ import org.mercury_im.messenger.entity.contact.Peer; import org.mercury_im.messenger.entity.message.Message; import java.util.List; +import java.util.UUID; import javax.inject.Inject; @@ -47,7 +48,7 @@ public class ChatViewModel extends ViewModel { MercuryImApplication.getApplication().getAppComponent().inject(this); } - public void init(long accountId, EntityBareJid jid) { + public void init(UUID accountId, EntityBareJid jid) { disposable.add(contactRepository.getOrCreatePeer(accountId, jid.toString()) .subscribe((Consumer) this::init)); } diff --git a/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListRecyclerViewAdapter.java index f6d075c..eefffda 100644 --- a/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListRecyclerViewAdapter.java +++ b/app/src/main/java/org/mercury_im/messenger/ui/roster/contacts/ContactListRecyclerViewAdapter.java @@ -74,7 +74,7 @@ public class ContactListRecyclerViewAdapter Intent intent = new Intent(context, ChatActivity.class); intent.putExtra(ChatActivity.EXTRA_JID, address); - intent.putExtra(ChatActivity.EXTRA_ACCOUNT, contact.getAccount().getId()); + intent.putExtra(ChatActivity.EXTRA_ACCOUNT, contact.getAccount().getId().toString()); context.startActivity(intent); }); diff --git a/data/src/main/java/org/mercury_im/messenger/data/di/RepositoryModule.java b/data/src/main/java/org/mercury_im/messenger/data/di/RepositoryModule.java index 9d2a91e..c0aeb38 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/di/RepositoryModule.java +++ b/data/src/main/java/org/mercury_im/messenger/data/di/RepositoryModule.java @@ -50,8 +50,9 @@ public class RepositoryModule { ReactiveEntityStore data, @Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler, @Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler, - PeerMapping peerMapping) { - return new XmppPeerRepository(data, ioScheduler, uiScheduler, peerMapping); + PeerMapping peerMapping, + AccountRepository accountRepository) { + return new XmppPeerRepository(data, ioScheduler, uiScheduler, peerMapping, accountRepository); } @Provides diff --git a/data/src/main/java/org/mercury_im/messenger/data/mapping/AccountMapping.java b/data/src/main/java/org/mercury_im/messenger/data/mapping/AccountMapping.java index f1d5103..88bd641 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/mapping/AccountMapping.java +++ b/data/src/main/java/org/mercury_im/messenger/data/mapping/AccountMapping.java @@ -25,6 +25,7 @@ public class AccountMapping extends AbstractMapping { @Override public AccountModel mapToModel(Account entity, AccountModel model) { + model.setId(entity.getId()); model.setAddress(entity.getAddress()); model.setPassword(entity.getPassword()); model.setHost(entity.getHost()); diff --git a/data/src/main/java/org/mercury_im/messenger/data/mapping/DirectChatMapping.java b/data/src/main/java/org/mercury_im/messenger/data/mapping/DirectChatMapping.java index 11b5c4e..54f1017 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/mapping/DirectChatMapping.java +++ b/data/src/main/java/org/mercury_im/messenger/data/mapping/DirectChatMapping.java @@ -28,6 +28,7 @@ public class DirectChatMapping extends AbstractMapping { @Override public PeerModel mapToModel(Peer entity, PeerModel model) { + model.setId(entity.getId()); model.setAccount(accountMapping.toModel(entity.getAccount(), model.getAccount())); model.setAddress(entity.getAddress()); model.setName(entity.getName()); @@ -40,9 +41,9 @@ public class PeerMapping extends AbstractMapping { @Override public Peer mapToEntity(PeerModel model, Peer entity) { + entity.setId(model.getId()); entity.setAccount(accountMapping.toEntity(model.getAccount(), entity.getAccount())); entity.setAddress(model.getAddress()); - entity.setId(model.getId()); entity.setSubscriptionDirection(model.getSubscriptionDirection()); entity.setSubscriptionPending(model.isSubscriptionPending()); diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractAccountModel.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractAccountModel.java index cbad27e..126693b 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractAccountModel.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractAccountModel.java @@ -1,19 +1,23 @@ package org.mercury_im.messenger.data.model; +import java.util.UUID; + import io.requery.Column; +import io.requery.Convert; import io.requery.Entity; import io.requery.Generated; import io.requery.Key; import io.requery.Persistable; import io.requery.Table; +import io.requery.converter.UUIDConverter; @Table(name = "accounts") @Entity public abstract class AbstractAccountModel implements Persistable { @Key - @Generated - long id; + @Convert(UUIDConverter.class) + UUID id; @Column(nullable = false) String address; diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractDirectChatModel.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractDirectChatModel.java index b9137a8..a79a2bc 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractDirectChatModel.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractDirectChatModel.java @@ -1,5 +1,9 @@ package org.mercury_im.messenger.data.model; +import java.util.UUID; + +import io.requery.CascadeAction; +import io.requery.Convert; import io.requery.Entity; import io.requery.ForeignKey; import io.requery.Generated; @@ -7,15 +11,17 @@ import io.requery.Key; import io.requery.OneToOne; import io.requery.Persistable; import io.requery.Table; +import io.requery.converter.UUIDConverter; @Entity @Table(name = "chats") public abstract class AbstractDirectChatModel implements Persistable { - @Key @Generated - long id; + @Key + @Convert(UUIDConverter.class) + UUID id; - @OneToOne + @OneToOne(cascade = CascadeAction.NONE) @ForeignKey(referencedColumn = "id") PeerModel peer; diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractGroupChatModel.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractGroupChatModel.java index ff66520..ae103f8 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractGroupChatModel.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractGroupChatModel.java @@ -1,19 +1,24 @@ package org.mercury_im.messenger.data.model; +import java.util.UUID; + import io.requery.Column; +import io.requery.Convert; import io.requery.Entity; import io.requery.Generated; import io.requery.Key; import io.requery.ManyToOne; import io.requery.Persistable; import io.requery.Table; +import io.requery.converter.UUIDConverter; @Entity @Table(name = "groupchats") public abstract class AbstractGroupChatModel implements Persistable { - @Key @Generated - long id; + @Key + @Convert(UUIDConverter.class) + UUID id; @Column(nullable = false) @ManyToOne diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractMessageModel.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractMessageModel.java index 81233ee..279c07c 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractMessageModel.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractMessageModel.java @@ -5,6 +5,7 @@ import org.mercury_im.messenger.entity.message.MessageDirection; import java.util.Date; import java.util.Set; +import java.util.UUID; import io.requery.Column; import io.requery.Convert; @@ -14,13 +15,15 @@ import io.requery.Key; import io.requery.OneToMany; import io.requery.Persistable; import io.requery.Table; +import io.requery.converter.UUIDConverter; @Entity @Table(name = "messages") public abstract class AbstractMessageModel implements Persistable { - @Key @Generated - long id; + @Key + @Convert(UUIDConverter.class) + UUID id; @Column(nullable = false) String sender; diff --git a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractPeerModel.java b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractPeerModel.java index a4a3df5..0029a06 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/model/AbstractPeerModel.java +++ b/data/src/main/java/org/mercury_im/messenger/data/model/AbstractPeerModel.java @@ -3,6 +3,9 @@ package org.mercury_im.messenger.data.model; import org.mercury_im.messenger.data.converter.SubscriptionDirectionConverter; import org.mercury_im.messenger.entity.contact.SubscriptionDirection; +import java.util.UUID; + +import io.requery.CascadeAction; import io.requery.Column; import io.requery.Convert; import io.requery.Entity; @@ -11,16 +14,19 @@ import io.requery.Generated; import io.requery.Key; import io.requery.ManyToOne; import io.requery.Persistable; +import io.requery.ReferentialAction; import io.requery.Table; +import io.requery.converter.UUIDConverter; @Entity @Table(name = "contacts") public abstract class AbstractPeerModel implements Persistable { - @Key @Generated - long id; + @Key + @Convert(UUIDConverter.class) + UUID id; - @ManyToOne + @ManyToOne(cascade = CascadeAction.NONE) @ForeignKey(referencedColumn = "id") AccountModel account; diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppAccountRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppAccountRepository.java index cd86bf0..5774bbb 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppAccountRepository.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppAccountRepository.java @@ -10,6 +10,7 @@ import org.mercury_im.messenger.util.ThreadUtils; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.UUID; import javax.inject.Inject; import javax.inject.Named; @@ -52,7 +53,7 @@ public class XmppAccountRepository } @Override - public Observable> observeAccount(long accountId) { + public Observable> observeAccount(UUID accountId) { return dao.get(accountId).observableResult() .map(ResultDelegate::firstOrNull) .map(accountMapping::toEntity) @@ -62,7 +63,7 @@ public class XmppAccountRepository } @Override - public Maybe getAccount(long accountId) { + public Maybe getAccount(UUID accountId) { return dao.get(accountId).maybe() .map(accountMapping::toEntity) .subscribeOn(subscriberScheduler()) diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppDirectChatRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppDirectChatRepository.java index ce37e84..28930b0 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppDirectChatRepository.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppDirectChatRepository.java @@ -11,6 +11,7 @@ import org.mercury_im.messenger.util.ThreadUtils; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import javax.inject.Inject; import javax.inject.Named; @@ -57,7 +58,7 @@ public class XmppDirectChatRepository } @Override - public Observable> observeDirectChat(long chatId) { + public Observable> observeDirectChat(UUID chatId) { return dao.get(chatId).observableResult() .map(ResultDelegate::firstOrNull) .map(directChatMapping::toEntity) @@ -67,7 +68,7 @@ public class XmppDirectChatRepository } @Override - public Maybe getDirectChat(long chatId) { + public Maybe getDirectChat(UUID chatId) { return dao.get(chatId).maybe() .map(directChatMapping::toEntity) .subscribeOn(subscriberScheduler()) @@ -77,12 +78,13 @@ public class XmppDirectChatRepository @Override public Single getOrCreateChatWithPeer(Peer peer) { return getDirectChatByPeer(peer) - .switchIfEmpty(insertDirectChat(new IDirectChat(){ - { - setAccount(peer.getAccount()); - setPeer(peer); - } - })) + .switchIfEmpty(Single.just(new IDirectChat()) + .map(chat -> { + chat.setAccount(peer.getAccount()); + chat.setPeer(peer); + return chat; + }) + .flatMap(this::insertDirectChat)) .subscribeOn(subscriberScheduler()) .observeOn(observerScheduler()); } diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppGroupChatRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppGroupChatRepository.java index 98ece17..f83d82a 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppGroupChatRepository.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppGroupChatRepository.java @@ -11,6 +11,7 @@ import org.mercury_im.messenger.util.ThreadUtils; import java.util.ArrayList; import java.util.List; +import java.util.UUID; import javax.inject.Inject; import javax.inject.Named; @@ -54,7 +55,7 @@ public class XmppGroupChatRepository } @Override - public Observable> observeGroupChat(long chatId) { + public Observable> observeGroupChat(UUID chatId) { return dao.get(chatId).observableResult() .map(ResultDelegate::firstOrNull) .map(groupChatMapping::toEntity) @@ -64,7 +65,7 @@ public class XmppGroupChatRepository } @Override - public Maybe getGroupChat(long chatId) { + public Maybe getGroupChat(UUID chatId) { return dao.get(chatId).maybe() .map(groupChatMapping::toEntity) .subscribeOn(subscriberScheduler()) @@ -87,7 +88,7 @@ public class XmppGroupChatRepository } @Override - public Observable> observeGroupChatByRoomAddress(long accountId, String roomAddress) { + public Observable> observeGroupChatByRoomAddress(UUID accountId, String roomAddress) { return dao.get(accountId, roomAddress).observableResult() .map(ResultDelegate::firstOrNull) .map(groupChatMapping::toEntity) @@ -97,7 +98,7 @@ public class XmppGroupChatRepository } @Override - public Maybe getGroupChatByRoomAddress(long accountId, String roomAddress) { + public Maybe getGroupChatByRoomAddress(UUID accountId, String roomAddress) { return dao.get(accountId, roomAddress).maybe() .map(groupChatMapping::toEntity) .subscribeOn(subscriberScheduler()) diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java index a3edc87..f297825 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/XmppPeerRepository.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.UUID; import javax.inject.Inject; import javax.inject.Named; @@ -30,8 +31,7 @@ public class XmppPeerRepository extends RequeryRepository implements PeerRepository { - @Inject - AccountRepository accountRepository; + private final AccountRepository accountRepository; private final PeerMapping peerMapping; @@ -39,9 +39,10 @@ public class XmppPeerRepository public XmppPeerRepository(ReactiveEntityStore data, @Named(value = ThreadUtils.SCHEDULER_IO) Scheduler subscriberScheduler, @Named(value = ThreadUtils.SCHEDULER_UI) Scheduler observerScheduler, - PeerMapping peerMapping) { + PeerMapping peerMapping, AccountRepository accountRepository) { super(data, subscriberScheduler, observerScheduler); this.peerMapping = peerMapping; + this.accountRepository = accountRepository; } @Override @@ -53,7 +54,7 @@ public class XmppPeerRepository } @Override - public Observable> observePeer(long peerId) { + public Observable> observePeer(UUID peerId) { return data().select(PeerModel.class) .where(PeerModel.ID.eq(peerId)) .get().observableResult() @@ -63,7 +64,7 @@ public class XmppPeerRepository } @Override - public Maybe getPeer(long peerId) { + public Maybe getPeer(UUID peerId) { return data().select(PeerModel.class) .where(PeerModel.ID.eq(peerId)) .get().maybe() @@ -73,7 +74,7 @@ public class XmppPeerRepository } @Override - public Observable> observePeerByAddress(long accountId, String address) { + public Observable> observePeerByAddress(UUID accountId, String address) { return data().select(PeerModel.class) .where(PeerModel.ACCOUNT_ID.eq(accountId)) .and(PeerModel.ADDRESS.eq(address)) @@ -86,13 +87,13 @@ public class XmppPeerRepository } @Override - public Single getOrCreatePeer(long accountId, String address) { + public Single getOrCreatePeer(UUID accountId, String address) { return accountRepository.getAccount(accountId).toSingle() .flatMap(account -> getOrCreatePeer(account, address)); } @Override - public Maybe getPeerByAddress(long accountId, String address) { + public Maybe getPeerByAddress(UUID accountId, String address) { return data().select(PeerModel.class) .where(PeerModel.ACCOUNT_ID.eq(accountId)) .and(PeerModel.ADDRESS.eq(address)) @@ -134,7 +135,7 @@ public class XmppPeerRepository } @Override - public Observable> observeAllContactsOfAccount(long accountId) { + public Observable> observeAllContactsOfAccount(UUID accountId) { return data().select(PeerModel.class) .where(PeerModel.ACCOUNT_ID.eq(accountId)) .and(PeerModel.SUBSCRIPTION_DIRECTION.in( @@ -194,7 +195,7 @@ public class XmppPeerRepository } @Override - public Completable deletePeer(long accountId, String address) { + public Completable deletePeer(UUID accountId, String address) { return null; } } diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/dao/AccountDao.java b/data/src/main/java/org/mercury_im/messenger/data/repository/dao/AccountDao.java index 2aa5cca..3aaf9d4 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/dao/AccountDao.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/dao/AccountDao.java @@ -2,6 +2,8 @@ package org.mercury_im.messenger.data.repository.dao; import org.mercury_im.messenger.data.model.AccountModel; +import java.util.UUID; + import javax.inject.Inject; import io.reactivex.Single; @@ -20,7 +22,7 @@ public class AccountDao extends RequeryDao { return data().insert(account); } - public ReactiveResult get(long accountId) { + public ReactiveResult get(UUID accountId) { return data().select(AccountModel.class) .where(AccountModel.ID.eq(accountId)) .get(); @@ -37,7 +39,7 @@ public class AccountDao extends RequeryDao { .get(); } - public Single delete(long accountId) { + public Single delete(UUID accountId) { return data().delete(AccountModel.class) .where(AccountModel.ID.eq(accountId)) .get().single(); diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/dao/DirectChatDao.java b/data/src/main/java/org/mercury_im/messenger/data/repository/dao/DirectChatDao.java index ffe372b..6f7f68b 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/dao/DirectChatDao.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/dao/DirectChatDao.java @@ -2,6 +2,8 @@ package org.mercury_im.messenger.data.repository.dao; import org.mercury_im.messenger.data.model.DirectChatModel; +import java.util.UUID; + import javax.inject.Inject; import io.reactivex.Single; @@ -20,13 +22,13 @@ public class DirectChatDao extends RequeryDao { return data().insert(chat); } - public ReactiveResult get(long chatId) { + public ReactiveResult get(UUID chatId) { return data().select(DirectChatModel.class) .where(DirectChatModel.ID.eq(chatId)) .get(); } - public ReactiveResult getByPeer(long peerId) { + public ReactiveResult getByPeer(UUID peerId) { return data().select(DirectChatModel.class) .where(DirectChatModel.PEER_ID.eq(peerId)) .get(); @@ -37,7 +39,7 @@ public class DirectChatDao extends RequeryDao { .get(); } - public Single delete(long chatId) { + public Single delete(UUID chatId) { return data().delete(DirectChatModel.class) .where(DirectChatModel.ID.eq(chatId)) .get() diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/dao/GroupChatDao.java b/data/src/main/java/org/mercury_im/messenger/data/repository/dao/GroupChatDao.java index 571f5c9..9997ceb 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/dao/GroupChatDao.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/dao/GroupChatDao.java @@ -2,6 +2,8 @@ package org.mercury_im.messenger.data.repository.dao; import org.mercury_im.messenger.data.model.GroupChatModel; +import java.util.UUID; + import javax.inject.Inject; import io.reactivex.Single; @@ -20,13 +22,13 @@ public class GroupChatDao extends RequeryDao { return data().insert(chat); } - public ReactiveResult get(long chatId) { + public ReactiveResult get(UUID chatId) { return data().select(GroupChatModel.class) .where(GroupChatModel.ID.eq(chatId)) .get(); } - public ReactiveResult get(long accountId, String address) { + public ReactiveResult get(UUID accountId, String address) { return data().select(GroupChatModel.class) .where(GroupChatModel.ACCOUNT_ID.eq(accountId)) .and(GroupChatModel.ADDRESS.eq(address)) @@ -38,7 +40,7 @@ public class GroupChatDao extends RequeryDao { .get(); } - public Single delete(long chatId) { + public Single delete(UUID chatId) { return data().delete(GroupChatModel.class) .where(GroupChatModel.ID.eq(chatId)) .get() diff --git a/data/src/main/java/org/mercury_im/messenger/data/repository/dao/MessageDao.java b/data/src/main/java/org/mercury_im/messenger/data/repository/dao/MessageDao.java index 5e8bc8f..c9c6a5f 100644 --- a/data/src/main/java/org/mercury_im/messenger/data/repository/dao/MessageDao.java +++ b/data/src/main/java/org/mercury_im/messenger/data/repository/dao/MessageDao.java @@ -6,6 +6,8 @@ import org.mercury_im.messenger.data.model.GroupChatModel; import org.mercury_im.messenger.data.model.GroupMessagesRelation; import org.mercury_im.messenger.data.model.MessageModel; +import java.util.UUID; + import io.reactivex.Single; import io.requery.Persistable; import io.requery.reactivex.ReactiveEntityStore; @@ -26,7 +28,7 @@ public class MessageDao extends RequeryDao { return data().insert(message); } - public ReactiveResult get(long messageId) { + public ReactiveResult get(UUID messageId) { return data().select(MessageModel.class) .where(MessageModel.ID.eq(messageId)) .get(); diff --git a/data/src/test/java/org/mercury_im/messenger/data/mapping/AccountMappingTest.java b/data/src/test/java/org/mercury_im/messenger/data/mapping/AccountMappingTest.java index 6d0eb6b..19bf72e 100644 --- a/data/src/test/java/org/mercury_im/messenger/data/mapping/AccountMappingTest.java +++ b/data/src/test/java/org/mercury_im/messenger/data/mapping/AccountMappingTest.java @@ -25,13 +25,11 @@ public class AccountMappingTest { static { ACCOUNT_MISSION_CONTROL = new IAccount(); - ACCOUNT_MISSION_CONTROL.setId(1); ACCOUNT_MISSION_CONTROL.setAddress("mission-controll@planet.earth"); ACCOUNT_MISSION_CONTROL.setEnabled(true); ACCOUNT_MISSION_CONTROL.setPassword("notBecauseTheyAreEasy"); ACCOUNT_LITTLE_JOE = new IAccount(); - ACCOUNT_LITTLE_JOE.setId(2); ACCOUNT_LITTLE_JOE.setAddress("little-joe@planet.earth"); ACCOUNT_LITTLE_JOE.setEnabled(false); ACCOUNT_LITTLE_JOE.setPassword("butBecauseTheyAreHard"); @@ -47,7 +45,7 @@ public class AccountMappingTest { AccountModel model = accountMapping.toModel(ACCOUNT_MISSION_CONTROL); assertEquals("Since we cannot set the id of the model in the mapper, it is still 0.", - 0, model.getId()); + ACCOUNT_MISSION_CONTROL.getId(), model.getId()); assertNotSame(ACCOUNT_MISSION_CONTROL.getId(), model.getId()); assertEquals(ACCOUNT_MISSION_CONTROL.getAddress(), model.getAddress()); assertEquals(ACCOUNT_MISSION_CONTROL.getPassword(), model.getPassword()); @@ -62,22 +60,10 @@ public class AccountMappingTest { model.setEnabled(true); model.setPassword("12345"); - // I hate reflections... Set ID to 12 - setIdUsingReflections(model, 12L); - - assertEquals(12L, model.getId()); - Account entity = accountMapping.toEntity(model); assertEquals(model.getId(), entity.getId()); assertEquals(model.getAddress(), entity.getAddress()); assertEquals(model.getPassword(), entity.getPassword()); } - - private void setIdUsingReflections(AccountModel model, long id) throws NoSuchFieldException, IllegalAccessException { - Field field = model.getClass().getDeclaredField("$proxy"); - field.setAccessible(true); - EntityProxy proxy = (EntityProxy) field.get(model); - proxy.set(AccountModel.ID, id); - } } diff --git a/data/src/test/java/org/mercury_im/messenger/data/mapping/PeerMappingTest.java b/data/src/test/java/org/mercury_im/messenger/data/mapping/PeerMappingTest.java index 32a5dd7..84745ca 100644 --- a/data/src/test/java/org/mercury_im/messenger/data/mapping/PeerMappingTest.java +++ b/data/src/test/java/org/mercury_im/messenger/data/mapping/PeerMappingTest.java @@ -6,6 +6,7 @@ import org.mercury_im.messenger.data.model.AccountModel; import org.mercury_im.messenger.data.model.PeerModel; import org.mercury_im.messenger.entity.contact.IPeer; import org.mercury_im.messenger.entity.contact.Peer; +import org.mercury_im.messenger.entity.contact.SubscriptionDirection; import javax.inject.Inject; @@ -21,10 +22,9 @@ public class PeerMappingTest { static { PEER_GORDO = new IPeer(); PEER_GORDO.setAccount(AccountMappingTest.ACCOUNT_MISSION_CONTROL); - PEER_GORDO.setId(1); PEER_GORDO.setAddress("gordo@big.joe"); PEER_GORDO.setName("Gordo"); - PEER_GORDO.setSubscriptionDirection(SubscriptionMode.TO_THEM_ACCEPTED_PREAPPROVED); + PEER_GORDO.setSubscriptionDirection(SubscriptionDirection.both); } public PeerMappingTest() { diff --git a/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java b/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java index dddc8f1..d3383ca 100644 --- a/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java +++ b/data/src/test/java/org/mercury_im/messenger/data/repository/AccountRepositoryTest.java @@ -53,7 +53,6 @@ public class AccountRepositoryTest { d.add(accountRepository.insertAccount(a1).subscribe()); Thread.sleep(100); - a1.setId(1); Account a2 = new IAccount(); a2.setAddress("a2@example.com"); diff --git a/domain/src/main/java/org/mercury_im/messenger/Messenger.java b/domain/src/main/java/org/mercury_im/messenger/Messenger.java index 2fbc6b6..012cda8 100644 --- a/domain/src/main/java/org/mercury_im/messenger/Messenger.java +++ b/domain/src/main/java/org/mercury_im/messenger/Messenger.java @@ -12,6 +12,7 @@ import org.mercury_im.messenger.xmpp.MercuryConnection; import java.util.HashMap; import java.util.Map; +import java.util.UUID; import java.util.logging.Level; import java.util.logging.Logger; @@ -22,7 +23,7 @@ public class Messenger implements ClientStateListener { public static final String TAG = "MercuryIM"; private static final Logger LOGGER = Logger.getLogger(Messenger.class.getName()); - private final Map connections = new HashMap<>(); + private final Map connections = new HashMap<>(); private Repositories repositories; @Inject diff --git a/domain/src/main/java/org/mercury_im/messenger/data/repository/AccountRepository.java b/domain/src/main/java/org/mercury_im/messenger/data/repository/AccountRepository.java index 9b8baea..5524d0a 100644 --- a/domain/src/main/java/org/mercury_im/messenger/data/repository/AccountRepository.java +++ b/domain/src/main/java/org/mercury_im/messenger/data/repository/AccountRepository.java @@ -4,6 +4,7 @@ import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.util.Optional; import java.util.List; +import java.util.UUID; import io.reactivex.Completable; import io.reactivex.Maybe; @@ -14,9 +15,9 @@ public interface AccountRepository { Single insertAccount(Account account); - Observable> observeAccount(long accountId); + Observable> observeAccount(UUID accountId); - Maybe getAccount(long accountId); + Maybe getAccount(UUID accountId); Observable> observeAccountByAddress(String address); diff --git a/domain/src/main/java/org/mercury_im/messenger/data/repository/DirectChatRepository.java b/domain/src/main/java/org/mercury_im/messenger/data/repository/DirectChatRepository.java index ed592d0..ad8bf09 100644 --- a/domain/src/main/java/org/mercury_im/messenger/data/repository/DirectChatRepository.java +++ b/domain/src/main/java/org/mercury_im/messenger/data/repository/DirectChatRepository.java @@ -5,6 +5,7 @@ import org.mercury_im.messenger.entity.chat.DirectChat; import org.mercury_im.messenger.entity.contact.Peer; import java.util.List; +import java.util.UUID; import io.reactivex.Completable; import io.reactivex.Maybe; @@ -19,9 +20,9 @@ public interface DirectChatRepository { return observeDirectChat(chat.getId()); } - Observable> observeDirectChat(long chatId); + Observable> observeDirectChat(UUID chatId); - Maybe getDirectChat(long chatId); + Maybe getDirectChat(UUID chatId); Single getOrCreateChatWithPeer(Peer peer); diff --git a/domain/src/main/java/org/mercury_im/messenger/data/repository/GroupChatRepository.java b/domain/src/main/java/org/mercury_im/messenger/data/repository/GroupChatRepository.java index a86abad..b9a980b 100644 --- a/domain/src/main/java/org/mercury_im/messenger/data/repository/GroupChatRepository.java +++ b/domain/src/main/java/org/mercury_im/messenger/data/repository/GroupChatRepository.java @@ -5,6 +5,7 @@ import org.mercury_im.messenger.entity.chat.GroupChat; import org.mercury_im.messenger.util.Optional; import java.util.List; +import java.util.UUID; import io.reactivex.Completable; import io.reactivex.Maybe; @@ -15,9 +16,9 @@ public interface GroupChatRepository { Single insertGroupChat(GroupChat chat); - Observable> observeGroupChat(long chatId); + Observable> observeGroupChat(UUID chatId); - Maybe getGroupChat(long chatId); + Maybe getGroupChat(UUID chatId); Single getOrCreateGroupChat(Account account, String roomAddress); @@ -25,13 +26,13 @@ public interface GroupChatRepository { return observeGroupChatByRoomAddress(account.getId(), roomAddress); } - Observable> observeGroupChatByRoomAddress(long accountId, String roomAddress); + Observable> observeGroupChatByRoomAddress(UUID accountId, String roomAddress); default Maybe getGroupChatByRoomAddress(Account account, String roomAddress) { return getGroupChatByRoomAddress(account.getId(), roomAddress); } - Maybe getGroupChatByRoomAddress(long accountId, String roomAddress); + Maybe getGroupChatByRoomAddress(UUID accountId, String roomAddress); Observable> observeAllGroupChats(); diff --git a/domain/src/main/java/org/mercury_im/messenger/data/repository/PeerRepository.java b/domain/src/main/java/org/mercury_im/messenger/data/repository/PeerRepository.java index ff161ba..d3585c7 100644 --- a/domain/src/main/java/org/mercury_im/messenger/data/repository/PeerRepository.java +++ b/domain/src/main/java/org/mercury_im/messenger/data/repository/PeerRepository.java @@ -5,6 +5,7 @@ import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.entity.contact.Peer; import java.util.List; +import java.util.UUID; import io.reactivex.Completable; import io.reactivex.Maybe; @@ -19,25 +20,25 @@ public interface PeerRepository { return observePeer(peer.getId()); } - Observable> observePeer(long PeerId); + Observable> observePeer(UUID PeerId); - Maybe getPeer(long PeerId); + Maybe getPeer(UUID PeerId); default Observable> observePeerByAddress(Account account, String address) { return observePeerByAddress(account.getId(), address); } - Observable> observePeerByAddress(long accountId, String address); + Observable> observePeerByAddress(UUID accountId, String address); default Maybe getPeerByAddress(Account account, String address) { return getPeerByAddress(account.getId(), address); } - Maybe getPeerByAddress(long accountId, String address); + Maybe getPeerByAddress(UUID accountId, String address); Single getOrCreatePeer(Account account, String address); - Single getOrCreatePeer(long accountId, String address); + Single getOrCreatePeer(UUID accountId, String address); Observable> observeAllPeers(); @@ -45,7 +46,7 @@ public interface PeerRepository { return observeAllContactsOfAccount(account.getId()); } - Observable> observeAllContactsOfAccount(long accountId); + Observable> observeAllContactsOfAccount(UUID accountId); Single updatePeer(Peer Peer); @@ -53,5 +54,5 @@ public interface PeerRepository { Completable deletePeer(Peer Peer); - Completable deletePeer(long accountId, String address); + Completable deletePeer(UUID accountId, String address); } diff --git a/domain/src/main/java/org/mercury_im/messenger/store/MercuryRosterStore.java b/domain/src/main/java/org/mercury_im/messenger/store/MercuryRosterStore.java index e3acd82..71e94f2 100644 --- a/domain/src/main/java/org/mercury_im/messenger/store/MercuryRosterStore.java +++ b/domain/src/main/java/org/mercury_im/messenger/store/MercuryRosterStore.java @@ -39,6 +39,7 @@ public class MercuryRosterStore implements RosterStore { this.account = account; this.peerRepository = rosterRepository; this.accountRepository = accountRepository; + LOGGER.log(Level.INFO, "Construct Roster Store for " + account.getId()); } public void subscribe() { @@ -93,6 +94,10 @@ public class MercuryRosterStore implements RosterStore { // Update database Peer contact = toEntity(item); disposable.add(peerRepository.upsertPeer(contact) + .map(p -> { + LOGGER.log(Level.INFO, "Unserted Peer for account " + p.getAccount().getId()); + return p; + }) .subscribe( success -> LOGGER.log(Level.FINE, "Upserted contact model " + success + " successfully"), error -> LOGGER.log(Level.WARNING, "An error occurred upserting contact " + contact, error) @@ -116,6 +121,10 @@ public class MercuryRosterStore implements RosterStore { for (RosterPacket.Item item : items) { Peer model = toEntity(item); disposable.add(peerRepository.upsertPeer(model) + .map(p -> { + LOGGER.log(Level.INFO, "Unserted Peer for account " + p.getAccount().getId()); + return p; + }) .subscribe( success -> LOGGER.log(Level.FINE, "Upserted contact model " + success + " successfully"), error -> LOGGER.log(Level.WARNING, "An error occurred upserting contact " + model, error) diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/Account.java b/entity/src/main/java/org/mercury_im/messenger/entity/Account.java index 44593cc..814f813 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/Account.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/Account.java @@ -1,5 +1,7 @@ package org.mercury_im.messenger.entity; +import java.util.UUID; + /** * User Account entity. * @@ -7,9 +9,9 @@ package org.mercury_im.messenger.entity; */ public interface Account { - void setId(long id); + void setId(UUID id); - long getId(); + UUID getId(); void setAddress(String address); diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/IAccount.java b/entity/src/main/java/org/mercury_im/messenger/entity/IAccount.java index a1094c2..3248b5c 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/IAccount.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/IAccount.java @@ -1,22 +1,27 @@ package org.mercury_im.messenger.entity; +import java.util.UUID; + public class IAccount implements Account { - protected long id; + protected UUID id; protected String address; protected String password; protected String host; protected int port; protected boolean enabled; - @Override - public void setId(long id) { + public IAccount() { + this.id = UUID.randomUUID(); + } + @Override + public void setId(UUID id) { this.id = id; } @Override - public long getId() { + public UUID getId() { return id; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/Chat.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/Chat.java index 19fd2c6..a100aba 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/Chat.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/chat/Chat.java @@ -2,6 +2,8 @@ package org.mercury_im.messenger.entity.chat; import org.mercury_im.messenger.entity.Account; +import java.util.UUID; + /** * Generic interface defining shared properties of chats. * @@ -9,9 +11,9 @@ import org.mercury_im.messenger.entity.Account; */ public interface Chat { - long getId(); + UUID getId(); - void setId(long id); + void setId(UUID id); Account getAccount(); diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IDirectChat.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/IDirectChat.java index 5a37e9c..892d592 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IDirectChat.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/chat/IDirectChat.java @@ -3,13 +3,19 @@ package org.mercury_im.messenger.entity.chat; import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.entity.contact.Peer; +import java.util.UUID; + public class IDirectChat implements DirectChat { - protected long id; + protected UUID id; protected Peer peer; protected Account account; protected ChatPreferences preferences; + public IDirectChat() { + this.id = UUID.randomUUID(); + } + @Override public Peer getPeer() { return peer; @@ -21,12 +27,12 @@ public class IDirectChat implements DirectChat { } @Override - public long getId() { + public UUID getId() { return id; } @Override - public void setId(long id) { + public void setId(UUID id) { this.id = id; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IGroupChat.java b/entity/src/main/java/org/mercury_im/messenger/entity/chat/IGroupChat.java index b7e87f6..1233321 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/chat/IGroupChat.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/chat/IGroupChat.java @@ -4,16 +4,21 @@ import org.mercury_im.messenger.entity.Account; import org.mercury_im.messenger.entity.contact.Peer; import java.util.Set; +import java.util.UUID; public class IGroupChat implements GroupChat { - private long id; + private UUID id; private Account account; private String roomAddress; private String roomName; protected ChatPreferences preferences; protected Set participants; + public IGroupChat() { + this.id = UUID.randomUUID(); + } + @Override public Set getParticipants() { return participants; @@ -45,12 +50,12 @@ public class IGroupChat implements GroupChat { } @Override - public long getId() { + public UUID getId() { return id; } @Override - public void setId(long id) { + public void setId(UUID id) { this.id = id; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/contact/IPeer.java b/entity/src/main/java/org/mercury_im/messenger/entity/contact/IPeer.java index e8be5d1..0cadba8 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/contact/IPeer.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/contact/IPeer.java @@ -2,9 +2,11 @@ package org.mercury_im.messenger.entity.contact; import org.mercury_im.messenger.entity.Account; +import java.util.UUID; + public class IPeer implements Peer { - protected long id; + protected UUID id; protected Account account; protected String address; protected String name; @@ -12,13 +14,17 @@ public class IPeer implements Peer { protected boolean pending; protected boolean approved; + public IPeer() { + this.id = UUID.randomUUID(); + } + @Override - public long getId() { + public UUID getId() { return id; } @Override - public void setId(long id) { + public void setId(UUID id) { this.id = id; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java b/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java index cd57826..5d82b26 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/contact/Peer.java @@ -2,6 +2,8 @@ package org.mercury_im.messenger.entity.contact; import org.mercury_im.messenger.entity.Account; +import java.util.UUID; + /** * Defines a user on the network (eg. a contact, chat partner, group chat member etc). * Basically anyone that may send you a message is a Peer. @@ -10,9 +12,9 @@ import org.mercury_im.messenger.entity.Account; */ public interface Peer { - long getId(); + UUID getId(); - void setId(long id); + void setId(UUID id); Account getAccount(); diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessage.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessage.java index c708497..1035831 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessage.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/message/IMessage.java @@ -2,10 +2,11 @@ package org.mercury_im.messenger.entity.message; import java.util.Date; import java.util.List; +import java.util.UUID; public class IMessage implements Message { - protected long id; + protected UUID id; protected String sender; protected String recipient; protected Date timestamp; @@ -16,12 +17,12 @@ public class IMessage implements Message { @Override - public long getId() { + public UUID getId() { return id; } @Override - public void setId(long id) { + public void setId(UUID id) { this.id = id; } diff --git a/entity/src/main/java/org/mercury_im/messenger/entity/message/Message.java b/entity/src/main/java/org/mercury_im/messenger/entity/message/Message.java index 9253823..affed75 100644 --- a/entity/src/main/java/org/mercury_im/messenger/entity/message/Message.java +++ b/entity/src/main/java/org/mercury_im/messenger/entity/message/Message.java @@ -2,12 +2,13 @@ package org.mercury_im.messenger.entity.message; import java.util.Date; import java.util.List; +import java.util.UUID; public interface Message { - long getId(); + UUID getId(); - void setId(long id); + void setId(UUID id); String getSender();