Added support for forwarding messages (#17)
* Added message forwarding capability * added newline at EOF for any file not having one at its end
This commit is contained in:
		@@ -49,6 +49,7 @@ public class Message implements Serializable {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private final long					id, senderId, recipientId;
 | 
						private final long					id, senderId, recipientId;
 | 
				
			||||||
 | 
						private final boolean				forwarded;
 | 
				
			||||||
	private final Date					creationDate;
 | 
						private final Date					creationDate;
 | 
				
			||||||
	private final String				text;
 | 
						private final String				text;
 | 
				
			||||||
	private final MessageAttachment<?>	attachment;
 | 
						private final MessageAttachment<?>	attachment;
 | 
				
			||||||
@@ -71,9 +72,11 @@ public class Message implements Serializable {
 | 
				
			|||||||
	 * @param text         the text content of the message
 | 
						 * @param text         the text content of the message
 | 
				
			||||||
	 * @param attachment   the attachment of the message, if present
 | 
						 * @param attachment   the attachment of the message, if present
 | 
				
			||||||
	 * @param status       the current {@link MessageStatus} of the message
 | 
						 * @param status       the current {@link MessageStatus} of the message
 | 
				
			||||||
 | 
						 * @param forwarded    whether this message was forwarded
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	Message(long id, long senderId, long recipientId, Date creationDate, String text, MessageAttachment<?> attachment, MessageStatus status) {
 | 
						Message(long id, long senderId, long recipientId, Date creationDate, String text, MessageAttachment<?> attachment, MessageStatus status,
 | 
				
			||||||
 | 
								boolean forwarded) {
 | 
				
			||||||
		this.id				= id;
 | 
							this.id				= id;
 | 
				
			||||||
		this.senderId		= senderId;
 | 
							this.senderId		= senderId;
 | 
				
			||||||
		this.recipientId	= recipientId;
 | 
							this.recipientId	= recipientId;
 | 
				
			||||||
@@ -81,6 +84,7 @@ public class Message implements Serializable {
 | 
				
			|||||||
		this.text			= text;
 | 
							this.text			= text;
 | 
				
			||||||
		this.attachment		= attachment;
 | 
							this.attachment		= attachment;
 | 
				
			||||||
		this.status			= status;
 | 
							this.status			= status;
 | 
				
			||||||
 | 
							this.forwarded		= forwarded;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
@@ -188,4 +192,10 @@ public class Message implements Serializable {
 | 
				
			|||||||
		if (status.ordinal() < this.status.ordinal()) throw new IllegalStateException("This message is moving backwards in time");
 | 
							if (status.ordinal() < this.status.ordinal()) throw new IllegalStateException("This message is moving backwards in time");
 | 
				
			||||||
		this.status = status;
 | 
							this.status = status;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @return whether this message was forwarded
 | 
				
			||||||
 | 
						 * @since Envoy common v0.1-beta
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public boolean isForwarded() { return forwarded; }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -25,27 +25,26 @@ public class MessageBuilder {
 | 
				
			|||||||
	private String					text;
 | 
						private String					text;
 | 
				
			||||||
	private MessageAttachment<?>	attachment;
 | 
						private MessageAttachment<?>	attachment;
 | 
				
			||||||
	private Message.MessageStatus	status;
 | 
						private Message.MessageStatus	status;
 | 
				
			||||||
 | 
						private boolean					forwarded;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Creates an instance of {@link MessageBuilder} with all mandatory values
 | 
						 * Creates an instance of {@link MessageBuilder} with all mandatory values
 | 
				
			||||||
	 * without defaults for the {@link Message} class.
 | 
						 * without defaults for the {@link Message} class.
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
	 * @param senderId    the ID of the user who sends the {@link Message}
 | 
						 * @param senderId    the ID of the user who sends the {@link Message}
 | 
				
			||||||
	 * @param recipientId the ID of the user who received the {@link Message}
 | 
						 * @param recipientId the ID of the user who receives the {@link Message}
 | 
				
			||||||
	 * @param idGenerator the ID generator used to generate a unique {@link Message}
 | 
						 * @param idGenerator the ID generator used to generate a unique {@link Message}
 | 
				
			||||||
	 *                    id
 | 
						 *                    id
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public MessageBuilder(long senderId, long recipientId, IdGenerator idGenerator) {
 | 
						public MessageBuilder(long senderId, long recipientId, IdGenerator idGenerator) { this(senderId, recipientId, idGenerator.next()); }
 | 
				
			||||||
		this(senderId, recipientId, idGenerator.next());
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Creates an instance of {@link MessageBuilder} with all mandatory values
 | 
						 * Creates an instance of {@link MessageBuilder} with all mandatory values
 | 
				
			||||||
	 * without defaults for the {@link Message} class.
 | 
						 * without defaults for the {@link Message} class.
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
	 * @param senderId    the ID of the user who sends the {@link Message}
 | 
						 * @param senderId    the ID of the user who sends the {@link Message}
 | 
				
			||||||
	 * @param recipientId the ID of the user who received the {@link Message}
 | 
						 * @param recipientId the ID of the user who receives the {@link Message}
 | 
				
			||||||
	 * @param messageId   the ID of the {@link Message}
 | 
						 * @param messageId   the ID of the {@link Message}
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
@@ -55,6 +54,26 @@ public class MessageBuilder {
 | 
				
			|||||||
		id					= messageId;
 | 
							id					= messageId;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * This constructor transforms a given {@link Message} into a new message for a
 | 
				
			||||||
 | 
						 * new receiver.
 | 
				
			||||||
 | 
						 * This makes it especially useful in the case of forwarding messages.
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @param msg         the message to copy
 | 
				
			||||||
 | 
						 * @param recipientId the ID of the user who receives the {@link Message}
 | 
				
			||||||
 | 
						 * @param idGenerator the ID generator used to generate a unique {@link Message}
 | 
				
			||||||
 | 
						 *                    id
 | 
				
			||||||
 | 
						 * @since Envoy v0.1-beta
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public MessageBuilder(Message msg, long recipientId, IdGenerator idGenerator) {
 | 
				
			||||||
 | 
							this(msg.getRecipientId(), recipientId, idGenerator.next());
 | 
				
			||||||
 | 
							this.attachment		= msg.getAttachment();
 | 
				
			||||||
 | 
							this.creationDate	= new Date();
 | 
				
			||||||
 | 
							this.forwarded		= true;
 | 
				
			||||||
 | 
							this.text			= msg.getText();
 | 
				
			||||||
 | 
							this.status			= MessageStatus.WAITING;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Creates an instance of {@link Message} with the previously supplied values.
 | 
						 * Creates an instance of {@link Message} with the previously supplied values.
 | 
				
			||||||
	 * If a mandatory value is not set, a default value will be used instead:<br>
 | 
						 * If a mandatory value is not set, a default value will be used instead:<br>
 | 
				
			||||||
@@ -83,7 +102,7 @@ public class MessageBuilder {
 | 
				
			|||||||
		if (text == null) text = "";
 | 
							if (text == null) text = "";
 | 
				
			||||||
		if (status == null) status = MessageStatus.WAITING;
 | 
							if (status == null) status = MessageStatus.WAITING;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return new Message(id, senderId, recipientId, creationDate, text, attachment, status);
 | 
							return new Message(id, senderId, recipientId, creationDate, text, attachment, status, forwarded);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
@@ -126,4 +145,14 @@ public class MessageBuilder {
 | 
				
			|||||||
		this.status = status;
 | 
							this.status = status;
 | 
				
			||||||
		return this;
 | 
							return this;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @param forwarded sets whether this message is a forwarded message or not
 | 
				
			||||||
 | 
						 * @return this {@link MessageBuilder}
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.1-beta
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public MessageBuilder setForwarded(boolean forwarded) {
 | 
				
			||||||
 | 
							this.forwarded = forwarded;
 | 
				
			||||||
 | 
							return this;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user