Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/ScriptRunner.java =================================================================== diff -u -rb9682e51114d632fd77ff0feabf3f2de634744bd -rda85d240e28623bc3db1763c40caa72729863285 --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/ScriptRunner.java (.../ScriptRunner.java) (revision b9682e51114d632fd77ff0feabf3f2de634744bd) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/ScriptRunner.java (.../ScriptRunner.java) (revision da85d240e28623bc3db1763c40caa72729863285) @@ -99,9 +99,11 @@ stmt = conn.createStatement(); for (int i = 0, length = statements.length; i < length; i++) { - stmt.addBatch(statements[i]); + stmt.addBatch(statements[i]); } + stmt.executeBatch(); + } catch (SQLException sqlex) { Index: lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateApplicationXmlTask.java =================================================================== diff -u -r60f8ad90ac03834ede1c4a45585f7f117d5844de -rda85d240e28623bc3db1763c40caa72729863285 --- lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateApplicationXmlTask.java (.../UpdateApplicationXmlTask.java) (revision 60f8ad90ac03834ede1c4a45585f7f117d5844de) +++ lams_tool_deploy/src/java/org/lamsfoundation/lams/tool/deploy/UpdateApplicationXmlTask.java (.../UpdateApplicationXmlTask.java) (revision da85d240e28623bc3db1763c40caa72729863285) @@ -93,10 +93,8 @@ * Sets the context root of the web app to be added. * @param contextroot New value of property contextroot. */ - public void setContextRoot(final java.lang.String contextRoot) - - { - + public void setContextRoot(final java.lang.String contextRoot) + { this.contextRoot = contextRoot; } Index: lams_tool_deploy/test/file/sql/drop_tool_tables.sql =================================================================== diff -u --- lams_tool_deploy/test/file/sql/drop_tool_tables.sql (revision 0) +++ lams_tool_deploy/test/file/sql/drop_tool_tables.sql (revision da85d240e28623bc3db1763c40caa72729863285) @@ -0,0 +1,3 @@ +DROP TABLE IF EXISTS tool_imscp_content; +DROP TABLE IF EXISTS tool_imscp_userprogress; +DROP TABLE IF EXISTS tool_imscp_package; \ No newline at end of file Index: lams_tool_deploy/test/file/sql/insert_library_test_data.sql =================================================================== diff -u --- lams_tool_deploy/test/file/sql/insert_library_test_data.sql (revision 0) +++ lams_tool_deploy/test/file/sql/insert_library_test_data.sql (revision da85d240e28623bc3db1763c40caa72729863285) @@ -0,0 +1,455 @@ +# Inserts the tools nb, qa, sbmt. +# Used to test the library deploy, +# tools must exist before library deploy is to be executed + + +######## NB Tool ############## + + +INSERT INTO lams_tool +( +tool_id, +tool_signature, +service_name, +tool_display_name, +description, +tool_identifier, +tool_version, +learning_library_id, +default_tool_content_id, +valid_flag, +grouping_support_type_id, +supports_define_later_flag, +supports_run_offline_flag, +supports_moderation_flag, +supports_contribute_flag, +learner_url, +author_url, +define_later_url, +export_portfolio_url, +monitor_url, +contribute_url, +moderation_url, +create_date_time +) +VALUES +( +1, +'lanb11', +'nbService', +'Noticeboard', +'Displays a Noticeboard', +'nb', +'1.1', +NULL, +NULL, +0, +1, +1, +1, +0, +0, +'tool/lanb11/starter/learner.do', +'tool/lanb11/authoring.do', +'tool/lanb11/starter/authoring.do?defineLater=true', +'tool/lanb11/exportPortfolio.do', +'tool/lanb11/starter/monitor.do', +NULL, +NULL, +NOW() +); + +INSERT INTO lams_learning_library +( +learning_library_id, +description, +title, +valid_flag, +create_date_time +) +VALUES +( +1, +'Displays a Noticeboard', +'Noticeboard', +0, +NOW() +); + +INSERT INTO lams_learning_activity +( +activity_ui_id +, description +, title +, help_text +, xcoord +, ycoord +, parent_activity_id +, parent_ui_id +, learning_activity_type_id +, grouping_support_type_id +, apply_grouping_flag +, grouping_id +, grouping_ui_id +, order_id +, define_later_flag +, learning_design_id +, learning_library_id +, create_date_time +, run_offline_flag +, max_number_of_options +, min_number_of_options +, options_instructions +, tool_id +, tool_content_id +, activity_category_id +, gate_activity_level_id +, gate_open_flag +, gate_start_time_offset +, gate_end_time_offset +, gate_start_date_time +, gate_end_date_time +, library_activity_ui_image +, create_grouping_id +, create_grouping_ui_id +, library_activity_id +) +VALUES +( +NULL +, 'Displays a Noticeboard' +, 'Noticeboard' +, 'Put some help text here.' +, NULL +, NULL +, NULL +, NULL +, 1 +, 1 +, 0 +, NULL +, NULL +, NULL +, 0 +, NULL +, 1 +, NOW() +, 0 +, NULL +, NULL +, NULL +, 1 +, NULL +, 4 +, NULL +, NULL +, NULL +, NULL +, NULL +, NULL +, 'tool/lanb11/images/icon_noticeboard.swf' +, NULL +, NULL +, NULL +); + +######## Submit Tool ############## + +INSERT INTO lams_tool +( +tool_id, +tool_signature, +service_name, +tool_display_name, +description, +tool_identifier, +tool_version, +learning_library_id, +default_tool_content_id, +valid_flag, +grouping_support_type_id, +supports_define_later_flag, +supports_run_offline_flag, +supports_moderation_flag, +supports_contribute_flag, +learner_url, +author_url, +define_later_url, +export_portfolio_url, +monitor_url, +contribute_url, +moderation_url, +create_date_time +) +VALUES +( +2, +'lasbmt11', +'submitFilesService', +'Submit File', +'Submit File Tool Description', +'submitfile', +'1.1', +NULL, +NULL, +0, +1, +1, +1, +1, +0, +'tool/lasbmt11/learner.do', +'tool/lasbmt11/authoring.do', +'tool/lasbmt11/definelater.do', +'tool/lasbmt11/export.do', +'tool/lasbmt11/monitoring.do', +'tool/lasbmt11/monitoring.do', +'tool/lasbmt11/monitoring.do', +NOW() +); + +INSERT INTO lams_learning_library +( +learning_library_id, +description, +title, +valid_flag, +create_date_time +) +VALUES +( +2, +'Uploading of files by learners, for review by teachers.', +'Submit file', +0, +NOW() +); + +INSERT INTO lams_learning_activity +( +activity_ui_id +, description +, title +, help_text +, xcoord +, ycoord +, parent_activity_id +, parent_ui_id +, learning_activity_type_id +, grouping_support_type_id +, apply_grouping_flag +, grouping_id +, grouping_ui_id +, order_id +, define_later_flag +, learning_design_id +, learning_library_id +, create_date_time +, run_offline_flag +, max_number_of_options +, min_number_of_options +, options_instructions +, tool_id +, tool_content_id +, activity_category_id +, gate_activity_level_id +, gate_open_flag +, gate_start_time_offset +, gate_end_time_offset +, gate_start_date_time +, gate_end_date_time +, library_activity_ui_image +, create_grouping_id +, create_grouping_ui_id +, library_activity_id +) +VALUES +( +NULL +, 'Uploading of files by learners, for review by teachers.' +, 'Submit File' +, 'Put some help text here.' +, NULL +, NULL +, NULL +, NULL +, 1 +, 1 +, 0 +, NULL +, NULL +, NULL +, 0 +, NULL +, 2 +, NOW() +, 0 +, NULL +, NULL +, NULL +, 2 +, NULL +, 4 +, NULL +, NULL +, NULL +, NULL +, NULL +, NULL +, 'tool/lasbmt11/images/icon_reportsubmission.swf' +, NULL +, NULL +, NULL +); + +##### QA tool ##### + +INSERT INTO lams_tool +( +tool_id, +tool_signature, +service_name, +tool_display_name, +description, +tool_identifier, +tool_version, +learning_library_id, +default_tool_content_id, +valid_flag, +grouping_support_type_id, +supports_define_later_flag, +supports_run_offline_flag, +supports_moderation_flag, +supports_contribute_flag, +learner_url, +author_url, +define_later_url, +export_portfolio_url, +monitor_url, +contribute_url, +moderation_url, +create_date_time +) +VALUES +( +3, +'laqa11', +'qaService', +'Question and Answer', +'Question and Answer Tool Description', +'qa', +'1.1', +NULL, +10, +0, +1, +1, +1, +1, +0, +'tool/laqa11/learningStarter.do', +'tool/laqa11/authoringStarter.do', +'tool/laqa11/definelater.do', +'tool/laqa11/export.do', +'tool/laqa11/monitoringStarter.do', +'tool/laqa11/monitoringStarter.do', +'tool/laqa11/monitoringStarter.do', +NOW() +); + +INSERT INTO lams_learning_library +( +learning_library_id, +description, +title, +valid_flag, +create_date_time +) +VALUES +( +3, +'Question and Answer Learning Library Description', +'Question and Answer', +0, +NOW() +); + +INSERT INTO lams_learning_activity +( +activity_ui_id +, description +, title +, help_text +, xcoord +, ycoord +, parent_activity_id +, parent_ui_id +, learning_activity_type_id +, grouping_support_type_id +, apply_grouping_flag +, grouping_id +, grouping_ui_id +, order_id +, define_later_flag +, learning_design_id +, learning_library_id +, create_date_time +, run_offline_flag +, max_number_of_options +, min_number_of_options +, options_instructions +, tool_id +, tool_content_id +, activity_category_id +, gate_activity_level_id +, gate_open_flag +, gate_start_time_offset +, gate_end_time_offset +, gate_start_date_time +, gate_end_date_time +, library_activity_ui_image +, create_grouping_id +, create_grouping_ui_id +, library_activity_id +) +VALUES +( +NULL +, 'Question and Answer Description' +, 'Question and Answer' +, 'Put some help text here.' +, NULL +, NULL +, NULL +, NULL +, 1 +, 1 +, 0 +, NULL +, NULL +, NULL +, 0 +, NULL +, 3 +, NOW() +, 0 +, NULL +, NULL +, NULL +, 3 +, NULL +, 4 +, NULL +, NULL +, NULL +, NULL +, NULL +, NULL +, 'tool/laqa11/images/icon_questionanswer.swf' +, NULL +, NULL +, NULL +); + + + Index: lams_tool_deploy/test/file/sql/tool_insert.sql =================================================================== diff -u -rc3089a13a1f3bbc264f9eeeb7c1198a5ddc81d5f -rda85d240e28623bc3db1763c40caa72729863285 --- lams_tool_deploy/test/file/sql/tool_insert.sql (.../tool_insert.sql) (revision c3089a13a1f3bbc264f9eeeb7c1198a5ddc81d5f) +++ lams_tool_deploy/test/file/sql/tool_insert.sql (.../tool_insert.sql) (revision da85d240e28623bc3db1763c40caa72729863285) @@ -33,22 +33,22 @@ 'test.test.deploy.Test', 'DEPLOY TEST TOOL 1', 'TEST DATA FOR DEPLOY APP', -'testapp', +'DPTST1', '1.1', NULL, NULL, 0, 1, 1, 1, -1, 0, -'/lams/tool/dptst1/foo.jsp', -'/lams/tool/dptst1/foo.jsp', -'/lams/tool/dptst1/foo.jsp', -'/lams/tool/dptst1/foo.jsp', -'/lams/tool/dptst1/foo.jsp', -'/lams/tool/dptst1/foo.jsp', -'/lams/tool/dptst1/foo.jsp', +0, +'tool/dptst1/foo.jsp', +'tool/dptst1/foo.jsp', +'tool/dptst1/foo.jsp', +'tool/dptst1/foo.jsp', +'tool/dptst1/foo.jsp', +NULL, +NULL, NOW() ) Index: lams_tool_deploy/test/file/tool_deploy/deploy.xml =================================================================== diff -u --- lams_tool_deploy/test/file/tool_deploy/deploy.xml (revision 0) +++ lams_tool_deploy/test/file/tool_deploy/deploy.xml (revision da85d240e28623bc3db1763c40caa72729863285) @@ -0,0 +1,20 @@ + + lams + lamsdemo + com.mysql.jdbc.Driver + jdbc:mysql://localhost/lams?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true + lasbmt11 + test-dummy.war + /lams/tool/test + test/file/lams.ear + test/file/sql/tool_insert.sql + test/file/sql/library_insert.sql + test/file/sql/activity_insert.sql + test/file/sql/create_tool_tables.sql + + + test/file/test-dummy.war + test/file/test-dummy.jar + + + Index: lams_tool_deploy/test/file/tool_deploy/deploy2.xml =================================================================== diff -u --- lams_tool_deploy/test/file/tool_deploy/deploy2.xml (revision 0) +++ lams_tool_deploy/test/file/tool_deploy/deploy2.xml (revision da85d240e28623bc3db1763c40caa72729863285) @@ -0,0 +1,11 @@ + + root2 + dag.Quiz2 + com.mysql.jdbc.Driver2 + jdbc:mysql://localhost:3306/scratch2 + + test/file/test-dummy2.war + test/file/test-dummy2.jar + + + Index: lams_tool_deploy/test/file/tool_deploy/test.xml =================================================================== diff -u --- lams_tool_deploy/test/file/tool_deploy/test.xml (revision 0) +++ lams_tool_deploy/test/file/tool_deploy/test.xml (revision da85d240e28623bc3db1763c40caa72729863285) @@ -0,0 +1,20 @@ + + lams + lamsdemo + com.mysql.jdbc.Driver + jdbc:mysql://localhost/lams?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true + lasbmt11 + test-dummy.war + /lams/tool/test + test/file/lams.ear + test/file/sql/tool_insert.sql + test/file/sql/library_insert.sql + test/file/sql/activity_insert.sql + test/file/sql/create_tool_tables.sql + + + test/file/test-dummy.war + test/file/test-dummy.jar + + + Index: lams_tool_deploy/test/java/org/lamsfoundation/lams/tool/deploy/libraryActivity/DeployLibraryConfigTest.java =================================================================== diff -u --- lams_tool_deploy/test/java/org/lamsfoundation/lams/tool/deploy/libraryActivity/DeployLibraryConfigTest.java (revision 0) +++ lams_tool_deploy/test/java/org/lamsfoundation/lams/tool/deploy/libraryActivity/DeployLibraryConfigTest.java (revision da85d240e28623bc3db1763c40caa72729863285) @@ -0,0 +1,162 @@ +/* + * Created on 24/11/2005 + * + * TODO To change the template for this generated file go to + * Window - Preferences - Java - Code Style - Code Templates + */ +package org.lamsfoundation.lams.tool.deploy.libraryActivity; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; + +import javax.xml.parsers.ParserConfigurationException; +import junit.framework.TestCase; + +import org.lamsfoundation.lams.tool.deploy.DeployException; +import org.xml.sax.SAXException; + + + +/** + * @author mtruong + * + * TODO To change the template for this generated type comment go to + * Window - Preferences - Java - Code Style - Code Templates + */ +public class DeployLibraryConfigTest extends TestCase { + + private DeployLibraryConfig config = null; + private DeployLibraryConfig config2 = null; + private DeployLibraryConfig testConfigObject = null; + + private static String DB_USERNAME = "lams"; + private static String DB_PASSWORD = "lamsdemo"; + private static String DB_DRIVER_CLASS = "com.mysql.jdbc.Driver"; + private static String DB_DRIVER_URL = "jdbc:mysql://localhost/lams?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&autoReconnect=true"; + /* test data for first learning library */ + private static String LIBRARY_INSERT_SCRIPT1 = "D:\\deployTest\\ParallelActivity\\learninglibrary1_insert.sql"; + private static String TEMPLATE_ACTIVITY_INSERT_SCRIPT1 = "D:\\deployTest\\ParallelActivity\\libraryActivity1_insert.sql"; + private static String TOOL_SIGNATURE_1_LIB1 = "lanb11"; + private static String TOOL_ACTIVITY_INSERT_SCRIPT_1_LIB1 = "D:\\deployTest\\ParallelActivity\\toolActivity1_insert.sql"; + private static String TOOL_SIGNATURE_2_LIB1 = "lasbmt11"; + private static String TOOL_ACTIVITY_INSERT_SCRIPT_2_LIB1 = "D:\\deployTest\\ParallelActivity\\toolActivity2_insert.sql"; + + /* tests data for second learning library */ + private static String LIBRARY_INSERT_SCRIPT2 = "D:\\deployTest\\ParallelActivity\\learninglibrary2_insert.sql"; + private static String TEMPLATE_ACTIVITY_INSERT_SCRIPT2 = "D:\\deployTest\\ParallelActivity\\libraryActivity2_insert.sql"; + private static String TOOL_SIGNATURE_1_LIB2 = "laqa11"; + private static String TOOL_ACTIVITY_INSERT_SCRIPT_1_LIB2 = "D:\\deployTest\\ParallelActivity\\toolActivity1_library2.sql"; + private static String TOOL_SIGNATURE_2_LIB2 = "lanb11"; + private static String TOOL_ACTIVITY_INSERT_SCRIPT_2_LIB2 = "D:\\deployTest\\ParallelActivity\\toolActivity2_library2.sql"; + + + public DeployLibraryConfigTest(String name) + { + super(name); + } + + protected void setUp() throws ParserConfigurationException, IOException, SAXException + { + config = new DeployLibraryConfig("test/file/library_deploy/deployLibraryTest.xml"); + // testConfigObject = createTestObject(); + config2 = new DeployLibraryConfig("test/file/library_deploy/deployLibraryTest.xml"); + config2.updateConfigurationProperties("test/file/library_deploy/deployLibraryTest2.xml"); + } + + public void testGetDbUsername() + { + assertEquals(config.getDbUsername(), DB_USERNAME); + assertEquals(config2.getDbUsername(), "root2"); + } + + public void testGetDbPassword() + { + assertEquals(config.getDbPassword(), DB_PASSWORD); + assertEquals(config2.getDbPassword(), "dag.Quiz2"); + } + + public void testGetDbDriverUrl() + { + assertEquals(config.getDbDriverUrl(), DB_DRIVER_URL); + assertEquals(config2.getDbDriverUrl(), "jdbc:mysql://localhost:3306/scratch2"); + } + + public void testGetDbDriverClass() + { + assertEquals(config.getDbDriverClass(), DB_DRIVER_CLASS); + assertEquals(config2.getDbDriverClass(), "com.mysql.jdbc.Driver2"); + } + + public void testGetLearningLibraries() + { + ArrayList libraryList = config.getLearningLibraryList(); + + assertNotNull(libraryList); + assertEquals(libraryList.size(), 2); + + LearningLibrary library1 = (LearningLibrary)libraryList.get(0); + LearningLibrary library2 = (LearningLibrary)libraryList.get(1); + + assertEquals(library1.getLibraryInsertScriptPath(), LIBRARY_INSERT_SCRIPT1); + assertEquals(library2.getLibraryInsertScriptPath(), LIBRARY_INSERT_SCRIPT2); + + assertEquals(library1.getTemplateActivityInsertScriptPath(), TEMPLATE_ACTIVITY_INSERT_SCRIPT1); + assertEquals(library2.getTemplateActivityInsertScriptPath(), TEMPLATE_ACTIVITY_INSERT_SCRIPT2); + + } + + public void testGetToolActivitiesFromLearningLibrary() + { + + ArrayList libraryList = config.getLearningLibraryList(); + + LearningLibrary library1 = (LearningLibrary)libraryList.get(0); + LearningLibrary library2 = (LearningLibrary)libraryList.get(1); + + /** Tool activities that belong to the first learning library */ + ArrayList toolActivities_library1 = library1.getToolActivityList(); + assertNotNull(toolActivities_library1); + assertTrue(toolActivities_library1.size()== 2); + + ToolActivity toolActivity1 = (ToolActivity)toolActivities_library1.get(0); + assertNotNull(toolActivity1); + assertEquals(toolActivity1.getToolActivityInsertScriptPath(), TOOL_ACTIVITY_INSERT_SCRIPT_1_LIB1); + assertEquals(toolActivity1.getToolSignature(), TOOL_SIGNATURE_1_LIB1); + + ToolActivity toolActivity2 = (ToolActivity)toolActivities_library1.get(1); + assertNotNull(toolActivity2); + assertEquals(toolActivity2.getToolActivityInsertScriptPath(), TOOL_ACTIVITY_INSERT_SCRIPT_2_LIB1); + assertEquals(toolActivity2.getToolSignature(), TOOL_SIGNATURE_2_LIB1); + + /** Tool activities that belong to the second learning library */ + ArrayList toolActivities_library2 = library2.getToolActivityList(); + assertNotNull(toolActivities_library2); + assertTrue(toolActivities_library2.size()== 2); + + ToolActivity toolActivity1_lib2 = (ToolActivity)toolActivities_library2.get(0); + assertNotNull(toolActivity1_lib2); + assertEquals(toolActivity1_lib2.getToolActivityInsertScriptPath(), TOOL_ACTIVITY_INSERT_SCRIPT_1_LIB2); + assertEquals(toolActivity1_lib2.getToolSignature(), TOOL_SIGNATURE_1_LIB2); + + ToolActivity toolActivity2_lib2 = (ToolActivity)toolActivities_library2.get(1); + assertNotNull(toolActivity2_lib2); + assertEquals(toolActivity2_lib2.getToolActivityInsertScriptPath(), TOOL_ACTIVITY_INSERT_SCRIPT_2_LIB2); + assertEquals(toolActivity2_lib2.getToolSignature(), TOOL_SIGNATURE_2_LIB2); + + } + + public void testValidation() + { + // config2.setDbPassword(null); + config2.setLearningLibraryList(null); + try { + config2.validateProperties(); + fail("Deployment exception should have been thrown as validation should have failed."); + } catch ( DeployException e ) { + System.out.println("Validation failed as expected. Message was "+e.getMessage()); + assertTrue("Validation failed.", true); + } + } + +} Index: lams_tool_deploy/test/java/org/lamsfoundation/lams/tool/deploy/libraryActivity/LibraryDBDeployTaskTest.java =================================================================== diff -u --- lams_tool_deploy/test/java/org/lamsfoundation/lams/tool/deploy/libraryActivity/LibraryDBDeployTaskTest.java (revision 0) +++ lams_tool_deploy/test/java/org/lamsfoundation/lams/tool/deploy/libraryActivity/LibraryDBDeployTaskTest.java (revision da85d240e28623bc3db1763c40caa72729863285) @@ -0,0 +1,41 @@ +/* + * Created on 1/12/2005 + * + */ +package org.lamsfoundation.lams.tool.deploy.libraryActivity; + +import org.lamsfoundation.lams.tool.deploy.ToolDBTest; +import org.lamsfoundation.lams.tool.deploy.libraryActivity.LibraryDBDeployTask; +/** + * @author mtruong + * + */ +public class LibraryDBDeployTaskTest extends ToolDBTest { + + private DeployLibraryConfig config = null; + + public LibraryDBDeployTaskTest(String name) + { + super(name); + } + + protected void setUp() throws java.lang.Exception + { + super.setUp(); + insertTestRecordsForLibraryDeploy("test/file/test.properties"); + config = new DeployLibraryConfig("test/file/library_deploy/deployLibraryTest.xml"); + } + + protected void tearDown() throws java.lang.Exception + { + super.tearDown(); + } + + + public void testExecute() throws Exception + { + LibraryDBDeployTask task = new LibraryDBDeployTask(config); + task.execute(); + + } +}