Simplified and optimized sync related code in LocalDB
This commit is contained in:
		@@ -147,80 +147,83 @@ public class LocalDB {
 | 
			
		||||
 | 
			
		||||
	public void applySync(Sync returnSync) {
 | 
			
		||||
		for (int i = 0; i < returnSync.getMessages().size(); i++) {
 | 
			
		||||
			if (returnSync.getMessages().get(i).getMetadata().getMessageId() != 0
 | 
			
		||||
					&& returnSync.getMessages().get(i).getMetadata().getState() == MessageState.SENT) {
 | 
			
		||||
				// Update Local Messages with State WAITING (add Message ID and change State to
 | 
			
		||||
				// SENT)
 | 
			
		||||
				for (int j = 0; j < sync.getMessages().size(); j++) {
 | 
			
		||||
					if (j == i) {
 | 
			
		||||
						sync.getMessages().get(j).getMetadata().setMessageId(returnSync.getMessages().get(j).getMetadata().getMessageId());
 | 
			
		||||
						sync.getMessages().get(j).getMetadata().setState(returnSync.getMessages().get(j).getMetadata().getState());
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if (returnSync.getMessages().get(i).getMetadata().getMessageId() != 0 && returnSync.getMessages().get(i).getMetadata().getSender() != 0
 | 
			
		||||
					&& returnSync.getMessages().get(i).getMetadata().getState() == MessageState.RECEIVED) {
 | 
			
		||||
				// these are the unread Messages from the server
 | 
			
		||||
				unreadMessagesSync.getMessages().add(returnSync.getMessages().get(i));
 | 
			
		||||
 | 
			
		||||
				// Create and dispatch message creation event
 | 
			
		||||
				EventBus.getInstance().dispatch(new MessageCreationEvent(returnSync.getMessages().get(i)));
 | 
			
		||||
			}
 | 
			
		||||
			// The message has an ID
 | 
			
		||||
			if (returnSync.getMessages().get(i).getMetadata().getMessageId() != 0) {
 | 
			
		||||
 | 
			
		||||
			if (returnSync.getMessages().get(i).getMetadata().getMessageId() != 0 && returnSync.getMessages().get(i).getMetadata().getSender() == 0
 | 
			
		||||
					&& returnSync.getMessages().get(i).getMetadata().getState() == MessageState.RECEIVED) {
 | 
			
		||||
				// Update Messages in localDB to state RECEIVED
 | 
			
		||||
				for (int j = 0; j < getChats().size(); j++) {
 | 
			
		||||
					if (getChats().get(j).getRecipient().getID() == returnSync.getMessages().get(i).getMetadata().getRecipient()) {
 | 
			
		||||
						for (int k = 0; k < getChats().get(j).getModel().getSize(); k++) {
 | 
			
		||||
							if (getChats().get(j).getModel().get(k).getMetadata().getMessageId() == returnSync.getMessages()
 | 
			
		||||
								.get(i)
 | 
			
		||||
								.getMetadata()
 | 
			
		||||
								.getMessageId()) {
 | 
			
		||||
								// Update Message in LocalDB
 | 
			
		||||
								getChats().get(j).getModel().get(k).getMetadata().setState(returnSync.getMessages().get(j).getMetadata().getState());
 | 
			
		||||
				// Messages are processes differently corresponding to their state
 | 
			
		||||
				switch (returnSync.getMessages().get(i).getMetadata().getState()) {
 | 
			
		||||
					case SENT:
 | 
			
		||||
						// Update previously waiting and now sent messages that were assigned an ID by
 | 
			
		||||
						// the server
 | 
			
		||||
						sync.getMessages().get(i).getMetadata().setMessageId(returnSync.getMessages().get(i).getMetadata().getMessageId());
 | 
			
		||||
						sync.getMessages().get(i).getMetadata().setState(returnSync.getMessages().get(i).getMetadata().getState());
 | 
			
		||||
						break;
 | 
			
		||||
					case RECEIVED:
 | 
			
		||||
						if (returnSync.getMessages().get(i).getMetadata().getSender() != 0) {
 | 
			
		||||
							// these are the unread Messages from the server
 | 
			
		||||
							unreadMessagesSync.getMessages().add(returnSync.getMessages().get(i));
 | 
			
		||||
 | 
			
		||||
							// Create and dispatch message creation event
 | 
			
		||||
							EventBus.getInstance().dispatch(new MessageCreationEvent(returnSync.getMessages().get(i)));
 | 
			
		||||
						} else {
 | 
			
		||||
							// Update Messages in localDB to state RECEIVED
 | 
			
		||||
							for (int j = 0; j < getChats().size(); j++) {
 | 
			
		||||
								if (getChats().get(j).getRecipient().getID() == returnSync.getMessages().get(i).getMetadata().getRecipient()) {
 | 
			
		||||
									for (int k = 0; k < getChats().get(j).getModel().getSize(); k++) {
 | 
			
		||||
										if (getChats().get(j).getModel().get(k).getMetadata().getMessageId() == returnSync.getMessages()
 | 
			
		||||
											.get(i)
 | 
			
		||||
											.getMetadata()
 | 
			
		||||
											.getMessageId()) {
 | 
			
		||||
											// Update Message in LocalDB
 | 
			
		||||
											getChats().get(j)
 | 
			
		||||
												.getModel()
 | 
			
		||||
												.get(k)
 | 
			
		||||
												.getMetadata()
 | 
			
		||||
												.setState(returnSync.getMessages().get(j).getMetadata().getState());
 | 
			
		||||
										}
 | 
			
		||||
									}
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (returnSync.getMessages().get(i).getMetadata().getMessageId() != 0
 | 
			
		||||
					&& returnSync.getMessages().get(i).getMetadata().getState() == MessageState.READ) {
 | 
			
		||||
				// Update local Messages to state READ
 | 
			
		||||
				System.out.println("Message with ID: " + returnSync.getMessages().get(i).getMetadata().getMessageId()
 | 
			
		||||
						+ "was initialized to be set to READ in localDB.");
 | 
			
		||||
				for (int j = 0; j < getChats().size(); j++) {
 | 
			
		||||
					if (getChats().get(j).getRecipient().getID() == returnSync.getMessages().get(i).getMetadata().getRecipient()) {
 | 
			
		||||
						System.out.println("Chat with: " + getChats().get(j).getRecipient().getID() + "was selected.");
 | 
			
		||||
						for (int k = 0; k < getChats().get(j).getModel().getSize(); k++) {
 | 
			
		||||
							if (getChats().get(j).getModel().get(k).getMetadata().getMessageId() == returnSync.getMessages()
 | 
			
		||||
								.get(i)
 | 
			
		||||
								.getMetadata()
 | 
			
		||||
								.getMessageId()) {
 | 
			
		||||
								System.out.println(
 | 
			
		||||
										"Message with ID: " + getChats().get(j).getModel().get(k).getMetadata().getMessageId() + "was selected.");
 | 
			
		||||
								getChats().get(j).getModel().get(k).getMetadata().setState(returnSync.getMessages().get(i).getMetadata().getState());
 | 
			
		||||
								System.out
 | 
			
		||||
									.println("Message State is now: " + getChats().get(j).getModel().get(k).getMetadata().getState().toString());
 | 
			
		||||
						break;
 | 
			
		||||
					case READ:
 | 
			
		||||
						// Update local Messages to state READ
 | 
			
		||||
						System.out.println("Message with ID: " + returnSync.getMessages().get(i).getMetadata().getMessageId()
 | 
			
		||||
								+ "was initialized to be set to READ in localDB.");
 | 
			
		||||
						for (int j = 0; j < getChats().size(); j++) {
 | 
			
		||||
							if (getChats().get(j).getRecipient().getID() == returnSync.getMessages().get(i).getMetadata().getRecipient()) {
 | 
			
		||||
								System.out.println("Chat with: " + getChats().get(j).getRecipient().getID() + "was selected.");
 | 
			
		||||
								for (int k = 0; k < getChats().get(j).getModel().getSize(); k++) {
 | 
			
		||||
									if (getChats().get(j).getModel().get(k).getMetadata().getMessageId() == returnSync.getMessages()
 | 
			
		||||
										.get(i)
 | 
			
		||||
										.getMetadata()
 | 
			
		||||
										.getMessageId()) {
 | 
			
		||||
										System.out.println("Message with ID: " + getChats().get(j).getModel().get(k).getMetadata().getMessageId()
 | 
			
		||||
												+ "was selected.");
 | 
			
		||||
										getChats().get(j)
 | 
			
		||||
											.getModel()
 | 
			
		||||
											.get(k)
 | 
			
		||||
											.getMetadata()
 | 
			
		||||
											.setState(returnSync.getMessages().get(i).getMetadata().getState());
 | 
			
		||||
										System.out.println(
 | 
			
		||||
												"Message State is now: " + getChats().get(j).getModel().get(k).getMetadata().getState().toString());
 | 
			
		||||
									}
 | 
			
		||||
								}
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
						break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Updating UserStatus of all users in LocalDB
 | 
			
		||||
		for (int j = 0; j < returnSync.getUsers().size(); j++) {
 | 
			
		||||
			for (int k = 0; k < getChats().size(); k++) {
 | 
			
		||||
				if (getChats().get(k).getRecipient().getID() == returnSync.getUsers().get(j).getID()) {
 | 
			
		||||
 | 
			
		||||
					getChats().get(k).getRecipient().setStatus(returnSync.getUsers().get(j).getStatus());
 | 
			
		||||
					System.out.println(getChats().get(k).getRecipient().getStatus().toString());
 | 
			
		||||
		for (User user : returnSync.getUsers())
 | 
			
		||||
			for (Chat chat : getChats())
 | 
			
		||||
				if (user.getID() == chat.getRecipient().getID()) {
 | 
			
		||||
					chat.getRecipient().setStatus(user.getStatus());
 | 
			
		||||
					System.out.println(chat.getRecipient().getStatus());
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		sync.getMessages().clear();
 | 
			
		||||
		sync.getUsers().clear();
 | 
			
		||||
@@ -234,11 +237,11 @@ public class LocalDB {
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public void addUnreadMessagesToLocalDB() {
 | 
			
		||||
		Sync unreadMessages = unreadMessagesSync;
 | 
			
		||||
		for (int i = 0; i < unreadMessages.getMessages().size(); i++)
 | 
			
		||||
			for (int j = 0; j < getChats().size(); j++)
 | 
			
		||||
				if (getChats().get(j).getRecipient().getID() == unreadMessages.getMessages().get(i).getMetadata().getSender()) {
 | 
			
		||||
					getChats().get(j).appendMessage(unreadMessages.getMessages().get(i));
 | 
			
		||||
		for(Message message : unreadMessagesSync.getMessages())
 | 
			
		||||
			for(Chat chat : getChats())
 | 
			
		||||
				if(message.getMetadata().getSender() == chat.getRecipient().getID()) {
 | 
			
		||||
					chat.appendMessage(message);
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -283,8 +286,8 @@ public class LocalDB {
 | 
			
		||||
	public void clearUnreadMessagesSync() { unreadMessagesSync.getMessages().clear(); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @return all saves {@link Chat} objects that list the client user as the
 | 
			
		||||
	 *         client
 | 
			
		||||
	 * @return all saved {@link Chat} objects that list the client user as the
 | 
			
		||||
	 *         sender
 | 
			
		||||
	 * @since Envoy v0.1-alpha
 | 
			
		||||
	 **/
 | 
			
		||||
	public List<Chat> getChats() { return chats; }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user