Index: lams_admin/.classpath =================================================================== diff -u -rd0a703641dee45b84a2cd9a011376a8f0d72c9fb -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_admin/.classpath (.../.classpath) (revision d0a703641dee45b84a2cd9a011376a8f0d72c9fb) +++ lams_admin/.classpath (.../.classpath) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -4,7 +4,6 @@ - Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/CloneLessonsAction.java =================================================================== diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/CloneLessonsAction.java (.../CloneLessonsAction.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/action/CloneLessonsAction.java (.../CloneLessonsAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -52,14 +52,6 @@ /** * @author jliew - * - * - * - * - * - * - * - * */ public class CloneLessonsAction extends Action { @@ -218,13 +210,12 @@ learnerIds = learners.split(","); } - CloneLessonsAction.monitoringService = AdminServiceProxy.getMonitoringService(getServlet().getServletContext()); + monitoringService = AdminServiceProxy.getMonitoringService(getServlet().getServletContext()); int result = 0; - Organisation group = (Organisation) CloneLessonsAction.userManagementService.findById(Organisation.class, - groupId); + Organisation group = monitoringService.getOrganisation(groupId); if (group != null) { - result = CloneLessonsAction.monitoringService.cloneLessons(lessonIds, addAllStaff, addAllLearners, staffIds, + result = monitoringService.cloneLessons(lessonIds, addAllStaff, addAllLearners, staffIds, learnerIds, group); } else { throw new UserException("Couldn't find Organisation based on id=" + groupId); Index: lams_central/.classpath =================================================================== diff -u -rf4502360cd44d86d57b095aea5aef7ce663c8b61 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_central/.classpath (.../.classpath) (revision f4502360cd44d86d57b095aea5aef7ce663c8b61) +++ lams_central/.classpath (.../.classpath) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -4,7 +4,6 @@ - Index: lams_common/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -0,0 +1,344 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +package org.lamsfoundation.lams.monitoring.service; + +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; +import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.lesson.service.LessonServiceException; +import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; +import org.lamsfoundation.lams.usermanagement.Organisation; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; + +/** + * Interface defines all monitoring services needed by presentation tier. + * + * @author Jacky Fang 2/02/2005 + * @author Manpreet Minhas + */ +public interface IMonitoringService { + + /** + * Intialise lesson without creating Learning Design copy, i.e. the original LD will be used. + */ + Lesson initializeLessonWithoutLDcopy(String lessonName, String lessonDescription, long learningDesignID, User user, + String customCSV, Boolean enableLessonIntro, Boolean displayDesignImage, Boolean learnerPresenceAvailable, + Boolean learnerImAvailable, Boolean liveEditEnabled, Boolean enableLessonNotifications, + Boolean forceLearnerRestart, Boolean allowLearnerRestart, Boolean gradebookOnComplete, + Integer scheduledNumberDaysToLessonFinish, Lesson precedingLesson); + + /** + *

+ * 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.
  • + * + *

    + * As a runtime design, it is not copied into any folder. + *

    + * + *

    + * The initialization 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 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. + * @param userId + * the user who want to create this lesson. + * @param customCSV + * the custom comma separated values to be used by toolAdapters + * @param enableLessonIntro + * display an intro page to the lesson + * @param displayDesignImage + * display the design image or not + * @param enableNotifications + * enable "email notifications" link for the current lesson + * @param numberDaysToLessonFinish + * number of days the lesson will be available to user since he starts it. (lesson finish scheduling + * feature) + * @return the lesson initialized. + */ + Lesson initializeLesson(String lessonName, String lessonDescription, long learningDesignId, Integer organisationId, + Integer userID, String customCSV, Boolean enableLessonIntro, Boolean displayDesignImage, + Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled, + Boolean enableNotifications, Boolean forceLearnerRestart, Boolean allowLearnerRestart, + Boolean gradebookOnComplete, Integer numberDaysToLessonFinish, Long precedingLessonId); + + /** + * Create new lesson according to the learning design specified by the user, but for a preview session rather than a + * normal learning session. The design is not assigned to any workspace folder. + */ + Lesson initializeLessonForPreview(String lessonName, String lessonDescription, long learningDesignId, + Integer userID, String customCSV, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, + Boolean liveEditEnabled); + + /** + * Setup the lesson class and organization for a lesson according to the input from monitoring GUI interface. + * + *

    + * Pre-condition: This method must be called under the condition of the the new lesson exists (without lesson + * class). + *

    + *

    + * A lesson class record should be inserted and organization should be setup after execution of this service. + *

    + * + * @param lessonId + * the lesson without lesson class and organization + * @param organisation + * the organization this lesson belongs to. + * @param learnerGroupName + * name of learner group + * @param organizationUsers + * a list of learner will be in this new lessons. + * @param staffGroupName + * name of staff group + * @param staffs + * a list of staffs who will be in charge of this lesson. + */ + void createLessonClassForLesson(long lessonId, Organisation organisation, String learnerGroupName, + List organizationUsers, String staffGroupName, List staffs, Integer userID) + throws UserAccessDeniedException; + + /** + * Start the specified the lesson. It must be created before calling this service. + * + * @param lessonId + * the specified the lesson id. + * @param userId + * checks that the user is a staff member for this lesson + * @throws LamsToolServiceException + * the exception occurred during the lams and tool interaction to start a lesson. + */ + void startLesson(long lessonId, Integer userId) throws UserAccessDeniedException; + + /** + * Do any normal initialisation needed for gates and branching. Done both when a lesson is started, or for new + * activities added during a Live Edit. Returns a new MaxID for the design if needed. If MaxID is returned, update + * the design with this new value and save the whole design (as initialiseSystemActivities has changed the design). + */ + Integer startSystemActivity(Activity activity, Integer currentMaxId, Date lessonStartTime, String lessonName); + + /** + * Start a lesson on scheduled datetime. + * + * @param lessonId + * @param startDate + * the lesson start date and time. + * @param userId + * checks that the user is a staff member for this lesson + * @see org.lamsfoundation.lams.monitoring.service#startLesson(long) + */ + void startLessonOnSchedule(long lessonId, Date startDate, Integer userId) throws UserAccessDeniedException; + + /** + * Finish a lesson on scheduled datetime based on days in the lesson runs for + * + * @param lessonId + * @param endDate + * 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 + */ + void finishLessonOnSchedule(long lessonId, int scheduledNumberDaysToLessonFinish, Integer userId) + throws UserAccessDeniedException; + + /** + * Finish a lesson on scheduled datetime. + * + * @param lessonId + * @param endDate + * 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 + */ + void finishLessonOnSchedule(long lessonId, Date endDate, Integer userId) + throws UserAccessDeniedException; + + /** + *

    + * Teachers sometimes find that there are just too many "old" designs and wish to remove them and never access them + * again. This function disables the lesson - it does not remove the contents from the database + *

    + * + * @param lessonId + * the specified the lesson id. + * @param userId + * checks that the user is a staff member for this lesson + */ + void removeLesson(long lessonId, Integer userId) throws SecurityException; + + /** + * Removes the lesson and all referenced resources (learning design, tool content etc.) from the database. + */ + void removeLessonPermanently(long lessonId, Integer userId) throws SecurityException; + + /** + * Return an activity object based on the requested id. + * + * @param activityId + * id of the activity. + * @return the requested activity object. + */ + Activity getActivityById(Long activityId); + + /** + * Return an activity object based on the requested id. Where possible, give it the type we want so that it can be + * cast properly. + * + * @param activityId + * id of the activity. + * @return the requested activity object. + */ + @SuppressWarnings("rawtypes") + Activity getActivityById(Long activityId, Class clasz); + + /** + * Return an activity object based on the requested id. + * + * @param activityId + * id of the activity. + * @return the requested activity object. + */ + GroupingActivity getGroupingActivityById(Long activityID); + + // --------------------------------------------------------------------- + // Preview Methods + // --------------------------------------------------------------------- + /** + * Create the lesson class and the staff class for a preview lesson. The lesson is not attached to any organisation. + * + * @param userID + * User ID of the teacher running the preview. Mandatory. + * @param lessonID + * ID of the lesson + */ + abstract void createPreviewClassForLesson(int userID, long lessonID) throws UserAccessDeniedException; + + /** + * Get all the users records where the user has attempted the given activity, but has not completed it yet. Uses the + * progress records to determine the users. + */ + List getLearnersAttemptedActivity(Activity activity); + + /** + * give the users in all tool sessions for an activity (if it is a tool activity) or it will give all the users who + * have attempted an activity that doesn't have any tool sessions, i.e. system activities such as branching. + */ + List getLearnersAttemptedOrCompletedActivity(Activity activity) throws LessonServiceException; + + /** + * Get learners who most recently entered finished the lesson. + */ + List getLearnersLatestCompleted(Long lessonId, Integer limit, Integer offset); + + /** + * Get learners whose first name, last name or login match any of the tokens from search phrase. Sorts either by + * name or, if orderByCompletion is set, by most progressed first. Used mainly by Learners tab in Monitoring + * interface. + */ + List getLearnersByMostProgress(Long lessonId, String searchPhrase, Integer limit, Integer offset); + + /** + * Get learners who most recently entered the activity. + */ + List getLearnersLatestByActivity(Long activityId, Integer limit, Integer offset); + + /** + * Get learners who are at the given activities at the moment. + */ + List getLearnersByActivities(Long[] activityIds, Integer limit, Integer offset, boolean orderAscending); + + /** + * Get number of learners whose first name, last name or login match any of the tokens from search phrase. + */ + Integer getCountLearnersFromProgress(Long lessonId, String searchPhrase); + + /** + * Get number of learners who are at the given activities at the moment. + */ + Map getCountLearnersCurrentActivities(Long[] activityIds); + + /** + * Get number of learners who finished the given lesson. + */ + Integer getCountLearnersCompletedLesson(Long lessonId); + + /** Get Organisation by organisationId */ + Organisation getOrganisation(Integer organisationId); + + /** + * Used in admin to clone lessons using the given lesson Ids (from another group) into the given group. Given staff + * and learner ids should already be members of the group. + * + * @param lessonIds + * @param addAllStaff + * @param addAllLearners + * @param staffIds + * @param learnerIds + * @param group + * @return number of lessons created. + * @throws MonitoringServiceException + */ + int cloneLessons(String[] lessonIds, Boolean addAllStaff, Boolean addAllLearners, String[] staffIds, + String[] learnerIds, Organisation group) throws MonitoringServiceException; + + /** + * Same as cloneLessons method, except it clones only one lesson. + * + * @param lessonId + * @param creatorId + * @param addAllStaff + * @param addAllLearners + * @param staffIds + * @param learnerIds + * @param group + * @return + * @throws MonitoringServiceException + */ + Long cloneLesson(Long lessonId, Integer creatorId, Boolean addAllStaff, Boolean addAllLearners, String[] staffIds, + String[] learnerIds, Organisation group) throws MonitoringServiceException; + + void removeLearnerContent(Long lessonId, Integer learnerId); + + /** + * Get list of users who completed the given lesson. + */ + List getUsersCompletedLesson(Long lessonId, Integer limit, Integer offset, boolean orderAscending); +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringServiceException.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringServiceException.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringServiceException.java (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -0,0 +1,67 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + +package org.lamsfoundation.lams.monitoring.service; + +/** + * Runtime exception that wraps the error condition occurred at monitoring + * side. + * + * @author Jacky Fang + * @since 2005-4-14 + * @version 1.1 + * + */ +public class MonitoringServiceException extends RuntimeException { + + /** + * + */ + public MonitoringServiceException() { + super(); + } + + /** + * @param message + */ + public MonitoringServiceException(String message) { + super(message); + } + + /** + * @param cause + */ + public MonitoringServiceException(Throwable cause) { + super(cause); + } + + /** + * @param message + * @param cause + */ + public MonitoringServiceException(String message, Throwable cause) { + super(message, cause); + } + +} Index: lams_gradebook/.classpath =================================================================== diff -u -rf4502360cd44d86d57b095aea5aef7ce663c8b61 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_gradebook/.classpath (.../.classpath) (revision f4502360cd44d86d57b095aea5aef7ce663c8b61) +++ lams_gradebook/.classpath (.../.classpath) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -4,7 +4,6 @@ - Index: lams_learning/.classpath =================================================================== diff -u -rb9b153e3351a6d26dea64756388f144ce8b1ae51 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_learning/.classpath (.../.classpath) (revision b9b153e3351a6d26dea64756388f144ce8b1ae51) +++ lams_learning/.classpath (.../.classpath) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -20,7 +20,6 @@ - Index: lams_learning/src/java/org/lamsfoundation/lams/learning/command/CommandWebsocketServer.java =================================================================== diff -u -rcad6ecebe29a61651bdf8c7500a6a17471c65970 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_learning/src/java/org/lamsfoundation/lams/learning/command/CommandWebsocketServer.java (.../CommandWebsocketServer.java) (revision cad6ecebe29a61651bdf8c7500a6a17471c65970) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/command/CommandWebsocketServer.java (.../CommandWebsocketServer.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -18,8 +18,6 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.learning.command.model.Command; import org.lamsfoundation.lams.learning.service.ILearnerFullService; -import org.lamsfoundation.lams.learning.service.ILearnerService; -import org.lamsfoundation.lams.learning.service.LearnerService; import org.lamsfoundation.lams.util.hibernate.HibernateSessionManager; import org.lamsfoundation.lams.web.session.SessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; Index: lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java =================================================================== diff -u -rcad6ecebe29a61651bdf8c7500a6a17471c65970 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision cad6ecebe29a61651bdf8c7500a6a17471c65970) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/service/LearnerService.java (.../LearnerService.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -52,7 +52,6 @@ import org.lamsfoundation.lams.learningdesign.BranchingActivity; import org.lamsfoundation.lams.learningdesign.ComplexActivity; import org.lamsfoundation.lams.learningdesign.ConditionGateActivity; -import org.lamsfoundation.lams.learningdesign.DataFlowObject; import org.lamsfoundation.lams.learningdesign.GateActivity; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.GroupUser; @@ -67,7 +66,6 @@ import org.lamsfoundation.lams.learningdesign.ToolBranchingActivity; import org.lamsfoundation.lams.learningdesign.Transition; 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.learningdesign.dto.ActivityPositionDTO; Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/CloseScheduleGateJob.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/CloseScheduleGateJob.java (.../CloseScheduleGateJob.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/CloseScheduleGateJob.java (.../CloseScheduleGateJob.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -27,7 +27,7 @@ import java.util.Map; import org.apache.log4j.Logger; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -37,7 +37,6 @@ * * @author Jacky Fang * @since 2005-4-12 - * @version 1.1 */ public class CloseScheduleGateJob extends MonitoringJob { @@ -51,7 +50,7 @@ */ @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { - IMonitoringService monitoringService = getMonitoringService(context); + IMonitoringFullService monitoringService = getMonitoringService(context); //getting gate id set from scheduler Map properties = context.getJobDetail().getJobDataMap(); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/EmailScheduleMessageJob.java =================================================================== diff -u -r6f214206866d2d5d96d2c98655707c7588402aef -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/EmailScheduleMessageJob.java (.../EmailScheduleMessageJob.java) (revision 6f214206866d2d5d96d2c98655707c7588402aef) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/EmailScheduleMessageJob.java (.../EmailScheduleMessageJob.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -29,7 +29,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.events.IEventNotificationService; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.hibernate.HibernateSessionManager; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -51,7 +51,7 @@ @SuppressWarnings("rawtypes") @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { - IMonitoringService monitoringService = getMonitoringService(context); + IMonitoringFullService monitoringService = getMonitoringService(context); IEventNotificationService eventNotificationService = getEventNotificationService(context); Map properties = context.getJobDetail().getJobDataMap(); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/FinishScheduleLessonJob.java =================================================================== diff -u -r621f712588dcf37f4bc18add622143483cdfc267 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/FinishScheduleLessonJob.java (.../FinishScheduleLessonJob.java) (revision 621f712588dcf37f4bc18add622143483cdfc267) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/FinishScheduleLessonJob.java (.../FinishScheduleLessonJob.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -28,7 +28,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.monitoring.MonitoringConstants; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -40,7 +40,7 @@ @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { - IMonitoringService monitoringService = getMonitoringService(context); + IMonitoringFullService monitoringService = getMonitoringService(context); //getting gate id set from scheduler Map properties = context.getJobDetail().getJobDataMap(); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/MonitoringJob.java =================================================================== diff -u -r8714ac689fdad46746bbb7f28005ec080d1d4ba6 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/MonitoringJob.java (.../MonitoringJob.java) (revision 8714ac689fdad46746bbb7f28005ec080d1d4ba6) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/MonitoringJob.java (.../MonitoringJob.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -25,7 +25,7 @@ package org.lamsfoundation.lams.monitoring.quartz.job; import org.lamsfoundation.lams.events.IEventNotificationService; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.SchedulerContext; @@ -52,8 +52,8 @@ } } - protected IMonitoringService getMonitoringService(JobExecutionContext context) throws JobExecutionException { - return (IMonitoringService) getService(context, MonitoringJob.MONITORING_SERVICE_NAME); + protected IMonitoringFullService getMonitoringService(JobExecutionContext context) throws JobExecutionException { + return (IMonitoringFullService) getService(context, MonitoringJob.MONITORING_SERVICE_NAME); } protected IEventNotificationService getEventNotificationService(JobExecutionContext context) Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/OpenScheduleGateJob.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/OpenScheduleGateJob.java (.../OpenScheduleGateJob.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/quartz/job/OpenScheduleGateJob.java (.../OpenScheduleGateJob.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -27,7 +27,7 @@ import java.util.Map; import org.apache.log4j.Logger; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -37,7 +37,6 @@ * * @author Jacky Fang * @since 2005-4-12 - * @version 1.1 * */ public class OpenScheduleGateJob extends MonitoringJob { @@ -52,7 +51,7 @@ */ @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { - IMonitoringService monitoringService = getMonitoringService(context); + IMonitoringFullService monitoringService = getMonitoringService(context); //getting gate id set from scheduler Map properties = context.getJobDetail().getJobDataMap(); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringFullService.java =================================================================== diff -u --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringFullService.java (revision 0) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringFullService.java (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -0,0 +1,363 @@ +package org.lamsfoundation.lams.monitoring.service; + +import java.io.IOException; +import java.util.Collection; +import java.util.Date; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Set; +import java.util.SortedSet; + +import org.lamsfoundation.lams.events.EmailNotificationArchive; +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.GateActivity; +import org.lamsfoundation.lams.learningdesign.Group; +import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.lesson.service.LessonServiceException; +import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO; +import org.lamsfoundation.lams.tool.exception.LamsToolServiceException; +import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.exception.UserAccessDeniedException; +import org.lamsfoundation.lams.util.ExcelCell; +import org.lamsfoundation.lams.util.MessageService; + +/** + * Contains methods intended for internal usage by lams_monitoring. + * + * @author Andrey Balan + */ +public interface IMonitoringFullService extends IMonitoringService { + + /** Get the message service, which gives access to the I18N text */ + MessageService getMessageService(); + + /** + * Set whether or not the learner presence button is available in monitor. Checks that the user is a staff member of + * this lesson before updating. + * + * @param lessonId + * @param userId + * @param learnerPresenceAvailable + * @return new value for learnerPresenceAvailable. Normally will be same as input parameter, will only be different + * if the value cannot be updated for some reason. + */ + Boolean togglePresenceAvailable(long lessonId, Integer userId, Boolean learnerPresenceAvailable); + + /** + * Set whether or not the learner IM button is available in monitor. Checks that the user is a staff member of this + * lesson before updating. + * + * @param lessonId + * @param userId + * @param learnerImPresenceAvailable + * @return new value for learnerPresenceImAvailable. Normally will be same as input parameter, will only be + * different if the value cannot be updated for some reason. + */ + Boolean togglePresenceImAvailable(long lessonId, Integer userId, Boolean learnerPresenceImAvailable); + + /** + * Set whether or not the live edit is available in monitor. Checks that the user is a staff member of this lesson + * before updating. + * + * @param lessonId + * @param userId + * @param liveEditEnabled + * @return new value for liveEditEnabled. Normally will be same as input parameter, will only be different if the + * value cannot be updated for some reason. + */ + Boolean toggleLiveEditEnabled(long lessonId, Integer userId, Boolean liveEditEnabled); + + /** Set whether or not to display the gradebook activity scores at the end of a lesson */ + Boolean toggleGradebookOnComplete(long lessonId, Integer userId, Boolean gradebookOnComplete); + + String forceCompleteActivitiesByUser(Integer learnerId, Integer requesterId, long lessonId, Long activityId, + boolean removeLearnerContent); + + /** + * Archive the specified lesson. When archived, the data is retained but the learners cannot access the details. + * + * @param lessonId + * the specified the lesson id. + * @param userId + * checks that the user is a staff member for this lesson + */ + void archiveLesson(long lessonId, Integer userId) throws UserAccessDeniedException; + + /** + * Unarchive the specified the lesson. Reverts back to its previous state. + * + * @param lessonId + * the specified the lesson id. + */ + void unarchiveLesson(long lessonId, Integer userId); + + /** + * Suspend lesson now! A lesson can only be suspended if it is started. The purpose of suspending is to hide the lesson from learners + * temporarily. + * + * @param lessonId + * the lesson ID which will be suspended. + * @param userId + * checks that the user is a staff member for this lesson + * @param clearScheduleDetails + * should it remove any triggers set up to suspend the lesson and clear the schedule date field. true if user suspending right now, + * false if this is being called by the trigger + */ + void suspendLesson(long lessonId, Integer userId, boolean removeTriggers) throws UserAccessDeniedException; + + /** + * Unsuspend a lesson, which state must be Lesson.SUSPEND_STATE. Returns the lesson back to its previous state. + * Otherwise an exception will be thrown. + * + * @param lessonId + * @param userId + * checks that the user is a staff member for this lesson + */ + void unsuspendLesson(long lessonId, Integer userId) throws UserAccessDeniedException; + + + /** + * Set the gate to open to let all the learners through. This learning service is triggerred by the system + * scheduler. Will return true GateActivity (or subclass) object, rather than a hibernate proxy. This is needed so + * that the class can be returned to the web layer for proper handling. + * + * @param gate + * the id of the gate we need to open. + */ + GateActivity openGate(Long gateId); + + /** + * Allows a single learner to pass the gate. + * + * @param gateId + * @param userId + * @return + */ + GateActivity openGateForSingleUser(Long gateId, Integer[] userIds); + + /** + * Set the gate to closed. + * + * @param gate + * the id of the gate we need to close. + */ + GateActivity closeGate(Long gateId); + + /** Update the schedule gate date/time */ + GateActivity scheduleGate(Long gateId, Date schedulingDatetime, Integer userId); + + /** + * Returns users by search type criteria. It's sorted by first and last user names. + * + * @param searchType + * one of 11 constants from MonitoringConstants defining search type + * @param lessonId + * @param lessonIds + * @param activityId + * @param xDaystoFinish + * @param orgId + * @return + */ + Collection getUsersByEmailNotificationSearchType(int searchType, Long lessonId, String[] lessonIds, + Long activityId, Integer xDaystoFinish, Integer orgId); + + /** + * This method returns the url associated with the activity in the monitoring enviornment. This is the URL that + * opens up when the user/teacher clicks on the activity in the monitoring enviornment and then selects a learner OR + * in the LEARNER tab when a learner's activity is clicked. + * + * This is also known as the learner progress url. + * + * @param lessonID + * The lesson_id of the Lesson for which the information has to be fetched. + * @param activityID + * The activity_id of the activity for which the URL is required + * @param learnerID + * The user_id of the Learner for whom the URL is being fetched + * @param requesterID + * The user_id of the user who is requesting the url + * @throws IOException + * @throws LamsToolServiceException + */ + String getLearnerActivityURL(Long lessonID, Long activityID, Integer learnerUserID, Integer requestingUserId) + throws IOException, LamsToolServiceException; + + /** + * This method returns the monitor url for the given activity + * + * @param lessonID + * The lesson_id of the Lesson for which the information has to be fetched. + * @param activityID + * The activity_id of the Activity whose URL will be returned + * @param userID + * The user id of the user requesting the url. + * @throws IOException + */ + String getActivityMonitorURL(Long lessonID, Long activityID, String contentFolderID, Integer userID) + throws IOException, LamsToolServiceException; + + /* Supports the Chosen Groupings and Branching */ + /** + * Get all the active learners in the lesson who are not in a group or in a branch. + * + * If the activity is a grouping activity, then set useCreatingGrouping = true to base the list on the create + * grouping. Otherwise leave it false and it will use the grouping applied to the activity - this is used for + * branching activities. + * + * @param activityID + * @param lessonID + * @param useCreateGrouping + * true/false for GroupingActivities, always false for non-GroupingActivities + * @return Sorted set of Users, sorted by surname + */ + SortedSet getClassMembersNotGrouped(Long lessonID, Long activityID, boolean useCreateGrouping); + + /** + * Add a new group to a grouping activity. If name already exists or the name is blank, does not add a new group. If + * the activity is a grouping activity, then set useCreatingGrouping = true to base the list on the create grouping. + * Otherwise leave it false and it will use the grouping applied to the activity - this is used for branching + * activities. + * + * If it is a teacher chosen branching activity and the grouping doesn't exist, it creates one. + * + * @param activityID + * id of the grouping activity + * @param name + * group name + * @throws LessonServiceException + * , MonitoringServiceException + */ + abstract Group addGroup(Long activityID, String name, boolean overrideMaxNumberOfGroups) + throws LessonServiceException, MonitoringServiceException; + + /** + * Remove a group to from a grouping activity. If the group does not exists then nothing happens. If the group is + * already used (e.g. a tool session exists) then it throws a LessonServiceException. + * + * If the activity is a grouping activity, then set useCreatingGrouping = true to base the list on the create + * grouping. Otherwise leave it false and it will use the grouping applied to the activity - this is used for + * branching activities. + * + * If it is a teacher chosen branching activity and the grouping doesn't exist, it creates one. + * + * @param activityID + * id of the grouping activity + * @param name + * group name + * @throws LessonServiceException + **/ + abstract void removeGroup(Long activityID, Long groupID) throws LessonServiceException; + + /** + * Add learners to a group. Doesn't necessarily check if the user is already in another group. + */ + abstract void addUsersToGroup(Long activityID, Long groupID, String learnerIDs[]) throws LessonServiceException; + + /** + * Add learners to a group based on their logins. Doesn't necessarily check if the user is already in another group. + */ + abstract int addUsersToGroupByLogins(Long activityID, String groupName, Set logins) throws LessonServiceException; + + /** + * Remove a user to a group. If the user is not in the group, then nothing is changed. + * + * @throws LessonServiceException + */ + abstract void removeUsersFromGroup(Long activityID, Long groupID, String learnerIDs[]) + throws LessonServiceException; + + /** + * Creates groups for branches, if they do not already exist. + */ + void createChosenBranchingGroups(Long branchingActivityID); + + /** + * Remove learners from a branch. Assumes there should only be one group for this branch. Use for Teacher Chosen + * Branching. Don't use for Group Based Branching as there could be more than one group for the branch. + * + * @param sequenceActivityID + * Activity id of the sequenceActivity representing this branch + * @param learnerIDs + * the IDS of the learners to be added. + */ + void removeUsersFromBranch(Long sequenceActivityID, String learnerIDs[]) throws LessonServiceException; + + /** + * Has anyone started this branch / branching activity ? Irrespective of the groups. Used to determine if a branch + * mapping can be removed. + */ + boolean isActivityAttempted(Activity activity) throws LessonServiceException; + + /** + * Match group(s) to a branch. Doesn't necessarily check if the group is already assigned to another branch. Use for + * Group Based Branching. + * + * @param sequenceActivityID + * Activity id of the sequenceActivity representing this branch + * @param learnerIDs + * the IDS of the learners to be added. + */ + void addGroupToBranch(Long sequenceActivityID, String groupIDs[]) throws LessonServiceException; + + /** + * Remove group / branch mapping. Cannot be done if any users in the group have started the branch. Used for group + * based branching in define later. + * + * @param sequenceActivityID + * Activity id of the sequenceActivity representing this branch + * @param learnerIDs + * the IDS of the learners to be added. + */ + void removeGroupFromBranch(Long sequenceActivityID, String groupIDs[]) throws LessonServiceException; + + /** + * Get all the groups that exist for the related grouping activity that have not been allocated to a branch. + * + * @param branchingActivityID + * Activity id of the branchingActivity + */ + SortedSet getGroupsNotAssignedToBranch(Long branchingActivityID) throws LessonServiceException; + + /** + * Generate an email containing the progress details for individual activities in a lesson. + * + * @return String[] {subject, email body} + */ + String[] generateLessonProgressEmail(Long lessonId, Integer userId); + + /** + * Save information about an email notification sent to learners. + */ + void archiveEmailNotification(Integer organisationId, Long lessonId, Integer searchType, String body, + Set recipients); + + /** + * Gets archived notifications for the given organisation. + */ + List getArchivedEmailNotifications(Integer organisationId); + + /** + * Gets archived notifications for the given lesson. + */ + List getArchivedEmailNotifications(Long lessonId); + + /** + * Gets pages recipients of the given archived email notification. + */ + List getArchivedEmailNotificationRecipients(Long emailNotificationUid, Integer limit, Integer offset); + + /** + * Exports the given email notification to Excel sheet + */ + LinkedHashMap exportArchivedEmailNotification(Long emailNotificationUid); + + /** + * Set a groups name + */ + void setGroupName(Long groupID, String name); + + /** Get the record of the learner's progress for a particular lesson */ + LearnerProgress getLearnerProgress(Integer learnerId, Long lessonId); + + List getAllContributeActivityDTO(Long lessonID); +} Fisheye: Tag 4338c54ef39ccdab47dc95d28deec40f23059633 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -rcad6ecebe29a61651bdf8c7500a6a17471c65970 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision cad6ecebe29a61651bdf8c7500a6a17471c65970) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -785,8 +785,25 @@ return newMaxId; } - @Override - public ScheduleGateActivity runGateScheduler(ScheduleGateActivity scheduleGate, Date schedulingStartTime, + /** + *

    + * Runs the system scheduler to start the scheduling for opening gate and closing gate. It invlovs a couple of steps + * to start the scheduler: + *

    + *
  • 1. Initialize the resource needed by scheduling job by setting them into the job data map.
  • + *
  • 2. Create customized triggers for the scheduling.
  • + *
  • 3. start the scheduling job
  • + * + * @param scheduleGate + * the gate that needs to be scheduled. + * @param schedulingStartTime + * the time on which the gate open should be based if an offset is used. For starting a lesson, this is + * the lessonStartTime. For live edit, it is now. + * @param lessonName + * the name lesson incorporating this gate - used for the description of the Quartz job. Optional. + * @returns An updated gate, that should be saved by the calling code. + */ + private ScheduleGateActivity runGateScheduler(ScheduleGateActivity scheduleGate, Date schedulingStartTime, String lessonName) { if (MonitoringService.log.isDebugEnabled()) { MonitoringService.log.debug("Running scheduler for gate " + scheduleGate.getActivityId() + "..."); @@ -904,12 +921,6 @@ } return gateActivity; } - - public void finishLesson(long lessonId, Integer userId) { - securityService.isLessonMonitor(lessonId, userId, "finish lesson", true); - Lesson requestedLesson = lessonDAO.getLesson(new Long(lessonId)); - setLessonState(requestedLesson, Lesson.FINISHED_STATE); - } @Override public void archiveLesson(long lessonId, Integer userId) { Fisheye: Tag 4338c54ef39ccdab47dc95d28deec40f23059633 refers to a dead (removed) revision in file `lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringServiceException.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringServiceProxy.java =================================================================== diff -u -rcad6ecebe29a61651bdf8c7500a6a17471c65970 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringServiceProxy.java (.../MonitoringServiceProxy.java) (revision cad6ecebe29a61651bdf8c7500a6a17471c65970) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringServiceProxy.java (.../MonitoringServiceProxy.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -55,8 +55,8 @@ * the servletContext for current application * @return monitoring service object. */ - public static final IMonitoringService getMonitoringService(ServletContext servletContext) { - return (IMonitoringService) MonitoringServiceProxy.getDomainService(servletContext, "monitoringService"); + public static final IMonitoringFullService getMonitoringService(ServletContext servletContext) { + return (IMonitoringFullService) MonitoringServiceProxy.getDomainService(servletContext, "monitoringService"); } /** Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java (.../BranchingAction.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java (.../BranchingAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -47,6 +47,7 @@ import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.monitoring.dto.BranchDTO; import org.lamsfoundation.lams.monitoring.dto.BranchingDTO; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.usermanagement.User; @@ -88,7 +89,7 @@ long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); long activityId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); BranchingActivity activity = (BranchingActivity) monitoringService.getActivityById(activityId, BranchingActivity.class); @@ -165,7 +166,7 @@ * @return String of xml with all needed language elements */ protected String getLanguageXML() { - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); MessageService messageService = monitoringService.getMessageService(); ArrayList languageCollection = new ArrayList(); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ComplexLearnerProgressAction.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ComplexLearnerProgressAction.java (.../ComplexLearnerProgressAction.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ComplexLearnerProgressAction.java (.../ComplexLearnerProgressAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -47,6 +47,7 @@ import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; @@ -56,10 +57,6 @@ /** * @author jliew - * - * - * - * */ public class ComplexLearnerProgressAction extends Action { @@ -73,7 +70,7 @@ Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID, false); Integer userID = WebUtil.readIntParam(request, AttributeNames.PARAM_USER_ID, false); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); Activity activity = monitoringService.getActivityById(activityID); @@ -197,7 +194,7 @@ * @param parentContributeActivityDTO * @throws IOException */ - private void processSequenceChildren(Long lessonID, Integer userID, IMonitoringService monitoringService, + private void processSequenceChildren(Long lessonID, Integer userID, IMonitoringFullService monitoringService, UserDTO user, HashMap statusMap, HashMap urlMap, LearnerProgress learnerProgress, SequenceActivity sequenceActivity, ContributeActivityDTO parentContributeActivityDTO, List subActivities) throws IOException { Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java =================================================================== diff -u -rcad6ecebe29a61651bdf8c7500a6a17471c65970 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java (.../EmailNotificationsAction.java) (revision cad6ecebe29a61651bdf8c7500a6a17471c65970) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailNotificationsAction.java (.../EmailNotificationsAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -59,6 +59,7 @@ import org.lamsfoundation.lams.monitoring.MonitoringConstants; import org.lamsfoundation.lams.monitoring.dto.EmailScheduleMessageJobDTO; import org.lamsfoundation.lams.monitoring.quartz.job.EmailScheduleMessageJob; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.security.ISecurityService; @@ -156,7 +157,7 @@ return null; } - IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); + IMonitoringFullService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); // getting the organisation Organisation org = monitoringService.getOrganisation(orgId); @@ -254,7 +255,7 @@ */ public ActionForward showArchivedEmails(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, SchedulerException { - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID, true); boolean isLessonNotifications = (lessonId != null); @@ -287,7 +288,7 @@ public ActionForward getArchivedRecipients(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws JSONException, IOException { - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); Long emailNotificationUid = WebUtil.readLongParam(request, "emailNotificationUid"); @@ -356,7 +357,7 @@ boolean isLessonNotifications = (lessonId != null); Integer organisationId = WebUtil.readIntParam(request, AttributeNames.PARAM_ORGANISATION_ID, true); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); getUserManagementService(); Scheduler scheduler = getScheduler(); @@ -419,7 +420,7 @@ */ public ActionForward exportArchivedNotification(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException { - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); Long emailNotificationUid = WebUtil.readLongParam(request, "emailNotificationUid"); @@ -465,7 +466,7 @@ public ActionForward emailUsers(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, JSONException { JSONObject JSONObject = new JSONObject(); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); String emailBody = WebUtil.readStrParam(request, "emailBody"); @@ -579,7 +580,7 @@ } } - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); int searchType = (Integer) map.get("searchType"); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailProgressAction.java =================================================================== diff -u -r8714ac689fdad46746bbb7f28005ec080d1d4ba6 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailProgressAction.java (.../EmailProgressAction.java) (revision 8714ac689fdad46746bbb7f28005ec080d1d4ba6) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/EmailProgressAction.java (.../EmailProgressAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -44,7 +44,7 @@ import org.apache.tomcat.util.json.JSONObject; import org.lamsfoundation.lams.events.IEventNotificationService; import org.lamsfoundation.lams.monitoring.quartz.job.EmailProgressMessageJob; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.security.ISecurityService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.DateUtil; @@ -77,7 +77,7 @@ private static final String JOB_PREFIX_NAME = "emailProgressMessageJob:"; private static IEventNotificationService eventNotificationService; - private static IMonitoringService monitoringService; + private static IMonitoringFullService monitoringService; private static ISecurityService securityService; // --------------------------------------------------------------------- @@ -294,11 +294,11 @@ return eventNotificationService; } - private IMonitoringService getMonitoringService() { + private IMonitoringFullService getMonitoringService() { if (EmailProgressAction.monitoringService == null) { WebApplicationContext ctx = WebApplicationContextUtils .getRequiredWebApplicationContext(getServlet().getServletContext()); - EmailProgressAction.monitoringService = (IMonitoringService) ctx.getBean("monitoringService"); + EmailProgressAction.monitoringService = (IMonitoringFullService) ctx.getBean("monitoringService"); } return EmailProgressAction.monitoringService; } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateAction.java =================================================================== diff -u -rcad6ecebe29a61651bdf8c7500a6a17471c65970 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateAction.java (.../GateAction.java) (revision cad6ecebe29a61651bdf8c7500a6a17471c65970) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateAction.java (.../GateAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -52,7 +52,7 @@ import org.lamsfoundation.lams.learningdesign.ScheduleGateActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceException; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.usermanagement.User; @@ -87,7 +87,7 @@ // --------------------------------------------------------------------- // private static Logger log = Logger.getLogger(GateAction.class); - private IMonitoringService monitoringService; + private IMonitoringFullService monitoringService; private ILearnerService learnerService; private ILessonService lessonService; // --------------------------------------------------------------------- Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupBasedBranchingAJAXAction.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupBasedBranchingAJAXAction.java (.../GroupBasedBranchingAJAXAction.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupBasedBranchingAJAXAction.java (.../GroupBasedBranchingAJAXAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -41,6 +41,7 @@ import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.lesson.service.LessonServiceException; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.util.WebUtil; @@ -53,21 +54,9 @@ * * * @author Fiona Malikoff - * - * - * - * - * - * - * - * - * - * */ public class GroupBasedBranchingAJAXAction extends BranchingAction { - //--------------------------------------------------------------------- - private static final String GROUPED_SELECTION_SCREEN = "groupedSelection"; public static final String PARAM_BRANCH_ID = "branchID"; public static final String PARAM_MAY_DELETE = "mayDelete"; @@ -84,7 +73,7 @@ Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); BranchingActivity activity = (BranchingActivity) monitoringService.getActivityById(activityID, BranchingActivity.class); @@ -123,7 +112,7 @@ // get the branching data and sort it. Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); BranchingActivity activity = (BranchingActivity) monitoringService.getActivityById(activityID); @@ -175,7 +164,7 @@ // get the grouping data and sort it. Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); SortedSet groups = monitoringService.getGroupsNotAssignedToBranch(activityID); String groupOutput = buildGroupString(groups); @@ -195,7 +184,7 @@ HttpServletResponse response) throws IOException, ServletException { Long branchID = WebUtil.readLongParam(request, PARAM_BRANCH_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(branchID); @@ -245,7 +234,7 @@ if (groups != null) { String[] groupsSplit = groups.split(","); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); monitoringService.addGroupToBranch(branchID, groupsSplit); } @@ -270,7 +259,7 @@ if (groups != null) { String[] groupsSplit = groups.split(","); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); monitoringService.removeGroupFromBranch(branchID, groupsSplit); } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingAJAXAction.java =================================================================== diff -u -rf4502360cd44d86d57b095aea5aef7ce663c8b61 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingAJAXAction.java (.../GroupingAJAXAction.java) (revision f4502360cd44d86d57b095aea5aef7ce663c8b61) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingAJAXAction.java (.../GroupingAJAXAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -51,6 +51,7 @@ import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.lesson.service.LessonServiceException; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.security.ISecurityService; @@ -79,8 +80,6 @@ */ public class GroupingAJAXAction extends LamsDispatchAction { - // --------------------------------------------------------------------- - private static final String CHOSEN_GROUPING_SCREEN = "chosenGrouping"; private static final String VIEW_GROUPS_SCREEN = "viewGroups"; private static final String PARAM_ACTIVITY_TITLE = "title"; @@ -112,7 +111,7 @@ Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); Activity activity = monitoringService.getActivityById(activityID); @@ -222,7 +221,7 @@ String[] members = StringUtils.isBlank(membersParam) ? null : membersParam.split(","); // remove users from current group - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); if (members != null) { Activity activity = monitoringService.getActivityById(activityID); @@ -303,7 +302,7 @@ */ public ActionForward saveAsCourseGrouping(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws JSONException, IOException { - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); IUserManagementService userManagementService = MonitoringServiceProxy .getUserManagementService(getServlet().getServletContext()); @@ -362,7 +361,7 @@ if (LamsDispatchAction.log.isDebugEnabled()) { LamsDispatchAction.log.debug("Renaming group " + groupID + " to \"" + name + "\""); } - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); monitoringService.setGroupName(groupID, name); } @@ -402,7 +401,7 @@ response.setContentType("application/json;charset=utf-8"); Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); Long groupID = WebUtil.readLongParam(request, AttributeNames.PARAM_GROUP_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); boolean result = true; Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingUploadAJAXAction.java =================================================================== diff -u -r33308a6a7d7b29a01697f0274baaccbf9dca6bb3 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingUploadAJAXAction.java (.../GroupingUploadAJAXAction.java) (revision 33308a6a7d7b29a01697f0274baaccbf9dca6bb3) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingUploadAJAXAction.java (.../GroupingUploadAJAXAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -65,7 +65,7 @@ import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.service.ILessonService; -import org.lamsfoundation.lams.monitoring.service.IMonitoringService; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.security.ISecurityService; import org.lamsfoundation.lams.usermanagement.Organisation; @@ -149,7 +149,7 @@ Set learners = lesson.getLessonClass().getLearners(); // check for any groups already exist in this grouping Long activityId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); Activity activity = monitoringService.getActivityById(activityId); Grouping grouping = activity.isChosenBranchingActivity() ? activity.getGrouping() @@ -368,7 +368,7 @@ private JSONObject saveLessonGrouping(HttpServletResponse response, Long activityId, Hashtable fileElements) throws JSONException, IOException { - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); Map> groups = new HashMap>(); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== diff -u -rfe122f9f7ac40f3a3696a7c69043fc34df7994d4 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision fe122f9f7ac40f3a3696a7c69043fc34df7994d4) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -76,6 +76,7 @@ import org.lamsfoundation.lams.lesson.service.ILessonService; import org.lamsfoundation.lams.monitoring.MonitoringConstants; import org.lamsfoundation.lams.monitoring.dto.ContributeActivityDTO; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.security.ISecurityService; @@ -132,7 +133,7 @@ private static ISecurityService securityService; - private static IMonitoringService monitoringService; + private static IMonitoringFullService monitoringService; private static IUserManagementService userManagementService; @@ -1297,7 +1298,7 @@ long activityBid = WebUtil.readLongParam(request, "activityB"); boolean result = false; - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); Activity precedingActivity = monitoringService.getActivityById(activityBid); @@ -1421,11 +1422,11 @@ return MonitoringAction.lessonService; } - private IMonitoringService getMonitoringService() { + private IMonitoringFullService getMonitoringService() { if (MonitoringAction.monitoringService == null) { WebApplicationContext ctx = WebApplicationContextUtils .getRequiredWebApplicationContext(getServlet().getServletContext()); - MonitoringAction.monitoringService = (IMonitoringService) ctx.getBean("monitoringService"); + MonitoringAction.monitoringService = (IMonitoringFullService) ctx.getBean("monitoringService"); } return MonitoringAction.monitoringService; } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/SequenceAction.java =================================================================== diff -u -r3399163940c61c9132223c758d274486e57ff9b7 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/SequenceAction.java (.../SequenceAction.java) (revision 3399163940c61c9132223c758d274486e57ff9b7) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/SequenceAction.java (.../SequenceAction.java) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -35,6 +35,7 @@ import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.learningdesign.SequenceActivity; +import org.lamsfoundation.lams.monitoring.service.IMonitoringFullService; import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.usermanagement.User; @@ -46,9 +47,6 @@ * The action servlet that provides the support for the Sequence activities. At present, this is only a basic view * screen that lists the user's in the sequence. * - * - * - * * @author Fiona Malikoff */ public class SequenceAction extends LamsDispatchAction { @@ -65,7 +63,7 @@ long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); long activityId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); - IMonitoringService monitoringService = MonitoringServiceProxy + IMonitoringFullService monitoringService = MonitoringServiceProxy .getMonitoringService(getServlet().getServletContext()); SequenceActivity activity = (SequenceActivity) monitoringService.getActivityById(activityId, SequenceActivity.class); Index: lams_tool_images/.classpath =================================================================== diff -u -rf4502360cd44d86d57b095aea5aef7ce663c8b61 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_tool_images/.classpath (.../.classpath) (revision f4502360cd44d86d57b095aea5aef7ce663c8b61) +++ lams_tool_images/.classpath (.../.classpath) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -5,7 +5,6 @@ - Index: lams_tool_kaltura/.classpath =================================================================== diff -u -rf4502360cd44d86d57b095aea5aef7ce663c8b61 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_tool_kaltura/.classpath (.../.classpath) (revision f4502360cd44d86d57b095aea5aef7ce663c8b61) +++ lams_tool_kaltura/.classpath (.../.classpath) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -16,7 +16,6 @@ - Index: lams_tool_leader/.classpath =================================================================== diff -u -rf4502360cd44d86d57b095aea5aef7ce663c8b61 -r4338c54ef39ccdab47dc95d28deec40f23059633 --- lams_tool_leader/.classpath (.../.classpath) (revision f4502360cd44d86d57b095aea5aef7ce663c8b61) +++ lams_tool_leader/.classpath (.../.classpath) (revision 4338c54ef39ccdab47dc95d28deec40f23059633) @@ -16,7 +16,6 @@ -