diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java index c2786f87897fdc01465c6f69723e6972ee297aca..8a61d26deb48a77c19f9b04c753385139391892b 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java @@ -32,7 +32,7 @@ public class CommunicationDummyService implements ICommunication { @Override public boolean sendMessageToChat(Message message) { - throw new RuntimeException("Do not call this method without implementation"); + return true; } @Override @@ -46,12 +46,12 @@ public class CommunicationDummyService implements ICommunication { @Override public boolean addUserToChatRoom(String roomId, User user) { - throw new RuntimeException("Do not call this method without implementation"); + return true; } @Override public boolean setChatRoomTopic(String roomId, String topic) { - throw new RuntimeException("Do not call this method without implementation"); + return true; } @Override diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java index 0dcda80131756e656ab84866d6c32493af62392a..e62754a0bdcdfaec188340283d745276e7100078 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/view/CommunicationView.java @@ -4,6 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.modules.communication.model.Message; import unipotsdam.gf.modules.communication.model.chat.ChatMessage; import unipotsdam.gf.modules.communication.model.chat.ChatRoom; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; @@ -41,7 +42,7 @@ public class CommunicationView { log.error("chatRoom not found for roomId: {}", roomId); return Response.status(Response.Status.NOT_FOUND).build(); } - log.debug("getChatRoomInformationResponse: {}", chatRoom); + log.trace("getChatRoomInformationResponse: {}", chatRoom); return Response.ok(chatRoom).build(); } @@ -51,28 +52,98 @@ public class CommunicationView { public Response getChatHistory(@PathParam("roomId") String roomId) { List<ChatMessage> chatMessages = communicationService.getChatHistory(roomId); if (isNull(chatMessages)) { - log.error("chatRoom not found for roomId: {}", roomId); + log.error("getChatHistory: chatRoom not found for roomId: {}", roomId); return Response.status(Response.Status.NOT_FOUND).build(); } - log.debug("response for getChatHistory: {}", chatMessages); + log.trace("response for getChatHistory: {}", chatMessages); return Response.ok(chatMessages).build(); } + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Path("/send") + public Response sendMessage(Message message) { + if (isNull(message)) { + log.trace("sendMessage message object was null"); + return Response.status(Response.Status.BAD_REQUEST).entity("must provide message").build(); + } + boolean wasSend = communicationService.sendMessageToChat(message); + Response response; + if (wasSend) { + log.error("error while sending message for message: {}", message); + response = Response.ok(wasSend).build(); + } else { + log.trace("response for sendMessage: {}", wasSend); + response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while sending message").build(); + } + return response; + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.APPLICATION_JSON) + @Path("/addUser/{roomId}") + public Response addUserToChatRoom(@PathParam("roomId") String roomId, User user) { + if (isNull(user)) { + log.trace("addUser user object was null"); + return Response.status(Response.Status.BAD_REQUEST).entity("must provide user").build(); + } + boolean wasAdded = communicationService.addUserToChatRoom(roomId, user); + if (isNull(wasAdded)) { + log.error("addUserToChatRoom: chatRoom not found for roomId: {}, user: {}", roomId, user); + return Response.status(Response.Status.NOT_FOUND).build(); + } + Response response; + if (wasAdded) { + log.trace("response for addUser: {}", wasAdded); + response = Response.ok(wasAdded).build(); + } else { + log.error("error while adding user to chat room"); + response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while adding user to chatRoom").build(); + } + return response; + } + + @POST + @Produces(MediaType.APPLICATION_JSON) + @Path("/setTopic/{roomId}") + public Response setChatRoomTopic(@PathParam("roomId") String roomId, @QueryParam("topic") String topic) { + if (isNull(topic)) { + log.trace("setTopic param not given"); + return Response.status(Response.Status.BAD_REQUEST).entity("topic must be not empty").build(); + } + boolean wasSet = communicationService.setChatRoomTopic(roomId, topic); + if (isNull(wasSet)) { + log.error("addChatRoomTopic: chatRoom not found for roomId: {}, topic: {}", roomId, topic); + return Response.status(Response.Status.NOT_FOUND).build(); + } + Response response; + if (wasSet) { + log.trace("response for setTopic: {}", wasSet); + response = Response.ok(wasSet).build(); + } else { + log.error("error while setting topic to chat room"); + response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("error while setting topic to chat room").build(); + } + return response; + } + @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Path("/create") public Response createChatRoom(@QueryParam("name") String name, List<User> users) { if (isNull(name)) { - return Response.status(Response.Status.BAD_REQUEST).entity("no name is not allowed").build(); + return Response.status(Response.Status.BAD_REQUEST).entity("must provide name as queryParam").build(); } String chatId = communicationService.createChatRoom(name, users); if (isNull(chatId)) { log.error("error while creating chatRoom for: name: {}, users: {}", name, users); return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); } - log.debug("response for createChatRoom: {}", chatId); - return Response.ok(chatId).build(); + log.trace("response for createChatRoom: {}", chatId); + return Response.status(Response.Status.CREATED).entity(chatId).build(); } // Temp: just get user as json diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java index 930c1c0edaa352910df15f7490ef6ab64fe2ef36..726beabf756b5b76405c58ea462a798d243bbd3f 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/communication/view/CommunicationViewTest.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.List; import static javax.ws.rs.core.Response.Status.BAD_REQUEST; +import static javax.ws.rs.core.Response.Status.CREATED; import static javax.ws.rs.core.Response.Status.NOT_FOUND; import static javax.ws.rs.core.Response.Status.OK; import static org.hamcrest.Matchers.is; @@ -59,13 +60,13 @@ public class CommunicationViewTest extends JerseyTest { public void createChatRoom() { String path = "chat/create"; Response responseOk = target().path(path).queryParam("name", "test").request().post(null); - assertThat(responseOk.getStatus(), is(OK.getStatusCode())); + assertThat(responseOk.getStatus(), is(CREATED.getStatusCode())); assertNotNull(responseOk.readEntity(String.class)); ArrayList<User> users = new ArrayList<>(); users.add(new User("test", "test", "test", true)); responseOk = target().path(path).queryParam("name", "test").request().post(Entity.json(users)); - assertThat(responseOk.getStatus(), is(OK.getStatusCode())); + assertThat(responseOk.getStatus(), is(CREATED.getStatusCode())); assertNotNull(responseOk.readEntity(String.class)); Response responseBadRequest = target().path(path).request().post(Entity.json(users));