Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u -r05c83089b5b441f4752e33bea2aca4167eaf9b54 -rb763be8a2bbb86f0b8589ae2a51f64f69e9208c1 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 05c83089b5b441f4752e33bea2aca4167eaf9b54) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision b763be8a2bbb86f0b8589ae2a51f64f69e9208c1) @@ -22,6 +22,7 @@ import java.util.List; +import org.lamsfoundation.lams.learningdesign.GateActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.tool.service.LamsToolServiceException; import org.lamsfoundation.lams.usermanagement.Organisation; @@ -77,4 +78,17 @@ * will be force complete */ public void forceCompleteLessonByUser(long learnerProgressId); + + /** + * Set the gate to open to let all the learners through. This learning service + * is triggerred by the system scheduler. + * @param gate the gate that we need to open. + */ + public void openGate(GateActivity gate); + + /** + * Set the gate to closed. + * @param gate the gate that we need to close. + */ + public void closeGate(GateActivity gate); } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r05c83089b5b441f4752e33bea2aca4167eaf9b54 -rb763be8a2bbb86f0b8589ae2a51f64f69e9208c1 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 05c83089b5b441f4752e33bea2aca4167eaf9b54) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision b763be8a2bbb86f0b8589ae2a51f64f69e9208c1) @@ -27,9 +27,11 @@ import org.lamsfoundation.lams.authoring.service.IAuthoringService; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.GateActivity; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.ToolActivity; +import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.LessonClass; import org.lamsfoundation.lams.lesson.dao.ILessonClassDAO; @@ -60,8 +62,8 @@ private ILessonClassDAO lessonClassDAO; private ILamsCoreToolService lamsCoreToolService; private IAuthoringService authoringService; + private IActivityDAO activityDAO; - //--------------------------------------------------------------------- // Inversion of Control Methods - Method injection //--------------------------------------------------------------------- @@ -97,6 +99,13 @@ this.lamsCoreToolService = lamsToolService; } + /** + * @param activityDAO The activityDAO to set. + */ + public void setActivityDAO(IActivityDAO activityDAO) + { + this.activityDAO = activityDAO; + } //--------------------------------------------------------------------- // Service Methods //--------------------------------------------------------------------- @@ -194,6 +203,23 @@ } /** + * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#openGate(org.lamsfoundation.lams.learningdesign.GateActivity) + */ + public void openGate(GateActivity gate) + { + gate.setGateOpen(new Boolean(true)); + activityDAO.update(gate); + } + + /** + * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#closeGate(org.lamsfoundation.lams.learningdesign.GateActivity) + */ + public void closeGate(GateActivity gate) + { + gate.setGateOpen(new Boolean(false)); + activityDAO.update(gate); + } + /** * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#forceCompleteLessonByUser(long) */ public void forceCompleteLessonByUser(long learnerProgressId) @@ -321,6 +347,4 @@ return activity.isToolActivity() && !((ToolActivity) activity).getApplyGrouping().booleanValue(); } - - } \ No newline at end of file Index: lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java =================================================================== diff -u -r05c83089b5b441f4752e33bea2aca4167eaf9b54 -rb763be8a2bbb86f0b8589ae2a51f64f69e9208c1 --- lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 05c83089b5b441f4752e33bea2aca4167eaf9b54) +++ lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision b763be8a2bbb86f0b8589ae2a51f64f69e9208c1) @@ -23,7 +23,11 @@ import java.util.LinkedList; import org.lamsfoundation.lams.AbstractLamsTestCase; +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.GateActivity; import org.lamsfoundation.lams.learningdesign.Grouping; +import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.ActivityDAO; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.dao.ILessonDAO; import org.lamsfoundation.lams.lesson.dao.hibernate.LessonDAO; @@ -46,6 +50,7 @@ private IMonitoringService monitoringService; private IUserManagementService usermanageService; private ILessonDAO lessonDao; + private IActivityDAO activityDao; //--------------------------------------------------------------------- // Testing Data - Constants //--------------------------------------------------------------------- @@ -55,6 +60,8 @@ private final long TEST_LEARNING_DESIGN_ID = 1; private final long TEST_COPIED_LEARNING_DESIGN_ID = 2; private final Integer TEST_ORGANIZATION_ID = new Integer(1); + private final Long TEST_SCHEDULE_GATE_ID = new Long(27); + //it might be different because it is automatically generated by database //TODO create a get lesson by design method in lesson dao. private static Long TEST_LESSON_ID = null; @@ -74,7 +81,8 @@ monitoringService = (IMonitoringService)this.context.getBean("monitoringService"); usermanageService = (IUserManagementService)this.context.getBean("userManagementService"); lessonDao = (LessonDAO)this.context.getBean("lessonDAO"); - + activityDao = (ActivityDAO)this.context.getBean("activityDAO"); + initializeTestingData(); } /** @@ -163,6 +171,28 @@ } + public void testOpenGate() + { + Activity scheduleGate = activityDao.getActivityByActivityId(TEST_SCHEDULE_GATE_ID); + + monitoringService.openGate((GateActivity)scheduleGate); + + Activity openedScheduleGate = activityDao.getActivityByActivityId(TEST_SCHEDULE_GATE_ID); + + assertTrue("the gate should be opened",((GateActivity)openedScheduleGate).getGateOpen().booleanValue()); + } + + public void testCloseGate() + { + Activity scheduleGate = activityDao.getActivityByActivityId(TEST_SCHEDULE_GATE_ID); + + monitoringService.closeGate((GateActivity)scheduleGate); + + Activity closedScheduleGate = activityDao.getActivityByActivityId(TEST_SCHEDULE_GATE_ID); + + assertTrue("the gate should be closed",!((GateActivity)closedScheduleGate).getGateOpen().booleanValue()); + } + public void testForceCompleteLessonByUser() { }