Index: lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/service/DimdimService.java =================================================================== diff -u -r2714c5d509bed30e460ccc453753e6504804d4a1 -r5482f4317e2f5a4253987dfd2d68e3bac5b0407e --- lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/service/DimdimService.java (.../DimdimService.java) (revision 2714c5d509bed30e460ccc453753e6504804d4a1) +++ lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/service/DimdimService.java (.../DimdimService.java) (revision 5482f4317e2f5a4253987dfd2d68e3bac5b0407e) @@ -24,14 +24,23 @@ package org.lamsfoundation.lams.tool.dimdim.service; +import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; import java.util.Date; import java.util.Hashtable; import java.util.List; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -100,7 +109,7 @@ private IDimdimUserDAO dimdimUserDAO = null; private IDimdimAttachmentDAO dimdimAttachmentDAO = null; - + private IDimdimConfigDAO dimdimConfigDAO = null; private ILearnerService learnerService; @@ -122,7 +131,7 @@ // TODO Auto-generated constructor stub } - /* ************ Methods from ToolSessionManager ************* */ + /* Methods from ToolSessionManager */ public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { if (logger.isDebugEnabled()) { @@ -169,8 +178,9 @@ /** * Get the tool output for the given tool output names. * - * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, - * java.lang.Long, java.lang.Long) + * @see + * org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util + * .List, java.lang.Long, java.lang.Long) */ public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { @@ -188,7 +198,7 @@ return null; } - /* ************ Methods from ToolContentManager ************************* */ + /* Methods from ToolContentManager */ public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { @@ -332,7 +342,7 @@ return new TreeMap(); } - /* ********** IDimdimService Methods ********************************* */ + /* IDimdimService Methods */ public Long createNotebookEntry(Long id, Integer idType, String signature, Integer userID, String entry) { @@ -452,7 +462,89 @@ + " the repository " + e.getMessage()); } } + + /** + * + * @param url + * @return + */ + private String sendDimdimRequest(URL url) throws Exception { + URLConnection connection = url.openConnection(); + BufferedReader in = new BufferedReader(new InputStreamReader(connection + .getInputStream())); + String dimdimResponse = ""; + String line = ""; + + while ((line = in.readLine()) != null) + dimdimResponse += line; + in.close(); + + logger.debug(dimdimResponse + "1"); + + // Extract the connect url from the json string. + Pattern pattern = Pattern.compile("url:\"(.*?)\""); + Matcher matcher = pattern.matcher(dimdimResponse); + + matcher.find(); + String connectURL = matcher.group(1); + + return connectURL; + } + + public String getDimdimJoinConferenceURL(UserDTO userDTO, String meetingKey) throws Exception { + + // Get Dimdim server url + DimdimConfig serverURL = getConfigEntry(Constants.CONFIG_SERVER_URL); + if (serverURL == null) { + throw new DimdimException("Dimdim server url not found"); + } + + URL url = new URL(serverURL.getValue() + + "/dimdim/JoinConferenceCheck.action?" + + "email=" + + URLEncoder.encode(userDTO.getEmail(), "UTF8") + + "&displayName=" + + URLEncoder.encode(userDTO.getFirstName() + " " + + userDTO.getLastName(), "UTF8") + "&confKey=" + + URLEncoder.encode(meetingKey, "UTF8")); + + String connectURL = sendDimdimRequest(url); + + return serverURL.getValue() + connectURL; + } + + public String getDimdimStartConferenceURL(UserDTO userDTO, + String meetingKey, String topic) throws Exception { + + // Get Dimdim server url + DimdimConfig serverURL = getConfigEntry(Constants.CONFIG_SERVER_URL); + if (serverURL == null) { + throw new DimdimException("Dimdim server url not found"); + } + + // get dimdim url + + URL url = new URL(serverURL.getValue() + + "/dimdim/StartNewConferenceCheck.action?" + + "email=" + + URLEncoder.encode(userDTO.getEmail(), "UTF8") + + "&displayName=" + + URLEncoder.encode(userDTO.getFirstName() + " " + + userDTO.getLastName(), "UTF8") + "&confName=" + + URLEncoder.encode(topic, "UTF8") + "&confKey=" + + URLEncoder.encode(meetingKey, "UTF8") + "&lobby=false" + + "&networkProfile=3" + "&meetingHours=99" + + "&maxAttendeeMikes=0" + "&returnUrl=asdf" + "&presenterAV=av" + + "&privateChatEnabled=true" + "&publicChatEnabled=true" + + "&screenShareEnabled=true" + "&whiteboardEnabled=true"); + + String connectURL = sendDimdimRequest(url); + + return serverURL.getValue() + connectURL; + + } + public void saveOrUpdateDimdim(Dimdim dimdim) { dimdimDAO.insertOrUpdate(dimdim); } @@ -470,10 +562,11 @@ saveOrUpdateDimdimUser(dimdimUser); return dimdimUser; } - + public DimdimConfig getConfigEntry(String key) { dimdimConfigDAO.findByProperty(DimdimConfig.class, "key", key); - List list = dimdimConfigDAO.findByProperty(DimdimConfig.class, "key", key); + List list = dimdimConfigDAO.findByProperty( + DimdimConfig.class, "key", key); if (list.isEmpty()) { return null; } else { @@ -605,19 +698,22 @@ dimdim.setInstructions(description); } - // ========================================================================================= - /* ********** Used by Spring to "inject" the linked objects ************* */ + //========================================================================== + // =============== + /* Used by Spring to "inject" the linked objects */ public IDimdimAttachmentDAO getDimdimAttachmentDAO() { return dimdimAttachmentDAO; } + public void setDimdimAttachmentDAO(IDimdimAttachmentDAO attachmentDAO) { this.dimdimAttachmentDAO = attachmentDAO; } public IDimdimDAO getDimdimDAO() { return dimdimDAO; } + public void setDimdimDAO(IDimdimDAO dimdimDAO) { this.dimdimDAO = dimdimDAO; } @@ -638,7 +734,7 @@ public void setDimdimSessionDAO(IDimdimSessionDAO sessionDAO) { this.dimdimSessionDAO = sessionDAO; } - + public IDimdimConfigDAO getDimdimConfigDAO() { return dimdimConfigDAO; } Index: lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/service/IDimdimService.java =================================================================== diff -u -r2714c5d509bed30e460ccc453753e6504804d4a1 -r5482f4317e2f5a4253987dfd2d68e3bac5b0407e --- lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/service/IDimdimService.java (.../IDimdimService.java) (revision 2714c5d509bed30e460ccc453753e6504804d4a1) +++ lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/service/IDimdimService.java (.../IDimdimService.java) (revision 5482f4317e2f5a4253987dfd2d68e3bac5b0407e) @@ -167,4 +167,23 @@ * @param value */ void saveOrUpdateConfigEntry(DimdimConfig dimdimConfig); + + /** + * + * @param userDTO + * @param meetingKey + * @param topic + * @return + */ + String getDimdimStartConferenceURL(UserDTO userDTO, String meetingKey, String topic) throws Exception; + + /** + * + * @param userDTOm + * @param meetingKey + * @return + */ + String getDimdimJoinConferenceURL(UserDTO userDTO, String meetingKey) throws Exception; + + } Index: lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/web/actions/LearningAction.java =================================================================== diff -u -rc7764a3661e8b15fcd6b917e0597109edcb195c7 -r5482f4317e2f5a4253987dfd2d68e3bac5b0407e --- lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/web/actions/LearningAction.java (.../LearningAction.java) (revision c7764a3661e8b15fcd6b917e0597109edcb195c7) +++ lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/web/actions/LearningAction.java (.../LearningAction.java) (revision 5482f4317e2f5a4253987dfd2d68e3bac5b0407e) @@ -175,47 +175,19 @@ // Get LAMS userDTO org.lamsfoundation.lams.usermanagement.dto.UserDTO lamsUserDTO = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) SessionManager .getSession().getAttribute(AttributeNames.USER); - - // get dimdim url - DimdimConfig serverURL = dimdimService - .getConfigEntry(Constants.CONFIG_SERVER_URL); - - URL url = new URL(serverURL.getValue() - + "/dimdim/JoinConferenceCheck.action?" - + "email=" - + URLEncoder.encode(lamsUserDTO.getEmail(), "UTF8") - + "&displayName=" - + URLEncoder.encode(lamsUserDTO.getFirstName() + " " - + lamsUserDTO.getLastName(), "UTF8") + "&confKey=" - + URLEncoder.encode(dimdimSession.getMeetingKey(), "UTF8")); - - URLConnection connection = url.openConnection(); - - BufferedReader in = new BufferedReader(new InputStreamReader(connection - .getInputStream())); - String dimdimResponse = ""; - String line = ""; - - while ((line = in.readLine()) != null) - dimdimResponse += line; - in.close(); - - log.debug(dimdimResponse + "1"); - - // Extract the connect url from the json string. - Pattern pattern = Pattern.compile("url:\"(.*?)\""); - Matcher matcher = pattern.matcher(dimdimResponse); - - matcher.find(); - String connectURL = matcher.group(1); - + + String connectURL = ""; + if (mode.isAuthor()) { + connectURL = dimdimService.getDimdimStartConferenceURL(lamsUserDTO, dimdim.getMeetingKey(), dimdim.getTopic()); + } else { + connectURL = dimdimService.getDimdimJoinConferenceURL(lamsUserDTO, dimdimSession.getMeetingKey()); + } + boolean conferenceOpen = connectURL.isEmpty() ? false : true; request.setAttribute(Constants.ATTR_CONFERENCE_OPEN, conferenceOpen); if (conferenceOpen) { - request.setAttribute(Constants.ATTR_CONFERENCE_URL, serverURL - .getValue() - + connectURL); + request.setAttribute(Constants.ATTR_CONFERENCE_URL, connectURL); } return mapping.findForward("dimdim"); Index: lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/web/actions/MonitoringAction.java =================================================================== diff -u -r2714c5d509bed30e460ccc453753e6504804d4a1 -r5482f4317e2f5a4253987dfd2d68e3bac5b0407e --- lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 2714c5d509bed30e460ccc453753e6504804d4a1) +++ lams_tool_dimdim/src/java/org/lamsfoundation/lams/tool/dimdim/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 5482f4317e2f5a4253987dfd2d68e3bac5b0407e) @@ -138,7 +138,7 @@ } public ActionForward startDimdim(ActionMapping mapping, ActionForm form, - HttpServletRequest request, HttpServletResponse response) { + HttpServletRequest request, HttpServletResponse response) throws Exception { MonitoringForm monitoringForm = (MonitoringForm) form; @@ -151,69 +151,14 @@ session.setMeetingKey(monitoringForm.getMeetingKey()); session.setMaxAttendeeMikes(monitoringForm.getMaxAttendeeMikes()); - // Get Dimdim server url - DimdimConfig serverURL = dimdimService - .getConfigEntry(Constants.CONFIG_SERVER_URL); - - if (serverURL == null) { - throw new DimdimException("Dimdim server url not found"); - } - // Get LAMS userDTO org.lamsfoundation.lams.usermanagement.dto.UserDTO lamsUserDTO = (org.lamsfoundation.lams.usermanagement.dto.UserDTO) SessionManager .getSession().getAttribute(AttributeNames.USER); - // get dimdim url - try { - URL url = new URL(serverURL.getValue() - + "/dimdim/StartNewConferenceCheck.action?" - + "email=" - + URLEncoder.encode(lamsUserDTO.getEmail(), "UTF8") - + "&displayName=" - + URLEncoder.encode(lamsUserDTO.getFirstName() + " " - + lamsUserDTO.getLastName(), "UTF8") + "&confName=" - + URLEncoder.encode(session.getTopic(), "UTF8") - + "&confKey=" - + URLEncoder.encode(session.getMeetingKey(), "UTF8") - + "&lobby=false" + "&networkProfile=3" + "&meetingHours=99" - + "&maxAttendeeMikes=0" + "&returnUrl=asdf" - + "&presenterAV=av" + "&privateChatEnabled=true" - + "&publicChatEnabled=true" + "&screenShareEnabled=true" - + "&whiteboardEnabled=true"); - - URLConnection connection = url.openConnection(); - - BufferedReader in = new BufferedReader(new InputStreamReader( - connection.getInputStream())); - String dimdimResponse = ""; - String line = ""; - - while ((line = in.readLine()) != null) - dimdimResponse += line; - in.close(); - - log.debug(dimdimResponse + "1"); - - // Extract the connect url from the json string. - Pattern pattern = Pattern.compile("url:\"(.*?)\""); - Matcher matcher = pattern.matcher(dimdimResponse); - - matcher.find(); - String connectURL = matcher.group(1); - - response.sendRedirect(serverURL.getValue() + connectURL); - - } catch (MalformedURLException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (UnsupportedEncodingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + String startConferenceURL = dimdimService.getDimdimStartConferenceURL(lamsUserDTO, session.getMeetingKey(), session.getTopic()); + response.sendRedirect(startConferenceURL); + return null; }