Skip to content

Commit 53e0289

Browse files
committed
피드백 반영
1 parent 42bc33b commit 53e0289

14 files changed

+135
-107
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.sprint.mission.discodeit;
2+
3+
import com.sprint.mission.discodeit.entity.Channel;
4+
import com.sprint.mission.discodeit.entity.Message;
5+
import com.sprint.mission.discodeit.entity.User;
6+
import com.sprint.mission.discodeit.service.ChannelService;
7+
import com.sprint.mission.discodeit.service.MessageService;
8+
import com.sprint.mission.discodeit.service.UserService;
9+
10+
import java.util.UUID;
11+
12+
public class ChannelApplication {
13+
private final ChannelService channelService;
14+
private final UserService userService;
15+
private final MessageService messageService;
16+
17+
public ChannelApplication(ChannelService channelService, UserService userService, MessageService messageService) {
18+
this.channelService = channelService;
19+
this.userService = userService;
20+
this.messageService = messageService;
21+
}
22+
23+
public void addUserToChannel(UUID channelId, UUID userId) {
24+
Channel channel = channelService.getChannel(channelId)
25+
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 채널"));
26+
27+
User user = userService.getUser(userId)
28+
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 유저"));
29+
30+
user.addChannel(channelId);
31+
channelService.addUserId(channelId, userId);
32+
}
33+
34+
public void addMessageToChannel(UUID channelId, UUID messageId) {
35+
Channel channel = channelService.getChannel(channelId)
36+
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 채널"));
37+
38+
Message message = messageService.getMessage(messageId)
39+
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 메시지"));
40+
41+
if (!message.getChannelId().equals(channelId)) {
42+
throw new IllegalStateException("이 채널에 속하지 않은 메시지입니다");
43+
}
44+
45+
channelService.addMessageId(channelId, messageId);
46+
}
47+
48+
public void deleteChannel(UUID channelId) {
49+
Channel channel = channelService.getChannel(channelId)
50+
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 채널"));
51+
52+
for (UUID messageId : channel.getMessageIds()) {
53+
messageService.deleteMessage(messageId);
54+
}
55+
56+
channelService.deleteChannel(channelId);
57+
}
58+
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ public static void main(String[] args) {
1414
Scanner scanner = new Scanner(System.in);
1515
JCFUserService userService = new JCFUserService();
1616
JCFMessageService messageService = new JCFMessageService(userService, null);
17-
JCFChannelService channelService = new JCFChannelService(messageService, userService);
17+
JCFChannelService channelService = new JCFChannelService();
1818

1919
messageService.setChannelService(channelService);
20-
userService.addChannelService(channelService);
20+
userService.setChannelService(channelService);
21+
22+
ChannelApplication channelApplication = new ChannelApplication(channelService, userService, messageService);
2123

2224
while (true) {
2325
System.out.println("\n===== MAIN MENU =====");
@@ -35,10 +37,10 @@ public static void main(String[] args) {
3537
UserMenu.manageUsers(scanner, userService);
3638
break;
3739
case "2":
38-
ChannelMenu.manageChannels(scanner, channelService, userService);
40+
ChannelMenu.manageChannels(scanner, channelService, channelApplication);
3941
break;
4042
case "3":
41-
MessageMenu.manageMessages(scanner, messageService, userService, channelService);
43+
MessageMenu.manageMessages(scanner, messageService);
4244
break;
4345
case "0":
4446
System.out.println("종료합니다.");

src/main/java/com/sprint/mission/discodeit/menu/ChannelMenu.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.sprint.mission.discodeit.menu;
22

3+
import com.sprint.mission.discodeit.ChannelApplication;
34
import com.sprint.mission.discodeit.entity.Channel;
4-
import com.sprint.mission.discodeit.service.jcf.JCFChannelService;
5-
import com.sprint.mission.discodeit.service.jcf.JCFUserService;
5+
import com.sprint.mission.discodeit.service.ChannelService;
66

77
import java.util.Scanner;
88
import java.util.UUID;
99

1010
public class ChannelMenu {
11-
public static void manageChannels(Scanner scanner, JCFChannelService channelService, JCFUserService userService) {
11+
public static void manageChannels(Scanner scanner, ChannelService channelService, ChannelApplication channelApplication) {
1212
while (true) {
1313
System.out.println("\n===== CHANNEL MENU =====");
1414
System.out.println("1. 채널 생성");
@@ -33,8 +33,11 @@ public static void manageChannels(Scanner scanner, JCFChannelService channelServ
3333
case "2":
3434
System.out.print("채널 ID 입력: ");
3535
UUID id = UUID.fromString(scanner.nextLine());
36-
Channel found = channelService.getChannel(id);
37-
System.out.println(found != null ? found : "채널을 찾을 수 없습니다.");
36+
channelService.getChannel(id)
37+
.ifPresentOrElse(
38+
System.out::println,
39+
() -> System.out.println("채널을 찾을 수 없습니다.")
40+
);
3841
break;
3942
case "3":
4043
channelService.getAllChannels().forEach(System.out::println);
@@ -49,14 +52,14 @@ public static void manageChannels(Scanner scanner, JCFChannelService channelServ
4952
case "5":
5053
System.out.print("삭제할 채널 ID 입력: ");
5154
UUID delId = UUID.fromString(scanner.nextLine());
52-
channelService.deleteChannel(delId);
55+
channelApplication.deleteChannel(delId);
5356
break;
5457
case "6":
5558
System.out.print("채널 ID 입력: ");
5659
UUID chId = UUID.fromString(scanner.nextLine());
5760
System.out.print("사용자 ID 입력: ");
5861
UUID userId = UUID.fromString(scanner.nextLine());
59-
channelService.addUserToChannel(chId, userId);
62+
channelApplication.addUserToChannel(chId, userId);
6063
break;
6164
case "0":
6265
return;

src/main/java/com/sprint/mission/discodeit/menu/MessageMenu.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,12 @@
22

33
import com.sprint.mission.discodeit.entity.Message;
44
import com.sprint.mission.discodeit.service.jcf.JCFMessageService;
5-
import com.sprint.mission.discodeit.service.jcf.JCFUserService;
6-
import com.sprint.mission.discodeit.service.jcf.JCFChannelService;
75

86
import java.util.Scanner;
97
import java.util.UUID;
108

119
public class MessageMenu {
12-
public static void manageMessages(Scanner scanner, JCFMessageService messageService, JCFUserService userService, JCFChannelService channelService) {
10+
public static void manageMessages(Scanner scanner, JCFMessageService messageService) {
1311
while (true) {
1412
System.out.println("\n===== MESSAGE MENU =====");
1513
System.out.println("1. 메시지 생성");
@@ -36,8 +34,11 @@ public static void manageMessages(Scanner scanner, JCFMessageService messageServ
3634
case "2":
3735
System.out.print("메시지 ID 입력: ");
3836
UUID id = UUID.fromString(scanner.nextLine());
39-
Message find = messageService.getMessage(id);
40-
System.out.println(find != null ? find : "메시지를 찾을 수 없습니다.");
37+
messageService.getMessage(id)
38+
.ifPresentOrElse(
39+
System.out::println,
40+
() -> System.out.println("메시지를 찾을 수 없습니다.")
41+
);
4142
break;
4243
case "3":
4344
messageService.getAllMessages().forEach(System.out::println);

src/main/java/com/sprint/mission/discodeit/menu/UserMenu.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@ public static void manageUsers(Scanner scanner, JCFUserService userService) {
3131
case "2":
3232
System.out.print("조회할 사용자 ID 입력: ");
3333
UUID id = UUID.fromString(scanner.nextLine());
34-
User find = userService.getUser(id);
35-
System.out.println(find != null ? find : "사용자를 찾을 수 없습니다.");
34+
userService.getUser(id)
35+
.ifPresentOrElse(
36+
System.out::println,
37+
() -> System.out.println("사용자를 찾을 수 없습니다.")
38+
);
3639
break;
3740
case "3":
3841
userService.getAllUsers().forEach(System.out::println);

src/main/java/com/sprint/mission/discodeit/service/ChannelService.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
import com.sprint.mission.discodeit.entity.Channel;
44

55
import java.util.List;
6+
import java.util.Optional;
67
import java.util.UUID;
78

89
public interface ChannelService {
910
Channel createChannel(Channel channel);
10-
Channel getChannel(UUID channelId);
11+
Optional<Channel> getChannel(UUID channelId);
1112
List<Channel> getAllChannels();
1213
void updateChannel(UUID channelId, String channelName);
1314
void deleteChannel(UUID channelId);
14-
void addMessageToChannel(UUID channelId, UUID messageId);
15-
void addUserToChannel(UUID channelId, UUID userId);
15+
void addMessageId(UUID channelId, UUID messageId);
16+
void addUserId(UUID channelId, UUID userId);
1617
}

src/main/java/com/sprint/mission/discodeit/service/MessageService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
import com.sprint.mission.discodeit.entity.Message;
44

55
import java.util.List;
6+
import java.util.Optional;
67
import java.util.UUID;
78

89
public interface MessageService {
910
Message createMessage(Message message);
10-
Message getMessage(UUID messageId);
11+
Optional<Message> getMessage(UUID messageId);
1112
List<Message> getAllMessages();
1213
void updateMessage(UUID messageId, String msgContent);
1314
void deleteMessage(UUID messageId);

src/main/java/com/sprint/mission/discodeit/service/UserService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
import com.sprint.mission.discodeit.entity.User;
44

55
import java.util.List;
6+
import java.util.Optional;
67
import java.util.UUID;
78

89
public interface UserService {
910
User createUser(User user);
10-
User getUser(UUID userId);
11+
Optional<User> getUser(UUID userId);
1112
List<User> getAllUsers();
1213
void updateUser(UUID userId, String userName);
1314
void deleteUser(UUID userId);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.sprint.mission.discodeit.service.file;
2+
3+
public class FileChannelService {
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.sprint.mission.discodeit.service.file;
2+
3+
public class FileMessageService {
4+
}

0 commit comments

Comments
 (0)