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