diff --git a/.classpath b/.classpath
index d2c0172..88d37ef 100644
--- a/.classpath
+++ b/.classpath
@@ -24,18 +24,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
index 8660235..04cfa2c 100644
--- a/.settings/org.eclipse.core.resources.prefs
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -1,8 +1,6 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
-encoding//src/main/xjb=UTF-8
encoding//src/test/java=UTF-8
encoding//src/test/resources=UTF-8
-encoding//target/generated-sources/jaxb=UTF-8
encoding/=UTF-8
diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component
index 08f1a01..a6896ac 100644
--- a/.settings/org.eclipse.wst.common.component
+++ b/.settings/org.eclipse.wst.common.component
@@ -1,13 +1,15 @@
-
+
+
-
+
+
-
-
-
-
+
+
+
+
diff --git a/pom.xml b/pom.xml
index cf6ff6e..6e20167 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0informatik-ag-nglenvoy-common
- 0.0.1-SNAPSHOT
+ 0.2-alphaEnvoy Commonhttps://github.com/informatik-ag-ngl/envoy-common
@@ -16,44 +16,7 @@
1.8
-
-
- org.codehaus.mojo
- jaxb2-maven-plugin
- 2.5.0
-
-
-
envoy-common
-
-
- src/main/resources
-
-
- src/main/xjb
-
-
-
-
- org.codehaus.mojo
- jaxb2-maven-plugin
- 2.5.0
-
-
- xjc
-
- xjc
-
-
-
-
- envoy.schema
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/envoy/data/Message.java b/src/main/java/envoy/data/Message.java
new file mode 100644
index 0000000..555c751
--- /dev/null
+++ b/src/main/java/envoy/data/Message.java
@@ -0,0 +1,97 @@
+package envoy.data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Represents a unique message with a unique, numeric ID. Further metadata
+ * includes the sender and recipient {@link User}s, as well as the creation
+ * date and the current {@link MessageStatus}.
+ *
+ * Project: envoy-common
+ * File: Message.java
+ * Created: 28.12.2019
+ *
+ * @author Kai S. K. Engelbart
+ * @since Envoy Common v0.2-alpha
+ */
+public abstract class Message implements Serializable {
+
+ private final long id;
+ private final User sender, recipient;
+ private final Date date;
+
+ private MessageStatus status;
+
+ private static final long serialVersionUID = -4393477412979594435L;
+
+ /**
+ * Initializes a {@link Message} from the client's perspective. The current date
+ * is used as the message date and the status is set to
+ * {@link MessageStatus#WAITING}.
+ *
+ * @param id unique ID
+ * @param sender the user who sends the message
+ * @param recipient the user who receives the message
+ * @since Envoy Common v0.2-alpha
+ */
+ public Message(long id, User sender, User recipient) {
+ this.id = id;
+ this.sender = sender;
+ this.recipient = recipient;
+ date = new Date();
+ status = MessageStatus.WAITING;
+ }
+
+ /**
+ * @return the ID of this message
+ * @since Envoy Common v0.2-alpha
+ */
+ public long getId() { return id; }
+
+ /**
+ * @return the sender of this message
+ * @since Envoy Common v0.2-alpha
+ */
+ public User getSender() { return sender; }
+
+ /**
+ * @return the recipient of this message
+ * @since Envoy Common v0.2-alpha
+ */
+ public User getRecipient() { return recipient; }
+
+ /**
+ * @return the date at which this message was created
+ * @since Envoy Common v0.2-alpha
+ */
+ public Date getDate() { return date; }
+
+ /**
+ * @return the current status of this message
+ * @since Envoy Common v0.2-alpha
+ */
+ public MessageStatus getStatus() { return status; }
+
+ /**
+ * Changes the current {@link MessageStatus} to the next logical status.
+ *
+ * The underlying order is as follows:
+ *
+ *
{@link MessageStatus#WAITING}
+ *
{@link MessageStatus#SENT}
+ *
{@link MessageStatus#RECEIVED}
+ *
{@link MessageStatus#READ}
+ *
+ *
+ * @since Envoy Common v0.2-alpha
+ */
+ public void nextStatus() {
+ if (status == MessageStatus.READ) throw new IllegalStateException("Message status READ is already reached");
+ status = MessageStatus.values()[status.ordinal() + 1];
+ }
+
+ public static enum MessageStatus {
+ WAITING, SENT, RECEIVED, READ
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/envoy/data/TextMessage.java b/src/main/java/envoy/data/TextMessage.java
new file mode 100644
index 0000000..2ae7fc1
--- /dev/null
+++ b/src/main/java/envoy/data/TextMessage.java
@@ -0,0 +1,54 @@
+package envoy.data;
+
+import java.text.SimpleDateFormat;
+
+/**
+ * Represents a {@link Message} with content that is comprised of text.
+ *
+ * Project: envoy-common
+ * File: TextMessage.java
+ * Created: 28.12.2019
+ *
+ * @author Kai S. K. Engelbart
+ * @since Envoy Common v0.2-alpha
+ */
+public class TextMessage extends Message {
+
+ private final String content;
+
+ private static final long serialVersionUID = 1538164720632899917L;
+
+ /**
+ * Initializes a {@link TextMessage} from the client's perspective. The current
+ * date
+ * is used as the message date and the status is set to
+ * {@link MessageStatus#WAITING}.
+ *
+ * @param id unique ID
+ * @param sender the user who sends the message
+ * @param recipient the user who receives the message
+ * @param content the content of the message
+ * @since Envoy Common v0.2-alpha
+ */
+ public TextMessage(long id, User sender, User recipient, String content) {
+ super(id, sender, recipient);
+ this.content = content;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("TextMessage[id=%d,sender=%s,recipient=%s,date=%s,status=%s,content=%s]",
+ getId(),
+ getSender(),
+ getRecipient(),
+ new SimpleDateFormat("dd.MM.yyyy hh:mm:ss").format(getDate()),
+ getStatus(),
+ content);
+ }
+
+ /**
+ * @return the content of this {@link TextMessage}
+ * @since Envoy Common v0.2-alpha
+ */
+ public String getContent() { return content; }
+}
\ No newline at end of file
diff --git a/src/main/java/envoy/data/User.java b/src/main/java/envoy/data/User.java
new file mode 100644
index 0000000..afca690
--- /dev/null
+++ b/src/main/java/envoy/data/User.java
@@ -0,0 +1,71 @@
+package envoy.data;
+
+import java.io.Serializable;
+
+/**
+ * Represents a unique user with a unique, numeric ID, a name and a current
+ * {@link UserStatus}.
+ *
+ * Project: envoy-common
+ * File: User.java
+ * Created: 28.12.2019
+ *
+ * @author Kai S. K. Engelbart
+ * @since Envoy Common v0.2-alpha
+ */
+public class User implements Serializable {
+
+ private final long id;
+ private final String name;
+
+ private UserStatus status;
+
+ private static final long serialVersionUID = 3530947374856708236L;
+
+ /**
+ * Initializes a {@link User}. The {@link UserStatus} is set to
+ * {@link UserStatus#OFFLINE}.
+ *
+ * @param id unique ID
+ * @param name user name
+ * @since Envoy Client v0.2-alpha
+ */
+ public User(long id, String name) {
+ this.id = id;
+ this.name = name;
+ status = UserStatus.OFFLINE;
+ }
+
+ @Override
+ public String toString() { return String.format("User[id=%d,name=%s,status=%s]", id, name, status); }
+
+ /**
+ * @return the ID of this {@link User}
+ * @since Envoy Client v0.2-alpha
+ */
+ public long getId() { return id; }
+
+ /**
+ * @return the name of this {@link User}
+ * @since Envoy Client v0.2-alpha
+ */
+ public String getName() { return name; }
+
+ /**
+ * @return the current status of this user
+ * @since Envoy Client v0.2-alpha
+ */
+ public UserStatus getStatus() { return status; }
+
+ /**
+ * Sets the current status of this user
+ *
+ * @param status the status to set
+ * @since Envoy Client v0.2-alpha
+ */
+ public void setStatus(UserStatus status) { this.status = status; }
+
+ public static enum UserStatus {
+ ONLINE, AWAY, BUSY, OFFLINE;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/envoy/schema/MessageState.java b/src/main/java/envoy/schema/MessageState.java
deleted file mode 100644
index 0f174c6..0000000
--- a/src/main/java/envoy/schema/MessageState.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package envoy.schema;
-
-import javax.xml.bind.annotation.XmlEnum;
-import javax.xml.bind.annotation.XmlType;
-
-/**
- * Project: envoy-common
- * File: MessageState.java
- * Created: 11 Oct 2019
- *
- * @author Kai S. K. Engelbart
- */
-@XmlType(name = "")
-@XmlEnum
-public enum MessageState {
-
- Waiting, Sent, Received, Read;
-
- public String value() { return name(); }
-
- public static MessageState fromValue(String v) { return valueOf(v); }
-}
diff --git a/src/main/java/envoy/schema/UserStatus.java b/src/main/java/envoy/schema/UserStatus.java
deleted file mode 100644
index f87d576..0000000
--- a/src/main/java/envoy/schema/UserStatus.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package envoy.schema;
-
-import javax.xml.bind.annotation.XmlEnum;
-import javax.xml.bind.annotation.XmlType;
-
-/**
- * Project: envoy-common
- * File: UserStatus.java
- * Created: 27 Oct 2019
- *
- * @author Maximilian Käfer
- */
-@XmlType(name = "")
-@XmlEnum
-public enum UserStatus {
-
- Online, DoNotDisturb, AFK, Offline;
-
- public String value() { return name(); }
-
- public static UserStatus fromValue(String v) { return valueOf(v); }
-}
diff --git a/src/main/resources/sync_schema.xsd b/src/main/resources/sync_schema.xsd
deleted file mode 100644
index 7b20b87..0000000
--- a/src/main/resources/sync_schema.xsd
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/xjb/bindings.xml b/src/main/xjb/bindings.xml
deleted file mode 100644
index 4dc2c23..0000000
--- a/src/main/xjb/bindings.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file