From 20e8dcffdc11455e14d916204a0596d4f070b4ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20St=C3=A4hr?= <software@mstaehr.net> Date: Thu, 14 Jun 2018 10:25:19 +0200 Subject: [PATCH] feat: dummy tagLib integration for chatWindow with service #42 --- .../java/unipotsdam/gf/config/Constants.java | 6 +++ .../gf/config/GFApplicationBinder.java | 3 ++ .../gf/core/management/ManagementImpl.java | 4 ++ .../gf/interfaces/ICommunication.java | 2 + .../gf/modules/communication/ChatWindow.java | 42 +++++++++++++++++++ .../service/CommunicationDummyService.java | 15 +++++++ .../communication/view/CommunicationView.java | 4 +- .../main/webapp/communication/chatWindow.tld | 16 +++++++ .../main/webapp/pages/overview-docent.html | 4 +- .../main/webapp/pages/overview-student.html | 4 +- ...project-docent.html => project-docent.jsp} | 2 + 11 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/config/Constants.java create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java create mode 100644 gemeinsamforschen/src/main/webapp/communication/chatWindow.tld rename gemeinsamforschen/src/main/webapp/pages/{project-docent.html => project-docent.jsp} (94%) diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/Constants.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/Constants.java new file mode 100644 index 00000000..12586278 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/Constants.java @@ -0,0 +1,6 @@ +package unipotsdam.gf.config; + +public interface Constants { + + String ROCKET_CHAT_URL = "http://rocketchat.westeurope.cloudapp.azure.com"; +} diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java index 89178403..554cf050 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java @@ -1,6 +1,8 @@ package unipotsdam.gf.config; import org.glassfish.hk2.utilities.binding.AbstractBinder; +import unipotsdam.gf.core.management.Management; +import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.interfaces.ICommunication; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; @@ -8,5 +10,6 @@ public class GFApplicationBinder extends AbstractBinder { @Override protected void configure() { bind(CommunicationDummyService.class).to(ICommunication.class); + bind(ManagementImpl.class).to(Management.class); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java index 2e23b8f5..01135265 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java @@ -9,6 +9,8 @@ import unipotsdam.gf.core.management.user.UserInterests; import unipotsdam.gf.core.management.user.UserProfile; import unipotsdam.gf.modules.assessment.controller.StudentIdentifier; +import javax.annotation.ManagedBean; +import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -16,6 +18,8 @@ import java.util.UUID; /** * Created by dehne on 31.05.2018. */ +@ManagedBean +@Resource public class ManagementImpl implements Management { @Override public void delete(StudentIdentifier identifier) { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java index 8a07add1..923f3597 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java @@ -79,4 +79,6 @@ public interface ICommunication { */ boolean registerUser(User user); + String getChatRoomLink(String userToken,String projectToken, String groupToken); + } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java new file mode 100644 index 00000000..9e342d98 --- /dev/null +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java @@ -0,0 +1,42 @@ +package unipotsdam.gf.modules.communication; + +import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.interfaces.ICommunication; +import unipotsdam.gf.modules.communication.service.CommunicationDummyService; + +import javax.annotation.ManagedBean; +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.jsp.tagext.*; +import javax.servlet.jsp.*; +import java.io.*; + +public class ChatWindow extends SimpleTagSupport { + + private String orientation; + + public void doTag() throws JspException, IOException { + PageContext pageContext = (PageContext) getJspContext(); + HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); + String token = request.getParameter("token"); + ManagementImpl management = new ManagementImpl(); + //User user = management.getUser(token); + String groupToken = request.getParameter("groupToken"); + String projectToken = request.getParameter("projectToken"); + //get ProjetbyToken + ICommunication communicationService = new CommunicationDummyService(); + String chatRoomLink = communicationService.getChatRoomLink(token,projectToken,groupToken); + + JspWriter out = getJspContext().getOut(); + out.println("<iframe width=\"30%\" height=\"100%\" src=\""+chatRoomLink+"\"/>"); + } + + public void setOrientation(String orientation) { + this.orientation = orientation; + } + + public String getOrientation() { + return orientation; + } +} 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 8a61d26d..da54f55c 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 @@ -1,5 +1,7 @@ package unipotsdam.gf.modules.communication.service; +import unipotsdam.gf.config.Constants; +import unipotsdam.gf.core.management.Management; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.interfaces.ICommunication; import unipotsdam.gf.modules.communication.model.Message; @@ -8,6 +10,7 @@ import unipotsdam.gf.modules.communication.model.chat.ChatRoom; import javax.annotation.ManagedBean; import javax.annotation.Resource; +import javax.inject.Inject; import javax.inject.Singleton; import java.time.Instant; import java.util.ArrayList; @@ -19,6 +22,9 @@ import java.util.Objects; @Singleton public class CommunicationDummyService implements ICommunication { + @Inject + Management managementService; + @Override public List<ChatMessage> getChatHistory(String roomId) { ArrayList<ChatMessage> chatMessages = new ArrayList<>(); @@ -72,6 +78,15 @@ public class CommunicationDummyService implements ICommunication { return true; } + public String getChatRoomLink(String userToken, String projectToken, String groupToken) { + //User user = managementService.getUser(userToken); + // TODO: Implement getProjectbyToken and getGroupByToken + //Project project = managementService.getProject(projectToken + String channelName = "general"; + String fullUrl = Constants.ROCKET_CHAT_URL + "/channel/" + channelName + "?layout=embedded"; + return fullUrl; + } + // TODO: remove after done implementing // just for postman testing public User getUser() { 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 e62754a0..16e00c61 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 @@ -28,7 +28,7 @@ import static java.util.Objects.isNull; @ManagedBean public class CommunicationView { - private static final Logger log = LoggerFactory.getLogger(SampleView.class); + private static final Logger log = LoggerFactory.getLogger(CommunicationView.class); @Inject private ICommunication communicationService; @@ -105,6 +105,8 @@ public class CommunicationView { return response; } + // TODO: remove user from chatroom + @POST @Produces(MediaType.APPLICATION_JSON) @Path("/setTopic/{roomId}") diff --git a/gemeinsamforschen/src/main/webapp/communication/chatWindow.tld b/gemeinsamforschen/src/main/webapp/communication/chatWindow.tld new file mode 100644 index 00000000..e98a7ae4 --- /dev/null +++ b/gemeinsamforschen/src/main/webapp/communication/chatWindow.tld @@ -0,0 +1,16 @@ +<taglib> + <tlib-version>1.0</tlib-version> + <jsp-version>2.0</jsp-version> + <short-name>chatWindow</short-name> + + <tag> + <name>chatWindow</name> + <tag-class>unipotsdam.gf.modules.communication.ChatWindow</tag-class> + <body-content>empty</body-content> + <attribute> + <name>orientation</name> + <required>yes</required> + <rtexprvalue>no</rtexprvalue> + </attribute> + </tag> +</taglib> \ No newline at end of file diff --git a/gemeinsamforschen/src/main/webapp/pages/overview-docent.html b/gemeinsamforschen/src/main/webapp/pages/overview-docent.html index 09976e3d..5ed91721 100644 --- a/gemeinsamforschen/src/main/webapp/pages/overview-docent.html +++ b/gemeinsamforschen/src/main/webapp/pages/overview-docent.html @@ -20,7 +20,7 @@ <table id="projects"> <!-- getElementById('projects').append um neue Projekte anzufügen --> <tr style="cursor:pointer" role="button"> <td> - <a href="project-docent.html"> + <a href="project-docent.jsp"> <h1>dummy Projekt1</h1> </a> </td> @@ -51,7 +51,7 @@ </tr> <tr style="cursor:pointer" role="button"> <td> - <a href="project-docent.html"> + <a href="project-docent.jsp"> <h1>dummy Projekt2</h1> </a> </td> diff --git a/gemeinsamforschen/src/main/webapp/pages/overview-student.html b/gemeinsamforschen/src/main/webapp/pages/overview-student.html index 5c56a572..cc4ec5a3 100644 --- a/gemeinsamforschen/src/main/webapp/pages/overview-student.html +++ b/gemeinsamforschen/src/main/webapp/pages/overview-student.html @@ -20,7 +20,7 @@ <table id="projects"> <!-- getElementById('projects').append um neue Projekte anzufügen --> <tr style="cursor:pointer" role="button"> <td> - <a href="project-docent.html"> + <a href="project-docent.jsp"> <h1>dummy Projekt1</h1> </a> </td> @@ -51,7 +51,7 @@ </tr> <tr style="cursor:pointer" role="button"> <td> - <a href="project-docent.html"> + <a href="project-docent.jsp"> <h1>dummy Projekt2</h1> </a> </td> diff --git a/gemeinsamforschen/src/main/webapp/pages/project-docent.html b/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp similarity index 94% rename from gemeinsamforschen/src/main/webapp/pages/project-docent.html rename to gemeinsamforschen/src/main/webapp/pages/project-docent.jsp index 232c9e77..95dcf5e7 100644 --- a/gemeinsamforschen/src/main/webapp/pages/project-docent.html +++ b/gemeinsamforschen/src/main/webapp/pages/project-docent.jsp @@ -1,4 +1,5 @@ <!DOCTYPE html> +<%@ taglib prefix = "communication" uri = "/communication/chatWindow.tld"%> <html> <head> @@ -73,6 +74,7 @@ </tbody> </table> </div> + <communication:chatWindow orientation="right"></communication:chatWindow> <script src="../assets/js/jquery.min.js"></script> <script src="../assets/bootstrap/js/bootstrap.min.js"></script> </body> -- GitLab