From ca0d83fb50b439bd6244c5fa980247cbe5dd7be4 Mon Sep 17 00:00:00 2001 From: LazySlav Date: Fri, 19 May 2023 23:09:44 +0300 Subject: [PATCH 01/12] Removed Admin.java; Updated .gitignore (no more tracking .jsons); Minor changes in RestFullController.java --- .gitignore | 2 + .../com/example/demo/RestFullController.java | 106 ++++++------------ .../java/com/example/demo/files/chats.json | 1 - .../java/com/example/demo/files/messages.json | 1 - .../java/com/example/demo/files/users.json | 1 - .../java/com/example/demo/models/Admin.java | 12 -- 6 files changed, 38 insertions(+), 85 deletions(-) delete mode 100644 src/main/java/com/example/demo/files/chats.json delete mode 100644 src/main/java/com/example/demo/files/messages.json delete mode 100644 src/main/java/com/example/demo/files/users.json delete mode 100644 src/main/java/com/example/demo/models/Admin.java diff --git a/.gitignore b/.gitignore index 549e00a..be3f336 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ build/ ### VS Code ### .vscode/ + +*.json \ No newline at end of file diff --git a/src/main/java/com/example/demo/RestFullController.java b/src/main/java/com/example/demo/RestFullController.java index 0af4731..a60bcc4 100644 --- a/src/main/java/com/example/demo/RestFullController.java +++ b/src/main/java/com/example/demo/RestFullController.java @@ -13,11 +13,9 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.*; -import java.util.stream.Collectors; +// import java.util.stream.Collectors; -import static org.springframework.web.bind.annotation.RequestMethod.GET; - -@Controller +@RestController public class RestFullController { static Gson gson = new Gson(); @@ -31,12 +29,11 @@ public class RestFullController { public static ArrayList usersArrayList = new ArrayList<>(); public static ArrayList chatsArrayList = new ArrayList<>(); public static ArrayList messagesArrayList = new ArrayList<>(); -// public static ArrayList userArrayList= new ArrayList<>(); - + // public static ArrayList userArrayList= new ArrayList<>(); // Конструктор конроллера - деиствия при запуске программы public RestFullController() { - String s = "", s1 = "", s2 = "", s3 = ""; + String s1 = "", s2 = "", s3 = ""; Gson gson = new Gson(); try { s1 = new String(Files.readAllBytes(Paths.get(fileNameUsers))); @@ -54,31 +51,31 @@ public RestFullController() { } - public static void update(String nameFile) { + public static void update(String nameFile) throws RuntimeException{ Gson gson = new Gson(); FileWriter fw; ArrayList ent = new ArrayList<>(); switch (nameFile) { case "users": - ent = usersArrayList; + ent = usersArrayList; break; case "chats": - ent = chatsArrayList; + ent = chatsArrayList; break; case "messages": - ent = messagesArrayList; + ent = messagesArrayList; break; default: - ent = new ArrayList<>(); + throw new IllegalArgumentException("Variable can take only \"users\",\"chats\" or \"messages\" values"); } try { fw = new FileWriter("src/main/java/com/example/demo/files/" + nameFile + ".json"); - String l = "["; + StringBuilder l = new StringBuilder("["); for (int i = 0; i < ent.size(); i++) { if (i == ent.size() - 1) { - l += gson.toJson(ent.get(i)); + l.append(gson.toJson(ent.get(i))); } else { - l += gson.toJson(ent.get(i)) + ","; + l.append(gson.toJson(ent.get(i))).append(","); } } fw.write(l + "]"); @@ -89,18 +86,14 @@ public static void update(String nameFile) { } // http://localhost:8080/authorization?login=loginExample&password=220512281 - @RequestMapping( - value = "/authorization", - params = {"login", "password"}, - method = GET) - @ResponseBody + @GetMapping(value = "/authorization", params = {"login", "password"}) public String authorization( @RequestParam("login") String login, @RequestParam("password") String password) { for (User user : usersArrayList) { if (user.getLogin().equals(login) && - user.getPassword().hashCode() == Integer.parseInt(password)) { - return "" + user.getName() + "-"; + user.getPassword().equals(password)) { + return user.getName() + "-"; } } return "false"; @@ -108,11 +101,7 @@ public String authorization( // http://localhost:8080/registration?name=Stas&login=loginExample1&password=passExample1 // http://localhost:8080/registration?name=Yuri&login=loginExample2&password=passExample2 - @RequestMapping( - value = "/registration", - params = {"name", "login", "password"}, - method = GET) - @ResponseBody + @GetMapping(value = "/registration", params = {"name", "login", "password"}) public String registration( @RequestParam("name") String name, @RequestParam("login") String login, @@ -124,70 +113,51 @@ public String registration( } // http://localhost:8080/createNewChatWithTwoUsers?user1=Yuri&user2=Stas - @RequestMapping( - value = "/createNewChatWithTwoUsers", - params = {"user1", "user2"}, - method = GET) - @ResponseBody + @GetMapping(value = "/createNewChatWithTwoUsers", params = {"user1", "user2"}) public String createNewChatWithTwoUsers( @RequestParam("user1") String user1, @RequestParam("user2") String user2) { int n = usersArrayList.size(); - try { - chatsArrayList.add(new Chat(("C" + n), false, new ArrayList(), new TreeSet<>(List.of(user1, user2)))); - } catch (Error | Exception e) { - return "false"; - } + + chatsArrayList + .add(new Chat(("C" + n), false, new ArrayList(), new TreeSet<>(List.of(user1, user2)))); + + update("chats"); return "true"; } // http://localhost:8080/createNewMessage?user1=Yuri&user2=Stas - @RequestMapping( - value = "/createNewMessage", - params = {"user1", "user2", "text", "chatId"}, - method = GET) - @ResponseBody - public String sendNewMessageInChat( + @GetMapping(value = "/createNewMessage", params = {"user1", "user2", "text", "chatId"}) + public String createNewMessage( @RequestParam("user1") String user1, @RequestParam("user2") String user2, @RequestParam("text") String text, @RequestParam("chatId") String chatId) { int n = messagesArrayList.size(); - try { - messagesArrayList.add(new Message(("M" + n), false, text, new Date().getTime(), user1, user2, new TreeSet<>())); - chatsArrayList.get(n).messages.add(("M" + n)); - } catch (Error | Exception e) { - return "false"; - } + + messagesArrayList + .add(new Message(("M" + n), false, text, new Date().getTime(), user1, user2, new TreeSet<>())); + chatsArrayList.get(n).messages.add(("M" + n)); + update("messages"); return "true"; } // Методы админа - @RequestMapping( - value = "/getAllUsers", - method = GET) - @ResponseBody - public Iterable returnUsers() { + @GetMapping(value = "/getAllUsers") + public Iterable getAllUsers() { return usersArrayList; } - @RequestMapping( - value = "/getAllChats", - method = GET) - @ResponseBody - public Iterable returnChats() { + @GetMapping(value = "/getAllChats") + public Iterable getAllChats() { return chatsArrayList; } // // Методы Админа и Юзера - @RequestMapping( - value = "/getAllChatsByUser", - params = {"userId"}, - method = GET) - @ResponseBody + @GetMapping(value = "/getAllChatsByUser", params = {"userId"}) public Iterable getAllChatsByUser( @RequestParam("userId") String userId) { ArrayList f = usersArrayList.get(getIdFromId(userId)).chatArrayList; @@ -196,11 +166,7 @@ public Iterable getAllChatsByUser( .filter(it -> f.contains(it.id)); } - @RequestMapping( - value = "/getAllCMessagesByChat", - params = {"chatId"}, - method = GET) - @ResponseBody + @GetMapping(value = "/getAllCMessagesByChat", params = {"chatId"}) public Iterable getAllCMessagesByChat( @RequestParam("chatId") String chatId) { ArrayList f = Objects.requireNonNull(chatsArrayList.stream() @@ -213,7 +179,7 @@ public Iterable getAllCMessagesByChat( } // - public int getIdFromId(String s) { + private int getIdFromId(String s) { return Integer.parseInt(s.substring(1)); } diff --git a/src/main/java/com/example/demo/files/chats.json b/src/main/java/com/example/demo/files/chats.json deleted file mode 100644 index 0637a08..0000000 --- a/src/main/java/com/example/demo/files/chats.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/src/main/java/com/example/demo/files/messages.json b/src/main/java/com/example/demo/files/messages.json deleted file mode 100644 index 0637a08..0000000 --- a/src/main/java/com/example/demo/files/messages.json +++ /dev/null @@ -1 +0,0 @@ -[] \ No newline at end of file diff --git a/src/main/java/com/example/demo/files/users.json b/src/main/java/com/example/demo/files/users.json deleted file mode 100644 index 0cb9622..0000000 --- a/src/main/java/com/example/demo/files/users.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":"U0","isAdmin":true,"name":"Матвей Дыгало","login":"muton","password":"PASSWORD","chatArrayList":[]}] \ No newline at end of file diff --git a/src/main/java/com/example/demo/models/Admin.java b/src/main/java/com/example/demo/models/Admin.java deleted file mode 100644 index 1197a6a..0000000 --- a/src/main/java/com/example/demo/models/Admin.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.example.demo.models; - -import java.util.ArrayList; - -public class Admin extends User{ - public Admin(String id, Boolean isAdmin, String name, String login, String password, ArrayList chatArrayList) { - super(id, isAdmin, name, login, password, chatArrayList); - } - - - -} From 7814c5998cded88f402c10e3abbcfe976e60cefc Mon Sep 17 00:00:00 2001 From: LazySlav Date: Sat, 27 May 2023 13:21:25 +0300 Subject: [PATCH 02/12] Updated User-Chat-Message ID linking via superclass ID and implemented findInListById() --- .../com/example/demo/RestFullController.java | 5 ++-- .../java/com/example/demo/models/Chat.java | 11 ++++---- src/main/java/com/example/demo/models/ID.java | 23 ++++++++++++++++ .../java/com/example/demo/models/Message.java | 9 +++---- .../java/com/example/demo/models/User.java | 27 ++++++++++--------- 5 files changed, 48 insertions(+), 27 deletions(-) create mode 100644 src/main/java/com/example/demo/models/ID.java diff --git a/src/main/java/com/example/demo/RestFullController.java b/src/main/java/com/example/demo/RestFullController.java index a60bcc4..d168fb7 100644 --- a/src/main/java/com/example/demo/RestFullController.java +++ b/src/main/java/com/example/demo/RestFullController.java @@ -179,8 +179,7 @@ public Iterable getAllCMessagesByChat( } // - private int getIdFromId(String s) { - return Integer.parseInt(s.substring(1)); + public static T findInListById(ArrayList list, String objId) { + return list.stream().filter(listObj -> listObj.id.equals(objId)).findFirst().orElse(null); } - } \ No newline at end of file diff --git a/src/main/java/com/example/demo/models/Chat.java b/src/main/java/com/example/demo/models/Chat.java index 89c0d47..f8d83eb 100644 --- a/src/main/java/com/example/demo/models/Chat.java +++ b/src/main/java/com/example/demo/models/Chat.java @@ -3,17 +3,16 @@ import java.util.ArrayList; import java.util.TreeSet; -public class Chat { - public String id; +public class Chat extends ID{ public Boolean isDeleted; public ArrayList messages; - public TreeSet setIdUsers; + public TreeSet parentUsers; - public Chat(String id, Boolean isDeleted, ArrayList messages, TreeSet setIdUsers) { - this.id = id; + public Chat(String id, Boolean isDeleted, ArrayList messages, TreeSet parentUsers) { + super(id); this.isDeleted = isDeleted; this.messages = messages; - this.setIdUsers = setIdUsers; + this.parentUsers = parentUsers; } } diff --git a/src/main/java/com/example/demo/models/ID.java b/src/main/java/com/example/demo/models/ID.java new file mode 100644 index 0000000..bb40be9 --- /dev/null +++ b/src/main/java/com/example/demo/models/ID.java @@ -0,0 +1,23 @@ +package com.example.demo.models; + +import java.util.ArrayList; +import java.util.Optional; + +public abstract class ID { + public String id; + public ID(String id) { + this.id = id; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public static Optional findInListById(ArrayList list, String objId) { + return list.stream().filter(listObj -> listObj.id.equals(objId)).findFirst(); + } +} diff --git a/src/main/java/com/example/demo/models/Message.java b/src/main/java/com/example/demo/models/Message.java index d44f927..cbddc9c 100644 --- a/src/main/java/com/example/demo/models/Message.java +++ b/src/main/java/com/example/demo/models/Message.java @@ -3,22 +3,19 @@ import java.util.ArrayList; import java.util.TreeSet; -public class Message { - public String id; +public class Message extends ID{ public Boolean isDeleted; public String text; public Long time; public String idUserAuthor; public String idUserRecipient; - public TreeSet setIdUsers; - public Message(String id, Boolean isDeleted, String text, Long time, String idUserAuthor, String idUserRecipient, TreeSet setIdUsers) { - this.id = id; + public Message(String id, Boolean isDeleted, String text, Long time, String idUserAuthor, String idUserRecipient) { + super(id); this.isDeleted = isDeleted; this.text = text; this.time = time; this.idUserAuthor = idUserAuthor; this.idUserRecipient = idUserRecipient; - this.setIdUsers = setIdUsers; } } diff --git a/src/main/java/com/example/demo/models/User.java b/src/main/java/com/example/demo/models/User.java index 0f78b08..6da126f 100644 --- a/src/main/java/com/example/demo/models/User.java +++ b/src/main/java/com/example/demo/models/User.java @@ -2,25 +2,20 @@ import java.util.ArrayList; -public class User { - public String id; +public class User extends ID{ public Boolean isAdmin; public String name; public String login; public String password; - public ArrayList chatArrayList = new ArrayList<>(); + public ArrayList chats; - public User(String id, Boolean isAdmin, String name, String login, String password, ArrayList chatArrayList) { - this.id = id; + public User(String id, Boolean isAdmin, String name, String login, String password, ArrayList chats) { + super(id); this.isAdmin = isAdmin; this.name = name; this.login = login; this.password = password; - this.chatArrayList = chatArrayList; - } - - public String getId() { - return id; + this.chats = chats; } public Boolean getAdmin() { @@ -39,7 +34,15 @@ public String getPassword() { return password; } - public ArrayList getChatArrayList() { - return chatArrayList; + public ArrayList getChats() { + return chats; + } + + public void setPassword(String password) { + this.password = password; + } + + public void addChat(Chat chat) { + this.chats.add(chat.id); } } From 245a5996ada9068dd1a5e8551bd258f95a9f8c71 Mon Sep 17 00:00:00 2001 From: LazySlav Date: Sat, 27 May 2023 15:00:19 +0300 Subject: [PATCH 03/12] Some minimal fine-tuning of models --- src/main/java/com/example/demo/models/Message.java | 5 +---- src/main/java/com/example/demo/models/User.java | 12 +++--------- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/demo/models/Message.java b/src/main/java/com/example/demo/models/Message.java index cbddc9c..0c17484 100644 --- a/src/main/java/com/example/demo/models/Message.java +++ b/src/main/java/com/example/demo/models/Message.java @@ -1,9 +1,6 @@ package com.example.demo.models; -import java.util.ArrayList; -import java.util.TreeSet; - -public class Message extends ID{ +public class Message extends ID { public Boolean isDeleted; public String text; public Long time; diff --git a/src/main/java/com/example/demo/models/User.java b/src/main/java/com/example/demo/models/User.java index 6da126f..caff9b0 100644 --- a/src/main/java/com/example/demo/models/User.java +++ b/src/main/java/com/example/demo/models/User.java @@ -2,20 +2,18 @@ import java.util.ArrayList; -public class User extends ID{ +public class User extends ID { public Boolean isAdmin; public String name; - public String login; public String password; public ArrayList chats; - public User(String id, Boolean isAdmin, String name, String login, String password, ArrayList chats) { + public User(String id, Boolean isAdmin, String name, String password) { super(id); this.isAdmin = isAdmin; this.name = name; - this.login = login; this.password = password; - this.chats = chats; + this.chats = new ArrayList(); } public Boolean getAdmin() { @@ -26,10 +24,6 @@ public String getName() { return name; } - public String getLogin() { - return login; - } - public String getPassword() { return password; } From f45b495ef9ff14b13205050b9f44727fb73a4279 Mon Sep 17 00:00:00 2001 From: LazySlav Date: Sat, 27 May 2023 15:01:01 +0300 Subject: [PATCH 04/12] Fuck Java 11, and also fuck you, @Stanislaviouous --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index d41bc3c..b48edc1 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.6.4 + 3.1.0 com.example @@ -14,7 +14,7 @@ demo Demo project for Spring Boot - 11 + 17 From 5be5192c513ed39c987fb4bb144fc46fad00040e Mon Sep 17 00:00:00 2001 From: LazySlav Date: Sat, 27 May 2023 20:19:34 +0300 Subject: [PATCH 05/12] Final adjustments to models (hopefully) --- .../java/com/example/demo/models/Chat.java | 62 +++++++++++++-- .../java/com/example/demo/models/Message.java | 76 ++++++++++++++++--- .../java/com/example/demo/models/User.java | 67 ++++++++++++---- 3 files changed, 173 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/example/demo/models/Chat.java b/src/main/java/com/example/demo/models/Chat.java index f8d83eb..10e1d68 100644 --- a/src/main/java/com/example/demo/models/Chat.java +++ b/src/main/java/com/example/demo/models/Chat.java @@ -3,16 +3,62 @@ import java.util.ArrayList; import java.util.TreeSet; -public class Chat extends ID{ - public Boolean isDeleted; - public ArrayList messages; - public TreeSet parentUsers; +public class Chat extends ID { + private Boolean deleted; + private ArrayList messagesIds; + private TreeSet usersIds; - public Chat(String id, Boolean isDeleted, ArrayList messages, TreeSet parentUsers) { + public Chat(String id, TreeSet usersIds) { super(id); - this.isDeleted = isDeleted; - this.messages = messages; - this.parentUsers = parentUsers; + this.deleted = false; + this.messagesIds = new ArrayList(); + this.usersIds = usersIds; + } + + public void addMessage(Message message) { + this.messagesIds.add(message.id); + } + + /** + * @return Boolean return the isDeleted + */ + public Boolean isDeleted() { + return deleted; + } + + /** + * @param isDeleted the isDeleted to set + */ + public void setDeleted(Boolean deleted) { + this.deleted = deleted; + } + + /** + * @return ArrayList return the messagesIds + */ + public ArrayList getMessagesIds() { + return messagesIds; + } + + /** + * @param messagesIds the messagesIds to set + */ + public void setMessagesIds(ArrayList messagesIds) { + this.messagesIds = messagesIds; + } + + /** + * @return TreeSet return the usersIds + */ + public TreeSet getUsersIds() { + return usersIds; + } + + /** + * @param usersIds the usersIds to set + */ + public void setUsersIds(TreeSet usersIds) { + this.usersIds = usersIds; } } diff --git a/src/main/java/com/example/demo/models/Message.java b/src/main/java/com/example/demo/models/Message.java index 0c17484..413829f 100644 --- a/src/main/java/com/example/demo/models/Message.java +++ b/src/main/java/com/example/demo/models/Message.java @@ -1,18 +1,76 @@ package com.example.demo.models; +import java.util.Collection; +import java.util.TreeSet; + public class Message extends ID { - public Boolean isDeleted; - public String text; - public Long time; - public String idUserAuthor; - public String idUserRecipient; + private Boolean deleted; + private String text; + private Long time; + private TreeSet usersIds; - public Message(String id, Boolean isDeleted, String text, Long time, String idUserAuthor, String idUserRecipient) { + public Message(String id, Boolean deleted, String text, Long time, Collection usersIds) { super(id); - this.isDeleted = isDeleted; + this.deleted = deleted; + this.text = text; + this.time = time; + this.usersIds = (TreeSet) usersIds; + } + + /** + * @return Boolean return the deleted + */ + public Boolean isDeleted() { + return deleted; + } + + /** + * @param deleted the deleted to set + */ + public void setDeleted(Boolean deleted) { + this.deleted = deleted; + } + + /** + * @return String return the text + */ + public String getText() { + return text; + } + + /** + * @param text the text to set + */ + public void setText(String text) { this.text = text; + } + + /** + * @return Long return the time + */ + public Long getTime() { + return time; + } + + /** + * @param time the time to set + */ + public void setTime(Long time) { this.time = time; - this.idUserAuthor = idUserAuthor; - this.idUserRecipient = idUserRecipient; } + + /** + * @return TreeSet return the usersIds + */ + public TreeSet getUsersIds() { + return usersIds; + } + + /** + * @param usersIds the usersIds to set + */ + public void setUsersIds(TreeSet usersIds) { + this.usersIds = usersIds; + } + } diff --git a/src/main/java/com/example/demo/models/User.java b/src/main/java/com/example/demo/models/User.java index caff9b0..caff9f9 100644 --- a/src/main/java/com/example/demo/models/User.java +++ b/src/main/java/com/example/demo/models/User.java @@ -3,40 +3,77 @@ import java.util.ArrayList; public class User extends ID { - public Boolean isAdmin; - public String name; - public String password; - public ArrayList chats; + private Boolean admin; + private String name; + private String password; + private ArrayList chatsIds; - public User(String id, Boolean isAdmin, String name, String password) { + public User(String id, Boolean admin, String name, String password) { super(id); - this.isAdmin = isAdmin; + this.admin = admin; this.name = name; this.password = password; - this.chats = new ArrayList(); + this.chatsIds = new ArrayList(); } - public Boolean getAdmin() { - return isAdmin; + public void addChat(Chat chat) { + this.chatsIds.add(chat.id); + } + + /** + * @return Boolean return the admin + */ + public Boolean isAdmin() { + return admin; } + /** + * @param admin the admin to set + */ + public void setAdmin(Boolean admin) { + this.admin = admin; + } + + /** + * @return String return the name + */ public String getName() { return name; } - public String getPassword() { - return password; + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; } - public ArrayList getChats() { - return chats; + /** + * @return String return the password + */ + public String getPassword() { + return password; } + /** + * @param password the password to set + */ public void setPassword(String password) { this.password = password; } - public void addChat(Chat chat) { - this.chats.add(chat.id); + /** + * @return ArrayList return the chatsIds + */ + public ArrayList getChatsIds() { + return chatsIds; } + + /** + * @param chatsIds the chatsIds to set + */ + public void setChatsIds(ArrayList chatsIds) { + this.chatsIds = chatsIds; + } + } From 0c9632d696255cce913f270abc62fe67941b7710 Mon Sep 17 00:00:00 2001 From: LazySlav Date: Sat, 27 May 2023 20:30:29 +0300 Subject: [PATCH 06/12] Minor, but welcome changes --- .../com/example/demo/RestFullController.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/example/demo/RestFullController.java b/src/main/java/com/example/demo/RestFullController.java index d168fb7..1bc6e00 100644 --- a/src/main/java/com/example/demo/RestFullController.java +++ b/src/main/java/com/example/demo/RestFullController.java @@ -1,6 +1,7 @@ package com.example.demo; import com.example.demo.models.Chat; +import com.example.demo.models.ID; import com.example.demo.models.Message; import com.example.demo.models.User; import com.google.gson.Gson; @@ -12,8 +13,10 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.*; -// import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.Date; +import java.util.TreeSet; +import java.util.NoSuchElementException; @RestController public class RestFullController { @@ -33,7 +36,7 @@ public class RestFullController { // Конструктор конроллера - деиствия при запуске программы public RestFullController() { - String s1 = "", s2 = "", s3 = ""; + String s1, s2, s3; Gson gson = new Gson(); try { s1 = new String(Files.readAllBytes(Paths.get(fileNameUsers))); @@ -51,7 +54,7 @@ public RestFullController() { } - public static void update(String nameFile) throws RuntimeException{ + private static void updateDB(String nameFile) { Gson gson = new Gson(); FileWriter fw; ArrayList ent = new ArrayList<>(); @@ -66,7 +69,8 @@ public static void update(String nameFile) throws RuntimeException{ ent = messagesArrayList; break; default: - throw new IllegalArgumentException("Variable can take only \"users\",\"chats\" or \"messages\" values"); + System.out.println( + "Please, take notice of the fact that you're a retard since you're not using function as intended."); } try { fw = new FileWriter("src/main/java/com/example/demo/files/" + nameFile + ".json"); @@ -81,7 +85,7 @@ public static void update(String nameFile) throws RuntimeException{ fw.write(l + "]"); fw.close(); } catch (IOException e) { - throw new RuntimeException(e); + System.out.println("WARNING, BIG SAD HAPPENED"); } } @@ -179,7 +183,9 @@ public Iterable getAllCMessagesByChat( } // - public static T findInListById(ArrayList list, String objId) { - return list.stream().filter(listObj -> listObj.id.equals(objId)).findFirst().orElse(null); + // Helper function for finding User/Chat/Message object in + // user-/chat-/message-ArrayList + private static T findInListById(ArrayList list, String objId) throws NoSuchElementException { + return list.stream().filter(listObj -> listObj.id.equals(objId)).findFirst().orElseThrow(); } } \ No newline at end of file From 771d8c8dd6c968fb8e6e8aa84248faed21a410e9 Mon Sep 17 00:00:00 2001 From: LazySlav Date: Sat, 27 May 2023 20:55:55 +0300 Subject: [PATCH 07/12] Changed TreeSet to ArrayList and added back-to-back linking with Chats to Messages --- .../java/com/example/demo/models/Chat.java | 11 +++---- .../java/com/example/demo/models/Message.java | 31 ++++++++++++++----- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/example/demo/models/Chat.java b/src/main/java/com/example/demo/models/Chat.java index 10e1d68..f052eb9 100644 --- a/src/main/java/com/example/demo/models/Chat.java +++ b/src/main/java/com/example/demo/models/Chat.java @@ -1,14 +1,13 @@ package com.example.demo.models; import java.util.ArrayList; -import java.util.TreeSet; public class Chat extends ID { private Boolean deleted; private ArrayList messagesIds; - private TreeSet usersIds; + private ArrayList usersIds; - public Chat(String id, TreeSet usersIds) { + public Chat(String id, ArrayList usersIds) { super(id); this.deleted = false; this.messagesIds = new ArrayList(); @@ -48,16 +47,16 @@ public void setMessagesIds(ArrayList messagesIds) { } /** - * @return TreeSet return the usersIds + * @return ArrayList return the usersIds */ - public TreeSet getUsersIds() { + public ArrayList getUsersIds() { return usersIds; } /** * @param usersIds the usersIds to set */ - public void setUsersIds(TreeSet usersIds) { + public void setUsersIds(ArrayList usersIds) { this.usersIds = usersIds; } diff --git a/src/main/java/com/example/demo/models/Message.java b/src/main/java/com/example/demo/models/Message.java index 413829f..462004d 100644 --- a/src/main/java/com/example/demo/models/Message.java +++ b/src/main/java/com/example/demo/models/Message.java @@ -1,20 +1,21 @@ package com.example.demo.models; -import java.util.Collection; -import java.util.TreeSet; +import java.util.ArrayList; public class Message extends ID { private Boolean deleted; private String text; private Long time; - private TreeSet usersIds; + private String chatId; + private ArrayList usersIds; - public Message(String id, Boolean deleted, String text, Long time, Collection usersIds) { + public Message(String id, Boolean deleted, String text, Long time, String chatId, ArrayList usersIds) { super(id); this.deleted = deleted; this.text = text; this.time = time; - this.usersIds = (TreeSet) usersIds; + this.chatId = chatId; + this.usersIds = (ArrayList) usersIds; } /** @@ -60,17 +61,31 @@ public void setTime(Long time) { } /** - * @return TreeSet return the usersIds + * @return ArrayList return the usersIds */ - public TreeSet getUsersIds() { + public ArrayList getUsersIds() { return usersIds; } /** * @param usersIds the usersIds to set */ - public void setUsersIds(TreeSet usersIds) { + public void setUsersIds(ArrayList usersIds) { this.usersIds = usersIds; } + /** + * @return String return the chatId + */ + public String getChatId() { + return chatId; + } + + /** + * @param chatId the chatId to set + */ + public void setChatId(String chatId) { + this.chatId = chatId; + } + } From 3a3d94f08796b7e59995d402342215ac7056ff9e Mon Sep 17 00:00:00 2001 From: LazySlav Date: Sun, 28 May 2023 01:25:07 +0300 Subject: [PATCH 08/12] Added deleteMessage() and deleteChat() --- src/main/java/com/example/demo/models/Chat.java | 3 +++ src/main/java/com/example/demo/models/User.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/main/java/com/example/demo/models/Chat.java b/src/main/java/com/example/demo/models/Chat.java index f052eb9..68fe87a 100644 --- a/src/main/java/com/example/demo/models/Chat.java +++ b/src/main/java/com/example/demo/models/Chat.java @@ -60,4 +60,7 @@ public void setUsersIds(ArrayList usersIds) { this.usersIds = usersIds; } + public void deleteMessage(String messageId) { + this.messagesIds.remove(messageId); + } } diff --git a/src/main/java/com/example/demo/models/User.java b/src/main/java/com/example/demo/models/User.java index caff9f9..b7f2ec6 100644 --- a/src/main/java/com/example/demo/models/User.java +++ b/src/main/java/com/example/demo/models/User.java @@ -76,4 +76,7 @@ public void setChatsIds(ArrayList chatsIds) { this.chatsIds = chatsIds; } + public void deleteChat(String chatId) { + this.chatsIds.remove(chatId); + } } From 9f8bb60cdcf904ab1f17580b8c6b362f0eede499 Mon Sep 17 00:00:00 2001 From: LazySlav Date: Sun, 28 May 2023 01:25:45 +0300 Subject: [PATCH 09/12] GET -> appropriate request type, methods return ResponseEntity --- .../com/example/demo/RestFullController.java | 214 ++++++++++++------ 1 file changed, 139 insertions(+), 75 deletions(-) diff --git a/src/main/java/com/example/demo/RestFullController.java b/src/main/java/com/example/demo/RestFullController.java index 1bc6e00..7c34b9e 100644 --- a/src/main/java/com/example/demo/RestFullController.java +++ b/src/main/java/com/example/demo/RestFullController.java @@ -6,7 +6,9 @@ import com.example.demo.models.User; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import org.springframework.stereotype.Controller; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.io.FileWriter; @@ -15,8 +17,10 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Date; -import java.util.TreeSet; +import java.util.UUID; +import java.util.List; import java.util.NoSuchElementException; +import java.util.stream.Collectors; @RestController public class RestFullController { @@ -32,7 +36,6 @@ public class RestFullController { public static ArrayList usersArrayList = new ArrayList<>(); public static ArrayList chatsArrayList = new ArrayList<>(); public static ArrayList messagesArrayList = new ArrayList<>(); - // public static ArrayList userArrayList= new ArrayList<>(); // Конструктор конроллера - деиствия при запуске программы public RestFullController() { @@ -89,99 +92,160 @@ private static void updateDB(String nameFile) { } } - // http://localhost:8080/authorization?login=loginExample&password=220512281 - @GetMapping(value = "/authorization", params = {"login", "password"}) - public String authorization( - @RequestParam("login") String login, + @PostMapping(value = "/authorization", params = { "id", "password" }) + public ResponseEntity authorization(@RequestParam("id") String id, @RequestParam("password") String password) { - for (User user : usersArrayList) { - if (user.getLogin().equals(login) && - user.getPassword().equals(password)) { - return user.getName() + "-"; - } - } - return "false"; + User currentUser = usersArrayList.stream() + .filter(user -> user.getId().equals(id) && user.getPassword().equals(password)).findFirst() + .orElse(null); + return (currentUser == null) ? new ResponseEntity("No user found", HttpStatus.UNAUTHORIZED) + : new ResponseEntity(currentUser.isAdmin().toString(), HttpStatus.OK); } - // http://localhost:8080/registration?name=Stas&login=loginExample1&password=passExample1 - // http://localhost:8080/registration?name=Yuri&login=loginExample2&password=passExample2 - @GetMapping(value = "/registration", params = {"name", "login", "password"}) - public String registration( - @RequestParam("name") String name, - @RequestParam("login") String login, + @PostMapping(value = "/registration", params = { "name", "password" }) + public ResponseEntity registration(@RequestParam("name") String name, @RequestParam("password") String password) { - int n = usersArrayList.size(); - usersArrayList.add(new User(("U" + n), false, name, login, password, new ArrayList<>())); - update("users"); - return gson.toJson(usersArrayList.get(n)); + String id = "U" + UUID.randomUUID(); + User newUser = new User(id, false, name, password); + usersArrayList.add(newUser); + updateDB("users"); + return authorization(id, password); } - // http://localhost:8080/createNewChatWithTwoUsers?user1=Yuri&user2=Stas - @GetMapping(value = "/createNewChatWithTwoUsers", params = {"user1", "user2"}) - public String createNewChatWithTwoUsers( - @RequestParam("user1") String user1, - @RequestParam("user2") String user2) { - int n = usersArrayList.size(); - - chatsArrayList - .add(new Chat(("C" + n), false, new ArrayList(), new TreeSet<>(List.of(user1, user2)))); - - - update("chats"); - return "true"; + @PostMapping(value = "/createNewChat", params = { "userId1", "userId2" }) + public ResponseEntity createNewChat(@RequestParam("userId1") String userId1, + @RequestParam("userId2") String userId2) { + User user1, user2 = null; + try { + user1 = findInListById(usersArrayList, userId1); + user2 = findInListById(usersArrayList, userId2); + } catch (NoSuchElementException e) { + return new ResponseEntity("No user(s) found", HttpStatus.BAD_REQUEST); + } + Chat newChat = new Chat(("C" + UUID.randomUUID()), new ArrayList(List.of(userId1, userId2))); + chatsArrayList.add(newChat); + user1.addChat(newChat); + user2.addChat(newChat); + updateDB("chats"); + updateDB("users"); + return new ResponseEntity(newChat.id, HttpStatus.OK); } - // http://localhost:8080/createNewMessage?user1=Yuri&user2=Stas - @GetMapping(value = "/createNewMessage", params = {"user1", "user2", "text", "chatId"}) - public String createNewMessage( - @RequestParam("user1") String user1, - @RequestParam("user2") String user2, - @RequestParam("text") String text, - @RequestParam("chatId") String chatId) { - int n = messagesArrayList.size(); - - messagesArrayList - .add(new Message(("M" + n), false, text, new Date().getTime(), user1, user2, new TreeSet<>())); - chatsArrayList.get(n).messages.add(("M" + n)); - - update("messages"); - return "true"; + @PostMapping(value = "/createNewMessage", params = { "userId1", "userId2", + "text", "chatId" }) + public ResponseEntity createNewMessage(@RequestParam("userId1") String userId1, + @RequestParam("userId2") String userId2, + @RequestParam("text") String text, @RequestParam("chatId") String chatId) { + Chat chat = null; + try { + findInListById(usersArrayList, userId1); + findInListById(usersArrayList, userId2); + chat = findInListById(chatsArrayList, chatId); + } catch (NoSuchElementException e) { + return new ResponseEntity("No user(s) found, or chat does not exist", HttpStatus.BAD_REQUEST); + } + Message newMessage = new Message(("M" + UUID.randomUUID()), false, text, new Date().getTime(), chatId, + new ArrayList(List.of(userId1, + userId2))); + messagesArrayList.add(newMessage); + chat.addMessage(newMessage); + updateDB("messages"); + updateDB("chats"); + return new ResponseEntity("PLACEHOLDER", HttpStatus.OK); } // Методы админа @GetMapping(value = "/getAllUsers") - public Iterable getAllUsers() { + public ArrayList getAllUsers() { return usersArrayList; } @GetMapping(value = "/getAllChats") - public Iterable getAllChats() { + public ArrayList getAllChats() { return chatsArrayList; } - // - - // Методы Админа и Юзера - @GetMapping(value = "/getAllChatsByUser", params = {"userId"}) - public Iterable getAllChatsByUser( - @RequestParam("userId") String userId) { - ArrayList f = usersArrayList.get(getIdFromId(userId)).chatArrayList; - return (Iterable) chatsArrayList - .stream() - .filter(it -> f.contains(it.id)); + + @GetMapping(value = "/getMessageByText", params = { "text" }) + public ArrayList getMessageByText(@RequestParam("text") String text) { + return (ArrayList) messagesArrayList.stream().filter(message -> message.getText().contains(text)) + .collect(Collectors.toList()); + } + + // Admin and user methods, although User is handicapped at frontend + @GetMapping(value = "/getAllCMessagesByChat", params = { "chatId" }) + public ArrayList getAllCMessagesByChat(@RequestParam("chatId") String chatId) { + ArrayList messagesIds = findInListById(chatsArrayList, chatId).getMessagesIds(); + return (ArrayList) messagesArrayList.stream().filter(message -> messagesIds.contains(message.id)) + .collect(Collectors.toList()); + } + + @GetMapping(value = "/getAllChatsByUser", params = { "userId" }) + public ArrayList getAllChatsByUser(@RequestParam("userId") String userId) { + ArrayList chatsIds = findInListById(usersArrayList, userId).getChatsIds(); + return (ArrayList) chatsArrayList.stream().filter(chat -> chatsIds.contains(chat.id)) + .collect(Collectors.toList()); + } + + @DeleteMapping(value = "/deleteUserData", params = { "userId" }) + public ResponseEntity deleteUserData(@RequestParam("userId") String userId) { + // this basically means that if nothing in usersArrayList is deleted, then + // there's no such user + if (!(usersArrayList.removeIf(user -> user.getId().equals(userId)))) { + return new ResponseEntity("No user found", HttpStatus.BAD_REQUEST); + } + chatsArrayList.removeIf(chat -> chat.getUsersIds().contains(userId)); + messagesArrayList.removeIf(message -> message.getUsersIds().contains(userId)); + updateDB("users"); + updateDB("chats"); + updateDB("messages"); + + return new ResponseEntity("Successfully deleted data for user " + userId, HttpStatus.OK); + } + + @DeleteMapping(value = "/deleteMessage", params = { "messageId" }) + public ResponseEntity deleteMessage(@RequestParam("messageId") String messageId) { + Message message = null; + try { + message = findInListById(messagesArrayList, messageId); + } catch (NoSuchElementException e) { + return new ResponseEntity("No message found", HttpStatus.BAD_REQUEST); + } + messagesArrayList.remove(message); + updateDB("messages"); + Chat chat = findInListById(chatsArrayList, message.getChatId()); + chat.deleteMessage(messageId); + // if, after deletion of the message, parent chat is empty, we should delete it + // completely - who needs empty chat after all? + if (chat.getMessagesIds().isEmpty()) { + chatsArrayList.remove(chat); + // this ugly mess is written so that we can update every user's chatlist (for + // those who had aforementioned chat in it) + usersArrayList.stream().filter(user -> chat.getUsersIds().contains(user.getId())) + .forEach(user -> user.deleteChat(chat.getId())); + updateDB("users"); + } + updateDB("chats"); + + return new ResponseEntity("Successfully deleted message " + messageId, HttpStatus.OK); } - @GetMapping(value = "/getAllCMessagesByChat", params = {"chatId"}) - public Iterable getAllCMessagesByChat( - @RequestParam("chatId") String chatId) { - ArrayList f = Objects.requireNonNull(chatsArrayList.stream() - .filter(it -> chatId.equals(it.id)) - .findAny() - .orElse(null)).messages; - return (Iterable) messagesArrayList - .stream() - .filter(it -> f.contains(it.id)); + @PatchMapping(value = "/patchPassword", params = { "userId", "oldPassword", "newPassword" + }) + public ResponseEntity patchPassword(@RequestParam("userId") String userId, + @RequestParam("oldPassword") String oldPassword, @RequestParam("newPassword") String newPassword) { + User user = null; + try { + user = findInListById(usersArrayList, userId); + } catch (NoSuchElementException e) { + return new ResponseEntity("No user found", HttpStatus.BAD_REQUEST); + } + if (!(user.getPassword().equals(oldPassword))) { + return new ResponseEntity("Old password does not match the input", HttpStatus.UNAUTHORIZED); + } + user.setPassword(newPassword); + updateDB("users"); + return new ResponseEntity("The new password has been set", HttpStatus.OK); } - // // Helper function for finding User/Chat/Message object in // user-/chat-/message-ArrayList From c26427be17a8a9294359c072eddf771f7d1a4242 Mon Sep 17 00:00:00 2001 From: LazySlav Date: Tue, 30 May 2023 01:17:34 +0300 Subject: [PATCH 10/12] PRE v1: Python tests, hideMessage() and stuff --- .../com/example/demo/RestFullController.java | 81 ++++++++++++++----- 1 file changed, 59 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/example/demo/RestFullController.java b/src/main/java/com/example/demo/RestFullController.java index 7c34b9e..75f7f9c 100644 --- a/src/main/java/com/example/demo/RestFullController.java +++ b/src/main/java/com/example/demo/RestFullController.java @@ -1,27 +1,32 @@ package com.example.demo; -import com.example.demo.models.Chat; -import com.example.demo.models.ID; -import com.example.demo.models.Message; -import com.example.demo.models.User; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Date; -import java.util.UUID; import java.util.List; import java.util.NoSuchElementException; +import java.util.UUID; import java.util.stream.Collectors; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PatchMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.example.demo.models.Chat; +import com.example.demo.models.ID; +import com.example.demo.models.Message; +import com.example.demo.models.User; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + @RestController public class RestFullController { @@ -92,16 +97,18 @@ private static void updateDB(String nameFile) { } } - @PostMapping(value = "/authorization", params = { "id", "password" }) - public ResponseEntity authorization(@RequestParam("id") String id, + // requests.post("http://localhost:8080/authorization",data={"userId": "test1","password": "1"}).text + @PostMapping(value = "/authorization", params = { "userId", "password" }) + public ResponseEntity authorization(@RequestParam("userId") String userId, @RequestParam("password") String password) { User currentUser = usersArrayList.stream() - .filter(user -> user.getId().equals(id) && user.getPassword().equals(password)).findFirst() + .filter(user -> user.getId().equals(userId) && user.getPassword().equals(password)).findFirst() .orElse(null); return (currentUser == null) ? new ResponseEntity("No user found", HttpStatus.UNAUTHORIZED) - : new ResponseEntity(currentUser.isAdmin().toString(), HttpStatus.OK); + : new ResponseEntity(gson.toJson(currentUser), HttpStatus.OK); } + // requests.post("http://localhost:8080/registration", data={"name": "test","password": "0"}).text @PostMapping(value = "/registration", params = { "name", "password" }) public ResponseEntity registration(@RequestParam("name") String name, @RequestParam("password") String password) { @@ -109,12 +116,16 @@ public ResponseEntity registration(@RequestParam("name") String name, User newUser = new User(id, false, name, password); usersArrayList.add(newUser); updateDB("users"); - return authorization(id, password); + return new ResponseEntity(gson.toJson(newUser), HttpStatus.OK); } + // requests.post("http://localhost:8080/createNewChat", data={"userId1":"test1","userId2": "test2"}).text @PostMapping(value = "/createNewChat", params = { "userId1", "userId2" }) public ResponseEntity createNewChat(@RequestParam("userId1") String userId1, @RequestParam("userId2") String userId2) { + if (userId1.equals(userId2)) { + return new ResponseEntity("You can't create chat with yourself", HttpStatus.BAD_REQUEST); + } User user1, user2 = null; try { user1 = findInListById(usersArrayList, userId1); @@ -131,6 +142,7 @@ public ResponseEntity createNewChat(@RequestParam("userId1") String user return new ResponseEntity(newChat.id, HttpStatus.OK); } + // requests.post("http://localhost:8080/createNewMessage", data={"userId1":"test1","userId2": "test2","text":"TEXT","chatId":"test"}).text @PostMapping(value = "/createNewMessage", params = { "userId1", "userId2", "text", "chatId" }) public ResponseEntity createNewMessage(@RequestParam("userId1") String userId1, @@ -154,38 +166,47 @@ public ResponseEntity createNewMessage(@RequestParam("userId1") String u return new ResponseEntity("PLACEHOLDER", HttpStatus.OK); } - // Методы админа + /* Admin-only methods */ + // requests.get("http://localhost:8080/getAllUsers").text @GetMapping(value = "/getAllUsers") public ArrayList getAllUsers() { return usersArrayList; } + // requests.get("http://localhost:8080/getAllChats").text @GetMapping(value = "/getAllChats") public ArrayList getAllChats() { return chatsArrayList; } + // requests.get("http://localhost:8080/getMessageByText",params={"text":"TE"}).text @GetMapping(value = "/getMessageByText", params = { "text" }) public ArrayList getMessageByText(@RequestParam("text") String text) { - return (ArrayList) messagesArrayList.stream().filter(message -> message.getText().contains(text)) + return (ArrayList) messagesArrayList.stream().filter(message -> message.getText().contains(text)) .collect(Collectors.toList()); } - // Admin and user methods, although User is handicapped at frontend - @GetMapping(value = "/getAllCMessagesByChat", params = { "chatId" }) - public ArrayList getAllCMessagesByChat(@RequestParam("chatId") String chatId) { + /* Admin and user methods, although User is handicapped at frontend */ + + // requests.get("http://localhost:8080/getAllMessagesByChat",params={"chatId":"test1"}).text + @GetMapping(value = "/getAllMessagesByChat", params = { "chatId" }) + public ArrayList getAllMessagesByChat(@RequestParam("chatId") String chatId) { ArrayList messagesIds = findInListById(chatsArrayList, chatId).getMessagesIds(); + // if(messagesIds.isEmpty()){ return new ArrayList();} return (ArrayList) messagesArrayList.stream().filter(message -> messagesIds.contains(message.id)) .collect(Collectors.toList()); } + // requests.get("http://localhost:8080/getAllChatsByUser",params={"userId":"test1"}).text @GetMapping(value = "/getAllChatsByUser", params = { "userId" }) public ArrayList getAllChatsByUser(@RequestParam("userId") String userId) { ArrayList chatsIds = findInListById(usersArrayList, userId).getChatsIds(); + // if(chatsIds.isEmpty()){ return new ArrayList();} return (ArrayList) chatsArrayList.stream().filter(chat -> chatsIds.contains(chat.id)) .collect(Collectors.toList()); } + // requests.delete("http://localhost:8080/deleteUserData", params={"userId":"test1"}).text @DeleteMapping(value = "/deleteUserData", params = { "userId" }) public ResponseEntity deleteUserData(@RequestParam("userId") String userId) { // this basically means that if nothing in usersArrayList is deleted, then @@ -202,6 +223,7 @@ public ResponseEntity deleteUserData(@RequestParam("userId") String user return new ResponseEntity("Successfully deleted data for user " + userId, HttpStatus.OK); } + // requests.delete("http://localhost:8080/deleteMessage",params={"messageId":"M655e9c66-c622-4b08-99b0-d409a4ae0e53"}).text @DeleteMapping(value = "/deleteMessage", params = { "messageId" }) public ResponseEntity deleteMessage(@RequestParam("messageId") String messageId) { Message message = null; @@ -229,6 +251,21 @@ public ResponseEntity deleteMessage(@RequestParam("messageId") String me return new ResponseEntity("Successfully deleted message " + messageId, HttpStatus.OK); } + // requests.post("http://localhost:8080/hideMessage",data={"messageId":"M655e9c66-c622-4b08-99b0-d409a4ae0e53"}).text + @PostMapping(value = "/hideMessage", params = { "messageId" }) + public ResponseEntity hideMessage(@RequestParam("messageId") String messageId) { + Message message = null; + try { + message = findInListById(messagesArrayList, messageId); + } catch (NoSuchElementException e) { + return new ResponseEntity("No message found", HttpStatus.BAD_REQUEST); + } + message.setDeleted(true); + updateDB("messages"); + return new ResponseEntity("Successfully hidden message " + messageId, HttpStatus.OK); + } + + // requests.patch("http://localhost:8080/patchPassword",params={"userId":"test1","oldPassword":"1","newPassword":"new1"}).text @PatchMapping(value = "/patchPassword", params = { "userId", "oldPassword", "newPassword" }) public ResponseEntity patchPassword(@RequestParam("userId") String userId, From 11e207574bc8c45acb6c402b74fed2f6f22937af Mon Sep 17 00:00:00 2001 From: LazySlav <72216859+LazySlav@users.noreply.github.com> Date: Thu, 1 Jun 2023 00:13:49 +0300 Subject: [PATCH 11/12] Create README.md --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..02aa2a3 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Simple messaging server on Spring Boot From 54921e6a46478452be30ddcb66a46ae3e5315ffe Mon Sep 17 00:00:00 2001 From: LazySlav Date: Thu, 1 Jun 2023 00:17:17 +0300 Subject: [PATCH 12/12] Test data added --- .gitignore | 2 -- .../java/com/example/demo/files/chats.json | 22 ++++++++++++++ .../java/com/example/demo/files/messages.json | 13 +++++++++ .../java/com/example/demo/files/users.json | 29 +++++++++++++++++++ 4 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/example/demo/files/chats.json create mode 100644 src/main/java/com/example/demo/files/messages.json create mode 100644 src/main/java/com/example/demo/files/users.json diff --git a/.gitignore b/.gitignore index be3f336..549e00a 100644 --- a/.gitignore +++ b/.gitignore @@ -31,5 +31,3 @@ build/ ### VS Code ### .vscode/ - -*.json \ No newline at end of file diff --git a/src/main/java/com/example/demo/files/chats.json b/src/main/java/com/example/demo/files/chats.json new file mode 100644 index 0000000..c2fb59f --- /dev/null +++ b/src/main/java/com/example/demo/files/chats.json @@ -0,0 +1,22 @@ +[ + { + "deleted": false, + "messagesIds": [ + "M655e9c66-c622-4b08-99b0-d409a4ae0e53" + ], + "usersIds": [ + "test1", + "test2" + ], + "id": "test1" + }, + { + "deleted": false, + "messagesIds": [], + "usersIds": [ + "test1", + "test2" + ], + "id": "test2" + } +] \ No newline at end of file diff --git a/src/main/java/com/example/demo/files/messages.json b/src/main/java/com/example/demo/files/messages.json new file mode 100644 index 0000000..9fff1f8 --- /dev/null +++ b/src/main/java/com/example/demo/files/messages.json @@ -0,0 +1,13 @@ +[ + { + "deleted": false, + "text": "TEXT", + "time": 1685384274888, + "chatId": "test1", + "usersIds": [ + "test1", + "test2" + ], + "id": "M655e9c66-c622-4b08-99b0-d409a4ae0e53" + } +] \ No newline at end of file diff --git a/src/main/java/com/example/demo/files/users.json b/src/main/java/com/example/demo/files/users.json new file mode 100644 index 0000000..d9b397b --- /dev/null +++ b/src/main/java/com/example/demo/files/users.json @@ -0,0 +1,29 @@ +[ + { + "admin": true, + "name": "name1", + "password": "1", + "chatsIds": [ + "test1", + "test2" + ], + "id": "test1" + }, + { + "admin": false, + "name": "name2", + "password": "2", + "chatsIds": [ + "test1", + "test2" + ], + "id": "test2" + }, + { + "admin": false, + "name": "rtwetw", + "password": "rwer", + "chatsIds": [], + "id": "Ua91f511e-1abe-4cd1-bc12-bbae88374c0e" + } +] \ No newline at end of file