Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java,v diff -u -r1.176 -r1.177 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 9 May 2013 10:34:01 -0000 1.176 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 10 May 2013 09:08:46 -0000 1.177 @@ -1555,12 +1555,8 @@ .getFirstActivity() : previousActivity.getTransitionFrom().getToActivity(); learnerProgress.setCurrentActivity(targetActivity); learnerProgress.setNextActivity(targetActivity); - - // set target activity as attempted CompletedActivityProgress completedActivityProgress = learnerProgress.getCompletedActivities().get( targetActivity); - learnerProgress.getCompletedActivities().remove(targetActivity); - learnerProgress.getAttemptedActivities().put(targetActivity, completedActivityProgress.getStartDate()); // grouping activities which need to be reset Set groupings = new HashSet(); @@ -1581,8 +1577,6 @@ } } } - } else if (currentActivity.isGroupingActivity()) { - groupings.add(currentActivity); } learnerProgress.getAttemptedActivities().remove(currentActivity); @@ -1593,9 +1587,12 @@ if (transitionTo == null) { // reached beginning of either sequence or complex activity if (currentActivity.getParentActivity() == null) { - // reached beginning of sequence and target activity was not found, something is wrong - throw new MonitoringServiceException("Target activity was not found sequence. Activity id: " - + targetActivity.getActivityId()); + // special case when learning design has only on activity + if (!((previousActivity == null) && currentActivity.equals(targetActivity))) { + // reached beginning of sequence and target activity was not found, something is wrong + throw new MonitoringServiceException("Target activity was not found sequence. Activity id: " + + targetActivity.getActivityId()); + } } else { currentActivity = currentActivity.getParentActivity(); if (currentActivity.getParentActivity() != null) { @@ -1615,6 +1612,10 @@ } while (!currentActivity.equals(targetActivity)); + // set target activity as attempted + learnerProgress.getCompletedActivities().remove(targetActivity); + learnerProgress.getAttemptedActivities().put(targetActivity, completedActivityProgress.getStartDate()); + learnerProgressDAO.updateLearnerProgress(learnerProgress); User learner = learnerProgress.getUser();