Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java =================================================================== diff -u -rc1dfdde7a9d5ed9b49fc9772bbb9f018b085d00b -ra22606299d58eedf62e8df38b26c4fa5662df79e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java (.../MonitoringConstants.java) (revision c1dfdde7a9d5ed9b49fc9772bbb9f018b085d00b) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java (.../MonitoringConstants.java) (revision a22606299d58eedf62e8df38b26c4fa5662df79e) @@ -29,4 +29,6 @@ public static final String KEY_LESSON_ID = "lessonID"; public static final String KEY_STAFF = "staff"; public static final String KEY_LEARNER = "learners"; + public static final String JOB_START_LESSON = "startScheduleLessonJob"; + public static final String JOB_FINISH_LESSON = "finishScheduleLessonJob"; } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml =================================================================== diff -u -rc1dfdde7a9d5ed9b49fc9772bbb9f018b085d00b -ra22606299d58eedf62e8df38b26c4fa5662df79e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml (.../monitoringApplicationContext.xml) (revision c1dfdde7a9d5ed9b49fc9772bbb9f018b085d00b) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml (.../monitoringApplicationContext.xml) (revision a22606299d58eedf62e8df38b26c4fa5662df79e) @@ -96,6 +96,30 @@ + + + org.lamsfoundation.lams.monitoring.service.StartScheduleLesson + + + + + + + + + + + + org.lamsfoundation.lams.monitoring.service.FinishScheduleLesson + + + + + + + + + Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/FinishScheduleLesson.java =================================================================== diff -u --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/FinishScheduleLesson.java (revision 0) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/FinishScheduleLesson.java (revision a22606299d58eedf62e8df38b26c4fa5662df79e) @@ -0,0 +1,48 @@ +/* + *Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * + *This program is free software; you can redistribute it and/or modify + *it under the terms of the GNU General Public License as published by + *the Free Software Foundation; either version 2 of the License, or + *(at your option) any later version. + * + *This program is distributed in the hope that it will be useful, + *but WITHOUT ANY WARRANTY; without even the implied warranty of + *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + *GNU General Public License for more details. + * + *You should have received a copy of the GNU General Public License + *along with this program; if not, write to the Free Software + *Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + *USA + * + *http://www.gnu.org/licenses/gpl.txt + */ +package org.lamsfoundation.lams.monitoring.service; + +import org.apache.log4j.Logger; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.scheduling.quartz.QuartzJobBean; + +public class FinishScheduleLesson extends QuartzJobBean{ + //--------------------------------------------------------------------- + // Instance variables + //--------------------------------------------------------------------- + private static Logger log = Logger.getLogger(OpenScheduleGateJob.class); + private IMonitoringService monitoringService; + + //--------------------------------------------------------------------- + // Inverse of control - method injection + //--------------------------------------------------------------------- + /** + * @param monitoringService The monitoringService to set. + */ + public void setMonitoringService(IMonitoringService monitoringService) + { + this.monitoringService = monitoringService; + } + + protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { + } +} Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u -rc1dfdde7a9d5ed9b49fc9772bbb9f018b085d00b -ra22606299d58eedf62e8df38b26c4fa5662df79e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision c1dfdde7a9d5ed9b49fc9772bbb9f018b085d00b) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision a22606299d58eedf62e8df38b26c4fa5662df79e) @@ -21,6 +21,7 @@ package org.lamsfoundation.lams.monitoring.service; import java.io.IOException; +import java.util.Date; import java.util.List; import org.lamsfoundation.lams.learningdesign.Activity; @@ -75,7 +76,7 @@ * @return */ public String createLesson(Integer creatorUserId,String lessionPackage); - + /** * Setup the lesson class and organization for a lesson according to the * input from monitoring GUI interface. @@ -97,8 +98,14 @@ * lesson. */ public void startLesson(long lessonId); - /** + * + * @param lessonId + * @param startDate the lesson start date and time. + * @see org.lamsfoundation.lams.monitoring.service#startLesson(long) + */ + public void startLessonOnSchedule(long lessonId, Date startDate); + /** * Force the learner to complete all the activities for current lesson. * @param learnerProgressId the learner progress belongs to the user who * will be force complete Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -rc1dfdde7a9d5ed9b49fc9772bbb9f018b085d00b -ra22606299d58eedf62e8df38b26c4fa5662df79e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision c1dfdde7a9d5ed9b49fc9772bbb9f018b085d00b) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision a22606299d58eedf62e8df38b26c4fa5662df79e) @@ -388,8 +388,36 @@ return newLesson; } - /** + * Start lesson + * @param lessonId + * @param startDate + */ + public void startLessonOnSchedule(long lessonId, Date startDate){ + JobDetail startLessonJob = getStartScheduleLessonJob(); + //setup the message for scheduling job + startLessonJob.setName("startLessonOnSchedule"); + startLessonJob.getJobDataMap().put(MonitoringConstants.KEY_LESSON_ID,new Long(lessonId)); + //create customized triggers + Trigger startLessonTrigger = new SimpleTrigger("startLessonOnScheduleTrigger", + Scheduler.DEFAULT_GROUP, + startDate); + //start the scheduling job + try + { + scheduler.scheduleJob(startLessonJob, startLessonTrigger); + } + catch (SchedulerException e) + { + throw new MonitoringServiceException("Error occurred at " + + "[startLessonOnSchedule]- fail to start scheduling",e); + } + + if(log.isDebugEnabled()) + log.debug("Start lesson ["+lessonId+"] on schedule is configured"); + } + + /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#startlesson(long) */ public void startLesson(long lessonId) @@ -1066,8 +1094,21 @@ { return (JobDetail)applicationContext.getBean("openScheduleGateJob"); } - /** + * + * @return the bean that defines start lesson on schedule job. + */ + private JobDetail getStartScheduleLessonJob() { + return (JobDetail)applicationContext.getBean(MonitoringConstants.JOB_START_LESSON); + } + /** + * + * @return the bean that defines start lesson on schedule job. + */ + private JobDetail getFinishScheduleLessonJob() { + return (JobDetail)applicationContext.getBean(MonitoringConstants.JOB_FINISH_LESSON); + } + /** * Returns the bean that defines the close schdule gate job. */ private JobDetail getCloseScheduleGateJob() Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/StartScheduleLesson.java =================================================================== diff -u --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/StartScheduleLesson.java (revision 0) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/StartScheduleLesson.java (revision a22606299d58eedf62e8df38b26c4fa5662df79e) @@ -0,0 +1,64 @@ +/* + *Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * + *This program is free software; you can redistribute it and/or modify + *it under the terms of the GNU General Public License as published by + *the Free Software Foundation; either version 2 of the License, or + *(at your option) any later version. + * + *This program is distributed in the hope that it will be useful, + *but WITHOUT ANY WARRANTY; without even the implied warranty of + *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + *GNU General Public License for more details. + * + *You should have received a copy of the GNU General Public License + *along with this program; if not, write to the Free Software + *Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + *USA + * + *http://www.gnu.org/licenses/gpl.txt + */ +package org.lamsfoundation.lams.monitoring.service; + +import java.util.Map; + +import org.apache.log4j.Logger; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.scheduling.quartz.QuartzJobBean; + +import org.lamsfoundation.lams.monitoring.MonitoringConstants; + +public class StartScheduleLesson extends QuartzJobBean{ + //--------------------------------------------------------------------- + // Instance variables + //--------------------------------------------------------------------- + private static Logger log = Logger.getLogger(OpenScheduleGateJob.class); + private IMonitoringService monitoringService; + + //--------------------------------------------------------------------- + // Inverse of control - method injection + //--------------------------------------------------------------------- + /** + * @param monitoringService The monitoringService to set. + */ + public void setMonitoringService(IMonitoringService monitoringService) + { + this.monitoringService = monitoringService; + } + + protected void executeInternal(JobExecutionContext context) throws JobExecutionException { + //getting gate id set from scheduler + Map properties = context.getJobDetail().getJobDataMap(); + long lessonId = ((Long)properties.get(MonitoringConstants.KEY_LESSON_ID)).longValue(); + + if(log.isDebugEnabled()) + log.debug("Lesson ["+lessonId+"] is starting..."); + + + monitoringService.startLesson(lessonId); + + if(log.isDebugEnabled()) + log.debug("Lesson ["+lessonId+"] started"); + } +} Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/DummyMonitoringAction.java =================================================================== diff -u -r0042ef2efffe59f6e2fa4b1554080a8500df69b9 -ra22606299d58eedf62e8df38b26c4fa5662df79e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/DummyMonitoringAction.java (.../DummyMonitoringAction.java) (revision 0042ef2efffe59f6e2fa4b1554080a8500df69b9) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/DummyMonitoringAction.java (.../DummyMonitoringAction.java) (revision a22606299d58eedf62e8df38b26c4fa5662df79e) @@ -23,6 +23,8 @@ package org.lamsfoundation.lams.monitoring.web; import java.io.IOException; +import java.util.Calendar; +import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; @@ -206,7 +208,11 @@ // start the lesson. this.monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); - monitoringService.startLesson(testLesson.getLessonId().longValue()); + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + cal.add(Calendar.MILLISECOND,5000); + monitoringService.startLessonOnSchedule(testLesson.getLessonId().longValue(),cal.getTime()); +// monitoringService.startLesson(testLesson.getLessonId().longValue()); return mapping.findForward(LESSON_STARTED_FORWARD); }