diff --git a/src/main/java/org/ntlab/tampoposerver/models/ChatRooms.java b/src/main/java/org/ntlab/tampoposerver/models/ChatRooms.java index ad04de2..ea63b32 100644 --- a/src/main/java/org/ntlab/tampoposerver/models/ChatRooms.java +++ b/src/main/java/org/ntlab/tampoposerver/models/ChatRooms.java @@ -1,6 +1,10 @@ package org.ntlab.tampoposerver.models; +import org.apache.logging.log4j.message.Message; + +import java.util.ArrayList; import java.util.Collection; +import java.util.List; public class ChatRooms { private Integer chatRoomId; @@ -8,8 +12,9 @@ private String user1Id; private String newContent; private String chatRoomNumber; + private List messages = new ArrayList<>(); - public ChatRooms(Integer chatRoomId, String user0Id, String user1Id) { + public ChatRooms(Integer chatRoomId) { this.chatRoomId = chatRoomId; } @@ -37,11 +42,24 @@ return this;} public ChatRooms addMessage(String senderId, String content) { - return null; + messages.add(new Message(senderId, content)); + return this; } - public ChatRooms getMessages() { - return null; + public List getMessages() { + return messages; + } + public List getMessage() { return messages; } + + public static class Message { + private String senderId; + private String content; + + public Message(String senderId, String content) { + this.senderId = senderId; + this.content = content; + } + public String getSenderId() { return senderId;} + public String getContent() { return content;} } } - diff --git a/src/main/java/org/ntlab/tampoposerver/repositories/ChatRoomsRepository.java b/src/main/java/org/ntlab/tampoposerver/repositories/ChatRoomsRepository.java index 867b778..0553b5e 100644 --- a/src/main/java/org/ntlab/tampoposerver/repositories/ChatRoomsRepository.java +++ b/src/main/java/org/ntlab/tampoposerver/repositories/ChatRoomsRepository.java @@ -12,8 +12,8 @@ private int id = 0; // 新しいチャットルーム作成(空のメッセージリスト付き) - public ChatRooms addChatRoom(String user0Id, String user1Id) { - ChatRooms chatRoom = new ChatRooms(id, user0Id, user1Id); + public ChatRooms addChatRoom() { + ChatRooms chatRoom = new ChatRooms(id); chatRooms.put(id, chatRoom); id++; return chatRoom; @@ -29,12 +29,22 @@ } // メッセージを取得 - public ChatRooms getMessagesFromUser(int chatRoomId, String userId) { +// public ChatRooms getMessagesFromUser(int chatRoomId, String userId) { +// ChatRooms chatRoom = chatRooms.get(chatRoomId); +// if (chatRoom == null) return null; +// +// return chatRoom.getMessage(); +// //.stream().filter(m -> m.getSenderId().equals(userId)); +// } + + public List getMessagesFromUser(int chatRoomId, String userId) { ChatRooms chatRoom = chatRooms.get(chatRoomId); if (chatRoom == null) return null; - return chatRoom.getMessages(); - //.stream().filter(m -> m.getSenderId().equals(userId)); + return chatRoom.getMessages() + .stream() + .filter(m -> m.getSenderId().equals(userId)) + .toList(); } // 新しいメッセージを追加 diff --git a/src/main/java/org/ntlab/tampoposerver/resources/ChatRoomsResource.java b/src/main/java/org/ntlab/tampoposerver/resources/ChatRoomsResource.java index 81834e2..19bb823 100644 --- a/src/main/java/org/ntlab/tampoposerver/resources/ChatRoomsResource.java +++ b/src/main/java/org/ntlab/tampoposerver/resources/ChatRoomsResource.java @@ -21,7 +21,7 @@ import static javax.ws.rs.core.Response.status; - +@Path("/chat-rooms") @Component public class ChatRoomsResource { private final ChatRoomsRepository chatRoomsRepository; @@ -37,9 +37,10 @@ //チャットルームの作成 @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - @Produces(MediaType.TEXT_PLAIN) + @Produces(MediaType.APPLICATION_JSON) public Response createChatRoom () { - return Response.status(Response.Status.OK).entity("Successfully created a chat room").build(); + ChatRooms chatRoom = chatRoomsRepository.addChatRoom(); + return Response.status(Response.Status.CREATED).entity(chatRoom).build(); } @@ -50,20 +51,16 @@ public Response getChatRoomMessages(@PathParam("chat-room-id") int chatRoomId, @PathParam("user-id") String userId) { User user = userRepository.getUser(userId); if (user == null) throw new NotFoundException("ユーザーが見つかりません"); + List messages = chatRoomsRepository.getMessagesFromUser(chatRoomId, userId); +// if (messages == null) throw new NotFoundException("チャットルームが存在しません"); -// ChatRoom room = chatRoomsRepository.getMessage(chatRoomId); -// if (room == null) throw new NotFoundException("チャットルームが存在しません"); - - - return Response.ok(chatRoomsRepository.getMessagesFromUser(chatRoomId, userId)).build(); + return Response.status(Response.Status.OK).entity(messages).build(); } - - //チャットルームの削除 @DELETE @Path("/{chatroom-id}") @@ -85,8 +82,9 @@ } - chatRoomsRepository.deleteChatRoom(chatRoomId); + ChatRooms chatRoom = chatRoomsRepository.deleteChatRoom(chatRoomId); return Response.noContent().build(); + //return Response.status(Response.Status.noContent).entity(chatRoom).build(); } @@ -94,9 +92,10 @@ //チャットルームにユーザーを追加する @PUT - @Path("/{chatroom-id}") + @Path("/{chatroom-id}/{user-id}") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public Response addChatRoomUser(@FormParam("chat-room-id") String chatRoomId, @FormParam("user-id") String userId, @QueryParam("token") String token) { + @Produces(MediaType.APPLICATION_JSON) + public Response addChatRoomUser(@PathParam("chatroom-id") int chatRoomId, @PathParam("user-id") String userId, @QueryParam("token") String token) { User user = userRepository.getUser(userId); if (user == null) { throw new NotFoundException("IDが存在しません"); @@ -111,8 +110,9 @@ ); } + ChatRooms chatRoom = chatRoomsRepository.addUserRoom(chatRoomId, userId); - return Response.status(Response.Status.OK).entity("Successfully updated").build(); + return Response.status(Response.Status.OK).entity(chatRoom).build(); } @@ -120,13 +120,14 @@ @PUT @Path("/{chatroom-id}/{user-id}/message") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) + @Produces(MediaType.APPLICATION_JSON) public Response updateMessage(@PathParam("chatroom-id") int roomId, @PathParam("user-id") String userId, @FormParam("message") String message) { ChatRooms room = chatRoomsRepository.getChatRoom(roomId); if (room == null) throw new NotFoundException("チャットルームが存在しません"); - room.updateMessage(roomId, userId, message); - return Response.ok("Message updated").build(); + ChatRooms chatRoom = chatRoomsRepository.addMessage(roomId, userId, message); + return Response.status(Response.Status.OK).entity(chatRoom).build(); }