Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u -r1b6827c217b5614b1b625b5d70c5c82733e813bd -r6a1464e83458721fec7237d3dccfdf5e6214cc69 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 1b6827c217b5614b1b625b5d70c5c82733e813bd) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision 6a1464e83458721fec7237d3dccfdf5e6214cc69) @@ -86,7 +86,7 @@ public Lesson initializeLesson(String lessonName, String lessonDescription, Boolean learnerExportAvailable, long learningDesignId, Integer organisationId, Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled, - Boolean enableNotifications, Integer numberDaysToLessonFinish); + Boolean enableNotifications, Integer numberDaysToLessonFinish, Long precedingLessonId); /** * Initialize a new lesson so as to start the learning process for a normal @@ -895,8 +895,8 @@ /** Open Time Chart */ public Boolean openTimeChart(long lessonId, Integer userId) throws UserAccessDeniedException; - /** Get Organisation Name */ - public String getOrganisationName(Integer organisationId); + /** Get Organisation by organisationId */ + public Organisation getOrganisation(Integer organisationId); public void initToolSessionIfSuitable(ToolActivity activity, Lesson lesson); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r1b6827c217b5614b1b625b5d70c5c82733e813bd -r6a1464e83458721fec7237d3dccfdf5e6214cc69 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 1b6827c217b5614b1b625b5d70c5c82733e813bd) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 6a1464e83458721fec7237d3dccfdf5e6214cc69) @@ -416,14 +416,16 @@ public Lesson initializeLesson(String lessonName, String lessonDescription, Boolean learnerExportAvailable, long learningDesignId, Integer organisationId, Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled, - Boolean enableLessonNotifications, Integer scheduledNumberDaysToLessonFinish) { + Boolean enableLessonNotifications, Integer scheduledNumberDaysToLessonFinish, Long precedingLessonId) { LearningDesign originalLearningDesign = authoringService.getLearningDesign(new Long(learningDesignId)); if (originalLearningDesign == null) { throw new MonitoringServiceException("Learning design for id=" + learningDesignId + " is missing. Unable to initialize lesson."); } + Lesson precedingLesson = (precedingLessonId == null) ? null : lessonDAO.getLesson(precedingLessonId); + // The duplicated sequence should go in the run sequences folder under // the given organisation WorkspaceFolder runSeqFolder = null; @@ -452,7 +454,7 @@ 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, enableLessonNotifications, scheduledNumberDaysToLessonFinish); + learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, enableLessonNotifications, scheduledNumberDaysToLessonFinish, precedingLesson); Long initializedLearningDesignId = initializedLesson.getLearningDesign().getLearningDesignId(); logEventService.logEvent(LogEvent.TYPE_TEACHER_LESSON_CREATE, userID, initializedLearningDesignId, initializedLesson.getLessonId(), null); @@ -477,13 +479,13 @@ return initializeLesson(lessonName, lessonDescription, Boolean.TRUE, originalLearningDesign, user, null, LearningDesign.COPY_TYPE_PREVIEW, customCSV, learnerPresenceAvailable, learnerImAvailable, - liveEditEnabled, null, null); + liveEditEnabled, null, null, 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, - Boolean enableLessonNotifications, Integer scheduledNumberDaysToLessonFinish) { + Boolean enableLessonNotifications, Integer scheduledNumberDaysToLessonFinish, Lesson precedingLesson) { // copy the current learning design LearningDesign copiedLearningDesign = authoringService.copyLearningDesign(originalLearningDesign, new Integer( @@ -500,7 +502,7 @@ Lesson lesson = createNewLesson(title, lessonDescription, user, learnerExportAvailable, copiedLearningDesign, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, enableLessonNotifications, - scheduledNumberDaysToLessonFinish); + scheduledNumberDaysToLessonFinish, precedingLesson); auditAction(MonitoringService.AUDIT_LESSON_CREATED_KEY, new Object[] { lessonName, copiedLearningDesign.getTitle(), learnerExportAvailable }); return lesson; @@ -533,7 +535,8 @@ Boolean enableLessonNotifications = WDDXProcessor.convertToBoolean("enableLessonNotifications", table.get("enableLessonNotifications")); String customCSV = WDDXProcessor.convertToString(WDDXTAGS.CUSTOM_CSV, table.get(WDDXTAGS.CUSTOM_CSV)); Integer scheduledNumberDaysToLessonFinish = WDDXProcessor.convertToInteger("scheduledNumberDaysToLessonFinish", table.get("scheduledNumberDaysToLessonFinish")); - + Long precedingLessonId = WDDXProcessor.convertToLong("organisationID", table.get("precedingLessonID")); + // initialize lesson Lesson newLesson = null; @@ -544,7 +547,7 @@ } else { newLesson = initializeLesson(title, desc, learnerExportAvailable, ldId, organisationId, creatorUserId, customCSV, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, enableLessonNotifications, - scheduledNumberDaysToLessonFinish); + scheduledNumberDaysToLessonFinish, precedingLessonId); } if (newLesson != null) { @@ -2230,10 +2233,17 @@ private Lesson createNewLesson(String lessonName, String lessonDescription, User user, Boolean learnerExportAvailable, LearningDesign copiedLearningDesign, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled, Boolean enableLessonNotifications, - Integer scheduledNumberDaysToLessonFinish) { + Integer scheduledNumberDaysToLessonFinish, Lesson precedingLesson) { Lesson newLesson = Lesson.createNewLessonWithoutClass(lessonName, lessonDescription, user, learnerExportAvailable, copiedLearningDesign, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, enableLessonNotifications, scheduledNumberDaysToLessonFinish); + if (precedingLesson != null) { + HashSet precedingLessons = new HashSet(); + precedingLessons.add(precedingLesson); + newLesson.setPrecedingLessons(precedingLessons); +// newLesson.getPrecedingLessons().add(precedingLesson); + } + lessonDAO.saveLesson(newLesson); return newLesson; } @@ -2990,13 +3000,14 @@ Boolean enableLessonNotifications = WDDXProcessor.convertToBoolean("enableLessonNotifications", table.get("enableLessonNotifications")); int numLessons = WDDXProcessor.convertToInt("numberLessonsSplit", table.get("numberLessonsSplit")); Integer scheduledNumberDaysToLessonFinish = WDDXProcessor.convertToInteger("scheduledNumberDaysToLessonFinish", table.get("scheduledNumberDaysToLessonFinish")); - + Long precedingLessonId = WDDXProcessor.convertToLong("organisationID", table.get("precedingLessonID")); + // initialize 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, enableLessonNotifications, scheduledNumberDaysToLessonFinish); + liveEditEnabled, enableLessonNotifications, scheduledNumberDaysToLessonFinish, precedingLessonId); lessonIds.add(newLesson.getLessonId()); } } @@ -3118,9 +3129,8 @@ groupDAO.saveGroup(group); } - public String getOrganisationName(Integer organisationId) { - Organisation org = (Organisation) baseDAO.find(Organisation.class, organisationId); - return org.getName(); + public Organisation getOrganisation(Integer organisationId) { + return (Organisation) baseDAO.find(Organisation.class, organisationId); } /** @@ -3163,7 +3173,7 @@ .getLearningDesign().getLearningDesignId(), group.getOrganisationId(), userDto .getUserID(), null, lesson.getLearnerPresenceAvailable(), lesson .getLearnerImAvailable(), lesson.getLiveEditEnabled(), lesson - .getEnableLessonNotifications(), null); + .getEnableLessonNotifications(), null, null); // save LessonClasses newLesson = this Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== diff -u -r1b6827c217b5614b1b625b5d70c5c82733e813bd -r6a1464e83458721fec7237d3dccfdf5e6214cc69 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 1b6827c217b5614b1b625b5d70c5c82733e813bd) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 6a1464e83458721fec7237d3dccfdf5e6214cc69) @@ -26,32 +26,25 @@ import java.io.IOException; import java.io.PrintWriter; -import java.text.DateFormat; import java.util.ArrayList; import java.util.Date; -import java.util.TimeZone; -import java.util.TreeSet; +import java.util.Set; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts.action.ActionForm; -import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.monitoring.MonitoringConstants; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; -import org.lamsfoundation.lams.timezone.Timezone; -import org.lamsfoundation.lams.timezone.dto.TimezoneDTO; import org.lamsfoundation.lams.timezone.service.ITimezoneService; -import org.lamsfoundation.lams.timezone.util.TimezoneComparator; -import org.lamsfoundation.lams.timezone.util.TimezoneDTOComparator; import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; -import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; import org.lamsfoundation.lams.util.DateUtil; @@ -194,7 +187,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, Boolean.FALSE, null); + Lesson newLesson = monitoringService.initializeLesson(title,desc,learnerExportAvailable,ldId,organisationId,getUserId(), null, learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, Boolean.FALSE, null, null); flashMessage = new FlashMessage("initializeLesson",newLesson.getLessonId()); } catch (Exception e) { @@ -682,14 +675,9 @@ MessageService messageService = monitoringService.getMessageService(); String module = WebUtil.readStrParam(request,"module",false); - Integer orgId = WebUtil.readIntParam(request,"orgId",true); - - String orgName = null; - if(orgId != null) orgName = monitoringService.getOrganisationName(orgId); ArrayList languageCollection = new ArrayList(); - - if(module.equals("wizard")) { + if(module.equals("wizard")) { // pre-existing flash app (AS 2.0) labels languageCollection.add(new String("sys.error.msg.start")); languageCollection.add(new String("sys.error")); @@ -743,6 +731,8 @@ languageCollection.add(new String("class.tab.print.name.label")); languageCollection.add(new String("class.tab.heading.label")); languageCollection.add(new String("advanced.tab.form.validation.schedule.date.error")); + languageCollection.add(new String("conditions.tab.label")); + languageCollection.add(new String("conditions.tab.form.preceding.label")); } else if(module.equals("timechart")) { @@ -769,21 +759,44 @@ languageCollection.add(new String("alert.no.learner.data")); } - String languageOutput = ""; - - for(int i = 0; i < languageCollection.size(); i++){ - languageOutput += "" + messageService.getMessage(languageCollection.get(i)) + ""; + String languageOutput = ""; + + for (int i = 0; i < languageCollection.size(); i++) { + languageOutput += "" + + messageService.getMessage(languageCollection.get(i)) + ""; + } + + Integer orgId = WebUtil.readIntParam(request, "orgId", true); + if (module.equals("wizard") && (orgId != null)) { + + Organisation organisation = monitoringService.getOrganisation(orgId); + + int count = 0; + for (Lesson lesson : (Set) organisation.getLessons()) { + if (!Lesson.REMOVED_STATE.equals(lesson.getLessonStateId()) + && !Lesson.FINISHED_STATE.equals(lesson.getLessonStateId())) { + languageOutput += "" + + "" + lesson.getLessonName() + "" + + "" + lesson.getLessonId() + "" + + ""; } - - if(module.equals("wizard") && (orgName != null)) { - languageOutput += "" + orgName + ""; - } - - languageOutput += ""; - - response.setContentType("text/xml"); - response.setCharacterEncoding("UTF-8"); - response.getWriter().print(languageOutput); + } + +// // sort lessons +// TreeSet lessons = new TreeSet(new TimezoneComparator()); +// lessons.addAll(getTimezoneService().getDefaultTimezones()); + + // let Flex know the number of lessons + languageOutput += "" + count + ""; + + languageOutput += "" + organisation.getName() + ""; + } + + languageOutput += ""; + + response.setContentType("text/xml"); + response.setCharacterEncoding("UTF-8"); + response.getWriter().print(languageOutput); return null; } Index: lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java =================================================================== diff -u -rcb6d628cd53fe3d51e4f67cbaff7390651a048da -r6a1464e83458721fec7237d3dccfdf5e6214cc69 --- lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision cb6d628cd53fe3d51e4f67cbaff7390651a048da) +++ lams_monitoring/test/java/org/lamsfoundation/lams/monitoring/service/TestMonitoringService.java (.../TestMonitoringService.java) (revision 6a1464e83458721fec7237d3dccfdf5e6214cc69) @@ -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, false, null); + TEST_LEARNING_DESIGN_ID, null, testUser.getUserId(), null, false, false, false, false, null, null); TestMonitoringService.TEST_LESSON_ID = testLesson.getLessonId(); Lesson createdLesson = lessonDao.getLesson(TestMonitoringService.TEST_LESSON_ID); assertNotNull(createdLesson); Index: lams_monitoring/web/CloudWizard.swf =================================================================== diff -u -r1b6827c217b5614b1b625b5d70c5c82733e813bd -r6a1464e83458721fec7237d3dccfdf5e6214cc69 Binary files differ