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:
delvh 2020-03-22 14:52:38 +01:00 committed by GitHub
parent 9998234b3d
commit b18ecdae86
5 changed files with 52 additions and 13 deletions

View File

@ -78,4 +78,4 @@ public class LoginCredentials implements Serializable {
* @since Envoy Common v0.2-alpha
*/
public boolean isRegistration() { return registration; }
}
}

View File

@ -49,6 +49,7 @@ public class Message implements Serializable {
}
private final long id, senderId, recipientId;
private final boolean forwarded;
private final Date creationDate;
private final String text;
private final MessageAttachment<?> attachment;
@ -71,9 +72,11 @@ public class Message implements Serializable {
* @param text the text content of the message
* @param attachment the attachment of the message, if present
* @param status the current {@link MessageStatus} of the message
* @param forwarded whether this message was forwarded
* @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.senderId = senderId;
this.recipientId = recipientId;
@ -81,6 +84,7 @@ public class Message implements Serializable {
this.text = text;
this.attachment = attachment;
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");
this.status = status;
}
}
/**
* @return whether this message was forwarded
* @since Envoy common v0.1-beta
*/
public boolean isForwarded() { return forwarded; }
}

View File

@ -25,27 +25,26 @@ public class MessageBuilder {
private String text;
private MessageAttachment<?> attachment;
private Message.MessageStatus status;
private boolean forwarded;
/**
* Creates an instance of {@link MessageBuilder} with all mandatory values
* without defaults for the {@link Message} class.
*
* @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}
* id
* @since Envoy Common v0.2-alpha
*/
public MessageBuilder(long senderId, long recipientId, IdGenerator idGenerator) {
this(senderId, recipientId, idGenerator.next());
}
public MessageBuilder(long senderId, long recipientId, IdGenerator idGenerator) { this(senderId, recipientId, idGenerator.next()); }
/**
* Creates an instance of {@link MessageBuilder} with all mandatory values
* without defaults for the {@link Message} class.
*
* @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}
* @since Envoy Common v0.2-alpha
*/
@ -55,6 +54,26 @@ public class MessageBuilder {
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.
* 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 (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;
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;
}
}

View File

@ -75,7 +75,7 @@ public class User implements Serializable {
*/
public User(long id, String name, UserStatus status) {
this(id, name);
this.status = status;
this.status = status;
}
@Override
@ -104,4 +104,4 @@ public class User implements Serializable {
* @since Envoy Common v0.2-alpha
*/
public void setStatus(UserStatus status) { this.status = status; }
}
}

View File

@ -147,4 +147,4 @@ public class SerializationUtils {
out.write(objLen);
out.write(objBytes);
}
}
}