TMP:Holzweg so, Refaktorisierung nötig
[demos/kafka/chat] / src / main / java / de / juplo / kafka / chat / backend / persistence / storage / mongodb / MessageTo.java
1 package de.juplo.kafka.chat.backend.persistence.storage.mongodb;
2
3 import de.juplo.kafka.chat.backend.domain.Message;
4 import lombok.*;
5
6 import java.time.LocalDateTime;
7 import java.util.regex.Matcher;
8 import java.util.regex.Pattern;
9
10
11 @AllArgsConstructor
12 @NoArgsConstructor
13 @Getter(AccessLevel.PACKAGE)
14 @Setter(AccessLevel.PACKAGE)
15 @EqualsAndHashCode(of = { "user", "id" })
16 @ToString(of = { "user", "id" })
17 class MessageTo
18 {
19   final static Pattern SPLIT_ID = Pattern.compile("^([a-z-0-9]+)--([0-9]+)$");
20   private String id;
21   private Long serial;
22   private String time;
23   private String text;
24
25   Message toMessage()
26   {
27     Matcher matcher = SPLIT_ID.matcher(id);
28     if (!matcher.matches())
29       throw new RuntimeException("MessageTo with invalid ID: " + id);
30     Long messageId = Long.parseLong(matcher.group(2));
31     String user = matcher.group(1);
32     return new Message(
33         Message.MessageKey.of(user, messageId),
34         serial,
35         LocalDateTime.parse(time),
36         text);
37   }
38
39   static MessageTo from(Message message)
40   {
41     return
42         new MessageTo(
43              message.getUsername() + "--" + message.getId(),
44             message.getSerialNumber(),
45             message.getTimestamp().toString(),
46             message.getMessageText());
47   }
48 }