Skip to content

Commit 5fb887f

Browse files
committed
Made some changes to adhere to clean architecture
1 parent f07484f commit 5fb887f

File tree

9 files changed

+128
-40
lines changed

9 files changed

+128
-40
lines changed

src/main/java/interface_adapters/appscreen/AppScreenController.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,11 @@ public Chat getChat(){
3535

3636
}
3737

38-
/**
39-
* Controller to update the screen and change the order chats of in user database
40-
*/
41-
public void updateScreen(){
42-
ChatOrder chatOrder = new ChatOrder(this.username);
43-
ArrayList<Chat> newOrder = chatOrder.changeOrder(getChat());
44-
createGateway(newOrder);
45-
46-
}
47-
4838
/**
4939
* Create the gateway to save a user's chat list order in the user database
5040
*/
5141
public void createGateway(ArrayList<Chat> newOrder){
52-
UserAppScreenGateway gateway = new UserAppScreenGateway(this.username,
53-
new UserDatabase(new File("user_accounts")));
42+
UserAppScreenGateway gateway = new UserAppScreenGateway(this.username);
5443
try{
5544
gateway.updateUserChatList(this.username, newOrder);
5645
} catch (NullPointerException e) {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
package interface_adapters.appscreen;
22

33
public interface Refresh {
4-
void refreshScreen(String chatID);
4+
void refreshScreen();
55
}

src/main/java/interface_adapters/appscreen/UserAppScreenGateway.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,26 @@
55
import entities.user_entities.User;
66
import interface_adapters.login_interface_adapters.Login;
77

8+
import java.io.File;
89
import java.util.ArrayList;
910

1011
public class UserAppScreenGateway implements Login {
1112

12-
private final UserDatabase userDatabase;
13+
private final UserDatabase userDatabase = new UserDatabase(new File("user_accounts"));
1314
private final String username;
1415

1516
/**
1617
* Create gateway between user and appscreen
1718
*/
18-
public UserAppScreenGateway(String username, UserDatabase userDatabase){
19+
public UserAppScreenGateway(String username){
1920
this.username = username;
20-
this.userDatabase = userDatabase;
2121
}
2222

2323
/**
2424
* Log the user into the system
2525
*/
2626
public void login(){
27-
ArrayList<Chat> userChats = this.userDatabase.getUserChats(this.username);
27+
ArrayList<Chat> userChats = userDatabase.getUserChats(this.username);
2828
AppScreenLoader appScreenLoader = new AppScreenLoader(this.username, userChats);
2929
appScreenLoader.openScreen();
3030
}
@@ -41,4 +41,5 @@ public void updateUserChatList(String username, ArrayList<Chat> userChats){
4141
this.userDatabase.modifyUser(username, currentUser);
4242

4343
}
44+
4445
}

src/main/java/screens/appscreen/AppScreen.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import entities.chat.Chat;
44
import entities.chat.CommonPrivatechat;
55
import entities.chat.PrivateChatfactory;
6+
import interface_adapters.appscreen.AppScreenController;
67
import interface_adapters.appscreen.AppScreenPresenter;
78
import interface_adapters.appscreen.Refresh;
89
import screens.chat_screen.ChatController;
@@ -16,7 +17,7 @@
1617
import java.time.LocalDateTime;
1718
import java.util.ArrayList;
1819

19-
public class AppScreen implements AppScreenPresenter, Refresh {
20+
public class AppScreen implements AppScreenPresenter {
2021

2122
private final JFrame jFrame;
2223
private JScrollPane jScrollPane;
@@ -51,7 +52,7 @@ public AppScreen(String currentUsername, ArrayList<Chat> chats) {
5152
addPrivateChat.addActionListener(e -> {
5253
PrivateChatfactory privateChatfactory = new CommonPrivatechat();
5354
ChatInputBoundry inputBoundry = new ChatInteractor(privateChatfactory);
54-
ChatController controller = new ChatController(inputBoundry);
55+
ChatController controller = new ChatController(inputBoundry, currentUsername);
5556
new ChatView(controller, true);
5657

5758
});
@@ -132,11 +133,8 @@ private void scrollableChats(JPanel jPanel) {
132133
/**
133134
* Update the order of chats that appear on screen if there was a change to conversation history
134135
* This should be called if a new chat was added or if an existing chat has a new message
135-
* @param chatID The ID of the chat with an update
136136
*/
137-
public void refreshScreen(String chatID) {
138-
ChatOrder chatOrder = new ChatOrder(currentUsername);
139-
this.chats = chatOrder.getUserChats();
137+
public void refreshScreen() {
140138

141139
jFrame.remove(this.jScrollPane);
142140

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package use_cases.appscreen;
2+
3+
import entities.chat.Chat;
4+
import interface_adapters.appscreen.AppScreenController;
5+
import interface_adapters.appscreen.Refresh;
6+
7+
import java.util.ArrayList;
8+
9+
public class AppScreenChatProxy implements Refresh {
10+
11+
private final String username;
12+
private final Chat chat;
13+
14+
public AppScreenChatProxy(String username, Chat chat){
15+
this.username = username;
16+
this.chat = chat;
17+
}
18+
19+
@Override
20+
public void refreshScreen() {
21+
AppScreenRequestModel requestModel = new AppScreenRequestModel(this.username, this.chat);
22+
ArrayList<Chat> newOrder = requestModel.orderChats();
23+
AppScreenController controller = new AppScreenController(this.username, this.chat.getChatID());
24+
controller.createGateway(newOrder);
25+
26+
AppScreenResponseModel.refreshScreen();
27+
}
28+
}
Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
11
package use_cases.appscreen;
22

3+
import entities.chat.Chat;
34
import interface_adapters.appscreen.AppScreenController;
45

6+
import java.util.ArrayList;
7+
58
public class AppScreenRequestModel {
69

7-
public AppScreenRequestModel(String username, String chatID){
8-
AppScreenController appScreenController = new AppScreenController(username, chatID);
9-
appScreenController.updateScreen();
10-
AppScreenResponseModel.refreshScreen(chatID);
10+
private String username;
11+
private Chat chat;
12+
public AppScreenRequestModel(String username, Chat chat){
13+
this.username = username;
14+
this.chat = chat;
15+
}
16+
17+
public ArrayList<Chat> orderChats(){
18+
ChatOrder chatOrder = new ChatOrder(username, chat);
19+
return chatOrder.changeOrder();
1120
}
1221

1322
}
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
package use_cases.appscreen;
22

3+
import entities.chat.Chat;
4+
import interface_adapters.appscreen.UserAppScreenGateway;
5+
6+
import java.util.ArrayList;
7+
38
public class AppScreenResponseModel {
49

5-
public static void refreshScreen(String chatID) {
6-
AppScreenStatus.getAppScreen().refreshScreen(chatID);
10+
public static void refreshScreen() {
11+
AppScreenStatus.getAppScreen().refreshScreen();
712
}
813
}

src/main/java/use_cases/appscreen/ChatOrder.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,28 @@
22

33
import data_access.UserDatabase;
44
import entities.chat.Chat;
5+
import interface_adapters.Chat.UserChatGateway;
56

67
import java.io.File;
78
import java.util.ArrayList;
89

910
public class ChatOrder {
1011

12+
private final String username;
13+
private final Chat chat;
14+
1115
private final ArrayList<Chat> userChats;
1216

1317
/**
1418
* Create a chat order object
15-
* @param username Username of the current user
19+
* @param username The username of the user
20+
* @param chat The given chat
1621
*/
17-
public ChatOrder(String username){
18-
UserDatabase userDatabase = new UserDatabase(new File("user_accounts"));
19-
this.userChats = userDatabase.getUserChats(username);
22+
public ChatOrder(String username, Chat chat){
23+
this.username = username;
24+
this.chat = chat;
25+
this.userChats = new UserDatabase(new File("user_accounts")).getUserChats(username);
26+
2027
}
2128

2229
/**
@@ -28,17 +35,16 @@ public ArrayList<Chat> getUserChats(){
2835
}
2936

3037
/**
31-
* Update the order of the chats
32-
* @param updatedChat The chat that has an update
38+
* Update the order of the chats and return the new lisst
3339
*/
34-
public ArrayList<Chat> changeOrder(Chat updatedChat){
40+
public ArrayList<Chat> changeOrder(){
3541

36-
if (this.userChats.contains(updatedChat)) {
37-
this.userChats.remove(updatedChat);
38-
this.userChats.add(updatedChat);
42+
if (this.userChats.contains(this.chat)) {
43+
this.userChats.remove(this.chat);
44+
this.userChats.add(this.chat);
3945
}
4046
else {
41-
this.userChats.add(updatedChat);
47+
this.userChats.add(this.chat);
4248
}
4349
return this.userChats;
4450
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package testappscreen;
2+
3+
import entities.chat.Chat;
4+
import entities.chat.PrivateChat;
5+
import entities.user_entities.BasicUser;
6+
import use_cases.appscreen.ChatOrder;
7+
8+
import java.util.ArrayList;
9+
10+
import static org.junit.jupiter.api.Assertions.*;
11+
12+
public class TestChatOrder {
13+
14+
static PrivateChat pv1 = new PrivateChat("name1", "1", "amy");
15+
static PrivateChat pv2 = new PrivateChat("name2", "2", "amy");
16+
static PrivateChat pv3 = new PrivateChat("name3", "3", "amy");
17+
static PrivateChat pv4 = new PrivateChat("name4", "4", "amy");
18+
static PrivateChat pv5 = new PrivateChat("name5", "5", "amy");
19+
static PrivateChat pv6 = new PrivateChat("name6", "6", "amy");
20+
21+
// public static void main(String[] args) {
22+
//
23+
// ArrayList<Chat> myChats = new ArrayList<>();
24+
// myChats.add(pv1);
25+
// myChats.add(pv2);
26+
// myChats.add(pv3);
27+
// myChats.add(pv4);
28+
// myChats.add(pv5);
29+
// myChats.add(pv6);
30+
// BasicUser amy = new BasicUser("amy", "123", "myEmail", myChats);
31+
//
32+
// leastRecentChat();
33+
// }
34+
//
35+
// public static void leastRecentChat(){
36+
// ChatOrder chatOrder = new ChatOrder("amy");
37+
// chatOrder.changeOrder(pv1);
38+
// assertEquals(chatOrder.getUserChats().get(chatOrder.getUserChats().size() - 1), pv1);
39+
// }
40+
//
41+
// public static void moderatelyRecentChat(){
42+
// ChatOrder chatOrder = new ChatOrder("amy");
43+
// chatOrder.changeOrder(pv3);
44+
// assertEquals(chatOrder.getUserChats().get(chatOrder.getUserChats().size() - 1), pv3);
45+
// }
46+
//
47+
// public static void mostRecentChat(){
48+
// ChatOrder chatOrder = new ChatOrder("amy");
49+
// chatOrder.changeOrder(pv6);
50+
// assertEquals(chatOrder.getUserChats().get(chatOrder.getUserChats().size() - 1), pv6);
51+
// }
52+
}

0 commit comments

Comments
 (0)