feat: implemented a simplified chatroom-service
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chatroom / domain / Chatroom.java
diff --git a/src/main/java/de/juplo/kafka/chatroom/domain/Chatroom.java b/src/main/java/de/juplo/kafka/chatroom/domain/Chatroom.java
new file mode 100644 (file)
index 0000000..fd7d73a
--- /dev/null
@@ -0,0 +1,37 @@
+package de.juplo.kafka.chatroom.domain;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+import java.time.LocalDateTime;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Stream;
+
+
+@RequiredArgsConstructor
+public class Chatroom
+{
+  @Getter
+  private final UUID id;
+  @Getter
+  private final String name;
+  private final List<Message> messages = new LinkedList<>();
+
+  synchronized public Message addMessage(
+      UUID id,
+      LocalDateTime timestamp,
+      String user,
+      String text)
+  {
+    Message message = new Message(id, (long)messages.size(), timestamp, user, text);
+    messages.add(message);
+    return message;
+  }
+
+  public Stream<Message> getMessages(long firstMessage)
+  {
+    return messages.stream().filter(message -> message.getSerialNumber() >= firstMessage);
+  }
+}