Index: lams_build/lib/lams/lams.jar =================================================================== RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams.jar,v diff -u -r1.333 -r1.334 Binary files differ Index: lams_central/src/java/org/lamsfoundation/lams/authoring/authoringApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/authoring/authoringApplicationContext.xml,v diff -u -r1.21 -r1.22 --- lams_central/src/java/org/lamsfoundation/lams/authoring/authoringApplicationContext.xml 1 Jul 2009 02:46:38 -0000 1.21 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/authoringApplicationContext.xml 4 Oct 2010 15:27:02 -0000 1.22 @@ -58,7 +58,7 @@ - + Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java,v diff -u -r1.90 -r1.91 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java 17 Feb 2010 04:23:31 -0000 1.90 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java 4 Oct 2010 15:27:03 -0000 1.91 @@ -78,6 +78,8 @@ import org.lamsfoundation.lams.learningdesign.service.ILearningDesignService; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; +import org.lamsfoundation.lams.logevent.LogEvent; +import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceException; import org.lamsfoundation.lams.planner.dao.PedagogicalPlannerDAO; @@ -157,6 +159,8 @@ protected IWorkspaceManagementService workspaceManagementService; + protected ILogEventService logEventService; + protected ToolContentIDGenerator contentIDGenerator; /** The bean factory is used to create ObjectExtractor objects */ @@ -332,6 +336,10 @@ this.workspaceManagementService = workspaceManagementService; } + public void setLogEventService(ILogEventService logEventService) { + this.logEventService = logEventService; + } + /** * @param contentIDGenerator * The contentIDGenerator to set. @@ -1846,6 +1854,8 @@ .getCopyTypeID(), customCSV); } + + logEventService.logEvent(LogEvent.TYPE_TEACHER_LEARNING_DESIGN_CREATE, userID, design.getLearningDesignId(), null, null); return design.getLearningDesignId(); } Index: lams_common/build.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/build.xml,v diff -u -r1.71 -r1.72 --- lams_common/build.xml 1 Oct 2010 20:36:29 -0000 1.71 +++ lams_common/build.xml 4 Oct 2010 15:32:04 -0000 1.72 @@ -434,6 +434,8 @@ + + Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/logevent/LogEvent.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/db/sql/create_lams_11_tables.sql =================================================================== RCS file: /usr/local/cvsroot/lams_common/db/sql/create_lams_11_tables.sql,v diff -u -r1.152 -r1.153 --- lams_common/db/sql/create_lams_11_tables.sql 1 Oct 2010 20:36:29 -0000 1.152 +++ lams_common/db/sql/create_lams_11_tables.sql 4 Oct 2010 15:32:04 -0000 1.153 @@ -877,16 +877,26 @@ )TYPE=InnoDB; CREATE TABLE lams_log_event ( - log_event_id BIGINT(20) NOT NULL AUTO_INCREMENT + id BIGINT(20) NOT NULL AUTO_INCREMENT , log_event_type_id INT(5) NOT NULL - , user_id BIGINT(20) - , timestamp DATETIME NOT NULL - , ref_id BIGINT(20) - , message VARCHAR(255) - , PRIMARY KEY (log_event_id) - , INDEX (log_event_type_id) + , user_id BIGINT(20) NOT NULL + , occurred_date_time DATETIME NOT NULL + , learning_design_id BIGINT(20) + , lesson_id BIGINT(20) + , activity_id BIGINT(20) + , PRIMARY KEY (id) + , INDEX (occurred_date_time) , CONSTRAINT FK_lams_event_log_1 FOREIGN KEY (log_event_type_id) REFERENCES lams_log_event_type (log_event_type_id) + , INDEX (user_id) + , CONSTRAINT FK_lams_event_log_2 FOREIGN KEY (user_id) + REFERENCES lams_user (user_id) + , CONSTRAINT FK_lams_event_log_3 FOREIGN KEY (learning_design_id) + REFERENCES lams_learning_design (learning_design_id) + , CONSTRAINT FK_lams_event_log_4 FOREIGN KEY (lesson_id) + REFERENCES lams_lesson (lesson_id) + , CONSTRAINT FK_lams_event_log_5 FOREIGN KEY (activity_id) + REFERENCES lams_learning_activity (activity_id) )TYPE=InnoDB; CREATE TABLE lams_workspace_folder_content ( 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.99 -r1.100 --- lams_common/db/sql/insert_types_data.sql 1 Oct 2010 20:36:29 -0000 1.99 +++ lams_common/db/sql/insert_types_data.sql 4 Oct 2010 15:32:04 -0000 1.100 @@ -130,12 +130,12 @@ INSERT INTO lams_grouping_support_type VALUES (2 ,'OPTIONAL'); INSERT INTO lams_grouping_support_type VALUES (3 ,'REQUIRED'); -INSERT INTO lams_log_event_type VALUES (1, 'LEARNER_LESSON_START'); -INSERT INTO lams_log_event_type VALUES (2, 'LEARNER_LESSON_FINISH'); -INSERT INTO lams_log_event_type VALUES (3, 'LEARNER_LESSON_EXIT'); -INSERT INTO lams_log_event_type VALUES (4, 'LEARNER_LESSON_RESUME'); -INSERT INTO lams_log_event_type VALUES (5, 'LEARNER_ACTIVITY_START'); -INSERT INTO lams_log_event_type VALUES (6, 'LEARNER_ACTIVITY_FINISH'); +INSERT INTO lams_log_event_type VALUES (1, 'TYPE_TEACHER_LEARNING_DESIGN_CREATE'); +INSERT INTO lams_log_event_type VALUES (2, 'TYPE_TEACHER_LESSON_CREATE'); +INSERT INTO lams_log_event_type VALUES (3, 'TYPE_TEACHER_LESSON_START'); +INSERT INTO lams_log_event_type VALUES (4, 'TYPE_TEACHER_LESSON_CHANGE_STATE'); +INSERT INTO lams_log_event_type VALUES (5, 'TYPE_LEARNER_ACTIVITY_START'); +INSERT INTO lams_log_event_type VALUES (6, 'TYPE_LEARNER_ACTIVITY_FINISH'); INSERT INTO lams_wkspc_fld_content_type VALUES (1,'FILE'); INSERT INTO lams_wkspc_fld_content_type VALUES (2,'PACKAGE'); 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.89 -r1.90 --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 1 Oct 2010 20:36:29 -0000 1.89 +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml 4 Oct 2010 15:32:04 -0000 1.90 @@ -69,6 +69,8 @@ classpath:org/lamsfoundation/lams/events/Event.hbm.xml classpath:org/lamsfoundation/lams/events/Subscription.hbm.xml + + classpath:org/lamsfoundation/lams/logevent/LogEvent.hbm.xml classpath:org/lamsfoundation/lams/config/ConfigurationItem.hbm.xml classpath:org/lamsfoundation/lams/config/Registration.hbm.xml @@ -499,6 +501,25 @@ + + + + + + + + + + + true + + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + + + + @@ -570,6 +591,11 @@ + + + + + Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040006.sql =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040006.sql,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040006.sql 1 Oct 2010 20:36:29 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040006.sql 4 Oct 2010 15:32:04 -0000 1.4 @@ -85,5 +85,40 @@ UPDATE lams_user SET timezone='Etc/GMT-11' WHERE timezone='29'; UPDATE lams_user SET timezone='Pacific/Auckland' WHERE timezone='30'; +-- LDEV-2550 + +DROP TABLE IF EXISTS lams_log_event; +CREATE TABLE lams_log_event ( + id BIGINT(20) NOT NULL AUTO_INCREMENT + , log_event_type_id INT(5) NOT NULL + , user_id BIGINT(20) NOT NULL + , occurred_date_time DATETIME NOT NULL + , learning_design_id BIGINT(20) + , lesson_id BIGINT(20) + , activity_id BIGINT(20) + , PRIMARY KEY (id) + , INDEX (occurred_date_time) + , CONSTRAINT FK_lams_event_log_1 FOREIGN KEY (log_event_type_id) + REFERENCES lams_log_event_type (log_event_type_id) + , INDEX (user_id) + , CONSTRAINT FK_lams_event_log_2 FOREIGN KEY (user_id) + REFERENCES lams_user (user_id) + , CONSTRAINT FK_lams_event_log_3 FOREIGN KEY (learning_design_id) + REFERENCES lams_learning_design (learning_design_id) + , CONSTRAINT FK_lams_event_log_4 FOREIGN KEY (lesson_id) + REFERENCES lams_lesson (lesson_id) + , CONSTRAINT FK_lams_event_log_5 FOREIGN KEY (activity_id) + REFERENCES lams_learning_activity (activity_id) +)TYPE=InnoDB; + +DELETE FROM lams_log_event_type; +INSERT INTO lams_log_event_type VALUES (1, 'TYPE_TEACHER_LEARNING_DESIGN_CREATE'); +INSERT INTO lams_log_event_type VALUES (2, 'TYPE_TEACHER_LESSON_CREATE'); +INSERT INTO lams_log_event_type VALUES (3, 'TYPE_TEACHER_LESSON_START'); +INSERT INTO lams_log_event_type VALUES (4, 'TYPE_TEACHER_LESSON_CHANGE_STATE'); +INSERT INTO lams_log_event_type VALUES (5, 'TYPE_LEARNER_ACTIVITY_START'); +INSERT INTO lams_log_event_type VALUES (6, 'TYPE_LEARNER_ACTIVITY_FINISH'); + + COMMIT; SET AUTOCOMMIT = 1; \ No newline at end of file Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/logevent/LogEvent.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/logevent/dao/ILogEventDAO.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/logevent/dao/hibernate/LogEventDAO.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/logevent/service/ILogEventService.java'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 1.1 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/logevent/service/LogEventService.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml,v diff -u -r1.27 -r1.28 --- lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml 6 Jul 2009 07:25:49 -0000 1.27 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml 4 Oct 2010 15:29:01 -0000 1.28 @@ -38,6 +38,7 @@ + @@ -91,6 +92,7 @@ + Index: lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java,v diff -u -r1.35 -r1.36 --- lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java 2 Jul 2009 08:19:33 -0000 1.35 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/progress/ProgressEngine.java 4 Oct 2010 15:29:02 -0000 1.36 @@ -39,6 +39,8 @@ import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.ParallelWaitActivity; +import org.lamsfoundation.lams.logevent.LogEvent; +import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.usermanagement.User; /** @@ -53,6 +55,7 @@ protected Logger log = Logger.getLogger(ProgressEngine.class); private IActivityDAO activityDAO; + private ILogEventService logEventService; /** * Method determines next step for a learner based on the activity they have @@ -222,6 +225,10 @@ } } + logEventService.logEvent(LogEvent.TYPE_LEARNER_ACTIVITY_START, progress.getUser().getUserId(), activity + .getLearningDesign().getLearningDesignId(), progress.getLesson().getLessonId(), activity + .getActivityId()); + // update activity activityDAO.insertOrUpdate(activity); } @@ -409,5 +416,9 @@ public void setActivityDAO(IActivityDAO activityDAO) { this.activityDAO = activityDAO; } + + public void setLogEventService(ILogEventService logEventService) { + this.logEventService = logEventService; + } } \ No newline at end of file Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== RCS file: /usr/local/cvsroot/lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java,v diff -u -r1.100 -r1.101 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 13 Jan 2010 03:07:29 -0000 1.100 +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java 4 Oct 2010 15:29:01 -0000 1.101 @@ -69,6 +69,8 @@ import org.lamsfoundation.lams.lesson.dto.LessonDTO; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.lesson.service.LessonServiceException; +import org.lamsfoundation.lams.logevent.LogEvent; +import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.tool.ToolOutput; import org.lamsfoundation.lams.tool.ToolOutputValue; import org.lamsfoundation.lams.tool.ToolSession; @@ -106,6 +108,7 @@ private static HashMap syncMap = new HashMap(); protected MessageService messageService; private IGradebookService gradebookService; + private ILogEventService logEventService; // --------------------------------------------------------------------- // Inversion of Control Methods - Constructor injection @@ -207,6 +210,10 @@ public void setLessonService(ILessonService lessonService) { this.lessonService = lessonService; } + + public void setLogEventService(ILogEventService logEventService) { + this.logEventService = logEventService; + } // --------------------------------------------------------------------- // Service Methods @@ -598,6 +605,9 @@ } } // } + logEventService.logEvent(LogEvent.TYPE_LEARNER_ACTIVITY_FINISH, learnerId, activity.getLearningDesign() + .getLearningDesignId(), progress.getLesson().getLessonId(), activity.getActivityId()); + return nextLearnerProgress; } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml,v diff -u -r1.33 -r1.34 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml 10 Feb 2010 06:50:26 -0000 1.33 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml 4 Oct 2010 15:28:26 -0000 1.34 @@ -41,7 +41,8 @@ - + + Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java,v diff -u -r1.154 -r1.155 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 1 Oct 2010 20:38:05 -0000 1.154 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 4 Oct 2010 15:28:26 -0000 1.155 @@ -78,6 +78,8 @@ import org.lamsfoundation.lams.lesson.dto.LessonDetailsDTO; import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.lesson.service.LessonServiceException; +import org.lamsfoundation.lams.logevent.LogEvent; +import org.lamsfoundation.lams.logevent.service.ILogEventService; import org.lamsfoundation.lams.monitoring.LearnerProgressBatchDTO; import org.lamsfoundation.lams.monitoring.MonitoringConstants; import org.lamsfoundation.lams.tool.ToolSession; @@ -184,6 +186,8 @@ private MessageService messageService; private AuditService auditService; + + private ILogEventService logEventService; /** Message keys */ private static final String FORCE_COMPLETE_STOP_MESSAGE_ACTIVITY_DONE = "force.complete.stop.message.activity.done"; @@ -342,6 +346,10 @@ public void setAuditService(AuditService auditService) { this.auditService = auditService; } + + public void setLogEventService(ILogEventService logEventService) { + this.logEventService = logEventService; + } // --------------------------------------------------------------------- // Service Methods @@ -422,9 +430,13 @@ } User user = userID != null ? (User) baseDAO.find(User.class, userID) : null; - return initializeLesson(lessonName, lessonDescription, learnerExportAvailable, originalLearningDesign, user, + Lesson initializedLesson = initializeLesson(lessonName, lessonDescription, learnerExportAvailable, originalLearningDesign, user, runSeqFolder, LearningDesign.COPY_TYPE_LESSON, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled); - + + Long initializedLearningDesignId = initializedLesson.getLearningDesign().getLearningDesignId(); + logEventService.logEvent(LogEvent.TYPE_TEACHER_LESSON_CREATE, userID, initializedLearningDesignId, initializedLesson.getLessonId(), null); + + return initializedLesson; } /** @@ -852,6 +864,7 @@ if (MonitoringService.log.isDebugEnabled()) { MonitoringService.log.debug("=============Lesson " + lessonId + " started==============="); } + logEventService.logEvent(LogEvent.TYPE_TEACHER_LESSON_START, userId, null, lessonId, null); } /** @@ -1052,6 +1065,8 @@ requestedLesson.setPreviousLessonStateId(requestedLesson.getLessonStateId()); requestedLesson.setLessonStateId(status); lessonDAO.updateLesson(requestedLesson); + logEventService.logEvent(LogEvent.TYPE_TEACHER_LESSON_CHANGE_STATE, requestedLesson.getUser().getUserId(), + null, requestedLesson.getLessonId(), null); } /** @@ -1090,6 +1105,9 @@ requestedLesson.setPreviousLessonStateId(currentStatus); } lessonDAO.updateLesson(requestedLesson); + + logEventService.logEvent(LogEvent.TYPE_TEACHER_LESSON_CHANGE_STATE, requestedLesson.getUser().getUserId(), + null, requestedLesson.getLessonId(), null); } /**