Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java,v diff -u -r1.1 -r1.2 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java 23 Jan 2006 06:02:21 -0000 1.1 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java 24 Jan 2006 03:30:34 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml,v diff -u -r1.6 -r1.7 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml 23 Jan 2006 06:02:21 -0000 1.6 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml 24 Jan 2006 03:30:34 -0000 1.7 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/Attic/FinishScheduleLesson.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/FinishScheduleLesson.java 24 Jan 2006 03:30:34 -0000 1.1 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java,v diff -u -r1.27 -r1.28 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java 23 Jan 2006 06:02:21 -0000 1.27 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java 24 Jan 2006 03:30:34 -0000 1.28 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java,v diff -u -r1.35 -r1.36 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 23 Jan 2006 06:02:21 -0000 1.35 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 24 Jan 2006 03:30:34 -0000 1.36 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/Attic/StartScheduleLesson.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/StartScheduleLesson.java 24 Jan 2006 03:30:34 -0000 1.1 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/Attic/DummyMonitoringAction.java,v diff -u -r1.10 -r1.11 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/DummyMonitoringAction.java 20 Jan 2006 00:42:50 -0000 1.10 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/DummyMonitoringAction.java 24 Jan 2006 03:30:34 -0000 1.11 @@ -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); }