From 34ed3df862f882ab4cd1a7010d8eedf7f7b5a7b1 Mon Sep 17 00:00:00 2001 From: CyB3RC0nN0R Date: Thu, 2 Jul 2020 10:58:02 +0200 Subject: [PATCH] Reworked Attachment MessageAttachment is now called Attachment and contains its data inside a byte array, as well as an AttachmentType. Closes #20 --- .settings/org.eclipse.wst.common.component | 12 ++-- src/main/java/envoy/data/Attachment.java | 69 +++++++++++++++++++ src/main/java/envoy/data/GroupMessage.java | 5 +- src/main/java/envoy/data/Message.java | 15 ++-- .../java/envoy/data/MessageAttachment.java | 43 ------------ src/main/java/envoy/data/MessageBuilder.java | 6 +- 6 files changed, 89 insertions(+), 61 deletions(-) create mode 100644 src/main/java/envoy/data/Attachment.java delete mode 100644 src/main/java/envoy/data/MessageAttachment.java diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component index 44aa2b3..c8aeed9 100644 --- a/.settings/org.eclipse.wst.common.component +++ b/.settings/org.eclipse.wst.common.component @@ -1,5 +1,6 @@ - + + @@ -7,7 +8,8 @@ - + + @@ -15,7 +17,8 @@ - + + @@ -23,7 +26,8 @@ - + + diff --git a/src/main/java/envoy/data/Attachment.java b/src/main/java/envoy/data/Attachment.java new file mode 100644 index 0000000..7b8d397 --- /dev/null +++ b/src/main/java/envoy/data/Attachment.java @@ -0,0 +1,69 @@ +package envoy.data; + +import java.io.Serializable; + +/** + * This interface should be used for any type supposed to be a {@link Message} + * attachment (i.e. images or sound). + *

+ * Project: envoy-common
+ * File: Attachment.java
+ * Created: 30 Dec 2019
+ * + * @author Leon Hofmeister + * @author Kai S. K. Engelbart + * @since Envoy Common v0.2-alpha + */ +public class Attachment implements Serializable { + + /** + * Defines the type of the attachment. + * + * @since Envoy Common v0.1-beta + */ + public enum AttachmentType { + + /** + * This attachment type denotes a picture. + * + * @since Envoy Common v0.1-beta + */ + PICTURE, + + /** + * This attachment type denotes a voice message. + * + * @since Envoy Common v0.1-beta + */ + VOICE + } + + private final byte[] data; + private final AttachmentType type; + + private static final long serialVersionUID = 1L; + + /** + * Constructs an attachment. + * + * @param data the data of the attachment + * @param type the type of the attachment + * @since Envoy Common v0.1-beta + */ + public Attachment(byte[] data, AttachmentType type) { + this.data = data; + this.type = type; + } + + /** + * @return the data of the attachment + * @since Envoy Common v0.1-beta + */ + public byte[] getData() { return data; } + + /** + * @return the type of the attachment + * @since Envoy Common v0.1-beta + */ + public AttachmentType getType() { return type; } +} diff --git a/src/main/java/envoy/data/GroupMessage.java b/src/main/java/envoy/data/GroupMessage.java index 85b61e8..cb79a12 100644 --- a/src/main/java/envoy/data/GroupMessage.java +++ b/src/main/java/envoy/data/GroupMessage.java @@ -38,9 +38,8 @@ public final class GroupMessage extends Message { * {@link GroupMessage} * @since Envoy Common v0.1-beta */ - GroupMessage(long id, long senderID, long groupID, LocalDateTime creationDate, String text, MessageAttachment attachment, - MessageStatus status, - boolean forwarded, Map memberStatuses) { + GroupMessage(long id, long senderID, long groupID, LocalDateTime creationDate, String text, + Attachment attachment, MessageStatus status, boolean forwarded, Map memberStatuses) { super(id, senderID, groupID, creationDate, text, attachment, status, forwarded); this.memberStatuses = memberStatuses; } diff --git a/src/main/java/envoy/data/Message.java b/src/main/java/envoy/data/Message.java index 4b579bc..54b405e 100644 --- a/src/main/java/envoy/data/Message.java +++ b/src/main/java/envoy/data/Message.java @@ -48,11 +48,11 @@ public class Message implements Serializable { READ } - private final long id, senderID, recipientID; - private final boolean forwarded; - private final LocalDateTime creationDate; - private final String text; - private final MessageAttachment attachment; + private final long id, senderID, recipientID; + private final boolean forwarded; + private final LocalDateTime creationDate; + private final String text; + private final Attachment attachment; private LocalDateTime receivedDate, readDate; private MessageStatus status; @@ -75,8 +75,7 @@ public class Message implements Serializable { * @param forwarded whether this message was forwarded * @since Envoy Common v0.2-alpha */ - Message(long id, long senderID, long recipientID, LocalDateTime creationDate, String text, MessageAttachment attachment, - MessageStatus status, + Message(long id, long senderID, long recipientID, LocalDateTime creationDate, String text, Attachment attachment, MessageStatus status, boolean forwarded) { this.id = id; this.senderID = senderID; @@ -178,7 +177,7 @@ public class Message implements Serializable { * @return the messageAttachment * @since Envoy Common v0.2-alpha */ - public MessageAttachment getAttachment() { return attachment; } + public Attachment getAttachment() { return attachment; } /** * @return the current status of this message diff --git a/src/main/java/envoy/data/MessageAttachment.java b/src/main/java/envoy/data/MessageAttachment.java deleted file mode 100644 index 3d04eab..0000000 --- a/src/main/java/envoy/data/MessageAttachment.java +++ /dev/null @@ -1,43 +0,0 @@ -package envoy.data; - -import java.io.IOException; -import java.io.Serializable; - -import envoy.util.SerializationUtils; - -/** - * This interface should be used for any type supposed to be a {@link Message} - * attachment (i.e. images or sound).
- *
- * Project: envoy-common
- * File: MessageAttachment.java
- * Created: 30 Dec 2019
- * - * @author Leon Hofmeister - * @param the type of this message attachment - * @since Envoy Common v0.2-alpha - */ -public class MessageAttachment implements Serializable { - - private static final long serialVersionUID = 0L; - private T value; - - /** - * @return the type implementing this interface - * @since Envoy Common v0.2-alpha - */ - T getValue() { return value; } - - /** - * @return the {@link MessageAttachment} as a byte array - * @throws IOException if the serialization failed - * @since Envoy Common v0.2-alpha - */ - byte[] toByteArray() throws IOException { return SerializationUtils.writeToByteArray(this); } - - /** - * @param value the value to set - * @since Envoy Common v0.2-alpha - */ - public void setValue(T value) { this.value = value; } -} diff --git a/src/main/java/envoy/data/MessageBuilder.java b/src/main/java/envoy/data/MessageBuilder.java index 934f65b..8a6164d 100644 --- a/src/main/java/envoy/data/MessageBuilder.java +++ b/src/main/java/envoy/data/MessageBuilder.java @@ -25,7 +25,7 @@ public class MessageBuilder { private long id; private LocalDateTime creationDate; private String text; - private MessageAttachment attachment; + private Attachment attachment; private Message.MessageStatus status; private boolean forwarded; @@ -187,12 +187,12 @@ public class MessageBuilder { } /** - * @param attachment the {@link MessageAttachment} of the {@link Message} to + * @param attachment the {@link Attachment} of the {@link Message} to * create * @return this {@link MessageBuilder} * @since Envoy Common v0.2-alpha */ - public MessageBuilder setAttachment(MessageAttachment attachment) { + public MessageBuilder setAttachment(Attachment attachment) { this.attachment = attachment; return this; }