();
+ this.marksReleased = false;
+ this.scheduledNumberDaysToLessonFinish = scheduledNumberDaysToLessonFinish;
}
+
/**
- * Factory method that create a new lesson. It initialized all necessary
- * data for a new lesson with organization and lesson class information.
- * It is designed for monitor side to create a lesson by teacher.
+ * Factory method that create a new lesson. It initialized all necessary data for a new lesson with organization and
+ * lesson class information. It is designed for monitor side to create a lesson by teacher.
*
- * @param user the teacher who created this lesson
+ * @param user
+ * the teacher who created this lesson
* @pram learnerExportAvailable should the export portfolio option be made available to the learner?
- * @param organisation the organisation associated with this lesson.
- * @param ld the learning design associated with this lesson.
- * @param newLessonClass the lesson class that will run this lesson.
+ * @param organisation
+ * the organisation associated with this lesson.
+ * @param ld
+ * the learning design associated with this lesson.
+ * @param newLessonClass
+ * the lesson class that will run this lesson.
* @return the new lesson object.
*/
public static Lesson createNewLesson(String lessonName,
@@ -261,7 +269,8 @@
LearningDesign ld,
Boolean learnerPresenceAvailable,
Boolean learnerImAvailable,
- Boolean liveEditEnabled)
+ Boolean liveEditEnabled,
+ Integer scheduledNumberDaysToLessonFinish)
{
return new Lesson(lessonName,
lessonDescription,
@@ -274,7 +283,8 @@
new HashSet(),
learnerPresenceAvailable,
learnerImAvailable,
- liveEditEnabled);
+ liveEditEnabled,
+ scheduledNumberDaysToLessonFinish);
}
//---------------------------------------------------------------------
// Getters and Setters
@@ -389,7 +399,34 @@
{
this.scheduleEndDate = scheduleEndDate;
}
+
/**
+ * @return Returns whether there is an end date for individual user.
+ */
+ public boolean isScheduledToCloseForIndividuals() {
+ return (scheduledNumberDaysToLessonFinish != null);
+ }
+
+ /**
+ * @hibernate.property type="java.lang.Integer" column="scheduled_number_days_to_lesson_finish" length="3"
+ *
+ * @return Returns the number of days the lesson will be available to user since he starts it. (It's ON only if the
+ * lesson was scheduled to be finished and individual option was selected)
+ */
+ public Integer getScheduledNumberDaysToLessonFinish() {
+ return scheduledNumberDaysToLessonFinish;
+ }
+
+ /**
+ * @param scheduledNumberDaysToLessonFinish
+ * the number of days the lesson will be available to user since he starts it. (It's ON only if the lesson
+ * was scheduled to be finished and individual option was selected)
+ */
+ public void setScheduledNumberDaysToLessonFinish(Integer scheduledNumberDaysToLessonFinish) {
+ this.scheduledNumberDaysToLessonFinish = scheduledNumberDaysToLessonFinish;
+ }
+
+ /**
* @hibernate.property type="java.sql.Timestamp" column="schedule_start_date_time"
* length="19"
* @return Returns the scheduleStartDate.
Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java
===================================================================
diff -u -r68d2988cca350af15ba4087814f74e1527a71997 -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java (.../TestLessonDAO.java) (revision 68d2988cca350af15ba4087814f74e1527a71997)
+++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java (.../TestLessonDAO.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -123,7 +123,8 @@
testLearningDesign,
false,
false,
- false);
+ false,
+ null);
try
{
Index: lams_common/test/java/org/lamsfoundation/lams/lesson/service/TestLessonService.java
===================================================================
diff -u -r68d2988cca350af15ba4087814f74e1527a71997 -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_common/test/java/org/lamsfoundation/lams/lesson/service/TestLessonService.java (.../TestLessonService.java) (revision 68d2988cca350af15ba4087814f74e1527a71997)
+++ lams_common/test/java/org/lamsfoundation/lams/lesson/service/TestLessonService.java (.../TestLessonService.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -79,7 +79,7 @@
User test1 = userManagementService.getUserByLogin(TEST1_USER_LOGIN);
// this lesson isn't valid as it doesn't have a learning design
- Lesson newLesson = Lesson.createNewLessonWithoutClass("test lesson", "test lesson", mmm, true, null, false, false, false);
+ Lesson newLesson = Lesson.createNewLessonWithoutClass("test lesson", "test lesson", mmm, true, null, false, false, false, null);
lessonDAO.saveLesson(newLesson);
Organisation organisation = (Organisation) baseDAO.find(Organisation.class, TEST_ORG_ID);
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml
===================================================================
diff -u -r8cbd631849cddfbfc7fb887e8a847894e5baaefa -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 8cbd631849cddfbfc7fb887e8a847894e5baaefa)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/learningApplicationContext.xml (.../learningApplicationContext.xml) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -33,6 +33,7 @@
+
Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java
===================================================================
diff -u -r8cbd631849cddfbfc7fb887e8a847894e5baaefa -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 8cbd631849cddfbfc7fb887e8a847894e5baaefa)
+++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -26,6 +26,7 @@
import java.sql.Timestamp;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -51,6 +52,7 @@
import org.lamsfoundation.lams.learningdesign.DataFlowObject;
import org.lamsfoundation.lams.learningdesign.GateActivity;
import org.lamsfoundation.lams.learningdesign.Group;
+import org.lamsfoundation.lams.learningdesign.GroupUser;
import org.lamsfoundation.lams.learningdesign.Grouping;
import org.lamsfoundation.lams.learningdesign.GroupingActivity;
import org.lamsfoundation.lams.learningdesign.LearnerChoiceGrouper;
@@ -60,6 +62,7 @@
import org.lamsfoundation.lams.learningdesign.ToolBranchingActivity;
import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO;
import org.lamsfoundation.lams.learningdesign.dao.IDataFlowDAO;
+import org.lamsfoundation.lams.learningdesign.dao.IGroupUserDAO;
import org.lamsfoundation.lams.learningdesign.dao.IGroupingDAO;
import org.lamsfoundation.lams.lesson.LearnerProgress;
import org.lamsfoundation.lams.lesson.Lesson;
@@ -98,6 +101,7 @@
private ILessonDAO lessonDAO;
private IActivityDAO activityDAO;
private IGroupingDAO groupingDAO;
+ private IGroupUserDAO groupUserDAO;
private ProgressEngine progressEngine;
private IToolSessionDAO toolSessionDAO;
private IDataFlowDAO dataFlowDAO;
@@ -191,8 +195,23 @@
public void setGroupingDAO(IGroupingDAO groupingDAO) {
this.groupingDAO = groupingDAO;
}
+
+ /**
+ * @return the groupUserDAO
+ */
+ public IGroupUserDAO getGroupUserDAO() {
+ return groupUserDAO;
+ }
/**
+ * @param groupUserDAO
+ * groupUserDAO
+ */
+ public void setGroupUserDAO(IGroupUserDAO groupUserDAO) {
+ this.groupUserDAO = groupUserDAO;
+ }
+
+ /**
* @return the User Management Service
*/
public IUserManagementService getUserManagementService() {
@@ -291,6 +310,18 @@
// Use TimeStamp rather than Date directly to keep consistent with Hibnerate persiste object.
learnerProgress.setStartDate(new Timestamp(new Date().getTime()));
learnerProgressDAO.saveLearnerProgress(learnerProgress);
+
+ // check if lesson is set to be finished for individual users then store finish date
+ if (lesson.isScheduledToCloseForIndividuals()) {
+ GroupUser groupUser = groupUserDAO.getGroupUser(lesson, learnerId);
+ if (groupUser != null) {
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(learnerProgress.getStartDate());
+ calendar.add(Calendar.DATE, lesson.getScheduledNumberDaysToLessonFinish());
+ Date endDate = calendar.getTime();
+ groupUser.setScheduledLessonEndDate(endDate);
+ }
+ }
} else {
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java
===================================================================
diff -u -racc8d2acf5b6b0002e0c8129947040a779ab4077 -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java (.../MonitoringConstants.java) (revision acc8d2acf5b6b0002e0c8129947040a779ab4077)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/MonitoringConstants.java (.../MonitoringConstants.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -40,7 +40,7 @@
public static final String JOB_START_LESSON = "startScheduleLessonJob";
public static final String JOB_FINISH_LESSON = "finishScheduleLessonJob";
public static final String PARAM_LESSON_START_DATE = "lessonStartDate";
- public static final String PARAM_LESSON_FINISH_DATE = "lessonFinishDate";
+ public static final String PARAM_SCHEDULED_NUMBER_DAYS_TO_LESSON_FINISH = "scheduledNumberDaysToLessonFinish";
public static final String PARAM_LEARNER_ID = "learnerID";
public static final String KEY_GROUPING_ACTIVITY = "groupingActivityID";
public static final String KEY_GROUPS = "groups";
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/FinishScheduleLessonJob.java
===================================================================
diff -u -r08950e1090443c3423a3d1c587416a2fccd8bbdf -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/FinishScheduleLessonJob.java (.../FinishScheduleLessonJob.java) (revision 08950e1090443c3423a3d1c587416a2fccd8bbdf)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/FinishScheduleLessonJob.java (.../FinishScheduleLessonJob.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -46,12 +46,12 @@
long lessonId = ((Long)properties.get(MonitoringConstants.KEY_LESSON_ID)).longValue();
Integer userId = (Integer)properties.get(MonitoringConstants.KEY_USER_ID);
if(log.isDebugEnabled())
- log.debug("Lesson ["+lessonId+"] is stopping...");
+ log.debug("Lesson ["+lessonId+"] is suspending...");
- monitoringService.finishLesson(lessonId,userId);
+ monitoringService.suspendLesson(lessonId,userId);
if(log.isDebugEnabled())
- log.debug("Lesson ["+lessonId+"] stopped");
+ log.debug("Lesson ["+lessonId+"] suspended");
}
}
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java
===================================================================
diff -u -r009fbce36f45d0929f8007c4bbc798242f57d3af -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 009fbce36f45d0929f8007c4bbc798242f57d3af)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -57,31 +57,33 @@
public MessageService getMessageService();
/**
- * Initialize a new lesson so as to start the learning process. It needs to
- * notify lams which learning design it belongs to. The initialize process
- * doesn't involve the setup of lesson class and organization.
+ * Initialize a new lesson so as to start the learning process. It needs to notify lams which learning design it
+ * belongs to. The initialize process doesn't involve the setup of lesson class and organization.
*
* @param lessonName
* the name of the lesson
* @param lessonDescription
* the description of the lesson.
* @param learnerExportAvailable
- * should the export portfolio option be made available to the
- * learner?
+ * should the export portfolio option be made available to the learner?
* @param learningDesignId
* the selected learning design
* @param organisationId
- * the copied sequence will be put in the default runtime
- * sequence folder for this org, if such a folder exists.
+ * the copied sequence will be put in the default runtime sequence folder for this org, if such a folder
+ * exists.
* @param userId
* the user who want to create this lesson.
* @param customCSV
* the custom comma separated values to be used by toolAdapters
+ * @param numberDaysToLessonFinish
+ * number of days the lesson will be available to user since he starts it. (lesson finish scheduling
+ * feature)
* @return the lesson initialized.
*/
public Lesson initializeLesson(String lessonName, String lessonDescription, Boolean learnerExportAvailable,
long learningDesignId, Integer organisationId, Integer userID, String customCSV,
- Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled);
+ Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled,
+ Integer numberDaysToLessonFinish);
/**
* Initialize a new lesson so as to start the learning process for a normal
@@ -220,11 +222,12 @@
*
* @param lessonId
* @param endDate
- * the lesson end date and time.
+ * number of days since lesson start when the lesson should be closed.
* @param userId
* checks that the user is a staff member for this lesson
*/
- public void finishLessonOnSchedule(long lessonId, Date endDate, Integer userId) throws UserAccessDeniedException;
+ public void finishLessonOnSchedule(long lessonId, int scheduledNumberDaysToLessonFinish, Integer userId)
+ throws UserAccessDeniedException;
/**
* Finish a lesson.A Finished lesson can be viewed on the monitoring
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java
===================================================================
diff -u -r4020e48e252d3a5a9ace181e62bb78900f05128b -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 4020e48e252d3a5a9ace181e62bb78900f05128b)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -28,6 +28,7 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.HashSet;
@@ -386,24 +387,23 @@
/**
*
- * Create new lesson according to the learning design specified by the user.
- * This involves following major steps:
+ * Create new lesson according to the learning design specified by the user. This involves following major steps:
*
*
- * 1. Make a runtime copy of static learning design defined in authoring
- * 2. Go through all the tool activities defined in the learning
- * design, create a runtime copy of all tool's content.
+ * 1. Make a runtime copy of static learning design defined in authoring 2. Go through all the tool
+ * activities defined in the learning design, create a runtime copy of all tool's content.
*
*
* As a runtime design, it is not copied into any folder.
*
*
- * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#initializeLesson(String,
- * String, long, Integer)
+ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#initializeLesson(String, String, long,
+ * Integer)
*/
public Lesson initializeLesson(String lessonName, String lessonDescription, Boolean learnerExportAvailable,
long learningDesignId, Integer organisationId, Integer userID, String customCSV,
- Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) {
+ Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled,
+ Integer scheduledNumberDaysToLessonFinish) {
LearningDesign originalLearningDesign = authoringService.getLearningDesign(new Long(learningDesignId));
if (originalLearningDesign == null) {
@@ -437,8 +437,9 @@
}
User user = userID != null ? (User) baseDAO.find(User.class, userID) : null;
- Lesson initializedLesson = initializeLesson(lessonName, lessonDescription, learnerExportAvailable, originalLearningDesign, user,
- runSeqFolder, LearningDesign.COPY_TYPE_LESSON, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled);
+ Lesson initializedLesson = initializeLesson(lessonName, lessonDescription, learnerExportAvailable,
+ originalLearningDesign, user, runSeqFolder, LearningDesign.COPY_TYPE_LESSON, customCSV,
+ learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, scheduledNumberDaysToLessonFinish);
Long initializedLearningDesignId = initializedLesson.getLearningDesign().getLearningDesignId();
logEventService.logEvent(LogEvent.TYPE_TEACHER_LESSON_CREATE, userID, initializedLearningDesignId, initializedLesson.getLessonId(), null);
@@ -461,12 +462,14 @@
User user = userID != null ? (User) baseDAO.find(User.class, userID) : null;
return initializeLesson(lessonName, lessonDescription, Boolean.TRUE, originalLearningDesign, user, null,
- LearningDesign.COPY_TYPE_PREVIEW, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled);
+ LearningDesign.COPY_TYPE_PREVIEW, customCSV, learnerPresenceAvailable, learnerImAvailable,
+ liveEditEnabled, null);
}
public Lesson initializeLesson(String lessonName, String lessonDescription, Boolean learnerExportAvailable,
LearningDesign originalLearningDesign, User user, WorkspaceFolder workspaceFolder, int copyType,
- String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled) {
+ String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled,
+ Integer scheduledNumberDaysToLessonFinish) {
// copy the current learning design
LearningDesign copiedLearningDesign = authoringService.copyLearningDesign(originalLearningDesign, new Integer(
@@ -482,9 +485,9 @@
}
Lesson lesson = createNewLesson(title, lessonDescription, user, learnerExportAvailable, copiedLearningDesign,
- learnerPresenceAvailable, learnerImAvailable, liveEditEnabled);
- auditAction(MonitoringService.AUDIT_LESSON_CREATED_KEY, new Object[] { lessonName,
- copiedLearningDesign.getTitle(), learnerExportAvailable });
+ learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, scheduledNumberDaysToLessonFinish);
+ auditAction(MonitoringService.AUDIT_LESSON_CREATED_KEY,
+ new Object[] { lessonName, copiedLearningDesign.getTitle(), learnerExportAvailable });
return lesson;
}
@@ -513,6 +516,7 @@
boolean learnerImAvailable = WDDXProcessor.convertToBoolean("enableIm", table.get("enableIm"));
boolean liveEditEnabled = WDDXProcessor.convertToBoolean("enableLiveEdit", table.get("enableLiveEdit"));
String customCSV = WDDXProcessor.convertToString(WDDXTAGS.CUSTOM_CSV, table.get(WDDXTAGS.CUSTOM_CSV));
+ Integer scheduledNumberDaysToLessonFinish = WDDXProcessor.convertToInteger("scheduledNumberDaysToLessonFinish", table.get("scheduledNumberDaysToLessonFinish"));
// initialize lesson
@@ -523,7 +527,8 @@
learnerPresenceAvailable, learnerImAvailable, liveEditEnabled);
} else {
newLesson = initializeLesson(title, desc, learnerExportAvailable, ldId, organisationId, creatorUserId,
- customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled);
+ customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled,
+ scheduledNumberDaysToLessonFinish);
}
if (newLesson != null) {
@@ -774,13 +779,23 @@
* @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#finishLessonOnSchedule(long
* , Date , User)
*/
- public void finishLessonOnSchedule(long lessonId, Date endDate, Integer userId) {
+ public void finishLessonOnSchedule(long lessonId, int scheduledNumberDaysToLessonFinish, Integer userId) {
// we get the lesson want to finish
Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId));
if (requestedLesson == null) {
throw new MonitoringServiceException("Lesson for id=" + lessonId + " is missing. Unable to start lesson.");
}
checkOwnerOrStaffMember(userId, requestedLesson, "finish lesson on schedule");
+
+ //calculate finish date
+ Date startDate = (requestedLesson.getStartDateTime() != null) ? requestedLesson.getStartDateTime() : requestedLesson.getScheduleStartDate();
+ if (startDate == null) {
+ throw new MonitoringServiceException("Lesson with id=" + lessonId + " neither has been started nor scheduled to start. Unable to schedule lesson's finish.");
+ }
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(startDate);
+ calendar.add(Calendar.DATE, scheduledNumberDaysToLessonFinish);
+ Date endDate = calendar.getTime();
JobDetail finishLessonJob = getFinishScheduleLessonJob();
// setup the message for scheduling job
@@ -795,6 +810,7 @@
// start the scheduling job
try {
requestedLesson.setScheduleEndDate(endDate);
+ lessonDAO.updateLesson(requestedLesson);
scheduler.scheduleJob(finishLessonJob, finishLessonTrigger);
} catch (SchedulerException e) {
throw new MonitoringServiceException("Error occurred at "
@@ -2029,9 +2045,9 @@
*/
private Lesson createNewLesson(String lessonName, String lessonDescription, User user,
Boolean learnerExportAvailable, LearningDesign copiedLearningDesign, Boolean learnerPresenceAvailable,
- Boolean learnerImAvailable, Boolean liveEditEnabled) {
+ Boolean learnerImAvailable, Boolean liveEditEnabled, Integer scheduledNumberDaysToLessonFinish) {
Lesson newLesson = Lesson.createNewLessonWithoutClass(lessonName, lessonDescription, user,
- learnerExportAvailable, copiedLearningDesign, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled);
+ learnerExportAvailable, copiedLearningDesign, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, scheduledNumberDaysToLessonFinish);
lessonDAO.saveLesson(newLesson);
return newLesson;
}
@@ -2786,13 +2802,14 @@
String customCSV = WDDXProcessor.convertToString(WDDXTAGS.CUSTOM_CSV, table.get(WDDXTAGS.CUSTOM_CSV));
boolean liveEditEnabled = WDDXProcessor.convertToBoolean("enableLiveEdit", table.get("enableLiveEdit"));
int numLessons = WDDXProcessor.convertToInt("numberLessonsSplit", table.get("numberLessonsSplit"));
+ Integer scheduledNumberDaysToLessonFinish = WDDXProcessor.convertToInteger("scheduledNumberDaysToLessonFinish", table.get("scheduledNumberDaysToLessonFinish"));
// initialise multiple lessons
if (numLessons > 0) {
for (int i = 1; i <= numLessons; i++) {
Lesson newLesson = initializeLesson(title + " " + i, desc, learnerExportAvailable, ldId,
- organisationId, creatorUserId, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled);
+ organisationId, creatorUserId, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, scheduledNumberDaysToLessonFinish);
lessonIds.add(newLesson.getLessonId());
}
}
@@ -2958,7 +2975,7 @@
.getLessonDescription(), lesson.getLearnerExportAvailable(), lesson
.getLearningDesign().getLearningDesignId(), group.getOrganisationId(), userDto
.getUserID(), null, lesson.getLearnerPresenceAvailable(), lesson
- .getLearnerImAvailable(), lesson.getLiveEditEnabled());
+ .getLearnerImAvailable(), lesson.getLiveEditEnabled(), null);
// save LessonClasses
newLesson = this
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java
===================================================================
diff -u -r009fbce36f45d0929f8007c4bbc798242f57d3af -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 009fbce36f45d0929f8007c4bbc798242f57d3af)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -67,18 +67,18 @@
/**
- * The action servlet that provide all the monitoring functionalities. It
- * interact with the teacher via flash and JSP monitoring interface.
+ *
+ * The action servlet that provide all the monitoring functionalities. It interact with the teacher via flash and JSP
+ * monitoring interface.
+ *
*
* @author Jacky Fang
- * @since 2005-4-15
+ * @since 2005-4-15
* @version 1.1
*
* ----------------XDoclet Tags--------------------
*
- * @struts:action path="/monitoring"
- * parameter="method"
- * validate="false"
+ * @struts:action path="/monitoring" parameter="method" validate="false"
* @struts.action-forward name = "previewdeleted" path = "/previewdeleted.jsp"
* @struts.action-forward name = "notsupported" path = ".notsupported"
* @struts.action-forward name = "timeChart" path = "/timeChart.jsp"
@@ -194,7 +194,7 @@
Boolean learnerPresenceAvailable = WebUtil.readBooleanParam(request, "learnerPresenceAvailable", false);
Boolean learnerImAvailable = WebUtil.readBooleanParam(request, "learnerImAvailable", false);
Boolean liveEditEnabled = WebUtil.readBooleanParam(request, "liveEditEnabled", false);
- Lesson newLesson = monitoringService.initializeLesson(title,desc,learnerExportAvailable,ldId,organisationId,getUserId(), null, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled);
+ Lesson newLesson = monitoringService.initializeLesson(title,desc,learnerExportAvailable,ldId,organisationId,getUserId(), null, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, null);
flashMessage = new FlashMessage("initializeLesson",newLesson.getLessonId());
} catch (Exception e) {
@@ -328,9 +328,8 @@
try {
long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID);
- String dateStr = WebUtil.readStrParam(request, MonitoringConstants.PARAM_LESSON_FINISH_DATE);
- Date finishDate = DateFormat.getInstance().parse(dateStr);
- monitoringService.finishLessonOnSchedule(lessonId,finishDate,getUserId());
+ int scheduledNumberDaysToLessonFinish = WebUtil.readIntParam(request, MonitoringConstants.PARAM_SCHEDULED_NUMBER_DAYS_TO_LESSON_FINISH);
+ monitoringService.finishLessonOnSchedule(lessonId,scheduledNumberDaysToLessonFinish,getUserId());
flashMessage = new FlashMessage("finishOnScheduleLesson",Boolean.TRUE);
}catch (Exception e) {
flashMessage = handleException(e, "finishOnScheduleLesson", monitoringService);
@@ -732,6 +731,9 @@
languageCollection.add(new String("add.now.button.label"));
languageCollection.add(new String("advanced.tab.form.advanced.options.label"));
languageCollection.add(new String("advanced.tab.form.enable.im.label"));
+ languageCollection.add(new String("advanced.tab.form.time.limits.label"));
+ languageCollection.add(new String("advanced.tab.form.enter.number.days.label"));
+ languageCollection.add(new String("advanced.tab.form.individual.not.entire.group.label"));
languageCollection.add(new String("advanced.tab.form.scheduling.label"));
languageCollection.add(new String("advanced.tab.form.enable.label"));
languageCollection.add(new String("advanced.tab.form.validation.no.learners.error"));
Index: lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java
===================================================================
diff -u -r126d84999e520648cb187e465cb4aaa3baad222e -r1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e
--- lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 126d84999e520648cb187e465cb4aaa3baad222e)
+++ lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 1c1c6b24a18fffc7a7b2bccdee8fedb110d1669e)
@@ -157,7 +157,7 @@
long previousLDId = getMaxId(lamsLearningDesignTableName, idName);
Lesson testLesson = monitoringService.initializeLesson("Test_Lesson", "Test_Description", Boolean.TRUE,
- TEST_LEARNING_DESIGN_ID, null, testUser.getUserId(), null, false, false, false);
+ TEST_LEARNING_DESIGN_ID, null, testUser.getUserId(), null, false, false, false, null);
TestMonitoringService.TEST_LESSON_ID = testLesson.getLessonId();
Lesson createdLesson = lessonDao.getLesson(TestMonitoringService.TEST_LESSON_ID);
assertNotNull(createdLesson);