Index: lams_central/conf/xdoclet/filter-mappings.xml =================================================================== diff -u -r1983757336d2535cdd21fd88ec30dcaefb571601 -ra985e29fc921fabc19dfe1199a99e21a696c5ba4 --- lams_central/conf/xdoclet/filter-mappings.xml (.../filter-mappings.xml) (revision 1983757336d2535cdd21fd88ec30dcaefb571601) +++ lams_central/conf/xdoclet/filter-mappings.xml (.../filter-mappings.xml) (revision a985e29fc921fabc19dfe1199a99e21a696c5ba4) @@ -116,11 +116,4 @@ hibernateFilter /OpenIDServlet - - - \ No newline at end of file + \ No newline at end of file Index: lams_central/conf/xdoclet/servlet-mappings.xml =================================================================== diff -u -r1983757336d2535cdd21fd88ec30dcaefb571601 -ra985e29fc921fabc19dfe1199a99e21a696c5ba4 --- lams_central/conf/xdoclet/servlet-mappings.xml (.../servlet-mappings.xml) (revision 1983757336d2535cdd21fd88ec30dcaefb571601) +++ lams_central/conf/xdoclet/servlet-mappings.xml (.../servlet-mappings.xml) (revision a985e29fc921fabc19dfe1199a99e21a696c5ba4) @@ -56,11 +56,4 @@ OpenIDServlet /OpenIDServlet - - - \ No newline at end of file + \ No newline at end of file Index: lams_central/conf/xdoclet/servlets.xml =================================================================== diff -u -r53203ceb98ad6035820cb68d1eddce9e2cfaae99 -ra985e29fc921fabc19dfe1199a99e21a696c5ba4 --- lams_central/conf/xdoclet/servlets.xml (.../servlets.xml) (revision 53203ceb98ad6035820cb68d1eddce9e2cfaae99) +++ lams_central/conf/xdoclet/servlets.xml (.../servlets.xml) (revision a985e29fc921fabc19dfe1199a99e21a696c5ba4) @@ -103,13 +103,4 @@ org.lamsfoundation.lams.web.SIFOpenIDServlet - - - + \ No newline at end of file Index: lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java =================================================================== diff -u -r91b5a45ed577ce52a8447ffaec3e6b09be082a0f -ra985e29fc921fabc19dfe1199a99e21a696c5ba4 --- lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision 91b5a45ed577ce52a8447ffaec3e6b09be082a0f) +++ lams_central/src/java/org/lamsfoundation/lams/util/CentralConstants.java (.../CentralConstants.java) (revision a985e29fc921fabc19dfe1199a99e21a696c5ba4) @@ -40,6 +40,8 @@ public static final String PARAM_COURSE_ID = "courseId"; public static final String PARAM_COURSE_NAME = "courseName"; + + public static final String PARAM_USE_PREFIX = "usePrefix"; public static final String PARAM_LEARNING_DESIGN_ID = "ldId"; Index: lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java =================================================================== diff -u -r91cfe0765e0d4dfca23f34773d96d17cc4a481a3 -ra985e29fc921fabc19dfe1199a99e21a696c5ba4 --- lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java (.../LoginRequestServlet.java) (revision 91cfe0765e0d4dfca23f34773d96d17cc4a481a3) +++ lams_central/src/java/org/lamsfoundation/lams/web/LoginRequestServlet.java (.../LoginRequestServlet.java) (revision a985e29fc921fabc19dfe1199a99e21a696c5ba4) @@ -111,6 +111,7 @@ String countryIsoCode = request.getParameter(LoginRequestDispatcher.PARAM_COUNTRY); String langIsoCode = request.getParameter(LoginRequestDispatcher.PARAM_LANGUAGE); String courseName = request.getParameter(CentralConstants.PARAM_COURSE_NAME); + String usePrefix = request.getParameter(CentralConstants.PARAM_USE_PREFIX); // implicit login params String firstName = request.getParameter(LoginRequestDispatcher.PARAM_FIRST_NAME); @@ -147,7 +148,7 @@ Authenticator.authenticate(serverMap, timestamp, extUsername, method, hash); ExtCourseClassMap orgMap = getService().getExtCourseClassMap(serverMap, userMap, extCourseId, - countryIsoCode, langIsoCode, courseName, method); + countryIsoCode, langIsoCode, courseName, method, Boolean.parseBoolean(usePrefix)); User user = userMap.getUser(); String login = user.getLogin(); // was using hses.inNew() API to check if the external user has logged in yet, Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java =================================================================== diff -u -r109a77d78a087aeb8b9418b2a49f943597097f06 -ra985e29fc921fabc19dfe1199a99e21a696c5ba4 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision 109a77d78a087aeb8b9418b2a49f943597097f06) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java (.../IIntegrationService.java) (revision a985e29fc921fabc19dfe1199a99e21a696c5ba4) @@ -42,7 +42,10 @@ * @author Fei Yang */ public interface IIntegrationService { - + + ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap, String extCourseId, + String countryIsoCode, String langIsoCode, String prettyCourseName, String method, Boolean prefix); + ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap, String extCourseId, String countryIsoCode, String langIsoCode, String prettyCourseName, String method); Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== diff -u -r192e8bed06df5a995b34c4e94023cbc699b341e5 -ra985e29fc921fabc19dfe1199a99e21a696c5ba4 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision 192e8bed06df5a995b34c4e94023cbc699b341e5) +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java (.../IntegrationService.java) (revision a985e29fc921fabc19dfe1199a99e21a696c5ba4) @@ -65,8 +65,6 @@ import org.lamsfoundation.lams.util.HashUtil; import org.lamsfoundation.lams.util.LanguageUtil; - - /** *

* View Source @@ -99,7 +97,8 @@ // wrapper method for compatibility with original integration modules public ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap, - String extCourseId, String countryIsoCode, String langIsoCode, String prettyCourseName, String method) { + String extCourseId, String countryIsoCode, String langIsoCode, String prettyCourseName, String method, + Boolean prefix) { // Set the pretty course name if available, otherwise maintain the extCourseId String courseName = ""; @@ -108,16 +107,24 @@ } else { courseName = extCourseId; } - if (StringUtils.equals(method, LoginRequestDispatcher.METHOD_AUTHOR) || StringUtils.equals(method, LoginRequestDispatcher.METHOD_MONITOR)) { - return getExtCourseClassMap(serverMap, userMap, extCourseId, courseName, countryIsoCode, langIsoCode, service - .getRootOrganisation().getOrganisationId().toString(), true, true); + if (StringUtils.equals(method, LoginRequestDispatcher.METHOD_AUTHOR) + || StringUtils.equals(method, LoginRequestDispatcher.METHOD_MONITOR)) { + return getExtCourseClassMap(serverMap, userMap, extCourseId, courseName, countryIsoCode, langIsoCode, + service.getRootOrganisation().getOrganisationId().toString(), true, prefix); } else { - return getExtCourseClassMap(serverMap, userMap, extCourseId, courseName, countryIsoCode, langIsoCode, service - .getRootOrganisation().getOrganisationId().toString(), false, true); + return getExtCourseClassMap(serverMap, userMap, extCourseId, courseName, countryIsoCode, langIsoCode, + service.getRootOrganisation().getOrganisationId().toString(), false, prefix); } } - // newer method which accepts course name, a parent org id, a flag for whether user should get + // wrapper method for compatibility with original integration modules + public ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap, + String extCourseId, String countryIsoCode, String langIsoCode, String prettyCourseName, String method) { + return getExtCourseClassMap(serverMap, userMap, extCourseId, countryIsoCode, langIsoCode, prettyCourseName, + method, true); + } + + // newer method which accepts course name, a parent org id, a flag for whether user should get // 'teacher' roles, and a flag for whether to use a prefix in the org's name public ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap, String extCourseId, String extCourseName, String countryIsoCode, String langIsoCode, String parentOrgId, @@ -318,19 +325,20 @@ private String[] getUserDataFromExtServer(ExtServerOrgMap serverMap, String extUsername) throws UserInfoFetchException { - //the callback url must contain %username%, %timestamp% and %hash% - //eg: "http://test100.ics.mq.edu.au/webapps/lams-plglamscontent-bb_bb60/UserData?uid=%username%&ts=%timestamp%&hash=%hash%"; - //where %username%, %timestamp% and %hash% will be replaced with their real values + // the callback url must contain %username%, %timestamp% and %hash% + // eg: + // "http://test100.ics.mq.edu.au/webapps/lams-plglamscontent-bb_bb60/UserData?uid=%username%&ts=%timestamp%&hash=%hash%"; + // where %username%, %timestamp% and %hash% will be replaced with their real values try { String userDataCallbackUrl = serverMap.getUserinfoUrl(); String timestamp = Long.toString(new Date().getTime()); String hash = hash(serverMap, extUsername, timestamp); String encodedExtUsername = URLEncoder.encode(extUsername, "UTF8"); - //set the values for the parameters - userDataCallbackUrl = userDataCallbackUrl.replaceAll("%username%", encodedExtUsername).replaceAll( - "%timestamp%", timestamp).replaceAll("%hash%", hash); + // set the values for the parameters + userDataCallbackUrl = userDataCallbackUrl.replaceAll("%username%", encodedExtUsername) + .replaceAll("%timestamp%", timestamp).replaceAll("%hash%", hash); log.debug(userDataCallbackUrl); URL url = new URL(userDataCallbackUrl); URLConnection conn = url.openConnection(); @@ -386,27 +394,27 @@ Map properties = new HashMap(); properties.put("tool.toolSignature", toolSig); - return (List)service.findByProperties(ExtServerToolAdapterMap.class, properties); + return (List) service.findByProperties(ExtServerToolAdapterMap.class, properties); } - + @SuppressWarnings("unchecked") - public ExtServerToolAdapterMap getMappedServer(String serverId, String toolSig){ + public ExtServerToolAdapterMap getMappedServer(String serverId, String toolSig) { Map properties = new HashMap(); properties.put("tool.toolSignature", toolSig); properties.put("extServer.serverid", serverId); List ret = service.findByProperties(ExtServerToolAdapterMap.class, properties); - if (ret != null && ret.size() > 0) { - return (ExtServerToolAdapterMap)ret.get(0); + if (ret != null && ret.size() > 0) { + return (ExtServerToolAdapterMap) ret.get(0); } else { return null; } } - - public void saveExtServerToolAdapterMap(ExtServerToolAdapterMap map){ + + public void saveExtServerToolAdapterMap(ExtServerToolAdapterMap map) { service.save(map); } - - public void deleteExtServerToolAdapterMap(ExtServerToolAdapterMap map){ + + public void deleteExtServerToolAdapterMap(ExtServerToolAdapterMap map) { service.delete(map); } @@ -417,20 +425,20 @@ public ExtServerOrgMap getExtServerOrgMap(Integer sid) { return (ExtServerOrgMap) service.findById(ExtServerOrgMap.class, sid); } - + public void createExtServerLessonMap(Long lessonId, ExtServerOrgMap extServer) { ExtServerLessonMap map = new ExtServerLessonMap(); map.setLessonId(lessonId); map.setExtServer(extServer); service.save(map); } - + public String getLessonFinishCallbackUrl(User user, Lesson lesson) throws UnsupportedEncodingException { // the callback url must contain %username%, %lessonid%, %timestamp% and %hash% eg: // "http://test100.ics.mq.edu.au/webapps/lams-plglamscontent-bb_bb60/UserData?uid=%username%&lessonid=%lessonid%&ts=%timestamp%&hash=%hash%"; // where %username%, %lessonid%, %timestamp% and %hash% will be replaced with their real values String lessonFinishCallbackUrl = null; - + if (lesson != null) { Long lessonId = lesson.getLessonId(); ExtServerLessonMap extServerLesson = getExtServerLessonMap(lessonId); @@ -457,9 +465,9 @@ } } - return lessonFinishCallbackUrl; + return lessonFinishCallbackUrl; } - + private ExtServerLessonMap getExtServerLessonMap(Long lessonId) { List list = service.findByProperty(ExtServerLessonMap.class, "lessonId", lessonId); if (list == null || list.size() == 0) { @@ -468,7 +476,7 @@ return (ExtServerLessonMap) list.get(0); } } - + private ExtUserUseridMap getExistingExtUserUseridMap(ExtServerOrgMap serverMap, User user) { Map properties = new HashMap(); properties.put("extServerOrgMap.sid", serverMap.getSid());