Index: tool_adapters/moodle/lams_tool_mdlchat/.classpath =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/.classpath,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/.classpath 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/.classpath 4 Jun 2009 07:04:33 -0000 1.2 @@ -10,6 +10,6 @@ - + Index: tool_adapters/moodle/lams_tool_mdlchat/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdchat/model/MdlChat.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdchat/model/MdlChat.hbm.xml,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdchat/model/MdlChat.hbm.xml 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdchat/model/MdlChat.hbm.xml 4 Jun 2009 07:04:33 -0000 1.2 @@ -113,6 +113,15 @@ length="255" /> + + - - + @@ -55,11 +54,7 @@ - - - - - + Fisheye: Tag 1.2 refers to a dead (removed) revision in file `tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/dao/IMdlChatConfigItemDAO.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.2 refers to a dead (removed) revision in file `tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/dao/hibernate/MdlChatConfigItemDAO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/model/MdlChat.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/model/MdlChat.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/model/MdlChat.java 14 Jan 2009 03:17:40 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/model/MdlChat.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -49,6 +49,7 @@ private static final String CUSTOM_CSV_MAP_PARAM_USER = "user"; private static final String CUSTOM_CSV_MAP_PARAM_COURSE = "course"; private static final String CUSTOM_CSV_MAP_PARAM_SECTION = "section"; + private static final String CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID = "extlmsid"; // Fields /** @@ -66,6 +67,7 @@ private String extUsername; private String extCourseId; private String extSection; + private String extLmsId; //*********** NON Persistent fields private IToolContentHandler toolContentHandler; @@ -227,9 +229,17 @@ public void setExtSection(String extSection) { this.extSection = extSection; } + + /** + * @hibernate.property column="ext_lms_id" length="255" + * @return + */ + public String getExtLmsId() { + return extLmsId; + } - public static long getSerialVersionUID() { - return serialVersionUID; + public void setExtLmsId(String extLmsId) { + this.extLmsId = extLmsId; } /** @@ -317,5 +327,6 @@ this.extUsername = params.get(CUSTOM_CSV_MAP_PARAM_USER); this.extCourseId = params.get(CUSTOM_CSV_MAP_PARAM_COURSE); this.extSection = params.get(CUSTOM_CSV_MAP_PARAM_SECTION); + this.extLmsId = params.get(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID); } } Fisheye: Tag 1.2 refers to a dead (removed) revision in file `tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/model/MdlChatConfigItem.java'. Fisheye: No comparison available. Pass `N' to diff? Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/service/IMdlChatService.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/service/IMdlChatService.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/service/IMdlChatService.java 14 Jan 2009 03:17:40 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/service/IMdlChatService.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -25,10 +25,11 @@ package org.lamsfoundation.lams.tool.mdchat.service; import java.util.HashMap; +import java.util.List; import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.ExtServerToolAdapterMap; import org.lamsfoundation.lams.tool.mdchat.model.MdlChat; -import org.lamsfoundation.lams.tool.mdchat.model.MdlChatConfigItem; import org.lamsfoundation.lams.tool.mdchat.model.MdlChatSession; import org.lamsfoundation.lams.tool.mdchat.model.MdlChatUser; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatException; @@ -96,22 +97,7 @@ public void saveOrUpdateMdlChatSession(MdlChatSession mdlChatSession); /** - * Get the mdlChat config item by key * - * @param key - * @return - */ - public MdlChatConfigItem getConfigItem(String key); - - /** - * Save a mdl configItem - * - * @param item - */ - public void saveOrUpdateMdlChatConfigItem(MdlChatConfigItem item); - - /** - * * @param userId * @param toolSessionId * @return @@ -126,13 +112,6 @@ public MdlChatUser getUserByUID(Long uid); /** - * Gets the external organisation map for this tool adapter - * - * @return - */ - public ExtServerOrgMap getExtServerOrgMap(); - - /** * Creates a hash for talking to the external server * * @param serverMap @@ -186,8 +165,8 @@ /** * Constructs a parameter hashmap to be used for the default parameters * required by the external LMS tool adapter servlet. For instance in - * mdlChat, this constructs the following: - * { ["un", username], ["cs", course], ["ts", timestamp], ["hs", hash], } + * mdlChat, this constructs the following: { ["un", username], ["cs", + * course], ["ts", timestamp], ["hs", hash], } * * @param mdlChat * @return @@ -197,12 +176,42 @@ /** * Constructs a parameter hashmap based off customCSV to be used for the * default parameters required by the external LMS tool adapter servlet. For - * instance in mdlChat, this constructs the following: - * { ["un", username], ["cs", course], ["ts", timestamp], ["hs", hash], } + * instance in mdlChat, this constructs the following: { ["un", username], + * ["cs", course], ["ts", timestamp], ["hs", hash], } * * @param user * @param course * @return */ public HashMap getRequiredExtServletParams(String customCSV); + + /** + * Gets a list of all external servers + * + * @return + */ + public List getExtServerList(); + + /** + * Gets a list of servers mapped to this tool adapter + * + * @return + */ + public List getMappedServers(); + + /** + * Save all the mapped servers + * + * @param mappableServers + */ + public void saveServerMappings(String[] mappableServers); + + /** + * Gets an external server url given the extLmsId + * + * @param extLmsId + * @return + */ + public String getExtServerUrl(String extLmsId); + } Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/service/MdlChatService.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/service/MdlChatService.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/service/MdlChatService.java 14 Jan 2009 03:17:40 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/service/MdlChatService.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -27,26 +27,20 @@ import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.DataInputStream; -import java.io.DataOutputStream; import java.io.File; -import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.Hashtable; import java.util.List; +import java.util.Set; import java.util.SortedMap; -import java.util.TreeMap; import org.apache.log4j.Logger; import org.lamsfoundation.lams.contentrepository.AccessDeniedException; @@ -59,42 +53,39 @@ import org.lamsfoundation.lams.contentrepository.service.RepositoryProxy; import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.ExtServerToolAdapterMap; import org.lamsfoundation.lams.integration.UserInfoFetchException; import org.lamsfoundation.lams.integration.service.IIntegrationService; import org.lamsfoundation.lams.learning.service.ILearnerService; import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; -import org.lamsfoundation.lams.tool.IToolVO; +import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.ToolAdapterContentManager; import org.lamsfoundation.lams.tool.ToolContentImport102Manager; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputDefinition; import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; import org.lamsfoundation.lams.tool.ToolSessionManager; -import org.lamsfoundation.lams.tool.mdchat.dao.IMdlChatConfigItemDAO; +import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; +import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.mdchat.dao.IMdlChatDAO; import org.lamsfoundation.lams.tool.mdchat.dao.IMdlChatSessionDAO; import org.lamsfoundation.lams.tool.mdchat.dao.IMdlChatUserDAO; import org.lamsfoundation.lams.tool.mdchat.model.MdlChat; -import org.lamsfoundation.lams.tool.mdchat.model.MdlChatConfigItem; import org.lamsfoundation.lams.tool.mdchat.model.MdlChatSession; import org.lamsfoundation.lams.tool.mdchat.model.MdlChatUser; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatConstants; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatException; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatToolContentHandler; import org.lamsfoundation.lams.tool.mdchat.util.WebUtility; -import org.lamsfoundation.lams.tool.exception.DataMissingException; -import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; -import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.FileUtil; import org.lamsfoundation.lams.util.HashUtil; import org.lamsfoundation.lams.util.audit.IAuditService; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; /** * An implementation of the IMdlChatService interface. @@ -111,6 +102,7 @@ public static final String CUSTOM_CSV_MAP_PARAM_USER = "user"; public static final String CUSTOM_CSV_MAP_PARAM_COURSE = "course"; public static final String CUSTOM_CSV_MAP_PARAM_SECTION = "section"; + public static final String CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID = "extlmsid"; public static final String EXT_SERVER_PARAM_USER = "un"; public static final String EXT_SERVER_PARAM_COURSE = "cs"; @@ -122,7 +114,7 @@ public static final String EXT_SERVER_PARAM_UPLOAD_FILE = "upload_file"; public static final String EXT_SERVER_PARAM_OUTPUT_NAME = "oname"; - private static final int EXPECTED_CSV_SIZE = 3; + private static final int EXPECTED_CSV_SIZE = 4; private static final String EXPECTED_CSV_FORM = "user,course"; private IMdlChatDAO mdlChatDAO = null; @@ -131,8 +123,6 @@ private IMdlChatUserDAO mdlChatUserDAO = null; - private IMdlChatConfigItemDAO mdlChatConfigItemDAO = null; - private ILearnerService learnerService; private ILamsToolService toolService; @@ -192,8 +182,7 @@ */ public Long copyExternalToolContent(HashMap params) throws ToolException, Exception { - String cloneServletUrl = mdlChatConfigItemDAO.getConfigItemByKey(MdlChatConfigItem.KEY_EXTERNAL_TOOL_SERVLET) - .getConfigValue(); + String cloneServletUrl = getExtToolAdapterServletUrl(params.get(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID)); // add the method to the params params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_CLONE); @@ -203,8 +192,7 @@ BufferedReader isReader = new BufferedReader(new InputStreamReader(is)); String str = isReader.readLine(); if (str == null) { - throw new UserInfoFetchException("Fail to clone chat in .LRN:" - + " - No data returned from external server"); + throw new UserInfoFetchException("Fail to clone chat in .LRN:" + " - No data returned from external server"); } return Long.parseLong(str); @@ -216,11 +204,12 @@ params.put(EXT_SERVER_PARAM_COURSE, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_COURSE)); params.put(EXT_SERVER_PARAM_USER, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_USER)); params.put(EXT_SERVER_PARAM_SECTION, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_SECTION)); + params.put(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID)); String timestamp = Long.toString(new Date().getTime()); params.put(EXT_SERVER_PARAM_TIMESTAMP, timestamp); - ExtServerOrgMap serverMap = this.getExtServerOrgMap(); + ExtServerOrgMap serverMap = getExtServerOrgMap(paramsCSV.get(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID)); String hash = hash(serverMap, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_USER), timestamp); params.put(EXT_SERVER_PARAM_HASH, hash); @@ -232,11 +221,13 @@ params.put(EXT_SERVER_PARAM_USER, mdlchat.getExtUsername()); params.put(EXT_SERVER_PARAM_COURSE, mdlchat.getExtCourseId()); params.put(EXT_SERVER_PARAM_SECTION, mdlchat.getExtSection()); + params.put(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID, mdlchat.getExtLmsId()); String timestamp = Long.toString(new Date().getTime()); params.put(EXT_SERVER_PARAM_TIMESTAMP, timestamp); - ExtServerOrgMap serverMap = this.getExtServerOrgMap(); + ExtServerOrgMap serverMap = getExtServerOrgMap(mdlchat.getExtLmsId()); + params.put(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID, mdlchat.getExtLmsId()); String hash = hash(serverMap, mdlchat.getExtUsername(), timestamp); params.put(EXT_SERVER_PARAM_HASH, hash); @@ -253,6 +244,7 @@ map.put(CUSTOM_CSV_MAP_PARAM_USER, split[0]); map.put(CUSTOM_CSV_MAP_PARAM_COURSE, split[1]); map.put(CUSTOM_CSV_MAP_PARAM_SECTION, split[2]); + map.put(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID, split[3]); return map; } else { return null; @@ -262,13 +254,12 @@ public int getExternalToolOutputInt(String outputName, MdlChat mdlChat, Long userId, String extToolContentId, Long toolSessionId) { MdlChatUser user = this.getUserByUserIdAndSessionId(userId, toolSessionId); - ExtServerOrgMap extServerMap = getExtServerOrgMap(); + ExtServerOrgMap extServerMap = getExtServerOrgMap(mdlChat.getExtLmsId()); String extUserName = user.getLoginName().substring(extServerMap.getPrefix().length() + 1); try { - String outputServletUrl = mdlChatConfigItemDAO.getConfigItemByKey( - MdlChatConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); + String outputServletUrl = getExtToolAdapterServletUrl(mdlChat.getExtLmsId()); // setting the mdlChat username so the params are set up correctly mdlChat.setExtUsername(extUserName); @@ -299,8 +290,8 @@ if (session == null) { return null; } - return mdlChatOutputFactory.getToolOutput(names, this, toolSessionId, learnerId, session.getMdlChat(), - session.getExtSessionId()); + return mdlChatOutputFactory.getToolOutput(names, this, toolSessionId, learnerId, session.getMdlChat(), session + .getExtSessionId()); } /** @@ -339,6 +330,27 @@ return mdlChatOutputFactory.getToolOutputDefinitions(mdchat); } + public String getExtServerUrl(String extLmsId) { + ExtServerOrgMap serverMap = integrationService.getExtServerOrgMap(extLmsId); + String ret = null; + if (serverMap != null) { + ret = serverMap.getServerUrl(); + } + return ret; + } + + public String getExtToolAdapterServletUrl(String extLmsId) { + String ret = getExtServerUrl(extLmsId); + if (ret != null) { + ret += MdlChatConstants.RELATIVE_SERVLET_URL; + } + return ret; + } + + public ExtServerOrgMap getExtServerOrgMap(String extLmsId) { + return integrationService.getExtServerOrgMap(extLmsId); + } + public String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp) { String serverId = serverMap.getServerid(); String serverKey = serverMap.getServerkey(); @@ -391,24 +403,6 @@ } MdlChat toContent = MdlChat.newInstance(fromContent, toContentId, mdlChatToolContentHandler); - // calling the external tool to copy it's content. - /* - try - { - - toContent.setExtToolContentId(copyExternalToolContent( - fromContent.getExtToolContentId(), - fromContent.getExtUsername(), - fromContent.getExtCourseId(), - fromContent.getExtCourseUrl() - )); - - } - catch(Exception e) - { - throw new ToolException("Failed to call external server to copy tool content" + e); - }*/ - mdlChatDAO.saveOrUpdate(toContent); } @@ -451,7 +445,7 @@ if ((fromContent == null) || fromContent.getExtToolContentId() == null) { // create the fromContent using the default tool content - fromContent = getDefaultContent(); + fromContent = getDefaultContent(params.get(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID)); try { // notify the external server to create the default content params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, "0"); @@ -539,36 +533,38 @@ String toolPath = FileUtil.getFullPath(rootPath, toolContentId.toString()); FileUtil.createDirectory(toolPath); - String exportServletUrl = mdlChatConfigItemDAO.getConfigItemByKey( - MdlChatConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); + String exportServletUrl = getExtToolAdapterServletUrl(mdlChat.getExtLmsId()); - // setting these to arbitrary values since they are only used to construct the hash + if (exportServletUrl != null) { + // setting these to arbitrary values since they are only used to construct the hash + mdlChat.setExtCourseId("extCourse"); + mdlChat.setExtSection("0"); + mdlChat.setExtUsername("authUser"); + HashMap params = this.getRequiredExtServletParams(mdlChat); + params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_EXPORT); + params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, mdlChat.getExtToolContentId().toString()); - mdlChat.setExtCourseId("extCourse"); - mdlChat.setExtSection("0"); - mdlChat.setExtUsername("authUser"); - HashMap params = this.getRequiredExtServletParams(mdlChat); - params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_EXPORT); - params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, mdlChat.getExtToolContentId().toString()); + // Get the reponse stream from the external server (hopefully containing the export file + InputStream in = WebUtility.getResponseInputStreamFromExternalServer(exportServletUrl, params); - // Get the reponse stream from the external server (hopefully containing the export file - InputStream in = WebUtility.getResponseInputStreamFromExternalServer(exportServletUrl, params); + // Get the output stream to write the file for extport + OutputStream out = new BufferedOutputStream(new FileOutputStream(toolPath + "/ext_tool.txt")); - // Get the output stream to write the file for extport - OutputStream out = new BufferedOutputStream(new FileOutputStream(toolPath + "/ext_tool.txt")); + byte[] buffer = new byte[1024]; + int numRead; + long numWritten = 0; + while ((numRead = in.read(buffer)) != -1) { + out.write(buffer, 0, numRead); + numWritten += numRead; + } + logger.debug("Path to mdlChat export content: " + toolPath + "/ext_tool.txt"); - byte[] buffer = new byte[1024]; - int numRead; - long numWritten = 0; - while ((numRead = in.read(buffer)) != -1) { - out.write(buffer, 0, numRead); - numWritten += numRead; + out.flush(); + out.close(); + in.close(); + } else { + exportContentService.exportToolContent(toolContentId, mdlChat, mdlChatToolContentHandler, rootPath); } - logger.debug("Path to mdlChat export content: " + toolPath + "/ext_tool.txt"); - - out.flush(); - out.close(); - in.close(); } catch (Exception e) { logger.error("Problem exporting data from external .LRN servlet", e); } @@ -584,13 +580,6 @@ } - public ExtServerOrgMap getExtServerOrgMap() { - if (integrationService == null) - integrationService = getIntegrationService(); - IToolVO tool = toolService.getToolBySignature(MdlChatConstants.TOOL_SIGNATURE); - return integrationService.getExtServerOrgMap(tool.getExtLmsId()); - } - /** * Import the XML fragment for the tool's content, along with any files * needed for the content. @@ -608,10 +597,6 @@ if (extExportFile.exists()) { try { - - String importServletUrl = mdlChatConfigItemDAO.getConfigItemByKey( - MdlChatConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); - if (customCSV == null) { logger.error("Could not retrieve customCSV required for importing tool adapter tool. CustomCSV: " + customCSV); @@ -620,6 +605,9 @@ + customCSV); } + HashMap customCSVMap = decodeCustomCSV(customCSV); + String importServletUrl = getExtToolAdapterServletUrl(customCSVMap.get(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID)); + HashMap params = getRequiredExtServletParams(customCSV); params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_IMPORT); @@ -675,17 +663,13 @@ } public MdlChat getDefaultContent() { - /* - Long defaultContentID = getDefaultContentIdBySignature(MdlChatConstants.TOOL_SIGNATURE); - MdlChat defaultContent = getMdlChatByContentId(defaultContentID); - if (defaultContent == null) { - String error = "Could not retrieve default content record for this tool"; - logger.error(error); - throw new MdlChatException(error); - } + MdlChat defaultContent = new MdlChat(); return defaultContent; - */ + } + + public MdlChat getDefaultContent(String extLmsId) { MdlChat defaultContent = new MdlChat(); + defaultContent.setExtLmsId(extLmsId); return defaultContent; } @@ -705,6 +689,57 @@ return newContent; } + @SuppressWarnings("unchecked") + public List getExtServerList() { + if (integrationService.getAllExtServerOrgMaps() != null) { + return (List) integrationService.getAllExtServerOrgMaps(); + } else { + return null; + } + + } + + public List getMappedServers() { + return integrationService.getMappedServers(MdlChatConstants.TOOL_SIGNATURE); + } + + public void saveServerMappings(String[] mappedServers) { + Tool tool = toolService.getPersistToolBySignature(MdlChatConstants.TOOL_SIGNATURE); + + Set mappedAdapterServers = new HashSet(); + + List alreadyMapped = getMappedServers(); + + if (tool != null) { + if (mappedServers != null) { + + for (int i = 0; i < mappedServers.length; i++) { + + ExtServerOrgMap serverMap = integrationService.getExtServerOrgMap(mappedServers[i]); + + if (serverMap != null) { + + ExtServerToolAdapterMap serverToolMap = integrationService.getMappedServer(serverMap + .getServerid(), MdlChatConstants.TOOL_SIGNATURE); + + if (serverToolMap == null) { + serverToolMap = new ExtServerToolAdapterMap(tool, serverMap); + integrationService.saveExtServerToolAdapterMap(serverToolMap); + } + mappedAdapterServers.add(serverToolMap); + } + } + } + } + + for (ExtServerToolAdapterMap map : alreadyMapped) { + if (!mappedAdapterServers.contains(map)) { + integrationService.deleteExtServerToolAdapterMap(map); + } + } + + } + public MdlChat getMdlChatByContentId(Long toolContentID) { MdlChat mdlChat = (MdlChat) mdlChatDAO.getByContentId(toolContentID); if (mdlChat == null) { @@ -713,14 +748,6 @@ return mdlChat; } - public MdlChatConfigItem getConfigItem(String key) { - return mdlChatConfigItemDAO.getConfigItemByKey(key); - } - - public void saveOrUpdateMdlChatConfigItem(MdlChatConfigItem item) { - mdlChatConfigItemDAO.saveOrUpdate(item); - } - public MdlChatSession getSessionBySessionId(Long toolSessionId) { MdlChatSession mdlChatSession = mdlChatSessionDAO.getBySessionId(toolSessionId); if (mdlChatSession == null) { @@ -850,14 +877,6 @@ this.mdlChatDAO = mdlChatDAO; } - public IMdlChatConfigItemDAO getMdlChatConfigItemDAO() { - return mdlChatConfigItemDAO; - } - - public void setMdlChatConfigItemDAO(IMdlChatConfigItemDAO mdlChatConfigItemDAO) { - this.mdlChatConfigItemDAO = mdlChatConfigItemDAO; - } - public IToolContentHandler getMdlChatToolContentHandler() { return mdlChatToolContentHandler; } @@ -925,34 +944,8 @@ this.mdlChatOutputFactory = mdlChatOutputFactory; } - /** - * TODO: Use spring injection instead of hacking a context - * - * @return - */ public IIntegrationService getIntegrationService() { - - if (integrationService == null) { - String contexts[] = { "/org/lamsfoundation/lams/applicationContext.xml", - "/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml", - "/org/lamsfoundation/lams/toolApplicationContext.xml", - "/org/lamsfoundation/lams/integrationContext.xml", - "/org/lamsfoundation/lams/learning/learningApplicationContext.xml", - "/org/lamsfoundation/lams/contentrepository/applicationContext.xml", - "/org/lamsfoundation/lams/tool/mdchat/mdlChatApplicationContext.xml", - "/org/lamsfoundation/lams/commonContext.xml" }; - - ApplicationContext context = new ClassPathXmlApplicationContext(contexts); - - if (context == null) - throw new MdlChatException( - "Unable to access application context. Cannot create integration service object."); - - IIntegrationService service = (IIntegrationService) context.getBean("integrationService"); - return service; - } else { - return integrationService; - } + return integrationService; } public void setIntegrationService(IIntegrationService integrationService) { Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/util/MdlChatConstants.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/util/MdlChatConstants.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/util/MdlChatConstants.java 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/util/MdlChatConstants.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -47,4 +47,6 @@ public static final String PARAM_PARENT_PAGE = "parentPage"; static final String FILTER_REPLACE_TEXT = "***"; + + public static final String RELATIVE_SERVLET_URL = "mod/lamstwo/tooladapter_chat.php"; } Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/util/WebUtility.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/util/WebUtility.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/util/WebUtility.java 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/util/WebUtility.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -37,6 +37,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.mdchat.service.MdlChatService; public class WebUtility { static Logger logger = Logger.getLogger(WebUtility.class.getName()); @@ -147,7 +148,9 @@ urlStr += "?"; for (Entry entry : params.entrySet()) { - urlStr += "&" + entry.getKey() + "=" + entry.getValue(); + if (!entry.getKey().equals(MdlChatService.CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID)) { + urlStr += "&" + entry.getKey() + "=" + entry.getValue(); + } } logger.debug("Making request to external servlet: " + urlStr); Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/AdminAction.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/AdminAction.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/AdminAction.java 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/AdminAction.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -23,17 +23,19 @@ /* $$Id$$ */ package org.lamsfoundation.lams.tool.mdchat.web.actions; +import java.util.ArrayList; +import java.util.List; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; -import org.lamsfoundation.lams.tool.Tool; -import org.lamsfoundation.lams.tool.mdchat.model.MdlChatConfigItem; +import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.ExtServerToolAdapterMap; import org.lamsfoundation.lams.tool.mdchat.service.IMdlChatService; import org.lamsfoundation.lams.tool.mdchat.service.MdlChatServiceProxy; -import org.lamsfoundation.lams.tool.mdchat.util.MdlChatConstants; import org.lamsfoundation.lams.tool.mdchat.web.forms.AdminForm; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.web.action.LamsDispatchAction; @@ -60,58 +62,55 @@ AdminForm adminForm = (AdminForm) form; - if (toolService == null) { - toolService = mdlChatService.getToolService(); - } - Tool tool = toolService.getPersistToolBySignature(MdlChatConstants.TOOL_SIGNATURE); + // Get a list of possible external servers to enable this tool for + List serverList = mdlChatService.getExtServerList(); + List mappedServers = mdlChatService.getMappedServers(); + populateServerList(adminForm, serverList, mappedServers); - MdlChatConfigItem toolAdpServlet = mdlChatService.getConfigItem(MdlChatConfigItem.KEY_EXTERNAL_TOOL_SERVLET); - if (toolAdpServlet != null) - adminForm.setToolAdapterServlet(toolAdpServlet.getConfigValue()); + request.setAttribute("error", false); + return mapping.findForward("config"); + } - MdlChatConfigItem extServerConfig = mdlChatService.getConfigItem(MdlChatConfigItem.KEY_EXTERNAL_SERVER_URL); - if (extServerConfig != null) - adminForm.setExtServerUrl(extServerConfig.getConfigValue()); + public void populateServerList(AdminForm adminForm, List serverList, + List mappedServers) { - if (tool != null && tool.getExtLmsId() != null) - adminForm.setServerIdMapping(tool.getExtLmsId()); + ArrayList mappableServers = new ArrayList(); + ArrayList mappedServersInForm = new ArrayList(); - request.setAttribute("error", false); - return mapping.findForward("config"); + if (serverList != null) { + for (ExtServerOrgMap serverMap : serverList) { + mappableServers.add(serverMap.getServerid().toString()); + if (mappedServers != null) { + for (ExtServerToolAdapterMap mappedServer : mappedServers) { + if (mappedServer.getExtServer().getServerid().equals(serverMap.getServerid())) { + mappedServersInForm.add(serverMap.getServerid().toString()); + } + } + + } + } + } + adminForm.setMappableServers((String[]) mappableServers.toArray(new String[mappableServers.size()])); + adminForm.setMappedServers((String[]) mappedServersInForm.toArray(new String[mappedServersInForm.size()])); + } public ActionForward saveContent(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { AdminForm adminForm = (AdminForm) form; - if (adminForm.getToolAdapterServlet() != null && !adminForm.getToolAdapterServlet().equals("") - && adminForm.getServerIdMapping() != null && !adminForm.getServerIdMapping().equals("") - && adminForm.getExtServerUrl() != null && !adminForm.getExtServerUrl().equals("")) { - // set up mdlChatService - if (mdlChatService == null) { - mdlChatService = MdlChatServiceProxy.getMdlChatService(this.getServlet().getServletContext()); - } + if (mdlChatService == null) { + mdlChatService = MdlChatServiceProxy.getMdlChatService(this.getServlet().getServletContext()); + } - MdlChatConfigItem servletConfig = mdlChatService - .getConfigItem(MdlChatConfigItem.KEY_EXTERNAL_TOOL_SERVLET); - servletConfig.setConfigValue(adminForm.getToolAdapterServlet()); - mdlChatService.saveOrUpdateMdlChatConfigItem(servletConfig); + // Save all the mappings + mdlChatService.saveServerMappings(adminForm.getMappedServers()); + // Get a list of possible external servers to enable this tool for + List serverList = mdlChatService.getExtServerList(); + List mappedServers = mdlChatService.getMappedServers(); + populateServerList(adminForm, serverList, mappedServers); - MdlChatConfigItem extServerConfig = mdlChatService - .getConfigItem(MdlChatConfigItem.KEY_EXTERNAL_SERVER_URL); - extServerConfig.setConfigValue(adminForm.getExtServerUrl()); - mdlChatService.saveOrUpdateMdlChatConfigItem(extServerConfig); + return mapping.findForward("config"); - if (toolService == null) { - toolService = mdlChatService.getToolService(); - } - Tool tool = toolService.getPersistToolBySignature(MdlChatConstants.TOOL_SIGNATURE); - tool.setExtLmsId(adminForm.getServerIdMapping()); - toolService.saveOrUpdateTool(tool); - return mapping.findForward("config"); - } else { - request.setAttribute("error", true); - return mapping.findForward("config"); - } } } Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/AuthoringAction.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/AuthoringAction.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/AuthoringAction.java 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/AuthoringAction.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -38,7 +38,6 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.mdchat.model.MdlChat; -import org.lamsfoundation.lams.tool.mdchat.model.MdlChatConfigItem; import org.lamsfoundation.lams.tool.mdchat.service.IMdlChatService; import org.lamsfoundation.lams.tool.mdchat.service.MdlChatServiceProxy; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatConstants; @@ -108,19 +107,21 @@ String userFromCSV = null; String courseFromCSV = null; String sectionFromCSV = null; + String extLmsIdFromCSV = null; if (customCSV == null && mdlChat == null) { logger.error("CustomCSV required if mdlChat is null"); throw new ToolException("CustomCSV required if mdlChat is null"); } else if (customCSV != null) { String splitCSV[] = customCSV.split(","); - if (splitCSV.length != 3) { + if (splitCSV.length != 4) { logger.error("mdlChat tool customCSV not in required (user,course,courseURL) form: " + customCSV); throw new ToolException("mdlChat tool cusomCSV not in required (user,course,courseURL) form: " + customCSV); } else { userFromCSV = splitCSV[0]; courseFromCSV = splitCSV[1]; sectionFromCSV = splitCSV[2]; + extLmsIdFromCSV = splitCSV[3]; } } @@ -129,9 +130,18 @@ mdlChat.setExtUsername(userFromCSV); mdlChat.setExtCourseId(courseFromCSV); mdlChat.setExtSection(sectionFromCSV); + mdlChat.setExtLmsId(extLmsIdFromCSV); mdlChat.setCreateDate(new Date()); } + if (mdlChat.getExtLmsId() == null) { + mdlChat.setExtUsername(userFromCSV); + mdlChat.setExtCourseId(courseFromCSV); + mdlChat.setExtSection(sectionFromCSV); + mdlChat.setExtLmsId(extLmsIdFromCSV); + mdlChat.setCreateDate(new Date()); + } + if (mode != null && mode.isTeacher()) { // Set the defineLater flag so that learners cannot use content // while we @@ -144,20 +154,18 @@ try { // If the mdlChat has a saved course url, use it, otherwise use the one giving in the request in customCSV - //String courseUrlToBeUsed = (mdlChat.getExtCourseUrl() != null) ? mdlChat.getExtCourseUrl() : courseUrlFromCSV; + String responseUrl = mdlChatService.getExtServerUrl(mdlChat.getExtLmsId()); - String responseUrl = mdlChatService.getConfigItem(MdlChatConfigItem.KEY_EXTERNAL_SERVER_URL) - .getConfigValue(); responseUrl += RELATIVE_MOODLE_AUTHOR_URL; String returnUpdateUrl = URLEncoder.encode(TOOL_APP_URL + "/authoring.do?dispatch=updateContent" + "&" + AttributeNames.PARAM_TOOL_CONTENT_ID + "=" + toolContentID.toString(), "UTF8"); - + responseUrl += "&lamsUpdateURL=" + returnUpdateUrl; - + String encodedMoodleRelativePath = URLEncoder.encode(MOODLE_EDIT_URL, "UTF8"); - - responseUrl += "&dest=" + encodedMoodleRelativePath ; + responseUrl += "&dest=" + encodedMoodleRelativePath; + if (mdlChat.getExtSection() != null) { responseUrl += "§ion=" + mdlChat.getExtSection(); } else { Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/LearningAction.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/LearningAction.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/LearningAction.java 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/LearningAction.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -36,17 +36,16 @@ import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.mdchat.dto.MdlChatDTO; import org.lamsfoundation.lams.tool.mdchat.model.MdlChat; -import org.lamsfoundation.lams.tool.mdchat.model.MdlChatConfigItem; import org.lamsfoundation.lams.tool.mdchat.model.MdlChatSession; import org.lamsfoundation.lams.tool.mdchat.model.MdlChatUser; -import org.lamsfoundation.lams.tool.mdchat.service.MdlChatServiceProxy; import org.lamsfoundation.lams.tool.mdchat.service.IMdlChatService; +import org.lamsfoundation.lams.tool.mdchat.service.MdlChatServiceProxy; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatConstants; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatException; -import org.lamsfoundation.lams.tool.exception.DataMissingException; -import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; @@ -67,158 +66,136 @@ */ public class LearningAction extends LamsDispatchAction { - private static Logger log = Logger.getLogger(LearningAction.class); + private static Logger log = Logger.getLogger(LearningAction.class); - private static final boolean MODE_OPTIONAL = false; + private static final boolean MODE_OPTIONAL = false; - private static final String TOOL_APP_URL = Configuration - .get(ConfigurationKeys.SERVER_URL) - + "/tool/" + MdlChatConstants.TOOL_SIGNATURE + "/"; + private static final String TOOL_APP_URL = Configuration.get(ConfigurationKeys.SERVER_URL) + "/tool/" + + MdlChatConstants.TOOL_SIGNATURE + "/"; - // public static final String RELATIVE_LEARNER_URL = "mod/Chat/view.php?"; + public static final String RELATIVE_LEARNER_URL = "course/lamsframes.php?"; + public static final String MOODLE_VIEW_URL = "mod/chat/view.php"; + public static final String RELATIVE_TEACHER_URL = "mod/chat/view.php?"; - public static final String RELATIVE_LEARNER_URL = "course/lamsframes.php?"; - public static final String MOODLE_VIEW_URL = "mod/chat/view.php"; - public static final String RELATIVE_TEACHER_URL = "mod/chat/view.php?"; + private IMdlChatService mdlChatService; - private IMdlChatService mdlChatService; + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { - public ActionForward unspecified(ActionMapping mapping, ActionForm form, - HttpServletRequest request, HttpServletResponse response) - throws Exception { + Long toolSessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); - Long toolSessionID = WebUtil.readLongParam(request, - AttributeNames.PARAM_TOOL_SESSION_ID); + // set up mdlChatService + if (mdlChatService == null) { + mdlChatService = MdlChatServiceProxy.getMdlChatService(this.getServlet().getServletContext()); + } - // set up mdlChatService - if (mdlChatService == null) { - mdlChatService = MdlChatServiceProxy.getMdlChatService(this - .getServlet().getServletContext()); - } + // Retrieve the session and content. + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, false); + MdlChatSession mdlChatSession = mdlChatService.getSessionBySessionId(toolSessionID); + if (mdlChatSession == null) { + throw new MdlChatException("Cannot retreive session with toolSessionID: " + toolSessionID); + } - // Retrieve the session and content. - ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, - AttributeNames.PARAM_MODE, false); - MdlChatSession mdlChatSession = mdlChatService - .getSessionBySessionId(toolSessionID); - if (mdlChatSession == null) { - throw new MdlChatException( - "Cannot retreive session with toolSessionID: " - + toolSessionID); - } + MdlChat mdlChat = mdlChatSession.getMdlChat(); + MdlChatUser mdlChatUser = getCurrentUser(toolSessionID); - MdlChat mdlChat = mdlChatSession.getMdlChat(); - MdlChatUser mdlChatUser = getCurrentUser(toolSessionID); - - // check defineLater - if (mdlChat.isDefineLater()) { - return mapping.findForward("defineLater"); - } + // check defineLater + if (mdlChat.isDefineLater()) { + return mapping.findForward("defineLater"); + } - MdlChatDTO mdlChatDTO = new MdlChatDTO(); - request.setAttribute("mdlChatDTO", mdlChatDTO); + MdlChatDTO mdlChatDTO = new MdlChatDTO(); + request.setAttribute("mdlChatDTO", mdlChatDTO); - // Set the content in use flag. - if (!mdlChat.isContentInUse()) { - mdlChat.setContentInUse(new Boolean(true)); - mdlChatService.saveOrUpdateMdlChat(mdlChat); - } + // Set the content in use flag. + if (!mdlChat.isContentInUse()) { + mdlChat.setContentInUse(new Boolean(true)); + mdlChatService.saveOrUpdateMdlChat(mdlChat); + } - // check runOffline - if (mdlChat.isRunOffline()) { - return mapping.findForward("runOffline"); - } + // check runOffline + if (mdlChat.isRunOffline()) { + return mapping.findForward("runOffline"); + } - if (mdlChat.getExtToolContentId() != null) { - try { - String responseUrl = mdlChatService.getConfigItem( - MdlChatConfigItem.KEY_EXTERNAL_SERVER_URL) - .getConfigValue(); + if (mdlChat.getExtToolContentId() != null) { + try { + String responseUrl = mdlChatService.getExtServerUrl(mdlChat.getExtLmsId()); - if (mode.equals(ToolAccessMode.TEACHER)) { - responseUrl += RELATIVE_TEACHER_URL; - - } else if (mode.equals(ToolAccessMode.LEARNER)|| mode.equals(ToolAccessMode.AUTHOR)) - { - responseUrl += RELATIVE_LEARNER_URL; - } + if (mode.equals(ToolAccessMode.TEACHER)) { + responseUrl += RELATIVE_TEACHER_URL; - String returnUrl = TOOL_APP_URL + "learning.do?" - + AttributeNames.PARAM_TOOL_SESSION_ID + "=" - + toolSessionID.toString() + "&dispatch=finishActivity"; + } else if (mode.equals(ToolAccessMode.LEARNER) || mode.equals(ToolAccessMode.AUTHOR)) { + responseUrl += RELATIVE_LEARNER_URL; + } - String encodedMoodleRelativePath = URLEncoder.encode( - MOODLE_VIEW_URL, "UTF8"); + String returnUrl = TOOL_APP_URL + "learning.do?" + AttributeNames.PARAM_TOOL_SESSION_ID + "=" + + toolSessionID.toString() + "&dispatch=finishActivity"; - returnUrl = URLEncoder.encode(returnUrl, "UTF8"); - - responseUrl += "&id=" + mdlChatSession.getExtSessionId() - + "&returnUrl=" + returnUrl + "&dest=" - + encodedMoodleRelativePath + "&is_learner=1" - + "&isFinished=" + mdlChatUser.isFinishedActivity(); + String encodedMoodleRelativePath = URLEncoder.encode(MOODLE_VIEW_URL, "UTF8"); - log.debug("Redirecting for mdl Chat learner: " + responseUrl); - response.sendRedirect(responseUrl); - } catch (Exception e) { - log.error("Could not redirect to mdl Chat authoring", e); - } - } else { - throw new MdlChatException("External content id null for learner"); - } - return null; - } + returnUrl = URLEncoder.encode(returnUrl, "UTF8"); - private MdlChatUser getCurrentUser(Long toolSessionId) { - UserDTO user = (UserDTO) SessionManager.getSession().getAttribute( - AttributeNames.USER); + responseUrl += "&id=" + mdlChatSession.getExtSessionId() + "&returnUrl=" + returnUrl + "&dest=" + + encodedMoodleRelativePath + "&is_learner=1" + "&isFinished=" + + mdlChatUser.isFinishedActivity(); - // attempt to retrieve user using userId and toolSessionId - MdlChatUser mdlChatUser = mdlChatService - .getUserByUserIdAndSessionId(new Long(user.getUserID() - .intValue()), toolSessionId); + log.debug("Redirecting for mdl Chat learner: " + responseUrl); + response.sendRedirect(responseUrl); + } catch (Exception e) { + log.error("Could not redirect to mdl Chat authoring", e); + } + } else { + throw new MdlChatException("External content id null for learner"); + } + return null; + } - if (mdlChatUser == null) { - MdlChatSession mdlChatSession = mdlChatService - .getSessionBySessionId(toolSessionId); - mdlChatUser = mdlChatService.createMdlChatUser(user, - mdlChatSession); - } + private MdlChatUser getCurrentUser(Long toolSessionId) { + UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); - return mdlChatUser; + // attempt to retrieve user using userId and toolSessionId + MdlChatUser mdlChatUser = mdlChatService.getUserByUserIdAndSessionId(new Long(user.getUserID().intValue()), + toolSessionId); + + if (mdlChatUser == null) { + MdlChatSession mdlChatSession = mdlChatService.getSessionBySessionId(toolSessionId); + mdlChatUser = mdlChatService.createMdlChatUser(user, mdlChatSession); } - public ActionForward finishActivity(ActionMapping mapping, ActionForm form, - HttpServletRequest request, HttpServletResponse response) { + return mdlChatUser; + } - Long toolSessionID = WebUtil.readLongParam(request, "toolSessionID"); + public ActionForward finishActivity(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { - MdlChatUser mdlChatUser = getCurrentUser(toolSessionID); + Long toolSessionID = WebUtil.readLongParam(request, "toolSessionID"); - if (mdlChatUser != null) { - mdlChatUser.setFinishedActivity(true); - mdlChatService.saveOrUpdateMdlChatUser(mdlChatUser); - } else { - log.error("finishActivity(): couldn't find MdlChatUser with id: " - + mdlChatUser.getUserId() + "and toolSessionID: " - + toolSessionID); - } + MdlChatUser mdlChatUser = getCurrentUser(toolSessionID); - ToolSessionManager sessionMgrService = MdlChatServiceProxy - .getMdlChatSessionManager(getServlet().getServletContext()); + if (mdlChatUser != null) { + mdlChatUser.setFinishedActivity(true); + mdlChatService.saveOrUpdateMdlChatUser(mdlChatUser); + } else { + log.error("finishActivity(): couldn't find MdlChatUser with id: " + mdlChatUser.getUserId() + + "and toolSessionID: " + toolSessionID); + } - String nextActivityUrl; - try { - nextActivityUrl = sessionMgrService.leaveToolSession(toolSessionID, - mdlChatUser.getUserId()); - response.sendRedirect(nextActivityUrl); - } catch (DataMissingException e) { - throw new MdlChatException(e); - } catch (ToolException e) { - throw new MdlChatException(e); - } catch (IOException e) { - throw new MdlChatException(e); - } + ToolSessionManager sessionMgrService = MdlChatServiceProxy.getMdlChatSessionManager(getServlet() + .getServletContext()); - return null; // TODO need to return proper page. + String nextActivityUrl; + try { + nextActivityUrl = sessionMgrService.leaveToolSession(toolSessionID, mdlChatUser.getUserId()); + response.sendRedirect(nextActivityUrl); + } catch (DataMissingException e) { + throw new MdlChatException(e); + } catch (ToolException e) { + throw new MdlChatException(e); + } catch (IOException e) { + throw new MdlChatException(e); } + + return null; // TODO need to return proper page. + } } Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/MonitoringAction.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/MonitoringAction.java 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/actions/MonitoringAction.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -37,7 +37,6 @@ import org.lamsfoundation.lams.tool.mdchat.dto.MdlChatDTO; import org.lamsfoundation.lams.tool.mdchat.dto.MdlChatSessionDTO; import org.lamsfoundation.lams.tool.mdchat.model.MdlChat; -import org.lamsfoundation.lams.tool.mdchat.model.MdlChatConfigItem; import org.lamsfoundation.lams.tool.mdchat.service.IMdlChatService; import org.lamsfoundation.lams.tool.mdchat.service.MdlChatServiceProxy; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatConstants; @@ -90,15 +89,16 @@ for (MdlChatSessionDTO sessionDTO : mdlChatDT0.getSessionDTOs()) { try { - String responseUrl = mdlChatService.getConfigItem(MdlChatConfigItem.KEY_EXTERNAL_SERVER_URL) - .getConfigValue(); + String responseUrl = mdlChatService.getExtServerUrl(mdlChat.getExtLmsId()); + responseUrl += RELATIVE_MONITOR_URL; String returnUrl = TOOL_APP_URL + "learning.do?" + AttributeNames.PARAM_TOOL_SESSION_ID + "=" + sessionDTO.getSessionID().toString() + "&dispatch=finishActivity"; returnUrl = URLEncoder.encode(returnUrl, "UTF8"); - responseUrl += "&update=" + sessionDTO.getExtSessionID() + "&id=" + sessionDTO.getExtSessionID() + "&returnUrl=" + returnUrl; + responseUrl += "&update=" + sessionDTO.getExtSessionID() + "&id=" + sessionDTO.getExtSessionID() + + "&returnUrl=" + returnUrl; sessionDTO.setRunTimeUrl(responseUrl); } catch (UnsupportedEncodingException e) { Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/forms/AdminForm.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/forms/AdminForm.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/forms/AdminForm.java 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/forms/AdminForm.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -36,9 +36,8 @@ public class AdminForm extends ActionForm { private static final long serialVersionUID = 8872637862875198L; - String toolAdapterServlet; - String extServerUrl; - String serverIdMapping; + String[] mappableServers; + String[] mappedServers; @Override public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) { @@ -47,31 +46,19 @@ return ac; } - public String getToolAdapterServlet() { - return toolAdapterServlet; + public String[] getMappableServers() { + return mappableServers; } - public void setToolAdapterServlet(String toolAdapterServlet) { - this.toolAdapterServlet = toolAdapterServlet; + public void setMappableServers(String[] mappableServers) { + this.mappableServers = mappableServers; } - public String getServerIdMapping() { - return serverIdMapping; + public String[] getMappedServers() { + return mappedServers; } - public void setServerIdMapping(String serverIdMapping) { - this.serverIdMapping = serverIdMapping; + public void setMappedServers(String[] mappedServers) { + this.mappedServers = mappedServers; } - - public String getExtServerUrl() { - return extServerUrl; - } - - public void setExtServerUrl(String extServerUrl) { - this.extServerUrl = extServerUrl; - } - - public static long getSerialVersionUID() { - return serialVersionUID; - } } Index: tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/servlets/ExportServlet.java =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/servlets/ExportServlet.java,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/servlets/ExportServlet.java 14 Jan 2009 03:17:40 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/src/java/org/lamsfoundation/lams/tool/mdchat/web/servlets/ExportServlet.java 4 Jun 2009 07:04:33 -0000 1.2 @@ -41,10 +41,9 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.mdchat.dto.MdlChatDTO; import org.lamsfoundation.lams.tool.mdchat.model.MdlChat; -import org.lamsfoundation.lams.tool.mdchat.model.MdlChatConfigItem; import org.lamsfoundation.lams.tool.mdchat.model.MdlChatSession; -import org.lamsfoundation.lams.tool.mdchat.service.MdlChatServiceProxy; import org.lamsfoundation.lams.tool.mdchat.service.IMdlChatService; +import org.lamsfoundation.lams.tool.mdchat.service.MdlChatServiceProxy; import org.lamsfoundation.lams.tool.mdchat.util.MdlChatException; import org.lamsfoundation.lams.tool.mdchat.util.WebUtility; import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; @@ -166,8 +165,7 @@ private void exportFileFromExternalServer(HttpServletRequest request, HttpServletResponse response, Long extToolSessionId, MdlChat mdlChat, String fullPath) throws Exception { - String exportPortFolioServletUrl = mdlChatService.getConfigItem(MdlChatConfigItem.KEY_EXTERNAL_TOOL_SERVLET) - .getConfigValue(); + String exportPortFolioServletUrl = mdlChatService.getExtServerUrl(mdlChat.getExtLmsId()); String extUsername = "user"; // setting user to arbitrary values since they are only used to construct the hash Index: tool_adapters/moodle/lams_tool_mdlchat/web/WEB-INF/web.xml =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/web/WEB-INF/web.xml,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/web/WEB-INF/web.xml 14 Jan 2009 03:17:40 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/web/WEB-INF/web.xml 4 Jun 2009 07:04:33 -0000 1.2 @@ -10,16 +10,16 @@ contextConfigLocation - - classpath:/org/lamsfoundation/lams/applicationContext.xml - classpath:/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml - classpath:/org/lamsfoundation/lams/toolApplicationContext.xml - classpath:/org/lamsfoundation/lams/integrationContext.xml - classpath:/org/lamsfoundation/lams/learning/learningApplicationContext.xml - classpath:/org/lamsfoundation/lams/contentrepository/applicationContext.xml - classpath:/org/lamsfoundation/lams/tool/mdchat/mdlChatApplicationContext.xml - + + + locatorFactorySelector + classpath*:/org/lamsfoundation/lams/**/beanRefContext.xml + + + parentContextKey + context.central + SystemSessionFilter @@ -34,7 +34,7 @@ sessionFactoryBeanName - mdlChatSessionFactory + coreSessionFactory Index: tool_adapters/moodle/lams_tool_mdlchat/web/WEB-INF/struts/struts-config.xml =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/web/WEB-INF/struts/struts-config.xml,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/web/WEB-INF/struts/struts-config.xml 14 Jan 2009 03:17:39 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/web/WEB-INF/struts/struts-config.xml 4 Jun 2009 07:04:33 -0000 1.2 @@ -14,21 +14,21 @@ + - @@ -71,24 +71,17 @@ /> - - @@ -113,17 +106,24 @@ /> + + Index: tool_adapters/moodle/lams_tool_mdlchat/web/pages/admin/config.jsp =================================================================== RCS file: /usr/local/cvsroot/tool_adapters/moodle/lams_tool_mdlchat/web/pages/admin/config.jsp,v diff -u -r1.1 -r1.2 --- tool_adapters/moodle/lams_tool_mdlchat/web/pages/admin/config.jsp 14 Jan 2009 03:17:40 -0000 1.1 +++ tool_adapters/moodle/lams_tool_mdlchat/web/pages/admin/config.jsp 4 Jun 2009 07:04:33 -0000 1.2 @@ -30,20 +30,20 @@ - - - - - - - - - - - - - -
+

+ +

+ + + + + + +
+ +
+ +