Skip to content

Commit 5ca045a

Browse files
authored
Merge pull request #2 from Eunhye0k/sprint2
Sprint 2 과제 제출
2 parents ffcde79 + d7b70c2 commit 5ca045a

29 files changed

+994
-190
lines changed

Message.ser

82 Bytes
Binary file not shown.

channels.ser

82 Bytes
Binary file not shown.

src/main/java/com/sprint/mission/Main.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

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

Lines changed: 0 additions & 102 deletions
This file was deleted.

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package com.sprint.mission.discodeit.entity;
22

3+
import java.io.Serial;
4+
import java.io.Serializable;
35
import java.util.UUID;
46

5-
public class BaseEntity {
7+
public class BaseEntity implements Serializable {
8+
@Serial
9+
private static final long serialVersionUID = 1L;
610

711
private UUID id;
812
private Long createdAt;

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

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
package com.sprint.mission.discodeit.entity;
2+
import java.io.Serial;
3+
import java.io.Serializable;
24
import java.util.ArrayList;
35
import java.util.List;
6+
import java.util.UUID;
47

5-
public class Channel extends BaseEntity {
6-
private String channel;
8+
public class Channel extends BaseEntity implements Serializable {
9+
@Serial
10+
private static final long serialVersionUID = 1L;
11+
private String title;
712
private final List<Message> messages;
813
private final List<User> users;
914

1015
public Channel(String channel) {
1116
super();
12-
this.channel = channel;
17+
this.title = channel;
1318

1419
this.messages = new ArrayList<>();
1520
this.users = new ArrayList<>();
@@ -20,22 +25,20 @@ public List<User> getUsers() {
2025
}
2126

2227
public String getChannel() {
23-
return channel;
28+
return title;
2429
}
2530

2631
public void updateChannel(String updateChannel){
27-
this.channel = updateChannel;
32+
this.title = updateChannel;
2833
updateTimeStamp();
2934
}
3035

31-
//추가
3236
public void addUser(User user){
3337
if(!users.contains(user)) {
3438
users.add(user);
3539
user.addChannel(this);
3640
}
3741
}
38-
//추가
3942
public void addMessage(Message message){
4043
if(!messages.contains(message)) {
4144
messages.add(message);
@@ -56,8 +59,12 @@ public void deleteUser(User user){
5659
}
5760
}
5861

59-
//추가
6062
public List<Message> getMessages(){
6163
return messages;
6264
}
65+
66+
@Override
67+
public UUID getId(){
68+
return super.getId();
69+
}
6370
}

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

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

3+
import java.io.Serial;
4+
import java.io.Serializable;
35
import java.util.ArrayList;
46
import java.util.List;
57
import java.util.UUID;
68

7-
public class Message extends BaseEntity {
9+
public class Message extends BaseEntity implements Serializable {
10+
@Serial
11+
private static final long serialVersionUID = 1L;
812
private String content;
913
private User user;
1014
private Channel channel;
@@ -20,7 +24,6 @@ public String getContent() {
2024
return content;
2125
}
2226

23-
2427
public void addUser(User user){
2528
this.user = user;
2629
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.sprint.mission.discodeit.entity;
22

3+
import java.io.*;
34
import java.lang.reflect.Array;
45
import java.nio.channels.Channels;
56
import java.util.ArrayList;
67
import java.util.Collections;
78
import java.util.List;
89

9-
public class User extends BaseEntity {
10+
public class User extends BaseEntity implements Serializable {
11+
@Serial
12+
private static final long serialVersionUID = 1L;
1013
private String username;
1114
private final List<Message> messages;
1215
private final List<Channel> channels;
@@ -15,7 +18,6 @@ public User(String name) {
1518
super();
1619
this.username = name;
1720

18-
//추가
1921
this.messages = new ArrayList<Message>();
2022
this.channels = new ArrayList<Channel>();
2123
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.sprint.mission.discodeit.repository;
2+
3+
import com.sprint.mission.discodeit.entity.Channel;
4+
import com.sprint.mission.discodeit.entity.User;
5+
6+
import java.util.List;
7+
import java.util.Map;
8+
import java.util.Optional;
9+
import java.util.UUID;
10+
11+
public interface ChannelRepository {
12+
// Channel createChannel(Channel name);
13+
Channel getChannel(UUID name);
14+
List<Channel> getChannels();
15+
// void updateChannel(UUID name, String updateChannel);
16+
// void deleteChannel(UUID name);
17+
//Optional<Channel> findByChannelName(String title);
18+
Optional<Channel> findByChannelName(String title);
19+
void save(Channel channel); // create or update
20+
void delete(UUID id);
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.sprint.mission.discodeit.repository;
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+
7+
import java.util.List;
8+
import java.util.Map;
9+
import java.util.Optional;
10+
import java.util.UUID;
11+
12+
public interface MessageRepository {
13+
// Message createMessage(Message create, User user, Channel channel);
14+
Message getMessage(UUID id);
15+
List<Message> getMessages();
16+
// void updateMessage (UUID id, String message);
17+
// void deleteMessage (UUID id);
18+
//Optional<Message> findByMessage(String content);
19+
Optional<Message> validationMessage(UUID id);
20+
void save(Message message);
21+
void delete(UUID id);
22+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.sprint.mission.discodeit.repository;
2+
3+
import com.sprint.mission.discodeit.entity.User;
4+
5+
import java.util.List;
6+
import java.util.Map;
7+
import java.util.Optional;
8+
import java.util.UUID;
9+
10+
public interface UserRepository {
11+
// User createUser(User user);
12+
User getUser(UUID id);
13+
List<User> getUsers();
14+
// void updateUser (UUID id, String username);
15+
// void deleteUser (UUID id);
16+
Optional<User> findByUserId(UUID id);
17+
void save(User user); // create or update
18+
void delete(UUID id);
19+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.sprint.mission.discodeit.repository.file;
2+
3+
import com.sprint.mission.discodeit.entity.Channel;
4+
import com.sprint.mission.discodeit.repository.ChannelRepository;
5+
import com.sprint.mission.discodeit.repository.UserRepository;
6+
7+
import java.io.*;
8+
import java.util.*;
9+
10+
public class FileChannelRepository implements ChannelRepository {
11+
private final String filePath = "channels.ser";
12+
13+
14+
public Channel getChannel(UUID id) {
15+
Map<UUID, Channel> data = readChannelFile();
16+
return data.get(id);
17+
}
18+
19+
public List<Channel> getChannels() {
20+
return new ArrayList<>(readChannelFile().values());
21+
}
22+
23+
@Override
24+
public void save(Channel channel) {
25+
Map<UUID, Channel> data = readChannelFile();
26+
data.put(channel.getId(), channel);
27+
writeChannelFile(data);
28+
}
29+
30+
@Override
31+
public void delete(UUID id) {
32+
Map<UUID, Channel> data = readChannelFile();
33+
data.remove(id);
34+
writeChannelFile(data);
35+
}
36+
37+
38+
public Optional<Channel> findByChannelName(String title) {
39+
Map<UUID, Channel> data = readChannelFile();
40+
return data.values()
41+
.stream()
42+
.filter(channel -> channel.getChannel().equals(title))
43+
.findFirst();
44+
}
45+
46+
//채널 파일 READ
47+
private Map<UUID, Channel> readChannelFile() {
48+
try(ObjectInputStream in = new ObjectInputStream(new FileInputStream(filePath))){
49+
return (Map<UUID, Channel>) in.readObject();
50+
} catch (IOException | ClassNotFoundException e) {
51+
return new HashMap<>();
52+
}
53+
}
54+
55+
//채널 파일에 WRITE
56+
private void writeChannelFile(Map<UUID, Channel> data) {
57+
try(ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("channels.ser"))){
58+
out.writeObject(data);
59+
} catch (IOException e) {
60+
e.printStackTrace();
61+
}
62+
}
63+
}

0 commit comments

Comments
 (0)