Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_admin/conf/language/lams/ApplicationResources.properties,v diff -u -r1.52.2.2 -r1.52.2.3 --- lams_admin/conf/language/lams/ApplicationResources.properties 17 Apr 2009 07:10:52 -0000 1.52.2.2 +++ lams_admin/conf/language/lams/ApplicationResources.properties 3 Jun 2009 06:36:50 -0000 1.52.2.3 @@ -384,6 +384,7 @@ config.red5.recordings.url =Media Server Recordings URL admin.gradebook.learner.enable =Enable Gradebook for Learners admin.gradebook.monitor.enable =Enable Gradebook for Monitors +sysadmin.serverUrl =External Server URL #======= End labels: Exported 377 labels for en AU ===== Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== RCS file: /usr/local/cvsroot/lams_admin/conf/language/lams/ApplicationResources_en_AU.properties,v diff -u -r1.52.2.2 -r1.52.2.3 --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties 17 Apr 2009 07:10:52 -0000 1.52.2.2 +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties 3 Jun 2009 06:36:50 -0000 1.52.2.3 @@ -384,6 +384,6 @@ config.red5.recordings.url =Media Server Recordings URL admin.gradebook.learner.enable =Enable Gradebook for Learners admin.gradebook.monitor.enable =Enable Gradebook for Monitors +sysadmin.serverUrl =External Server URL - #======= End labels: Exported 377 labels for en AU ===== Index: lams_admin/conf/xdoclet/struts-forms.xml =================================================================== RCS file: /usr/local/cvsroot/lams_admin/conf/xdoclet/struts-forms.xml,v diff -u -r1.31 -r1.31.2.1 --- lams_admin/conf/xdoclet/struts-forms.xml 9 Apr 2009 00:08:35 -0000 1.31 +++ lams_admin/conf/xdoclet/struts-forms.xml 3 Jun 2009 06:36:50 -0000 1.31.2.1 @@ -71,6 +71,7 @@ + Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java,v diff -u -r1.6 -r1.6.6.1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java 12 Dec 2007 05:40:46 -0000 1.6 +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/ServerSaveAction.java 3 Jun 2009 06:36:50 -0000 1.6.6.1 @@ -69,104 +69,111 @@ */ public class ServerSaveAction extends Action { - private static IIntegrationService service; - private static IUserManagementService userService; - private static MessageService messageService; + private static IIntegrationService service; + private static IUserManagementService userService; + private static MessageService messageService; - @SuppressWarnings("unchecked") - public ActionForward execute(ActionMapping mapping, ActionForm form, - HttpServletRequest request, HttpServletResponse response) throws Exception { + @SuppressWarnings("unchecked") + public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { - if (isCancelled(request)) { - return mapping.findForward("success"); - } + if (isCancelled(request)) { + return mapping.findForward("success"); + } - service = AdminServiceProxy.getIntegrationService(getServlet().getServletContext()); - userService = AdminServiceProxy.getService(getServlet().getServletContext()); - messageService = AdminServiceProxy.getMessageService(getServlet().getServletContext()); - - DynaActionForm serverOrgMapForm = (DynaActionForm) form; - ActionMessages errors = new ActionMessages(); - String[] requiredFields = { "serverid", "serverkey", "servername", "prefix", "userinfoUrl", "timeoutUrl" }; - for (String requiredField : requiredFields) { - if (StringUtils.trimToNull(serverOrgMapForm.getString(requiredField)) == null) { - errors.add(requiredField, new ActionMessage("error.required", messageService.getMessage("sysadmin."+requiredField))); + service = AdminServiceProxy.getIntegrationService(getServlet().getServletContext()); + userService = AdminServiceProxy.getService(getServlet().getServletContext()); + messageService = AdminServiceProxy.getMessageService(getServlet().getServletContext()); + + DynaActionForm serverOrgMapForm = (DynaActionForm) form; + ActionMessages errors = new ActionMessages(); + String[] requiredFields = { "serverid", "serverkey", "servername", "prefix", "userinfoUrl", "timeoutUrl" }; + for (String requiredField : requiredFields) { + if (StringUtils.trimToNull(serverOrgMapForm.getString(requiredField)) == null) { + errors.add(requiredField, new ActionMessage("error.required", messageService.getMessage("sysadmin." + + requiredField))); + } + } + Organisation org = null; + UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); + if ((Boolean) serverOrgMapForm.get("newOrg")) { + String orgName = serverOrgMapForm.getString("orgName"); + if (StringUtils.trimToNull(orgName) == null) { + errors.add("orgId", new ActionMessage("error.required", messageService + .getMessage("sysadmin.organisation"))); + } else { + org = new Organisation(); + org.setName(orgName); + org.setParentOrganisation(userService.getRootOrganisation()); + org.setOrganisationType((OrganisationType) userService.findById(OrganisationType.class, + OrganisationType.COURSE_TYPE)); + org.setOrganisationState((OrganisationState) userService.findById(OrganisationState.class, + OrganisationState.ACTIVE)); + SupportedLocale locale = LanguageUtil.getDefaultLocale(); + org.setLocale(locale); + userService.saveOrganisation(org, user.getUserID()); + serverOrgMapForm.set("orgId", org.getOrganisationId()); + serverOrgMapForm.set("newOrg", false); + serverOrgMapForm.set("orgName", null); + } + } else { + Integer orgId = (Integer) serverOrgMapForm.get("orgId"); + if (orgId.equals(-1)) { + // LDEV-1284 no need for integration organisation anymore + // errors.add("orgId",new ActionMessage("error.required", messageService.getMessage("sysadmin.organisation"))); + } else { + org = (Organisation) userService.findById(Organisation.class, orgId); + } + } + Integer sid = (Integer) serverOrgMapForm.get("sid"); + if (errors.isEmpty()) {//check duplication + String[] uniqueFields = { "serverid", "prefix" }; + for (String uniqueField : uniqueFields) { + List list = userService.findByProperty(ExtServerOrgMap.class, uniqueField, serverOrgMapForm + .get(uniqueField)); + if (list != null && list.size() > 0) { + if (sid.equals(-1)) {//new map + errors.add(uniqueField, new ActionMessage("error.not.unique", messageService + .getMessage("sysadmin." + uniqueField))); + } else { + ExtServerOrgMap map = (ExtServerOrgMap) list.get(0); + if (!map.getSid().equals(sid)) { + errors.add(uniqueField, new ActionMessage("error.not.unique", messageService + .getMessage("sysadmin." + uniqueField))); } + } + } - Organisation org = null; - UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); - if((Boolean)serverOrgMapForm.get("newOrg")){ - String orgName = serverOrgMapForm.getString("orgName"); - if(StringUtils.trimToNull(orgName)==null){ - errors.add("orgId",new ActionMessage("error.required", messageService.getMessage("sysadmin.organisation"))); - }else{ - org = new Organisation(); - org.setName(orgName); - org.setParentOrganisation(userService.getRootOrganisation()); - org.setOrganisationType((OrganisationType)userService.findById(OrganisationType.class,OrganisationType.COURSE_TYPE)); - org.setOrganisationState((OrganisationState)userService.findById(OrganisationState.class,OrganisationState.ACTIVE)); - SupportedLocale locale = LanguageUtil.getDefaultLocale(); - org.setLocale(locale); - userService.saveOrganisation(org, user.getUserID()); - serverOrgMapForm.set("orgId", org.getOrganisationId()); - serverOrgMapForm.set("newOrg", false); - serverOrgMapForm.set("orgName", null); - } - }else{ - Integer orgId = (Integer)serverOrgMapForm.get("orgId"); - if(orgId.equals(-1)){ - // LDEV-1284 no need for integration organisation anymore - // errors.add("orgId",new ActionMessage("error.required", messageService.getMessage("sysadmin.organisation"))); - }else{ - org = (Organisation)userService.findById(Organisation.class, orgId); - } - } - Integer sid = (Integer) serverOrgMapForm.get("sid"); - if(errors.isEmpty()){//check duplication - String[] uniqueFields = {"serverid","prefix"}; - for(String uniqueField : uniqueFields){ - List list = userService.findByProperty(ExtServerOrgMap.class,uniqueField,serverOrgMapForm.get(uniqueField)); - if(list!=null && list.size()>0){ - if(sid.equals(-1)){//new map - errors.add(uniqueField, new ActionMessage("error.not.unique", messageService.getMessage("sysadmin."+uniqueField) )); - }else{ - ExtServerOrgMap map = (ExtServerOrgMap)list.get(0); - if(!map.getSid().equals(sid)){ - errors.add(uniqueField, new ActionMessage("error.not.unique", messageService.getMessage("sysadmin."+uniqueField) )); - } - } - - } - } - } - if (errors.isEmpty()) { - ExtServerOrgMap map = null; - if (sid.equals(-1)) { - map = new ExtServerOrgMap(); - BeanUtils.copyProperties(map, serverOrgMapForm); - map.setSid(null); - } else { - map = service.getExtServerOrgMap(sid); - BeanUtils.copyProperties(map, serverOrgMapForm); - } - map.setOrganisation(org); - service.saveExtServerOrgMap(map); - return mapping.findForward("success"); - } else { - saveErrors(request, errors); - Map properties = new HashMap(); - properties.put("organisationType.organisationTypeId", OrganisationType.COURSE_TYPE); - properties.put("organisationState.organisationStateId", OrganisationState.ACTIVE); - List list = userService.findByProperties(Organisation.class, properties); - Organisation dummy = new Organisation(); - dummy.setOrganisationId(-1); - dummy.setName(messageService.getMessage("sysadmin.organisation.select")); - if(list == null){ - list = new ArrayList(); - } - list.add(dummy); - request.setAttribute("orgs", list); - return mapping.getInputForward(); - } + } } + if (errors.isEmpty()) { + ExtServerOrgMap map = null; + if (sid.equals(-1)) { + map = new ExtServerOrgMap(); + BeanUtils.copyProperties(map, serverOrgMapForm); + map.setSid(null); + } else { + map = service.getExtServerOrgMap(sid); + BeanUtils.copyProperties(map, serverOrgMapForm); + } + map.setOrganisation(org); + service.saveExtServerOrgMap(map); + return mapping.findForward("success"); + } else { + saveErrors(request, errors); + Map properties = new HashMap(); + properties.put("organisationType.organisationTypeId", OrganisationType.COURSE_TYPE); + properties.put("organisationState.organisationStateId", OrganisationState.ACTIVE); + List list = userService.findByProperties(Organisation.class, properties); + Organisation dummy = new Organisation(); + dummy.setOrganisationId(-1); + dummy.setName(messageService.getMessage("sysadmin.organisation.select")); + if (list == null) { + list = new ArrayList(); + } + list.add(dummy); + request.setAttribute("orgs", list); + return mapping.getInputForward(); + } + } } Index: lams_admin/web/servermaintain.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_admin/web/servermaintain.jsp,v diff -u -r1.9 -r1.9.6.1 --- lams_admin/web/servermaintain.jsp 11 Jan 2008 04:34:47 -0000 1.9 +++ lams_admin/web/servermaintain.jsp 3 Jun 2009 06:36:50 -0000 1.9.6.1 @@ -51,6 +51,10 @@ * + : + + + : * Index: lams_admin/web/WEB-INF/struts/struts-config.xml =================================================================== RCS file: /usr/local/cvsroot/lams_admin/web/WEB-INF/struts/Attic/struts-config.xml,v diff -u -r1.24 -r1.24.2.1 --- lams_admin/web/WEB-INF/struts/struts-config.xml 9 Apr 2009 00:08:35 -0000 1.24 +++ lams_admin/web/WEB-INF/struts/struts-config.xml 3 Jun 2009 06:36:50 -0000 1.24.2.1 @@ -115,6 +115,7 @@ + Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/integration/ExtServerOrgMap.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/integration/Attic/ExtServerOrgMap.hbm.xml,v diff -u -r1.4 -r1.4.6.1 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/integration/ExtServerOrgMap.hbm.xml 12 Dec 2007 05:40:47 -0000 1.4 +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/integration/ExtServerOrgMap.hbm.xml 3 Jun 2009 06:36:29 -0000 1.4.6.1 @@ -127,6 +127,20 @@ + + @hibernate.property + column="server_url" + length="255" + not-null="false" + + + + + + + + + Index: lams_common/db/sql/create_integration_tables.sql =================================================================== RCS file: /usr/local/cvsroot/lams_common/db/sql/create_integration_tables.sql,v diff -u -r1.3 -r1.3.6.1 --- lams_common/db/sql/create_integration_tables.sql 12 Dec 2007 05:50:18 -0000 1.3 +++ lams_common/db/sql/create_integration_tables.sql 3 Jun 2009 06:36:29 -0000 1.3.6.1 @@ -10,6 +10,7 @@ `serverdesc` text, `prefix` varchar(11) NOT NULL, `userinfo_url` text NOT NULL, + `server_url` varchar(255), `timeout_url` text NOT NULL, `disabled` bit(1) NOT NULL, `orgid` bigint(20), @@ -51,4 +52,18 @@ KEY `ext_server_org_map_id` (`ext_server_org_map_id`), CONSTRAINT `lams_ext_user_userid_map_fk1` FOREIGN KEY (`ext_server_org_map_id`) REFERENCES `lams_ext_server_org_map` (`sid`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `lams_ext_user_userid_map_fk` FOREIGN KEY (`user_id`) REFERENCES `lams_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE -) TYPE=InnoDB; \ No newline at end of file +) TYPE=InnoDB; + +-- +-- Table structure for table `lams_ext_server_tool_map` +-- +DROP TABLE IF EXISTS lams_ext_server_tool_map; +CREATE TABLE lams_ext_server_tool_map ( + uid BIGINT(20) NOT NULL auto_increment, + tool_id BIGINT(20) NOT NULL, + ext_server_org_map_id int(11) NOT NULL, + PRIMARY KEY (uid), + UNIQUE KEY unique_adapter_map (ext_server_org_map_id, tool_id), + CONSTRAINT lams_ext_server_tool_map_fk1 FOREIGN KEY (ext_server_org_map_id) REFERENCES lams_ext_server_org_map (sid) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT lams_ext_server_tool_map_fk2 FOREIGN KEY (tool_id) REFERENCES lams_tool (tool_id) ON DELETE CASCADE ON UPDATE CASCADE +) TYPE=InnoDB; Index: lams_common/db/sql/insert_types_data.sql =================================================================== RCS file: /usr/local/cvsroot/lams_common/db/sql/insert_types_data.sql,v diff -u -r1.85.4.2 -r1.85.4.3 --- lams_common/db/sql/insert_types_data.sql 30 Apr 2009 05:46:55 -0000 1.85.4.2 +++ lams_common/db/sql/insert_types_data.sql 3 Jun 2009 06:36:28 -0000 1.85.4.3 @@ -306,7 +306,7 @@ -- external server mapping to a lams organisation INSERT INTO lams_ext_server_org_map VALUES - (1,'moodle','moodle','moodle','moodle','mdl','http://localhost/moodle/mod/lamstwo/userinfo.php?ts=%timestamp%&un=%username%&hs=%hash%','http://dummy','\0',7); + (1,'moodle','moodle','moodle','moodle','mdl','http://localhost/moodle/mod/lamstwo/userinfo.php?ts=%timestamp%&un=%username%&hs=%hash%', '', 'http://dummy','\0',7); -- initialise db version INSERT INTO patches VALUES ('lams', 16, NOW(), 'F'); \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/commonContext.xml,v diff -u -r1.79.2.2 -r1.79.2.3 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 20 Apr 2009 04:13:32 -0000 1.79.2.2 +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 3 Jun 2009 06:36:29 -0000 1.79.2.3 @@ -85,6 +85,7 @@ classpath:org/lamsfoundation/lams/integration/ExtServerOrgMap.hbm.xml classpath:org/lamsfoundation/lams/integration/ExtCourseClassMap.hbm.xml classpath:org/lamsfoundation/lams/integration/ExtUserUseridMap.hbm.xml + classpath:org/lamsfoundation/lams/integration/ExtServerToolAdapterMap.hbm.xml classpath:org/lamsfoundation/lams/planner/PedagogicalPlannerSequenceNode.hbm.xml Index: lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/BaseDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/BaseDAO.java,v diff -u -r1.11 -r1.11.16.1 --- lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/BaseDAO.java 25 Sep 2006 06:11:05 -0000 1.11 +++ lams_common/src/java/org/lamsfoundation/lams/dao/hibernate/BaseDAO.java 3 Jun 2009 06:36:29 -0000 1.11.16.1 @@ -220,6 +220,7 @@ */ public List findByProperties(Class clazz, Map properties) { Qv qv = buildQueryString(clazz,properties,SELECT,EQUAL_TO_WHAT); + log.debug(qv.queryString); return getHibernateTemplate().find(qv.queryString,qv.values); } Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/dbupdates/Patch0017_updateFrom23-231.sql'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/integration/ExtServerOrgMap.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/integration/Attic/ExtServerOrgMap.java,v diff -u -r1.3 -r1.3.16.1 --- lams_common/src/java/org/lamsfoundation/lams/integration/ExtServerOrgMap.java 13 Oct 2006 00:16:42 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/integration/ExtServerOrgMap.java 3 Jun 2009 06:36:29 -0000 1.3.16.1 @@ -5,17 +5,15 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.usermanagement.Organisation; - -/** - * @hibernate.class - * table="lams_ext_server_org_map" - * -*/ +/** + * @hibernate.class table="lams_ext_server_org_map" + * + */ public class ExtServerOrgMap implements Serializable, Comparable { - private static final long serialVersionUID = 337894825609071182L; + private static final long serialVersionUID = 337894825609071182L; - /** identifier field */ + /** identifier field */ private Integer sid; /** persistent field */ @@ -27,14 +25,17 @@ /** persistent field */ private String servername; - /** nullable persistent field */ + /** persistent field */ private String serverdesc; /** persistent field */ private String prefix; /** persistent field */ private String userinfoUrl; + + /** persistent field */ + private String serverUrl; /** persistent field */ private String timeoutUrl; @@ -52,238 +53,214 @@ private Set extUserUseridMaps; /** full constructor */ - public ExtServerOrgMap(String serverid, String serverkey, String servername, String serverdesc, String prefix, String userinfoUrl, String timeoutUrl, Boolean disabled, Organisation organisation, Set extCourseClassMaps, Set extUserUseridMaps) { - this.serverid = serverid; - this.serverkey = serverkey; - this.servername = servername; - this.serverdesc = serverdesc; - this.prefix = prefix; - this.userinfoUrl = userinfoUrl; - this.timeoutUrl = timeoutUrl; - this.disabled = disabled; - this.organisation = organisation; - this.extCourseClassMaps = extCourseClassMaps; - this.extUserUseridMaps = extUserUseridMaps; + public ExtServerOrgMap(String serverid, String serverkey, String servername, String serverdesc, String prefix, + String userinfoUrl, String serverUrl, String timeoutUrl, Boolean disabled, Organisation organisation, Set extCourseClassMaps, + Set extUserUseridMaps) { + this.serverid = serverid; + this.serverkey = serverkey; + this.servername = servername; + this.serverdesc = serverdesc; + this.prefix = prefix; + this.userinfoUrl = userinfoUrl; + this.serverUrl = serverUrl; + this.timeoutUrl = timeoutUrl; + this.disabled = disabled; + this.organisation = organisation; + this.extCourseClassMaps = extCourseClassMaps; + this.extUserUseridMaps = extUserUseridMaps; } /** default constructor */ public ExtServerOrgMap() { } /** minimal constructor */ - public ExtServerOrgMap(String serverid, String serverkey, String servername, String prefix, String userinfoUrl, String timeoutUrl, Boolean disabled, Organisation organisation, Set extCourseClassMaps, Set extUserUseridMaps) { - this.serverid = serverid; - this.serverkey = serverkey; - this.servername = servername; - this.prefix = prefix; - this.userinfoUrl = userinfoUrl; - this.timeoutUrl = timeoutUrl; - this.disabled = disabled; - this.organisation = organisation; - this.extCourseClassMaps = extCourseClassMaps; - this.extUserUseridMaps = extUserUseridMaps; + public ExtServerOrgMap(String serverid, String serverkey, String servername, String prefix, String userinfoUrl, + String timeoutUrl, Boolean disabled, Organisation organisation, Set extCourseClassMaps, + Set extUserUseridMaps) { + this.serverid = serverid; + this.serverkey = serverkey; + this.servername = servername; + this.prefix = prefix; + this.userinfoUrl = userinfoUrl; + this.timeoutUrl = timeoutUrl; + this.disabled = disabled; + this.organisation = organisation; + this.extCourseClassMaps = extCourseClassMaps; + this.extUserUseridMaps = extUserUseridMaps; } - /** - * @hibernate.id - * generator-class="native" - * type="java.lang.Integer" - * column="sid" - * + /** + * @hibernate.id generator-class="native" type="java.lang.Integer" + * column="sid" + * */ public Integer getSid() { - return this.sid; + return this.sid; } public void setSid(Integer sid) { - this.sid = sid; + this.sid = sid; } - /** - * @hibernate.property - * column="serverid" - * unique="true" - * length="255" - * not-null="true" - * + /** + * @hibernate.property column="serverid" unique="true" length="255" + * not-null="true" + * */ public String getServerid() { - return this.serverid; + return this.serverid; } public void setServerid(String serverid) { - this.serverid = serverid; + this.serverid = serverid; } - /** - * @hibernate.property - * column="serverkey" - * length="65535" - * not-null="true" - * + /** + * @hibernate.property column="serverkey" length="65535" not-null="true" + * */ public String getServerkey() { - return this.serverkey; + return this.serverkey; } public void setServerkey(String serverkey) { - this.serverkey = serverkey; + this.serverkey = serverkey; } - /** - * @hibernate.property - * column="servername" - * length="255" - * not-null="true" - * + /** + * @hibernate.property column="servername" length="255" not-null="true" + * */ public String getServername() { - return this.servername; + return this.servername; } public void setServername(String servername) { - this.servername = servername; + this.servername = servername; } - /** - * @hibernate.property - * column="serverdesc" - * length="65535" - * + /** + * @hibernate.property column="serverdesc" length="65535" + * */ public String getServerdesc() { - return this.serverdesc; + return this.serverdesc; } public void setServerdesc(String serverdesc) { - this.serverdesc = serverdesc; + this.serverdesc = serverdesc; } - /** - * @hibernate.property - * column="prefix" - * unique="true" - * length="11" - * not-null="true" - * + /** + * @hibernate.property column="prefix" unique="true" length="11" + * not-null="true" + * */ public String getPrefix() { - return this.prefix; + return this.prefix; } public void setPrefix(String prefix) { - this.prefix = prefix; + this.prefix = prefix; } - /** - * @hibernate.property - * column="userinfo_url" - * length="65535" - * not-null="true" - * + /** + * @hibernate.property column="userinfo_url" length="65535" not-null="true" + * */ public String getUserinfoUrl() { - return this.userinfoUrl; + return this.userinfoUrl; } - + public void setUserinfoUrl(String userinfoUrl) { - this.userinfoUrl = userinfoUrl; + this.userinfoUrl = userinfoUrl; } + + /** + * @hibernate.property column="server_url" length="255" not-null="false" + * + */ + public String getServerUrl() { + return this.serverUrl; + } - /** - * @hibernate.property - * column="timeout_url" - * length="65535" - * not-null="true" - * + public void setServerUrl(String serverUrl) { + this.serverUrl = serverUrl; + } + + /** + * @hibernate.property column="timeout_url" length="65535" not-null="true" + * */ public String getTimeoutUrl() { - return this.timeoutUrl; + return this.timeoutUrl; } public void setTimeoutUrl(String timeoutUrl) { - this.timeoutUrl = timeoutUrl; + this.timeoutUrl = timeoutUrl; } - /** - * @hibernate.property - * column="disabled" - * length="1" - * not-null="true" - * + /** + * @hibernate.property column="disabled" length="1" not-null="true" + * */ public Boolean getDisabled() { - return this.disabled; + return this.disabled; } public void setDisabled(Boolean disabled) { - this.disabled = disabled; + this.disabled = disabled; } - /** - * @hibernate.many-to-one - * not-null="true" - * @hibernate.column name="orgid" - * lazy="true" - * + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="orgid" lazy="true" + * */ public Organisation getOrganisation() { - return this.organisation; + return this.organisation; } public void setOrganisation(Organisation organisation) { - this.organisation = organisation; + this.organisation = organisation; } - /** - * @hibernate.set - * lazy="true" - * inverse="true" - * cascade="none" - * @hibernate.collection-key - * column="ext_server_org_map_id" - * @hibernate.collection-one-to-many - * class="org.lamsfoundation.lams.integration.ExtCourseClassMap" - * + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="ext_server_org_map_id" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.integration.ExtCourseClassMap" + * */ public Set getExtCourseClassMaps() { - return this.extCourseClassMaps; + return this.extCourseClassMaps; } public void setExtCourseClassMaps(Set extCourseClassMaps) { - this.extCourseClassMaps = extCourseClassMaps; + this.extCourseClassMaps = extCourseClassMaps; } - /** - * @hibernate.set - * lazy="true" - * inverse="true" - * cascade="none" - * @hibernate.collection-key - * column="ext_server_org_map_id" - * @hibernate.collection-one-to-many - * class="org.lamsfoundation.lams.integration.ExtUserUseridMap" - * + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="ext_server_org_map_id" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.integration.ExtUserUseridMap" + * */ public Set getExtUserUseridMaps() { - return this.extUserUseridMaps; + return this.extUserUseridMaps; } public void setExtUserUseridMaps(Set extUserUseridMaps) { - this.extUserUseridMaps = extUserUseridMaps; + this.extUserUseridMaps = extUserUseridMaps; } public String toString() { - return new ToStringBuilder(this) - .append("sid", getSid()) - .append("serverid", getServerid()) - .append("serverkey", getServerkey()) - .append("servername", getServername()) - .toString(); + return new ToStringBuilder(this).append("sid", getSid()).append("serverid", getServerid()).append("serverkey", + getServerkey()).append("servername", getServername()).toString(); } - public int compareTo(Object o) { - return serverid.compareToIgnoreCase(((ExtServerOrgMap)o).getServerid()); - } + public int compareTo(Object o) { + return serverid.compareToIgnoreCase(((ExtServerOrgMap) o).getServerid()); + } } Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/integration/ExtServerToolAdapterMap.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java,v diff -u -r1.8 -r1.8.6.1 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java 17 Sep 2008 07:08:18 -0000 1.8 +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IIntegrationService.java 3 Jun 2009 06:36:29 -0000 1.8.6.1 @@ -27,6 +27,7 @@ import org.lamsfoundation.lams.integration.ExtCourseClassMap; import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.ExtServerToolAdapterMap; import org.lamsfoundation.lams.integration.ExtUserUseridMap; import org.lamsfoundation.lams.integration.UserInfoFetchException; @@ -77,4 +78,12 @@ void saveExtServerOrgMap(ExtServerOrgMap map); String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp); + + List getMappedServers(String toolSig); + + ExtServerToolAdapterMap getMappedServer(String serverId, String toolSig); + + void saveExtServerToolAdapterMap(ExtServerToolAdapterMap map); + + void deleteExtServerToolAdapterMap(ExtServerToolAdapterMap map); } Index: lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java,v diff -u -r1.18 -r1.18.6.1 --- lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java 17 Sep 2008 07:08:18 -0000 1.18 +++ lams_common/src/java/org/lamsfoundation/lams/integration/service/IntegrationService.java 3 Jun 2009 06:36:29 -0000 1.18.6.1 @@ -43,6 +43,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.integration.ExtCourseClassMap; import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.ExtServerToolAdapterMap; import org.lamsfoundation.lams.integration.ExtUserUseridMap; import org.lamsfoundation.lams.integration.UserInfoFetchException; import org.lamsfoundation.lams.integration.security.RandomPasswordGenerator; @@ -63,338 +64,344 @@ *

* View Source *

- * + * * @author Fei Yang */ -public class IntegrationService implements IIntegrationService{ - - private static Logger log = Logger.getLogger(IntegrationService.class); - - private IUserManagementService service; - - public IUserManagementService getService() { - return service; +public class IntegrationService implements IIntegrationService { + + private static Logger log = Logger.getLogger(IntegrationService.class); + + private IUserManagementService service; + + public IUserManagementService getService() { + return service; + } + + public void setService(IUserManagementService service) { + this.service = service; + } + + public ExtServerOrgMap getExtServerOrgMap(String serverId) { + List list = service.findByProperty(ExtServerOrgMap.class, "serverid", serverId); + if (list == null || list.size() == 0) { + return null; + } else { + return (ExtServerOrgMap) list.get(0); } + } - public void setService(IUserManagementService service) { - this.service = service; + // wrapper method for compatibility with original integration modules + public ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap, + String extCourseId, String countryIsoCode, String langIsoCode, String prettyCourseName) { + + // Set the pretty course name if available, otherwise maintain the extCourseId + String courseName = ""; + if (prettyCourseName != null) { + courseName = prettyCourseName; + } else { + courseName = extCourseId; } - public ExtServerOrgMap getExtServerOrgMap(String serverId) { - List list = service.findByProperty(ExtServerOrgMap.class, "serverid", serverId); - if(list==null || list.size()==0){ - return null; - }else{ - return (ExtServerOrgMap)list.get(0); - } + return getExtCourseClassMap(serverMap, userMap, extCourseId, courseName, countryIsoCode, langIsoCode, service + .getRootOrganisation().getOrganisationId().toString(), true, 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, + Boolean isTeacher, Boolean prefix) { + Map properties = new HashMap(); + properties.put("courseid", extCourseId); + properties.put("extServerOrgMap.sid", serverMap.getSid()); + List list = service.findByProperties(ExtCourseClassMap.class, properties); + if (list == null || list.size() == 0) { + return createExtCourseClassMap(serverMap, userMap.getUser(), extCourseId, extCourseName, countryIsoCode, + langIsoCode, parentOrgId, isTeacher, prefix); + } else { + ExtCourseClassMap map = (ExtCourseClassMap) list.get(0); + User user = userMap.getUser(); + Organisation org = map.getOrganisation(); + + // update external course name if if has changed + if (extCourseName != null && !org.getName().equals(buildName(serverMap.getPrefix(), extCourseName))) { + org.setName(buildName(serverMap.getPrefix(), extCourseName)); + service.updateOrganisationandWorkspaceNames(org); + } + if (service.getUserOrganisation(user.getUserId(), org.getOrganisationId()) == null) { + addMemberships(user, org, isTeacher); + } + return map; } - - // wrapper method for compatibility with original integration modules - public ExtCourseClassMap getExtCourseClassMap(ExtServerOrgMap serverMap, ExtUserUseridMap userMap, - String extCourseId, String countryIsoCode, String langIsoCode, String prettyCourseName){ - - // Set the pretty course name if available, otherwise maintain the extCourseId - String courseName = ""; - if (prettyCourseName != null) - { - courseName = prettyCourseName; - } - else - { - courseName = extCourseId; - } - - return getExtCourseClassMap(serverMap, userMap, - extCourseId, courseName, countryIsoCode, langIsoCode, - service.getRootOrganisation().getOrganisationId().toString(), true, true); + } + + private void addMemberships(User user, Organisation org, Boolean isTeacher) { + UserOrganisation uo = new UserOrganisation(user, org); + service.save(uo); + Integer[] roles; + if (isTeacher) { + roles = new Integer[] { Role.ROLE_AUTHOR, Role.ROLE_MONITOR, Role.ROLE_LEARNER }; + } else { + roles = new Integer[] { Role.ROLE_LEARNER }; } - - // 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, Boolean isTeacher, Boolean prefix){ - Map properties = new HashMap(); - properties.put("courseid", extCourseId); - properties.put("extServerOrgMap.sid", serverMap.getSid()); - List list = service.findByProperties(ExtCourseClassMap.class, properties); - if(list==null || list.size()==0){ - return createExtCourseClassMap(serverMap, userMap.getUser(), - extCourseId, extCourseName, countryIsoCode, langIsoCode, parentOrgId, isTeacher, prefix); - }else{ - ExtCourseClassMap map = (ExtCourseClassMap)list.get(0); - User user = userMap.getUser(); - Organisation org = map.getOrganisation(); - - // update external course name if if has changed - if (extCourseName != null && !org.getName().equals(buildName(serverMap.getPrefix(), extCourseName))) - { - org.setName(buildName(serverMap.getPrefix(), extCourseName)); - service.updateOrganisationandWorkspaceNames(org); - } - if(service.getUserOrganisation(user.getUserId(), org.getOrganisationId())==null){ - addMemberships(user, org, isTeacher); - } - return map; - } + for (Integer roleId : roles) { + UserOrganisationRole uor = new UserOrganisationRole(uo, (Role) service.findById(Role.class, roleId)); + service.save(uor); + uo.addUserOrganisationRole(uor); } - - private void addMemberships(User user, Organisation org, Boolean isTeacher){ - UserOrganisation uo = new UserOrganisation(user,org); - service.save(uo); - Integer[] roles; - if (isTeacher) { - roles = new Integer[] { Role.ROLE_AUTHOR, Role.ROLE_MONITOR, Role.ROLE_LEARNER }; - } else { - roles = new Integer[] { Role.ROLE_LEARNER }; - } - for(Integer roleId:roles){ - UserOrganisationRole uor = new UserOrganisationRole(uo,(Role)service.findById(Role.class,roleId)); - service.save(uor); - uo.addUserOrganisationRole(uor); - } - user.addUserOrganisation(uo); - service.save(user); + user.addUserOrganisation(uo); + service.save(user); + } + + public ExtUserUseridMap getExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername) + throws UserInfoFetchException { + Map properties = new HashMap(); + properties.put("extServerOrgMap.sid", serverMap.getSid()); + properties.put("extUsername", extUsername); + List list = service.findByProperties(ExtUserUseridMap.class, properties); + if (list == null || list.size() == 0) { + return createExtUserUseridMap(serverMap, extUsername); + } else { + return (ExtUserUseridMap) list.get(0); } + } - public ExtUserUseridMap getExtUserUseridMap( - ExtServerOrgMap serverMap, - String extUsername) - throws UserInfoFetchException - { - Map properties = new HashMap(); - properties.put("extServerOrgMap.sid", serverMap.getSid()); - properties.put("extUsername", extUsername); - List list = service.findByProperties(ExtUserUseridMap.class, properties); - if(list==null || list.size()==0){ - return createExtUserUseridMap(serverMap, extUsername); - }else{ - return (ExtUserUseridMap)list.get(0); - } + public ExtUserUseridMap getExistingExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername) + throws UserInfoFetchException { + Map properties = new HashMap(); + properties.put("extServerOrgMap.sid", serverMap.getSid()); + properties.put("extUsername", extUsername); + List list = service.findByProperties(ExtUserUseridMap.class, properties); + if (list == null || list.size() == 0) { + return null; + } else { + return (ExtUserUseridMap) list.get(0); } - - public ExtUserUseridMap getExistingExtUserUseridMap( - ExtServerOrgMap serverMap, - String extUsername) - throws UserInfoFetchException - { - Map properties = new HashMap(); - properties.put("extServerOrgMap.sid", serverMap.getSid()); - properties.put("extUsername", extUsername); - List list = service.findByProperties(ExtUserUseridMap.class, properties); - if(list==null || list.size()==0){ - return null; - }else{ - return (ExtUserUseridMap)list.get(0); - } + } + + public ExtUserUseridMap getImplicitExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername, String password, + String firstName, String lastName, String email) throws UserInfoFetchException { + Map properties = new HashMap(); + properties.put("extServerOrgMap.sid", serverMap.getSid()); + properties.put("extUsername", extUsername); + List list = service.findByProperties(ExtUserUseridMap.class, properties); + if (list == null || list.size() == 0) { + String[] defaultLangCountry = LanguageUtil.getDefaultLangCountry(); + String[] userData = { "", firstName, lastName, "", "", "", "", "", "", "", "", email, + defaultLangCountry[1], defaultLangCountry[0] }; + return createExtUserUseridMap(serverMap, extUsername, password, userData, false); + } else { + return (ExtUserUseridMap) list.get(0); } - - public ExtUserUseridMap getImplicitExtUserUseridMap( - ExtServerOrgMap serverMap, - String extUsername, - String password, - String firstName, - String lastName, - String email) - throws UserInfoFetchException - { - Map properties = new HashMap(); - properties.put("extServerOrgMap.sid", serverMap.getSid()); - properties.put("extUsername", extUsername); - List list = service.findByProperties(ExtUserUseridMap.class, properties); - if(list==null || list.size()==0){ - String[] defaultLangCountry = LanguageUtil.getDefaultLangCountry(); - String[] userData = { "",firstName,lastName,"","","","","","","","",email,defaultLangCountry[1],defaultLangCountry[0] }; - return createExtUserUseridMap(serverMap, extUsername, password, userData, false); - }else{ - return (ExtUserUseridMap)list.get(0); - } + } + + public ExtUserUseridMap getImplicitExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername, + String firstName, String lastName, String language, String country, String email) + throws UserInfoFetchException { + Map properties = new HashMap(); + properties.put("extServerOrgMap.sid", serverMap.getSid()); + properties.put("extUsername", extUsername); + List list = service.findByProperties(ExtUserUseridMap.class, properties); + if (list == null || list.size() == 0) { + return createImplicitExtUserUseridMap(serverMap, extUsername, firstName, lastName, language, country, email); + } else { + return (ExtUserUseridMap) list.get(0); } - - public ExtUserUseridMap getImplicitExtUserUseridMap( - ExtServerOrgMap serverMap, - String extUsername, - String firstName, - String lastName, - String language, - String country, - String email) - throws UserInfoFetchException - { - Map properties = new HashMap(); - properties.put("extServerOrgMap.sid", serverMap.getSid()); - properties.put("extUsername", extUsername); - List list = service.findByProperties(ExtUserUseridMap.class, properties); - if(list==null || list.size()==0){ - return createImplicitExtUserUseridMap(serverMap, extUsername, firstName, lastName, language, country, email); - }else{ - return (ExtUserUseridMap)list.get(0); - } - } - - private ExtCourseClassMap createExtCourseClassMap(ExtServerOrgMap serverMap, User user, - String extCourseId, String extCourseName, String countryIsoCode, String langIsoCode, - String parentOrgId, Boolean isTeacher, Boolean prefix) { - Organisation org = createOrganisation(serverMap, user, extCourseId, extCourseName, countryIsoCode, langIsoCode, parentOrgId, prefix); - addMemberships(user,org,isTeacher); - ExtCourseClassMap map = new ExtCourseClassMap(); - map.setCourseid(extCourseId); - map.setExtServerOrgMap(serverMap); - map.setOrganisation(org); - service.save(map); - return map; - } - - private Organisation createOrganisation(ExtServerOrgMap serverMap, User user, - String extCourseId, String extCourseName, String countryIsoCode, String langIsoCode, - String parentOrgId, Boolean prefix) { - Organisation org = new Organisation(); - org.setName( prefix ? buildName(serverMap.getPrefix(), extCourseName) : extCourseName ); - org.setDescription(extCourseId); - org.setOrganisationState((OrganisationState)service.findById(OrganisationState.class,OrganisationState.ACTIVE)); - org.setLocale(LanguageUtil.getSupportedLocale(langIsoCode, countryIsoCode)); + } - // determine whether org will be a group or subgroup - Organisation parent = (Organisation)service.findById(Organisation.class, Integer.valueOf(parentOrgId)); - if (parent != null) { - org.setParentOrganisation(parent); - if (!parent.getOrganisationId().equals(service.getRootOrganisation().getOrganisationId())) { - org.setOrganisationType((OrganisationType)service.findById(OrganisationType.class,OrganisationType.CLASS_TYPE)); - } else { - org.setOrganisationType((OrganisationType)service.findById(OrganisationType.class,OrganisationType.COURSE_TYPE)); - } - } else { - // default - org.setParentOrganisation(service.getRootOrganisation()); - org.setOrganisationType((OrganisationType)service.findById(OrganisationType.class,OrganisationType.COURSE_TYPE)); - } - return service.saveOrganisation(org, user.getUserId()); + private ExtCourseClassMap createExtCourseClassMap(ExtServerOrgMap serverMap, User user, String extCourseId, + String extCourseName, String countryIsoCode, String langIsoCode, String parentOrgId, Boolean isTeacher, + Boolean prefix) { + Organisation org = createOrganisation(serverMap, user, extCourseId, extCourseName, countryIsoCode, langIsoCode, + parentOrgId, prefix); + addMemberships(user, org, isTeacher); + ExtCourseClassMap map = new ExtCourseClassMap(); + map.setCourseid(extCourseId); + map.setExtServerOrgMap(serverMap); + map.setOrganisation(org); + service.save(map); + return map; + } + + private Organisation createOrganisation(ExtServerOrgMap serverMap, User user, String extCourseId, + String extCourseName, String countryIsoCode, String langIsoCode, String parentOrgId, Boolean prefix) { + Organisation org = new Organisation(); + org.setName(prefix ? buildName(serverMap.getPrefix(), extCourseName) : extCourseName); + org.setDescription(extCourseId); + org.setOrganisationState((OrganisationState) service + .findById(OrganisationState.class, OrganisationState.ACTIVE)); + org.setLocale(LanguageUtil.getSupportedLocale(langIsoCode, countryIsoCode)); + + // determine whether org will be a group or subgroup + Organisation parent = (Organisation) service.findById(Organisation.class, Integer.valueOf(parentOrgId)); + if (parent != null) { + org.setParentOrganisation(parent); + if (!parent.getOrganisationId().equals(service.getRootOrganisation().getOrganisationId())) { + org.setOrganisationType((OrganisationType) service.findById(OrganisationType.class, + OrganisationType.CLASS_TYPE)); + } else { + org.setOrganisationType((OrganisationType) service.findById(OrganisationType.class, + OrganisationType.COURSE_TYPE)); + } + } else { + // default + org.setParentOrganisation(service.getRootOrganisation()); + org.setOrganisationType((OrganisationType) service.findById(OrganisationType.class, + OrganisationType.COURSE_TYPE)); } - - // flexible method to specify username and password - private ExtUserUseridMap createExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername, String password, String[] userData, boolean prefix) throws UserInfoFetchException { - User user = new User(); - user.setLogin( prefix ? buildName(serverMap.getPrefix(),extUsername) : extUsername ); - user.setPassword(password); - user.setTitle(userData[0]); - user.setFirstName(userData[1]); - user.setLastName(userData[2]); - user.setAddressLine1(userData[3]); - user.setCity(userData[4]); - user.setState(userData[5]); - user.setPostcode(userData[6]); - user.setCountry(userData[7]); - user.setDayPhone(userData[8]); - user.setMobilePhone(userData[9]); - user.setFax(userData[10]); - user.setEmail(userData[11]); - user.setAuthenticationMethod((AuthenticationMethod)service.findById(AuthenticationMethod.class, AuthenticationMethod.DB)); - user.setCreateDate(new Date()); - user.setDisabledFlag(false); - user.setLocale(LanguageUtil.getSupportedLocale(userData[13], userData[12])); - user.setFlashTheme(service.getDefaultFlashTheme()); - user.setHtmlTheme(service.getDefaultHtmlTheme()); - service.save(user); - ExtUserUseridMap map = new ExtUserUseridMap(); - map.setExtServerOrgMap(serverMap); - map.setExtUsername(extUsername); - map.setUser(user); - service.save(map); - return map; - } - - // compatibility method to support integrations - private ExtUserUseridMap createExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername) throws UserInfoFetchException { - String[] userData = getUserDataFromExtServer(serverMap, extUsername); - String password = HashUtil.sha1(RandomPasswordGenerator.nextPassword(10)); - return createExtUserUseridMap(serverMap, extUsername, password, userData, true); - } - - // compatibility method - public ExtUserUseridMap createImplicitExtUserUseridMap(ExtServerOrgMap serverMap, - String extUsername, - String firstName, - String lastName, - String language, - String country, - String email) throws UserInfoFetchException - { - String[] userData = { "",firstName,lastName,"","","","","","","","",email, country, language }; - String password = HashUtil.sha1(RandomPasswordGenerator.nextPassword(10)); - return createExtUserUseridMap(serverMap, extUsername, password, userData, true); - } - + return service.saveOrganisation(org, user.getUserId()); + } - 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 - 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); - log.debug(userDataCallbackUrl); - URL url = new URL(userDataCallbackUrl); - URLConnection conn = url.openConnection(); - if (!(conn instanceof HttpURLConnection)) - throw new UserInfoFetchException("Fail to fetch user data from external server:" - + serverMap.getServerid() + "- Invalid connection type"); + // flexible method to specify username and password + private ExtUserUseridMap createExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername, String password, + String[] userData, boolean prefix) throws UserInfoFetchException { + User user = new User(); + user.setLogin(prefix ? buildName(serverMap.getPrefix(), extUsername) : extUsername); + user.setPassword(password); + user.setTitle(userData[0]); + user.setFirstName(userData[1]); + user.setLastName(userData[2]); + user.setAddressLine1(userData[3]); + user.setCity(userData[4]); + user.setState(userData[5]); + user.setPostcode(userData[6]); + user.setCountry(userData[7]); + user.setDayPhone(userData[8]); + user.setMobilePhone(userData[9]); + user.setFax(userData[10]); + user.setEmail(userData[11]); + user.setAuthenticationMethod((AuthenticationMethod) service.findById(AuthenticationMethod.class, + AuthenticationMethod.DB)); + user.setCreateDate(new Date()); + user.setDisabledFlag(false); + user.setLocale(LanguageUtil.getSupportedLocale(userData[13], userData[12])); + user.setFlashTheme(service.getDefaultFlashTheme()); + user.setHtmlTheme(service.getDefaultHtmlTheme()); + service.save(user); + ExtUserUseridMap map = new ExtUserUseridMap(); + map.setExtServerOrgMap(serverMap); + map.setExtUsername(extUsername); + map.setUser(user); + service.save(map); + return map; + } - HttpURLConnection httpConn = (HttpURLConnection) conn; - if (httpConn.getResponseCode() != HttpURLConnection.HTTP_OK) - throw new UserInfoFetchException( - "Fail to fetch user data from external server:" - + serverMap.getServerid() - + " - Unexpected return HTTP Status:"+httpConn.getResponseCode()); + // compatibility method to support integrations + private ExtUserUseridMap createExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername) + throws UserInfoFetchException { + String[] userData = getUserDataFromExtServer(serverMap, extUsername); + String password = HashUtil.sha1(RandomPasswordGenerator.nextPassword(10)); + return createExtUserUseridMap(serverMap, extUsername, password, userData, true); + } - InputStream is = url.openConnection().getInputStream(); - BufferedReader isReader = new BufferedReader(new InputStreamReader(is)); - String str = isReader.readLine(); - if (str == null) { - throw new UserInfoFetchException("Fail to fetch user data from external server:" - + serverMap.getServerid() - + " - No data returned from external server"); - } + // compatibility method + public ExtUserUseridMap createImplicitExtUserUseridMap(ExtServerOrgMap serverMap, String extUsername, + String firstName, String lastName, String language, String country, String email) + throws UserInfoFetchException { + String[] userData = { "", firstName, lastName, "", "", "", "", "", "", "", "", email, country, language }; + String password = HashUtil.sha1(RandomPasswordGenerator.nextPassword(10)); + return createExtUserUseridMap(serverMap, extUsername, password, userData, true); + } - return CSVUtil.parse(str); + 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 + try { + String userDataCallbackUrl = serverMap.getUserinfoUrl(); + String timestamp = Long.toString(new Date().getTime()); + String hash = hash(serverMap, extUsername, timestamp); - } catch (MalformedURLException e) { - log.error(e); - throw new UserInfoFetchException(e); - } catch (IOException e) { - log.error(e); - throw new UserInfoFetchException(e); - } catch (ParseException e) { - log.error(e); - throw new UserInfoFetchException(e); - } - } + String encodedExtUsername = URLEncoder.encode(extUsername, "UTF8"); - public String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp) { - String serverId = serverMap.getServerid(); - String serverKey = serverMap.getServerkey(); - String plaintext = timestamp.trim().toLowerCase()+extUsername.trim().toLowerCase()+serverId.trim().toLowerCase()+serverKey.trim().toLowerCase(); - return HashUtil.sha1(plaintext); - } + //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(); + if (!(conn instanceof HttpURLConnection)) + throw new UserInfoFetchException("Fail to fetch user data from external server:" + + serverMap.getServerid() + "- Invalid connection type"); - private String buildName(String prefix, String name){ - return prefix+'_'+name; - } + HttpURLConnection httpConn = (HttpURLConnection) conn; + if (httpConn.getResponseCode() != HttpURLConnection.HTTP_OK) + throw new UserInfoFetchException("Fail to fetch user data from external server:" + + serverMap.getServerid() + " - Unexpected return HTTP Status:" + httpConn.getResponseCode()); - public List getAllExtServerOrgMaps() { - return service.findAll(ExtServerOrgMap.class); - } + InputStream is = url.openConnection().getInputStream(); + BufferedReader isReader = new BufferedReader(new InputStreamReader(is)); + String str = isReader.readLine(); + if (str == null) { + throw new UserInfoFetchException("Fail to fetch user data from external server:" + + serverMap.getServerid() + " - No data returned from external server"); + } - public void saveExtServerOrgMap(ExtServerOrgMap map) { - service.save(map); + return CSVUtil.parse(str); + + } catch (MalformedURLException e) { + log.error(e); + throw new UserInfoFetchException(e); + } catch (IOException e) { + log.error(e); + throw new UserInfoFetchException(e); + } catch (ParseException e) { + log.error(e); + throw new UserInfoFetchException(e); } + } - public ExtServerOrgMap getExtServerOrgMap(Integer sid) { - return (ExtServerOrgMap)service.findById(ExtServerOrgMap.class, sid); + public String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp) { + String serverId = serverMap.getServerid(); + String serverKey = serverMap.getServerkey(); + String plaintext = timestamp.trim().toLowerCase() + extUsername.trim().toLowerCase() + + serverId.trim().toLowerCase() + serverKey.trim().toLowerCase(); + return HashUtil.sha1(plaintext); + } + + private String buildName(String prefix, String name) { + return prefix + '_' + name; + } + + public List getAllExtServerOrgMaps() { + return service.findAll(ExtServerOrgMap.class); + } + + @SuppressWarnings("unchecked") + public List getMappedServers(String toolSig) { + + Map properties = new HashMap(); + properties.put("tool.toolSignature", toolSig); + return (List)service.findByProperties(ExtServerToolAdapterMap.class, properties); + } + + @SuppressWarnings("unchecked") + 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); + } else { + return null; } + } + + public void saveExtServerToolAdapterMap(ExtServerToolAdapterMap map){ + service.save(map); + } + + public void deleteExtServerToolAdapterMap(ExtServerToolAdapterMap map){ + service.delete(map); + } + + public void saveExtServerOrgMap(ExtServerOrgMap map) { + service.save(map); + } + + public ExtServerOrgMap getExtServerOrgMap(Integer sid) { + return (ExtServerOrgMap) service.findById(ExtServerOrgMap.class, sid); + } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java,v diff -u -r1.21 -r1.21.6.1 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java 16 Sep 2008 03:18:13 -0000 1.21 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java 3 Jun 2009 06:36:29 -0000 1.21.6.1 @@ -24,7 +24,9 @@ package org.lamsfoundation.lams.learningdesign.dto; import java.util.Date; +import java.util.Set; +import org.lamsfoundation.lams.integration.ExtServerToolAdapterMap; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.BranchingActivity; import org.lamsfoundation.lams.learningdesign.ConditionGateActivity; @@ -104,7 +106,7 @@ /** Used for I18N the URLS. Does not need to be sent to clients, so no getter exists. */ private String languageCode; - private Boolean toolAdapter; + private String[] mappedServers; public LibraryActivityDTO(Activity activity, String languageCode) { activityTypeID = activity.getActivityTypeId(); @@ -209,6 +211,17 @@ adminURL = tool.getAdminUrl(); supportsOutputs = tool.getSupportsOutputs(); extLmsId = tool.getExtLmsId(); + + Set mappedServersArray = tool.getMappedServers(); + if (mappedServersArray != null) { + this.mappedServers = new String[mappedServersArray.size()]; + int i = 0; + for (ExtServerToolAdapterMap map : mappedServersArray) { + mappedServers[i] = map.getExtServer().getServerid(); + i++; + } + } + helpURL = HelpUtil.constructToolURL(tool.getHelpUrl(), toolSignature, "", languageCode); } @@ -618,4 +631,14 @@ this.extLmsId = extLmsId; } + public String[] getMappedServers() { + return mappedServers; + } + + public void setMappedServers(String[] mappedServers) { + this.mappedServers = mappedServers; + } + + + } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java,v diff -u -r1.24 -r1.24.4.1 --- lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java 9 Dec 2008 05:38:10 -0000 1.24 +++ lams_common/src/java/org/lamsfoundation/lams/tool/Tool.java 3 Jun 2009 06:36:29 -0000 1.24.4.1 @@ -26,10 +26,12 @@ import java.io.Serializable; import java.util.Date; import java.util.Set; +import java.util.HashSet; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.integration.ExtServerToolAdapterMap; import org.lamsfoundation.lams.tool.dto.AuthoringToolDTO; /** @@ -109,6 +111,9 @@ /** persistent field */ private Set activities; + + /** persistent field */ + private Set mappedServers; /** persistent field */ private Integer groupingSupportTypeId; @@ -174,6 +179,7 @@ this.languageFile = languageFile; this.supportsOutputs = supportsOutputs; this.extLmsId = extLmsId; + this.mappedServers = new HashSet(); } /** default constructor */ @@ -198,6 +204,7 @@ this.createDateTime = createDateTime; this.toolIdentifier = toolIdentifier; this.toolVersion = toolVersion; + this.mappedServers = new HashSet(); } /** @@ -630,4 +637,11 @@ this.pedagogicalPlannerUrl = pedagogicalPlannerUrl; } + public Set getMappedServers() { + return mappedServers; + } + + public void setMappedServers(Set mappedServers) { + this.mappedServers = mappedServers; + } } Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolAdapterContentManager.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/ToolAdapterContentManager.java,v diff -u -r1.1 -r1.1.6.1 --- lams_common/src/java/org/lamsfoundation/lams/tool/ToolAdapterContentManager.java 15 Aug 2008 04:45:46 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolAdapterContentManager.java 3 Jun 2009 06:36:29 -0000 1.1.6.1 @@ -1,5 +1,6 @@ package org.lamsfoundation.lams.tool; +import org.lamsfoundation.lams.tool.exception.DataMissingException; import org.lamsfoundation.lams.tool.exception.ToolException; /** @@ -35,4 +36,5 @@ public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, String toVersion, String customCSV) throws ToolException; + }