Skip to content

Commit 2e8f930

Browse files
committed
feat: 메시지 검증 로직 수정
1 parent 471d692 commit 2e8f930

File tree

4 files changed

+45
-57
lines changed

4 files changed

+45
-57
lines changed

src/main/java/com/sprint/mission/discodeit/JavaApplication.java

Lines changed: 22 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -111,55 +111,33 @@ private static List<Channel> createAndRegisterChannels(ChannelService channelSer
111111

112112
//메시지 생성 및 등록
113113
private static List<Message> createAndRegisterMessages(MessageService messageService, List<User> users, List<Channel> channels) {
114-
// List<Message> messages1 = List.of(
115-
// new Message(users.get(0), channels.get(0), "공지", "공지입니다."),
116-
// new Message(users.get(1), channels.get(0), "2팀", "안녕하세요."),
117-
// new Message(users.get(4), channels.get(1), "소통", "소통해요"),
118-
// new Message(users.get(2), channels.get(1), "소통", "좋아요"),
119-
// new Message(users.get(5), channels.get(1), "소통", "hi"), //채널 멤버가 아닌 유저
120-
// new Message(users.get(0), channels.get(0), "공자", "hi") //채널에 없는 카테고리
121-
// );
122-
123-
System.out.println("<--------------------메시지를 저장합니다----------------------->\n.\n.");
124-
125-
List<Object[]> rawMessages = List.of(
126-
new Object[]{0, 0, "공지", "공지입니다."},
127-
new Object[]{1, 0, "2팀", "안녕하세요."},
128-
new Object[]{4, 1, "소통", "소통해요"},
129-
new Object[]{2, 1, "소통", "좋아요"},
130-
new Object[]{5, 1, "소통", "hi"}, // 멤버 아님
131-
new Object[]{0, 0, "공자", "hi"} // 없는 카테고리
114+
List<Message> messages = List.of(
115+
new Message(users.get(0), channels.get(0), "공지", "공지입니다."),
116+
new Message(users.get(1), channels.get(0), "2팀", "안녕하세요."),
117+
new Message(users.get(4), channels.get(1), "소통", "소통해요"),
118+
new Message(users.get(2), channels.get(1), "소통", "좋아요"),
119+
new Message(users.get(5), channels.get(1), "소통", "hi"), //채널 멤버가 아닌 유저
120+
new Message(users.get(0), channels.get(0), "공자", "hi") //채널에 없는 카테고리
132121
);
133122

134-
List<Message> messages = new ArrayList<>();
135-
136-
for (Object[] raw : rawMessages) {
137-
try {
138-
Message message = new Message(users.get((int) raw[0]), channels.get((int) raw[1]), (String) raw[2], (String) raw[3]);
139-
messageService.create(message);
140-
messages.add(message);
141-
System.out.println("[" + message.getChannel().getChannelName() + "] 채널에 메시지 등록 완료");
142-
} catch (IllegalArgumentException e) {
143-
System.out.println("!!메시지 등록 실패!! " + e.getMessage());
144-
}
145-
}
123+
System.out.println("<--------------------메시지를 저장합니다----------------------->\n.\n.");
146124

147-
// List<Message> registeredMessages = messages.stream()
148-
// .map(message -> {
149-
// try {
150-
// messageService.create(message);
151-
// System.out.println("[" + message.getChannel().getChannelName() + "] 채널에 메시지 등록 완료");
152-
// return message;
153-
// } catch (IllegalArgumentException e) {
154-
// System.out.println("!!메시지 등록 실패!! " + e.getMessage());
155-
// return null;
156-
// }
157-
// })
158-
// .filter(Objects::nonNull) // null 제거 (등록 실패한 메시지 필터링)
159-
// .collect(Collectors.toList());
125+
List<Message> registeredMessages = messages.stream()
126+
.map(message -> {
127+
try {
128+
messageService.create(message);
129+
System.out.println("[" + message.getChannel().getChannelName() + "] 채널에 메시지 등록 완료");
130+
return message;
131+
} catch (IllegalArgumentException e) {
132+
System.out.println("!!메시지 등록 실패!! " + e.getMessage());
133+
return null;
134+
}
135+
})
136+
.filter(Objects::nonNull) // null 제거 (등록 실패한 메시지 필터링)
137+
.collect(Collectors.toList());
160138

161139
System.out.println(".\n.\n<--------------------메시지 저장 종료-------------------------->\n");
162-
return messages;
140+
return registeredMessages;
163141
}
164142

165143

src/main/java/com/sprint/mission/discodeit/entity/Channel.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,21 @@ public void update(Channel updateChannelData) {
8080
this.updatedAt = System.currentTimeMillis();
8181
}
8282

83+
public void validateMembership(User sender) {
84+
//채널 멤버가 아닌 유저가 메시지 생성시
85+
if (!members.contains(sender)) {
86+
throw new IllegalArgumentException(
87+
" ---" + sender.getName() + "(은/는) [" + channelName + "]채널 멤버가 아닙니다.");
88+
}
89+
}
90+
public void validateCategory(String category) {
91+
//채널에 없는 카테고리에 메시지 생성시
92+
if (!categories.contains(category)) {
93+
throw new IllegalArgumentException(
94+
" ---"+ category + "(은/는) [" +channelName + "]채널에 존재 하지 않는 카테고리입니다.");
95+
}
96+
}
97+
8398
public String toString() {
8499
return "Channel{" +
85100
"ChannelName= '" + channelName + '\'' +

src/main/java/com/sprint/mission/discodeit/entity/Message.java

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ public Message(User sender,Channel channel, String category, String content) {
2222
this.createdAt = System.currentTimeMillis();
2323
this.updatedAt = this.createdAt; //updatedAt의 처음 시간은 createAt과 동일해야 함
2424

25-
validateMessage();
2625
}
2726

2827
public UUID getId() {
@@ -74,17 +73,9 @@ public void update(Message updateMessageData) {
7473
this.updatedAt = System.currentTimeMillis();
7574
}
7675

77-
public void validateMessage() {
78-
//채널 멤버가 아닌 유저가 메시지 생성시
79-
if (!channel.getMembers().contains(sender)) {
80-
throw new IllegalArgumentException(
81-
" ---" + sender.getName()+"(은/는) [" + channel.getChannelName() + "]채널 멤버가 아닙니다.");
82-
}
83-
84-
//채널에 없는 카테고리에 메시지 생성시
85-
if (!channel.getCategory().contains(category)) {
86-
throw new IllegalArgumentException(
87-
" ---"+ category + "(은/는) [" + channel.getChannelName() + "]채널에 존재 하지 않는 카테고리입니다.");
76+
public void validateContent() {
77+
if (content == null || content.trim().isEmpty()) {
78+
throw new IllegalArgumentException("메시지 내용은 비어있을 수 없습니다.");
8879
}
8980
}
9081

src/main/java/com/sprint/mission/discodeit/service/jcf/JCFMessageService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ public JCFMessageService(JCFUserService userService, JCFChannelService channelSe
2121
//메시지 생성
2222
@Override
2323
public void create(Message message) {
24-
// message.validateMessage();
24+
Channel channel = message.getChannel();
25+
channel.validateMembership(message.getSender());
26+
channel.validateCategory(message.getCategory());
27+
28+
message.validateContent();
2529
data.put(message.getId(), message);
2630
}
2731

0 commit comments

Comments
 (0)