Index: tool_adapters/moodle/lams_tool_mdlwiki/.classpath =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/.classpath (.../.classpath) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/.classpath (.../.classpath) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -4,12 +4,12 @@ - - - - - - + + + + + + Fisheye: Tag 106d3a2ed1f8ca0a9c507031af82a49f9ac02130 refers to a dead (removed) revision in file `tool_adapters/moodle/lams_tool_mdlwiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdwiki/model/MdlWikiConfigItem.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 106d3a2ed1f8ca0a9c507031af82a49f9ac02130 refers to a dead (removed) revision in file `tool_adapters/moodle/lams_tool_mdlwiki/conf/language/ApplicationResources.properties'. Fisheye: No comparison available. Pass `N' to diff? Index: tool_adapters/moodle/lams_tool_mdlwiki/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r6c1bbff163b6f4c23de0a5b530e435b87da4c227 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 6c1bbff163b6f4c23de0a5b530e435b87da4c227) +++ tool_adapters/moodle/lams_tool_mdlwiki/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -11,9 +11,7 @@ activity.description =Moodle Wiki Tool pageTitle.authoring =Moodle Wiki Authoring pageTitle.admin =Moodle Wiki Configuration -admin.extToolAdapterServletUrl =External tool adapter servlet URL -admin.extServerId =External server id mapping -admin.extServerUrl =External server url +admin.enableForIntegratedServers =Enable/disable servers for this Tool Adapter admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. admin.return =Return to maintain LAMS monitor.sessions =Sessions @@ -44,4 +42,5 @@ learner.number.of.entries =Moodle wiki's number of entries for an specific Wiki and user learner.number.of.pages =Moodle wiki's number of pages for an specific Wiki and user learner.number.of.entries.or.pages =Moodle wiki's number of entries or pages for an specific Wiki and user + #======= End labels ===== Index: tool_adapters/moodle/lams_tool_mdlwiki/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r6c1bbff163b6f4c23de0a5b530e435b87da4c227 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 6c1bbff163b6f4c23de0a5b530e435b87da4c227) +++ tool_adapters/moodle/lams_tool_mdlwiki/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -11,9 +11,7 @@ activity.description =Moodle Wiki Tool pageTitle.authoring =Moodle Wiki Authoring pageTitle.admin =Moodle Wiki Configuration -admin.extToolAdapterServletUrl =External tool adapter servlet URL -admin.extServerId =External server id mapping -admin.extServerUrl =External server url +admin.enableForIntegratedServers =Enable/disable servers for this Tool Adapter admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. admin.return =Return to maintain LAMS monitor.sessions =Sessions Index: tool_adapters/moodle/lams_tool_mdlwiki/conf/language/rams/ApplicationResources.properties =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/conf/language/rams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/conf/language/rams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -11,9 +11,7 @@ activity.description =Moodle Wiki Tool pageTitle.authoring =Moodle Wiki Authoring pageTitle.admin =Moodle Wiki Configuration -admin.extToolAdapterServletUrl =External tool adapter servlet URL -admin.extServerId =External server id mapping -admin.extServerUrl =External server url +admin.enableForIntegratedServers =Enable/disable servers for this Tool Adapter admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. admin.return =Return to maintain LAMS monitor.sessions =Sessions @@ -41,5 +39,8 @@ label.save =Save label.cancel =Cancel error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +learner.number.of.entries =Moodle wiki's number of entries for an specific Wiki and user +learner.number.of.pages =Moodle wiki's number of pages for an specific Wiki and user +learner.number.of.entries.or.pages =Moodle wiki's number of entries or pages for an specific Wiki and user #======= End labels ===== Index: tool_adapters/moodle/lams_tool_mdlwiki/conf/language/rams/ApplicationResources_en_AU.properties =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/conf/language/rams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/conf/language/rams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -11,9 +11,7 @@ activity.description =Moodle Wiki Tool pageTitle.authoring =Moodle Wiki Authoring pageTitle.admin =Moodle Wiki Configuration -admin.extToolAdapterServletUrl =External tool adapter servlet URL -admin.extServerId =External server id mapping -admin.extServerUrl =External server url +admin.enableForIntegratedServers =Enable/disable servers for this Tool Adapter admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. admin.return =Return to maintain LAMS monitor.sessions =Sessions @@ -41,5 +39,8 @@ label.save =Save label.cancel =Cancel error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +learner.number.of.entries =Moodle wiki's number of entries for an specific Wiki and user +learner.number.of.pages =Moodle wiki's number of pages for an specific Wiki and user +learner.number.of.entries.or.pages =Moodle wiki's number of entries or pages for an specific Wiki and user #======= End labels ===== Index: tool_adapters/moodle/lams_tool_mdlwiki/db/sql/create_lams_tool_mdlWiki.sql =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/db/sql/create_lams_tool_mdlWiki.sql (.../create_lams_tool_mdlWiki.sql) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/db/sql/create_lams_tool_mdlWiki.sql (.../create_lams_tool_mdlWiki.sql) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -1,35 +1,15 @@ -- CVS ID: $Id$ SET FOREIGN_KEY_CHECKS=0; -drop table if exists tl_mdwiki10_configuration; drop table if exists tl_mdwiki10_mdlwiki; drop table if exists tl_mdwiki10_session; drop table if exists tl_mdwiki10_user; -create table tl_mdwiki10_configuration (uid bigint not null auto_increment, config_key varchar(30) unique, config_value varchar(255), primary key (uid))TYPE=InnoDB; -create table tl_mdwiki10_mdlwiki (uid bigint not null auto_increment, create_date datetime, update_date datetime, define_later bit, content_in_use bit, run_offline bit, tool_content_id bigint, ext_tool_content_id bigint, ext_user_name varchar(255), ext_course_id varchar(255), ext_section varchar(255), primary key (uid))TYPE=InnoDB; +create table tl_mdwiki10_mdlwiki (uid bigint not null auto_increment, create_date datetime, update_date datetime, define_later bit, content_in_use bit, run_offline bit, tool_content_id bigint, ext_tool_content_id bigint, ext_user_name varchar(255), ext_lms_id varchar(255), ext_course_id varchar(255), ext_section varchar(255), primary key (uid))TYPE=InnoDB; create table tl_mdwiki10_session (uid bigint not null auto_increment, session_end_date datetime, session_start_date datetime, status integer, session_id bigint, ext_session_id bigint, session_name varchar(250), mdlWiki_uid bigint, primary key (uid))TYPE=InnoDB; create table tl_mdwiki10_user (uid bigint not null auto_increment, user_id bigint, last_name varchar(255), login_name varchar(255), first_name varchar(255), finishedActivity bit, mdlwiki_session_uid bigint, entry_uid bigint, primary key (uid))TYPE=InnoDB; alter table tl_mdwiki10_session add index FKmdwiki10_session (mdlWiki_uid), add constraint FKmdwiki10_session foreign key (mdlWiki_uid) references tl_mdwiki10_mdlwiki (uid); alter table tl_mdwiki10_user add index FKmdwiki10_user (mdlwiki_session_uid), add constraint FKmdwiki10_user foreign key (mdlwiki_session_uid) references tl_mdwiki10_session (uid); -INSERT INTO tl_mdwiki10_configuration ( - config_key, - config_value -) -VALUES( - "toolAdapterServlet", - "http://localhost:8000/lams2conf/tooladapter_mdwiki10" -); - -INSERT INTO tl_mdwiki10_configuration ( - config_key, - config_value -) -VALUES( - "extServerUrl", - "http://localhost/moodle19/" -); - INSERT INTO tl_mdwiki10_mdlwiki ( tool_content_id, ext_tool_content_id, Fisheye: Tag 106d3a2ed1f8ca0a9c507031af82a49f9ac02130 refers to a dead (removed) revision in file `tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/dao/IMdlWikiConfigItemDAO.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 106d3a2ed1f8ca0a9c507031af82a49f9ac02130 refers to a dead (removed) revision in file `tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/dao/hibernate/MdlWikiConfigItemDAO.java'. Fisheye: No comparison available. Pass `N' to diff? Index: tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/mdlWikiApplicationContext.xml =================================================================== diff -u -rb6544cfe682554653a9590c0bf74ed52186d71ff -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/mdlWikiApplicationContext.xml (.../mdlWikiApplicationContext.xml) (revision b6544cfe682554653a9590c0bf74ed52186d71ff) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/mdlWikiApplicationContext.xml (.../mdlWikiApplicationContext.xml) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -19,10 +19,9 @@ - - + @@ -56,10 +55,6 @@ - - - - Index: tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/model/MdlWiki.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/model/MdlWiki.java (.../MdlWiki.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/model/MdlWiki.java (.../MdlWiki.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -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; @@ -228,10 +230,18 @@ this.extSection = extSection; } - public static long getSerialVersionUID() { - return serialVersionUID; + /** + * @hibernate.property column="ext_lms_id" length="255" + * @return + */ + public String getExtLmsId() { + return extLmsId; } + public void setExtLmsId(String extLmsId) { + this.extLmsId = extLmsId; + } + /** * @hibernate.set lazy="true" inverse="true" cascade="none" * @hibernate.collection-key column="mdlwiki_uid" @@ -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 106d3a2ed1f8ca0a9c507031af82a49f9ac02130 refers to a dead (removed) revision in file `tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/model/MdlWikiConfigItem.java'. Fisheye: No comparison available. Pass `N' to diff? Index: tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/service/IMdlWikiService.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/service/IMdlWikiService.java (.../IMdlWikiService.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/service/IMdlWikiService.java (.../IMdlWikiService.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -25,10 +25,11 @@ package org.lamsfoundation.lams.tool.mdwiki.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.mdwiki.model.MdlWiki; -import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiConfigItem; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiSession; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiUser; import org.lamsfoundation.lams.tool.mdwiki.util.MdlWikiException; @@ -96,22 +97,7 @@ public void saveOrUpdateMdlWikiSession(MdlWikiSession mdlWikiSession); /** - * Get the mdlWiki config item by key * - * @param key - * @return - */ - public MdlWikiConfigItem getConfigItem(String key); - - /** - * Save a mdl configItem - * - * @param item - */ - public void saveOrUpdateMdlWikiConfigItem(MdlWikiConfigItem item); - - /** - * * @param userId * @param toolSessionId * @return @@ -126,13 +112,6 @@ public MdlWikiUser 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 - * mdlWiki, this constructs the following: - * { ["un", username], ["cs", course], ["ts", timestamp], ["hs", hash], } + * mdlWiki, this constructs the following: { ["un", username], ["cs", + * course], ["ts", timestamp], ["hs", hash], } * * @param mdlWiki * @return @@ -197,12 +176,41 @@ /** * 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 mdlWiki, this constructs the following: - * { ["un", username], ["cs", course], ["ts", timestamp], ["hs", hash], } + * instance in mdlWiki, 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_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/service/MdlWikiService.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/service/MdlWikiService.java (.../MdlWikiService.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/service/MdlWikiService.java (.../MdlWikiService.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -36,8 +36,10 @@ 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 org.apache.log4j.Logger; @@ -51,14 +53,15 @@ 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; @@ -68,12 +71,10 @@ 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.mdwiki.dao.IMdlWikiConfigItemDAO; import org.lamsfoundation.lams.tool.mdwiki.dao.IMdlWikiDAO; import org.lamsfoundation.lams.tool.mdwiki.dao.IMdlWikiSessionDAO; import org.lamsfoundation.lams.tool.mdwiki.dao.IMdlWikiUserDAO; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWiki; -import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiConfigItem; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiSession; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiUser; import org.lamsfoundation.lams.tool.mdwiki.util.MdlWikiConstants; @@ -85,8 +86,6 @@ 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 IMdlWikiService interface. @@ -103,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"; @@ -114,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 IMdlWikiDAO mdlWikiDAO = null; @@ -123,8 +123,6 @@ private IMdlWikiUserDAO mdlWikiUserDAO = null; - private IMdlWikiConfigItemDAO mdlWikiConfigItemDAO = null; - private ILearnerService learnerService; private ILamsToolService toolService; @@ -184,8 +182,7 @@ */ public Long copyExternalToolContent(HashMap params) throws ToolException, Exception { - String cloneServletUrl = mdlWikiConfigItemDAO.getConfigItemByKey(MdlWikiConfigItem.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); @@ -207,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); @@ -223,11 +221,12 @@ params.put(EXT_SERVER_PARAM_USER, mdlwiki.getExtUsername()); params.put(EXT_SERVER_PARAM_COURSE, mdlwiki.getExtCourseId()); params.put(EXT_SERVER_PARAM_SECTION, mdlwiki.getExtSection()); + params.put(CUSTOM_CSV_MAP_PARAM_EXT_LMS_ID, mdlwiki.getExtLmsId()); String timestamp = Long.toString(new Date().getTime()); params.put(EXT_SERVER_PARAM_TIMESTAMP, timestamp); - ExtServerOrgMap serverMap = this.getExtServerOrgMap(); + ExtServerOrgMap serverMap = getExtServerOrgMap(mdlwiki.getExtLmsId()); String hash = hash(serverMap, mdlwiki.getExtUsername(), timestamp); params.put(EXT_SERVER_PARAM_HASH, hash); @@ -244,6 +243,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; @@ -253,13 +253,12 @@ public int getExternalToolOutputInt(String outputName, MdlWiki mdlWiki, Long userId, String extToolContentId, Long toolSessionId) { MdlWikiUser user = this.getUserByUserIdAndSessionId(userId, toolSessionId); - ExtServerOrgMap extServerMap = getExtServerOrgMap(); + ExtServerOrgMap extServerMap = getExtServerOrgMap(mdlWiki.getExtLmsId()); String extUserName = user.getLoginName().substring(extServerMap.getPrefix().length() + 1); try { - String outputServletUrl = mdlWikiConfigItemDAO.getConfigItemByKey( - MdlWikiConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); + String outputServletUrl = getExtToolAdapterServletUrl(mdlWiki.getExtLmsId()); // setting the mdlWiki username so the params are set up correctly mdlWiki.setExtUsername(extUserName); @@ -330,6 +329,27 @@ return mdlWikiOutputFactory.getToolOutputDefinitions(mdwiki); } + 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 += MdlWikiConstants.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(); @@ -381,25 +401,6 @@ fromContent = getDefaultContent(); } MdlWiki toContent = MdlWiki.newInstance(fromContent, toContentId, mdlWikiToolContentHandler); - - // 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); - }*/ - mdlWikiDAO.saveOrUpdate(toContent); } @@ -442,7 +443,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"); @@ -530,36 +531,38 @@ String toolPath = FileUtil.getFullPath(rootPath, toolContentId.toString()); FileUtil.createDirectory(toolPath); - String exportServletUrl = mdlWikiConfigItemDAO.getConfigItemByKey( - MdlWikiConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); + String exportServletUrl = getExtToolAdapterServletUrl(mdlWiki.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 + mdlWiki.setExtCourseId("extCourse"); + mdlWiki.setExtSection("0"); + mdlWiki.setExtUsername("authUser"); + HashMap params = this.getRequiredExtServletParams(mdlWiki); + params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_EXPORT); + params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, mdlWiki.getExtToolContentId().toString()); - mdlWiki.setExtCourseId("extCourse"); - mdlWiki.setExtSection("0"); - mdlWiki.setExtUsername("authUser"); - HashMap params = this.getRequiredExtServletParams(mdlWiki); - params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_EXPORT); - params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, mdlWiki.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 mdlWiki 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, mdlWiki, mdlWikiToolContentHandler, rootPath); } - logger.debug("Path to mdlWiki 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); } @@ -575,13 +578,6 @@ } - public ExtServerOrgMap getExtServerOrgMap() { - if (integrationService == null) - integrationService = getIntegrationService(); - IToolVO tool = toolService.getToolBySignature(MdlWikiConstants.TOOL_SIGNATURE); - return integrationService.getExtServerOrgMap(tool.getExtLmsId()); - } - /** * Import the XML fragment for the tool's content, along with any files * needed for the content. @@ -599,10 +595,6 @@ if (extExportFile.exists()) { try { - - String importServletUrl = mdlWikiConfigItemDAO.getConfigItemByKey( - MdlWikiConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); - if (customCSV == null) { logger.error("Could not retrieve customCSV required for importing tool adapter tool. CustomCSV: " + customCSV); @@ -611,6 +603,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); @@ -666,17 +661,13 @@ } public MdlWiki getDefaultContent() { - /* - Long defaultContentID = getDefaultContentIdBySignature(MdlWikiConstants.TOOL_SIGNATURE); - MdlWiki defaultContent = getMdlWikiByContentId(defaultContentID); - if (defaultContent == null) { - String error = "Could not retrieve default content record for this tool"; - logger.error(error); - throw new MdlWikiException(error); - } + MdlWiki defaultContent = new MdlWiki(); return defaultContent; - */ + } + + public MdlWiki getDefaultContent(String extLmsId) { MdlWiki defaultContent = new MdlWiki(); + defaultContent.setExtLmsId(extLmsId); return defaultContent; } @@ -696,6 +687,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(MdlWikiConstants.TOOL_SIGNATURE); + } + + public void saveServerMappings(String[] mappedServers) { + Tool tool = toolService.getPersistToolBySignature(MdlWikiConstants.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(), MdlWikiConstants.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 MdlWiki getMdlWikiByContentId(Long toolContentID) { MdlWiki mdlWiki = (MdlWiki) mdlWikiDAO.getByContentId(toolContentID); if (mdlWiki == null) { @@ -704,14 +746,6 @@ return mdlWiki; } - public MdlWikiConfigItem getConfigItem(String key) { - return mdlWikiConfigItemDAO.getConfigItemByKey(key); - } - - public void saveOrUpdateMdlWikiConfigItem(MdlWikiConfigItem item) { - mdlWikiConfigItemDAO.saveOrUpdate(item); - } - public MdlWikiSession getSessionBySessionId(Long toolSessionId) { MdlWikiSession mdlWikiSession = mdlWikiSessionDAO.getBySessionId(toolSessionId); if (mdlWikiSession == null) { @@ -841,14 +875,6 @@ this.mdlWikiDAO = mdlWikiDAO; } - public IMdlWikiConfigItemDAO getMdlWikiConfigItemDAO() { - return mdlWikiConfigItemDAO; - } - - public void setMdlWikiConfigItemDAO(IMdlWikiConfigItemDAO mdlWikiConfigItemDAO) { - this.mdlWikiConfigItemDAO = mdlWikiConfigItemDAO; - } - public IToolContentHandler getMdlWikiToolContentHandler() { return mdlWikiToolContentHandler; } @@ -916,34 +942,8 @@ this.mdlWikiOutputFactory = mdlWikiOutputFactory; } - /** - * 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/mdwiki/mdlWikiApplicationContext.xml", - "/org/lamsfoundation/lams/commonContext.xml" }; - - ApplicationContext context = new ClassPathXmlApplicationContext(contexts); - - if (context == null) - throw new MdlWikiException( - "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_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/util/MdlWikiConstants.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/util/MdlWikiConstants.java (.../MdlWikiConstants.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/util/MdlWikiConstants.java (.../MdlWikiConstants.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -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_wiki.php"; } Index: tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/util/WebUtility.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/util/WebUtility.java (.../WebUtility.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/util/WebUtility.java (.../WebUtility.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -35,10 +35,10 @@ import java.net.URLConnection; import java.util.HashMap; import java.util.Map.Entry; -import java.util.Set; import org.apache.log4j.Logger; import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.mdwiki.service.MdlWikiService; public class WebUtility { static Logger logger = Logger.getLogger(WebUtility.class.getName()); @@ -149,7 +149,9 @@ urlStr += "?"; for (Entry entry : params.entrySet()) { - urlStr += "&" + entry.getKey() + "=" + entry.getValue(); + if (!entry.getKey().equals(MdlWikiService.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_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/AdminAction.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/AdminAction.java (.../AdminAction.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/AdminAction.java (.../AdminAction.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -23,17 +23,19 @@ /* $$Id$$ */ package org.lamsfoundation.lams.tool.mdwiki.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.mdwiki.model.MdlWikiConfigItem; +import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.ExtServerToolAdapterMap; import org.lamsfoundation.lams.tool.mdwiki.service.IMdlWikiService; import org.lamsfoundation.lams.tool.mdwiki.service.MdlWikiServiceProxy; -import org.lamsfoundation.lams.tool.mdwiki.util.MdlWikiConstants; import org.lamsfoundation.lams.tool.mdwiki.web.forms.AdminForm; import org.lamsfoundation.lams.tool.service.ILamsToolService; import org.lamsfoundation.lams.web.action.LamsDispatchAction; @@ -60,56 +62,54 @@ AdminForm adminForm = (AdminForm) form; - if (toolService == null) { - toolService = mdlWikiService.getToolService(); - } - Tool tool = toolService.getPersistToolBySignature(MdlWikiConstants.TOOL_SIGNATURE); + // Get a list of possible external servers to enable this tool for + List serverList = mdlWikiService.getExtServerList(); + List mappedServers = mdlWikiService.getMappedServers(); + populateServerList(adminForm, serverList, mappedServers); - MdlWikiConfigItem toolAdpServlet = mdlWikiService.getConfigItem(MdlWikiConfigItem.KEY_EXTERNAL_TOOL_SERVLET); - if (toolAdpServlet != null) - adminForm.setToolAdapterServlet(toolAdpServlet.getConfigValue()); - - MdlWikiConfigItem extServerConfig = mdlWikiService.getConfigItem(MdlWikiConfigItem.KEY_EXTERNAL_SERVER_URL); - if (extServerConfig != null) - adminForm.setExtServerUrl(extServerConfig.getConfigValue()); - - if (tool != null && tool.getExtLmsId() != null) - adminForm.setServerIdMapping(tool.getExtLmsId()); - request.setAttribute("error", false); return mapping.findForward("config"); } + public void populateServerList(AdminForm adminForm, List serverList, + List mappedServers) { + ArrayList mappableServers = new ArrayList(); + ArrayList mappedServersInForm = new ArrayList(); + + 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 mdlWikiService - if (mdlWikiService == null) { - mdlWikiService = MdlWikiServiceProxy.getMdlWikiService(this.getServlet().getServletContext()); - } + // set up mdlWikiService + if (mdlWikiService == null) { + mdlWikiService = MdlWikiServiceProxy.getMdlWikiService(this.getServlet().getServletContext()); + } - MdlWikiConfigItem servletConfig = mdlWikiService.getConfigItem(MdlWikiConfigItem.KEY_EXTERNAL_TOOL_SERVLET); - servletConfig.setConfigValue(adminForm.getToolAdapterServlet()); - mdlWikiService.saveOrUpdateMdlWikiConfigItem(servletConfig); + // Save all the mappings + mdlWikiService.saveServerMappings(adminForm.getMappedServers()); - MdlWikiConfigItem extServerConfig = mdlWikiService.getConfigItem(MdlWikiConfigItem.KEY_EXTERNAL_SERVER_URL); - extServerConfig.setConfigValue(adminForm.getExtServerUrl()); - mdlWikiService.saveOrUpdateMdlWikiConfigItem(extServerConfig); + // Get a list of possible external servers to enable this tool for + List serverList = mdlWikiService.getExtServerList(); + List mappedServers = mdlWikiService.getMappedServers(); + populateServerList(adminForm, serverList, mappedServers); - if (toolService == null) { - toolService = mdlWikiService.getToolService(); - } - Tool tool = toolService.getPersistToolBySignature(MdlWikiConstants.TOOL_SIGNATURE); - tool.setExtLmsId(adminForm.getServerIdMapping()); - toolService.saveOrUpdateTool(tool); - return mapping.findForward("config"); - } else { - request.setAttribute("error", true); - return mapping.findForward("config"); - } + return mapping.findForward("config"); + } } Index: tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/AuthoringAction.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/AuthoringAction.java (.../AuthoringAction.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/AuthoringAction.java (.../AuthoringAction.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -38,7 +38,6 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.exception.ToolException; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWiki; -import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiConfigItem; import org.lamsfoundation.lams.tool.mdwiki.service.IMdlWikiService; import org.lamsfoundation.lams.tool.mdwiki.service.MdlWikiServiceProxy; import org.lamsfoundation.lams.tool.mdwiki.util.MdlWikiConstants; @@ -107,19 +106,21 @@ String userFromCSV = null; String courseFromCSV = null; String sectionFromCSV = null; + String extLmsIdFromCSV = null; if (customCSV == null && mdlWiki == null) { logger.error("CustomCSV required if mdlWiki is null"); throw new ToolException("CustomCSV required if mdlWiki is null"); } else if (customCSV != null) { String splitCSV[] = customCSV.split(","); - if (splitCSV.length != 3) { + if (splitCSV.length != 4) { logger.error("mdlWiki tool customCSV not in required (user,course,courseURL) form: " + customCSV); throw new ToolException("mdlWiki tool cusomCSV not in required (user,course,courseURL) form: " + customCSV); } else { userFromCSV = splitCSV[0]; courseFromCSV = splitCSV[1]; sectionFromCSV = splitCSV[2]; + extLmsIdFromCSV = splitCSV[3]; } } @@ -128,9 +129,18 @@ mdlWiki.setExtUsername(userFromCSV); mdlWiki.setExtCourseId(courseFromCSV); mdlWiki.setExtSection(sectionFromCSV); + mdlWiki.setExtLmsId(extLmsIdFromCSV); mdlWiki.setCreateDate(new Date()); } + if (mdlWiki.getExtLmsId() == null) { + mdlWiki.setExtUsername(userFromCSV); + mdlWiki.setExtCourseId(courseFromCSV); + mdlWiki.setExtSection(sectionFromCSV); + mdlWiki.setExtLmsId(extLmsIdFromCSV); + mdlWiki.setCreateDate(new Date()); + } + if (mode != null && mode.isTeacher()) { // Set the defineLater flag so that learners cannot use content // while we @@ -143,26 +153,20 @@ try { // If the mdlWiki has a saved course url, use it, otherwise use the one giving in the request in customCSV - //String courseUrlToBeUsed = (mdlWiki.getExtCourseUrl() != null) ? mdlWiki.getExtCourseUrl() : courseUrlFromCSV; + String responseUrl = mdlWikiService.getExtServerUrl(mdlWiki.getExtLmsId()); - String responseUrl = mdlWikiService.getConfigItem(MdlWikiConfigItem.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"); - - + returnUpdateUrl = URLEncoder.encode(returnUpdateUrl, "UTF8"); - + responseUrl += "lamsUpdateURL=" + returnUpdateUrl; - + String encodedMoodleRelativePath = URLEncoder.encode(MOODLE_EDIT_URL, "UTF8"); - - responseUrl += "&dest=" + encodedMoodleRelativePath ; + responseUrl += "&dest=" + encodedMoodleRelativePath; + if (mdlWiki.getExtSection() != null) { responseUrl += "§ion=" + mdlWiki.getExtSection(); } else { Index: tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/LearningAction.java =================================================================== diff -u -r026cccc61c98251c43a22ee95ce669fdabf5a662 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/LearningAction.java (.../LearningAction.java) (revision 026cccc61c98251c43a22ee95ce669fdabf5a662) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/LearningAction.java (.../LearningAction.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -34,19 +34,18 @@ import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; 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.mdwiki.dto.MdlWikiDTO; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWiki; -import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiConfigItem; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiSession; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiUser; -import org.lamsfoundation.lams.tool.mdwiki.service.MdlWikiServiceProxy; import org.lamsfoundation.lams.tool.mdwiki.service.IMdlWikiService; +import org.lamsfoundation.lams.tool.mdwiki.service.MdlWikiServiceProxy; import org.lamsfoundation.lams.tool.mdwiki.util.MdlWikiConstants; import org.lamsfoundation.lams.tool.mdwiki.util.MdlWikiException; -import org.lamsfoundation.lams.tool.exception.DataMissingException; -import org.lamsfoundation.lams.tool.exception.ToolException; -import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.ConfigurationKeys; @@ -126,8 +125,7 @@ if (mdlWiki.getExtToolContentId() != null) { try { - String responseUrl = mdlWikiService.getConfigItem(MdlWikiConfigItem.KEY_EXTERNAL_SERVER_URL) - .getConfigValue(); + String responseUrl = mdlWikiService.getExtServerUrl(mdlWiki.getExtLmsId()); if(mode.equals(ToolAccessMode.TEACHER)) { Index: tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/MonitoringAction.java =================================================================== diff -u -r61fb4f65da7e857d5e011e37fbabad6620cca7b9 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 61fb4f65da7e857d5e011e37fbabad6620cca7b9) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/actions/MonitoringAction.java (.../MonitoringAction.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -37,7 +37,6 @@ import org.lamsfoundation.lams.tool.mdwiki.dto.MdlWikiDTO; import org.lamsfoundation.lams.tool.mdwiki.dto.MdlWikiSessionDTO; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWiki; -import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiConfigItem; import org.lamsfoundation.lams.tool.mdwiki.service.IMdlWikiService; import org.lamsfoundation.lams.tool.mdwiki.service.MdlWikiServiceProxy; import org.lamsfoundation.lams.tool.mdwiki.util.MdlWikiConstants; @@ -90,8 +89,7 @@ for (MdlWikiSessionDTO sessionDTO : mdlWikiDT0.getSessionDTOs()) { try { - String responseUrl = mdlWikiService.getConfigItem(MdlWikiConfigItem.KEY_EXTERNAL_SERVER_URL) - .getConfigValue(); + String responseUrl = mdlWikiService.getExtServerUrl(mdlWiki.getExtLmsId()); responseUrl += RELATIVE_MONITOR_URL; String returnUrl = TOOL_APP_URL + "learning.do?" + AttributeNames.PARAM_TOOL_SESSION_ID + "=" Index: tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/forms/AdminForm.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/forms/AdminForm.java (.../AdminForm.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/forms/AdminForm.java (.../AdminForm.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -14,42 +14,29 @@ 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) { ActionErrors ac = new ActionErrors(); ac.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("this is an error")); 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_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/servlets/ExportServlet.java =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/servlets/ExportServlet.java (.../ExportServlet.java) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/src/java/org/lamsfoundation/lams/tool/mdwiki/web/servlets/ExportServlet.java (.../ExportServlet.java) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -41,10 +41,9 @@ import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.mdwiki.dto.MdlWikiDTO; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWiki; -import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiConfigItem; import org.lamsfoundation.lams.tool.mdwiki.model.MdlWikiSession; -import org.lamsfoundation.lams.tool.mdwiki.service.MdlWikiServiceProxy; import org.lamsfoundation.lams.tool.mdwiki.service.IMdlWikiService; +import org.lamsfoundation.lams.tool.mdwiki.service.MdlWikiServiceProxy; import org.lamsfoundation.lams.tool.mdwiki.util.MdlWikiException; import org.lamsfoundation.lams.tool.mdwiki.util.WebUtility; import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; @@ -166,9 +165,7 @@ private void exportFileFromExternalServer(HttpServletRequest request, HttpServletResponse response, Long extToolSessionId, MdlWiki mdlWiki, String fullPath) throws Exception { - String exportPortFolioServletUrl = mdlWikiService.getConfigItem(MdlWikiConfigItem.KEY_EXTERNAL_TOOL_SERVLET) - .getConfigValue(); - + String exportPortFolioServletUrl = mdlWikiService.getExtServerUrl(mdlWiki.getExtLmsId()); String extUsername = "user"; // setting user to arbitrary values since they are only used to construct the hash HashMap params = mdlWikiService.getRequiredExtServletParams(mdlWiki); Index: tool_adapters/moodle/lams_tool_mdlwiki/web/pages/admin/config.jsp =================================================================== diff -u -r086d0769471647a32761d96d5fb630b4787880d1 -r106d3a2ed1f8ca0a9c507031af82a49f9ac02130 --- tool_adapters/moodle/lams_tool_mdlwiki/web/pages/admin/config.jsp (.../config.jsp) (revision 086d0769471647a32761d96d5fb630b4787880d1) +++ tool_adapters/moodle/lams_tool_mdlwiki/web/pages/admin/config.jsp (.../config.jsp) (revision 106d3a2ed1f8ca0a9c507031af82a49f9ac02130) @@ -30,21 +30,22 @@ - - - - - - - - - - - - - -
+

+ +

+ + + + + + +
+ +
+ +
+