Added BASIC group capability (#128)
* Changed serialVersionUID everywhere to 0L * Added support for GroupResizeEvents and NameChangeEvents Co-authored-by: CyB3RC0nN0R <kske@outlook.de>
This commit is contained in:
		| @@ -25,7 +25,7 @@ public class Cache<T> implements Consumer<T>, Serializable { | ||||
| 	private transient Consumer<T>	processor; | ||||
|  | ||||
| 	private static final Logger	logger				= EnvoyLog.getLogger(Cache.class); | ||||
| 	private static final long	serialVersionUID	= 0L; | ||||
| 	private static final long	serialVersionUID = 0L; | ||||
|  | ||||
| 	/** | ||||
| 	 * Adds an element to the cache. | ||||
|   | ||||
| @@ -6,9 +6,8 @@ import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| import envoy.client.net.WriteProxy; | ||||
| import envoy.data.Message; | ||||
| import envoy.data.*; | ||||
| import envoy.data.Message.MessageStatus; | ||||
| import envoy.data.User; | ||||
| import envoy.event.MessageStatusChangeEvent; | ||||
|  | ||||
| /** | ||||
| @@ -26,7 +25,7 @@ import envoy.event.MessageStatusChangeEvent; | ||||
|  */ | ||||
| public final class Chat implements Serializable { | ||||
|  | ||||
| 	private final User			recipient; | ||||
| 	private final Contact		recipient; | ||||
| 	private final List<Message>	messages	= new ArrayList<>(); | ||||
|  | ||||
| 	private static final long serialVersionUID = 1L; | ||||
| @@ -38,7 +37,7 @@ public final class Chat implements Serializable { | ||||
| 	 * @param recipient the user who receives the messages | ||||
| 	 * @since Envoy Client v0.1-alpha | ||||
| 	 */ | ||||
| 	public Chat(User recipient) { this.recipient = recipient; } | ||||
| 	public Chat(Contact recipient) { this.recipient = recipient; } | ||||
|  | ||||
| 	@Override | ||||
| 	public String toString() { return String.format("Chat[recipient=%s,messages=%d]", recipient, messages.size()); } | ||||
| @@ -82,5 +81,17 @@ public final class Chat implements Serializable { | ||||
| 	 * @return the recipient of a message | ||||
| 	 * @since Envoy Client v0.1-alpha | ||||
| 	 */ | ||||
| 	public User getRecipient() { return recipient; } | ||||
| 	public Contact getRecipient() { return recipient; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return whether this {@link Chat} points at a {@link User} | ||||
| 	 * @since Envoy Client v0.1-beta | ||||
| 	 */ | ||||
| 	public boolean isUserChat() { return recipient instanceof User; } | ||||
|  | ||||
| 	/** | ||||
| 	 * @return whether this {@link Chat} points at a {@link Group} | ||||
| 	 * @since Envoy Client v0.1-beta | ||||
| 	 */ | ||||
| 	public boolean isGroupChat() { return recipient instanceof Group; } | ||||
| } | ||||
|   | ||||
| @@ -2,10 +2,8 @@ package envoy.client.data; | ||||
|  | ||||
| import java.util.*; | ||||
|  | ||||
| import envoy.data.IDGenerator; | ||||
| import envoy.data.Message; | ||||
| import envoy.data.User; | ||||
| import envoy.event.MessageStatusChangeEvent; | ||||
| import envoy.data.*; | ||||
| import envoy.event.*; | ||||
|  | ||||
| /** | ||||
|  * Stores information about the current {@link User} and their {@link Chat}s. | ||||
| @@ -155,4 +153,39 @@ public abstract class LocalDB { | ||||
| 	public Message getMessage(long id) { | ||||
| 		return chats.stream().map(Chat::getMessages).flatMap(List::stream).filter(m -> m.getID() == id).findAny().orElse(null); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Performs a contact name change if the corresponding contact is present. | ||||
| 	 * | ||||
| 	 * @param event the {@link NameChangeEvent} to process | ||||
| 	 * @since Envoy Client v0.1-beta | ||||
| 	 */ | ||||
| 	public void replaceContactName(NameChangeEvent event) { | ||||
| 		chats.stream().map(Chat::getRecipient).filter(c -> c.getID() == event.getId()).findAny().ifPresent(c -> c.setName(event.get())); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Performs a group resize operation if the corresponding group is present. | ||||
| 	 * | ||||
| 	 * @param event the {@link GroupResizeEvent} to process | ||||
| 	 * @since Envoy Client v0.1-beta | ||||
| 	 */ | ||||
| 	public void updateGroup(GroupResizeEvent event) { | ||||
| 		chats.stream() | ||||
| 			.map(Chat::getRecipient) | ||||
| 			.filter(Group.class::isInstance) | ||||
| 			.filter(g -> g.getID() == event.getGroupID() && g.getID() != user.getID()) | ||||
| 			.map(Group.class::cast) | ||||
| 			.findAny() | ||||
| 			.ifPresent(group -> { | ||||
| 				switch (event.getOperation()) { | ||||
| 					case ADD: | ||||
| 						group.getMemberIDs().add(event.get()); | ||||
| 						break; | ||||
| 					case REMOVE: | ||||
| 						group.getMemberIDs().remove(event.get()); | ||||
| 						break; | ||||
| 				} | ||||
| 			}); | ||||
| 	} | ||||
| } | ||||
|   | ||||
| @@ -145,12 +145,18 @@ public class Client implements Closeable { | ||||
| 		// Process message ID generation | ||||
| 		receiver.registerProcessor(IDGenerator.class, localDB::setIDGenerator); | ||||
|  | ||||
| 		// Process name changes | ||||
| 		receiver.registerProcessor(NameChangeEvent.class, evt -> { localDB.replaceContactName(evt); EventBus.getInstance().dispatch(evt); }); | ||||
|  | ||||
| 		// Process contact searches | ||||
| 		receiver.registerProcessor(ContactSearchResult.class, EventBus.getInstance()::dispatch); | ||||
|  | ||||
| 		receiver.registerProcessor(Contacts.class, | ||||
| 				contacts -> EventBus.getInstance().dispatch(new ContactOperationEvent(contacts.getContacts().get(0), Operation.ADD))); | ||||
|  | ||||
| 		// Process group size changes | ||||
| 		receiver.registerProcessor(GroupResizeEvent.class, evt -> { localDB.updateGroup(evt); EventBus.getInstance().dispatch(evt); }); | ||||
|  | ||||
| 		// Send event | ||||
| 		EventBus.getInstance().register(SendEvent.class, evt -> { | ||||
| 			try { | ||||
|   | ||||
| @@ -81,7 +81,7 @@ public class Color extends java.awt.Color { | ||||
| 	 */ | ||||
| 	public static final Color blue = new Color(0, 0, 255); | ||||
|  | ||||
| 	private static final long serialVersionUID = -9166233199998257344L; | ||||
| 	private static final long serialVersionUID = 0L; | ||||
|  | ||||
| 	public Color(java.awt.Color other) { this(other.getRGB()); } | ||||
|  | ||||
|   | ||||
| @@ -65,7 +65,7 @@ public class LoginDialog extends JDialog { | ||||
|  | ||||
| 	private static final ClientConfig	config				= ClientConfig.getInstance(); | ||||
| 	private static final Logger			logger				= EnvoyLog.getLogger(LoginDialog.class); | ||||
| 	private static final long			serialVersionUID	= 0L; | ||||
| 	private static final long			serialVersionUID = 0L; | ||||
|  | ||||
| 	/** | ||||
| 	 * Displays a dialog enabling the user to enter their user name and password. | ||||
|   | ||||
| @@ -14,7 +14,7 @@ import envoy.client.ui.Theme; | ||||
|  */ | ||||
| public class PrimaryScrollPane extends JScrollPane { | ||||
|  | ||||
| 	private static final long serialVersionUID = -4786837444056228439L; | ||||
| 	private static final long serialVersionUID = 0L; | ||||
|  | ||||
| 	private int		verticalScrollBarMaximum	= getVerticalScrollBar().getMaximum(); | ||||
| 	private boolean	chatOpened					= false; | ||||
|   | ||||
| @@ -16,7 +16,7 @@ import javax.swing.border.EmptyBorder; | ||||
|  */ | ||||
| public class PrimaryTextArea extends JTextArea { | ||||
|  | ||||
| 	private static final long	serialVersionUID	= 0L; | ||||
| 	private static final long	serialVersionUID = 0L; | ||||
| 	private int					arcSize; | ||||
|  | ||||
| 	/** | ||||
|   | ||||
| @@ -30,7 +30,7 @@ public class GeneralSettingsPanel extends SettingsPanel { | ||||
|  | ||||
| 	private static final String[]	items				= { "onCloseMode", "enterToSend" }; | ||||
| 	private static final Logger		logger				= EnvoyLog.getLogger(GeneralSettingsPanel.class); | ||||
| 	private static final long		serialVersionUID	= 0L; | ||||
| 	private static final long		serialVersionUID = 0L; | ||||
|  | ||||
| 	/** | ||||
| 	 * This is the constructor for the General class. Here the user can set general | ||||
|   | ||||
| @@ -39,7 +39,7 @@ public class ThemeCustomizationPanel extends SettingsPanel { | ||||
| 	private final Insets	insets	= new Insets(5, 5, 5, 5); | ||||
|  | ||||
| 	private static final Logger	logger				= EnvoyLog.getLogger(ThemeCustomizationPanel.class); | ||||
| 	private static final long	serialVersionUID	= 0L; | ||||
| 	private static final long	serialVersionUID = 0L; | ||||
|  | ||||
| 	/** | ||||
| 	 * Initializes a {@link ThemeCustomizationPanel} that enables the user to change | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 delvh
					delvh