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 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 diff --git a/src/main/java/com/example/demo/RestFullController.java b/src/main/java/com/example/demo/RestFullController.java index 0af4731..75f7f9c 100644 --- a/src/main/java/com/example/demo/RestFullController.java +++ b/src/main/java/com/example/demo/RestFullController.java @@ -1,23 +1,33 @@ package com.example.demo; -import com.example.demo.models.Chat; -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.stereotype.Controller; -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.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.UUID; import java.util.stream.Collectors; -import static org.springframework.web.bind.annotation.RequestMethod.GET; +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; -@Controller +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 { static Gson gson = new Gson(); @@ -31,12 +41,10 @@ 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() { - String s = "", s1 = "", s2 = "", s3 = ""; + String s1, s2, s3; Gson gson = new Gson(); try { s1 = new String(Files.readAllBytes(Paths.get(fileNameUsers))); @@ -54,167 +62,231 @@ public RestFullController() { } - public static void update(String nameFile) { + private static void updateDB(String nameFile) { 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<>(); + 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"); - 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 + "]"); fw.close(); } catch (IOException e) { - throw new RuntimeException(e); + System.out.println("WARNING, BIG SAD HAPPENED"); } } - // http://localhost:8080/authorization?login=loginExample&password=220512281 - @RequestMapping( - value = "/authorization", - params = {"login", "password"}, - method = GET) - @ResponseBody - public String authorization( - @RequestParam("login") String login, + // 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) { - for (User user : usersArrayList) { - if (user.getLogin().equals(login) && - user.getPassword().hashCode() == Integer.parseInt(password)) { - return "" + user.getName() + "-"; - } - } - return "false"; - } - - // 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 - public String registration( - @RequestParam("name") String name, - @RequestParam("login") String login, + User currentUser = usersArrayList.stream() + .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(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) { - int n = usersArrayList.size(); - usersArrayList.add(new User(("U" + n), false, name, login, password, new ArrayList<>())); - update("users"); - return gson.toJson(usersArrayList.get(n)); - } - - // http://localhost:8080/createNewChatWithTwoUsers?user1=Yuri&user2=Stas - @RequestMapping( - value = "/createNewChatWithTwoUsers", - params = {"user1", "user2"}, - method = GET) - @ResponseBody - public String createNewChatWithTwoUsers( - @RequestParam("user1") String user1, - @RequestParam("user2") String user2) { - int n = usersArrayList.size(); + String id = "U" + UUID.randomUUID(); + User newUser = new User(id, false, name, password); + usersArrayList.add(newUser); + updateDB("users"); + 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 { - chatsArrayList.add(new Chat(("C" + n), false, new ArrayList(), new TreeSet<>(List.of(user1, user2)))); - } catch (Error | Exception e) { - return "false"; + user1 = findInListById(usersArrayList, userId1); + user2 = findInListById(usersArrayList, userId2); + } catch (NoSuchElementException e) { + return new ResponseEntity("No user(s) found", HttpStatus.BAD_REQUEST); } - 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( - @RequestParam("user1") String user1, - @RequestParam("user2") String user2, - @RequestParam("text") String text, - @RequestParam("chatId") String chatId) { - int n = messagesArrayList.size(); + 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); + } + + // 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, + @RequestParam("userId2") String userId2, + @RequestParam("text") String text, @RequestParam("chatId") String chatId) { + Chat chat = null; 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"; + 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); } - update("messages"); - return "true"; + 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); } - // Методы админа - @RequestMapping( - value = "/getAllUsers", - method = GET) - @ResponseBody - public Iterable returnUsers() { + /* Admin-only methods */ + // requests.get("http://localhost:8080/getAllUsers").text + @GetMapping(value = "/getAllUsers") + public ArrayList getAllUsers() { return usersArrayList; } - @RequestMapping( - value = "/getAllChats", - method = GET) - @ResponseBody - public Iterable returnChats() { + // requests.get("http://localhost:8080/getAllChats").text + @GetMapping(value = "/getAllChats") + public ArrayList getAllChats() { return chatsArrayList; } - // - - // Методы Админа и Юзера - @RequestMapping( - value = "/getAllChatsByUser", - params = {"userId"}, - method = GET) - @ResponseBody - public Iterable getAllChatsByUser( - @RequestParam("userId") String userId) { - ArrayList f = usersArrayList.get(getIdFromId(userId)).chatArrayList; - return (Iterable) chatsArrayList - .stream() - .filter(it -> f.contains(it.id)); - } - - @RequestMapping( - value = "/getAllCMessagesByChat", - params = {"chatId"}, - method = GET) - @ResponseBody - 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)); - } - // - - public int getIdFromId(String s) { - return Integer.parseInt(s.substring(1)); + + // 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)) + .collect(Collectors.toList()); } + /* 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 + // 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); + } + + // 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; + 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); + } + + // 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, + @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 + 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 diff --git a/src/main/java/com/example/demo/files/chats.json b/src/main/java/com/example/demo/files/chats.json index 0637a08..c2fb59f 100644 --- a/src/main/java/com/example/demo/files/chats.json +++ b/src/main/java/com/example/demo/files/chats.json @@ -1 +1,22 @@ -[] \ No newline at end of file +[ + { + "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 index 0637a08..9fff1f8 100644 --- a/src/main/java/com/example/demo/files/messages.json +++ b/src/main/java/com/example/demo/files/messages.json @@ -1 +1,13 @@ -[] \ No newline at end of file +[ + { + "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 index 0cb9622..d9b397b 100644 --- a/src/main/java/com/example/demo/files/users.json +++ b/src/main/java/com/example/demo/files/users.json @@ -1 +1,29 @@ -[{"id":"U0","isAdmin":true,"name":"Матвей Дыгало","login":"muton","password":"PASSWORD","chatArrayList":[]}] \ No newline at end of file +[ + { + "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 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); - } - - - -} diff --git a/src/main/java/com/example/demo/models/Chat.java b/src/main/java/com/example/demo/models/Chat.java index 89c0d47..68fe87a 100644 --- a/src/main/java/com/example/demo/models/Chat.java +++ b/src/main/java/com/example/demo/models/Chat.java @@ -1,19 +1,66 @@ package com.example.demo.models; import java.util.ArrayList; -import java.util.TreeSet; -public class Chat { - public String id; - public Boolean isDeleted; - public ArrayList messages; - public TreeSet setIdUsers; +public class Chat extends ID { + private Boolean deleted; + private ArrayList messagesIds; + private ArrayList usersIds; - public Chat(String id, Boolean isDeleted, ArrayList messages, TreeSet setIdUsers) { - this.id = id; - this.isDeleted = isDeleted; - this.messages = messages; - this.setIdUsers = setIdUsers; + public Chat(String id, ArrayList usersIds) { + super(id); + 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 ArrayList return the usersIds + */ + public ArrayList getUsersIds() { + return usersIds; + } + + /** + * @param usersIds the usersIds to set + */ + 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/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..462004d 100644 --- a/src/main/java/com/example/demo/models/Message.java +++ b/src/main/java/com/example/demo/models/Message.java @@ -1,24 +1,91 @@ package com.example.demo.models; import java.util.ArrayList; -import java.util.TreeSet; - -public class Message { - public String 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; - this.isDeleted = isDeleted; + +public class Message extends ID { + private Boolean deleted; + private String text; + private Long time; + private String chatId; + private ArrayList 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.idUserAuthor = idUserAuthor; - this.idUserRecipient = idUserRecipient; - this.setIdUsers = setIdUsers; + this.chatId = chatId; + this.usersIds = (ArrayList) 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; + } + + /** + * @return ArrayList return the usersIds + */ + public ArrayList getUsersIds() { + return usersIds; + } + + /** + * @param usersIds the usersIds to set + */ + 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; + } + } diff --git a/src/main/java/com/example/demo/models/User.java b/src/main/java/com/example/demo/models/User.java index 0f78b08..b7f2ec6 100644 --- a/src/main/java/com/example/demo/models/User.java +++ b/src/main/java/com/example/demo/models/User.java @@ -2,44 +2,81 @@ import java.util.ArrayList; -public class User { - public String id; - public Boolean isAdmin; - public String name; - public String login; - public String password; - public ArrayList chatArrayList = new ArrayList<>(); - - public User(String id, Boolean isAdmin, String name, String login, String password, ArrayList chatArrayList) { - this.id = id; - this.isAdmin = isAdmin; +public class User extends ID { + private Boolean admin; + private String name; + private String password; + private ArrayList chatsIds; + + public User(String id, Boolean admin, String name, String password) { + super(id); + this.admin = admin; this.name = name; - this.login = login; this.password = password; - this.chatArrayList = chatArrayList; + this.chatsIds = new ArrayList(); + } + + public void addChat(Chat chat) { + this.chatsIds.add(chat.id); } - public String getId() { - return id; + /** + * @return Boolean return the admin + */ + public Boolean isAdmin() { + return admin; } - public Boolean getAdmin() { - return isAdmin; + /** + * @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 getLogin() { - return login; + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; } + /** + * @return String return the password + */ public String getPassword() { return password; } - public ArrayList getChatArrayList() { - return chatArrayList; + /** + * @param password the password to set + */ + public void setPassword(String password) { + this.password = password; + } + + /** + * @return ArrayList return the chatsIds + */ + public ArrayList getChatsIds() { + return chatsIds; + } + + /** + * @param chatsIds the chatsIds to set + */ + public void setChatsIds(ArrayList chatsIds) { + this.chatsIds = chatsIds; + } + + public void deleteChat(String chatId) { + this.chatsIds.remove(chatId); } }