Index: lams_monitoring/.classpath
===================================================================
diff -u -r9062257e5aa7069ce8404bb6478871d54d25245a -rec7f4e736e801f08af16e76e5ea9960583531db7
--- lams_monitoring/.classpath (.../.classpath) (revision 9062257e5aa7069ce8404bb6478871d54d25245a)
+++ lams_monitoring/.classpath (.../.classpath) (revision ec7f4e736e801f08af16e76e5ea9960583531db7)
@@ -3,11 +3,13 @@
-
+
+
+
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/BranchingDTO.java
===================================================================
diff -u -r23211f44c3c9c17bf1f48b16985cba850fbdbf78 -rec7f4e736e801f08af16e76e5ea9960583531db7
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/BranchingDTO.java (.../BranchingDTO.java) (revision 23211f44c3c9c17bf1f48b16985cba850fbdbf78)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/BranchingDTO.java (.../BranchingDTO.java) (revision ec7f4e736e801f08af16e76e5ea9960583531db7)
@@ -22,24 +22,6 @@
private String branchActivityName;
private SortedSet branches;
- public BranchingDTO(BranchingActivity activity) {
- this.branchActivityId = activity.getActivityId();
- this.branchActivityName = activity.getTitle();
-
- branches = new TreeSet();
- Iterator iter = activity.getActivities().iterator();
- while (iter.hasNext()) {
- SequenceActivity branch = (SequenceActivity) iter.next();
- Set mappingEntries = branch.getBranchEntries();
- SortedSet groups = new TreeSet();
- for ( BranchActivityEntry entry : mappingEntries ) {
- Group group = entry.getGroup();
- groups.add(group);
- }
- branches.add(new BranchDTO(branch, groups));
- }
- }
-
public String toString() {
return new ToStringBuilder(this)
.append("branchActivityId", branchActivityId)
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java
===================================================================
diff -u -re1683b7e5ac777deb10d15b0bf41182587ca8373 -rec7f4e736e801f08af16e76e5ea9960583531db7
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision e1683b7e5ac777deb10d15b0bf41182587ca8373)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision ec7f4e736e801f08af16e76e5ea9960583531db7)
@@ -409,6 +409,15 @@
public 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.
+ */
+ public 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.
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java
===================================================================
diff -u -r0b7dc08b7bfe113e0884b2c81f273ac04c9a010d -rec7f4e736e801f08af16e76e5ea9960583531db7
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 0b7dc08b7bfe113e0884b2c81f273ac04c9a010d)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision ec7f4e736e801f08af16e76e5ea9960583531db7)
@@ -1315,6 +1315,14 @@
}
/**
+ * @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getActivityById(Long, Class)
+ */
+ public Activity getActivityById(Long activityId, Class clasz)
+ {
+ return activityDAO.getActivityByActivityId(activityId, clasz);
+ }
+
+ /**
* @see org.lamsfoundation.lams.monitoring.service.IMonitoringService#getGroupingActivityById(Long)
*/
public GroupingActivity getGroupingActivityById(Long activityID) {
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java
===================================================================
diff -u -r23211f44c3c9c17bf1f48b16985cba850fbdbf78 -rec7f4e736e801f08af16e76e5ea9960583531db7
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java (.../ChosenBranchingAJAXAction.java) (revision 23211f44c3c9c17bf1f48b16985cba850fbdbf78)
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java (.../ChosenBranchingAJAXAction.java) (revision ec7f4e736e801f08af16e76e5ea9960583531db7)
@@ -46,6 +46,7 @@
import org.lamsfoundation.lams.learningdesign.BranchActivityEntry;
import org.lamsfoundation.lams.learningdesign.SequenceActivity;
import org.lamsfoundation.lams.lesson.service.LessonServiceException;
+import org.lamsfoundation.lams.monitoring.BranchDTO;
import org.lamsfoundation.lams.monitoring.BranchingDTO;
import org.lamsfoundation.lams.monitoring.service.IMonitoringService;
import org.lamsfoundation.lams.monitoring.service.MonitoringServiceException;
@@ -119,13 +120,7 @@
Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID);
IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext());
- Activity activity = monitoringService.getActivityById(activityID);
- if ( activity == null || !activity.isBranchingActivity() ) {
- String error = "Activity is not a branching activity. Activity was "+activity;
- log.error(error);
- throw new MonitoringServiceException(error);
- }
-
+ BranchingActivity activity = (BranchingActivity) monitoringService.getActivityById(activityID, BranchingActivity.class);
if ( activity.isChosenBranchingActivity() ) {
@@ -136,10 +131,11 @@
request.setAttribute(AttributeNames.PARAM_TITLE, activity.getTitle());
// can we still move users? check each group for tool sessions.
- Iterator iter = ((BranchingActivity)activity).getActivities().iterator();
+ Iterator iter = activity.getActivities().iterator();
boolean mayMoveUser = true;
while (iter.hasNext()) {
- SequenceActivity branch = (SequenceActivity) iter.next();
+ Activity childActivity = (Activity) iter.next();
+ SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(childActivity.getActivityId(), SequenceActivity.class);
Set mappingEntries = branch.getBranchEntries();
for ( BranchActivityEntry entry : mappingEntries ) {
mayMoveUser = mayMoveUser && entry.getGroup().mayBeDeleted();
@@ -151,7 +147,7 @@
} else {
// go to a view only screen for group based and tool based grouping
- return viewBranching((BranchingActivity) activity, lessonId, false, mapping, request);
+ return viewBranching(activity, lessonId, false, mapping, request, monitoringService);
}
}
@@ -169,14 +165,8 @@
long activityId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID);
IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext());
- Activity activity = monitoringService.getActivityById(activityId);
- if ( activity == null || !activity.isBranchingActivity() ) {
- String error = "Activity is not a branching activity. Activity was "+activity;
- log.error(error);
- throw new MonitoringServiceException(error);
- }
-
- return viewBranching((BranchingActivity) activity, lessonId, true, mapping, request);
+ BranchingActivity activity = (BranchingActivity) monitoringService.getActivityById(activityId, BranchingActivity.class);
+ return viewBranching(activity, lessonId, true, mapping, request, monitoringService);
}
@@ -186,7 +176,7 @@
* Input parameters: activityID
*/
private ActionForward viewBranching(BranchingActivity activity, Long lessonId, boolean useLocalFiles,
- ActionMapping mapping, HttpServletRequest request) throws IOException, ServletException {
+ ActionMapping mapping, HttpServletRequest request, IMonitoringService monitoringService) throws IOException, ServletException {
// in general the progress engine expects the activity and lesson id to be in the request,
// so follow that standard.
@@ -197,7 +187,7 @@
// only show the group names if this is a group based branching activity - the names
// are meaningless for chosen and tool based branching
- BranchingDTO dto = new BranchingDTO((BranchingActivity) activity);
+ BranchingDTO dto = getBranchingDTO(activity, monitoringService);
request.setAttribute(PARAM_BRANCHING_DTO, dto);
request.setAttribute(PARAM_SHOW_GROUP_NAME, activity.isGroupBranchingActivity());
if ( log.isDebugEnabled() ) {
@@ -222,15 +212,18 @@
IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext());
BranchingActivity activity = (BranchingActivity) monitoringService.getActivityById(activityID);
- TreeSet sortedBranches = new TreeSet(new ActivityTitleComparator());
+ TreeSet sortedBranches = new TreeSet(new ActivityTitleComparator());
sortedBranches.addAll(activity.getActivities());
// build the output string to return to the chosen branching page.
// there should only ever be one group for each branch in chosen branching
String branchesOutput = "";
boolean first = true;
- for ( SequenceActivity branch : sortedBranches ) {
+ for ( Activity childActivity : sortedBranches ) {
+
+ SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(childActivity.getActivityId(), SequenceActivity.class);
+
Long branchId = branch.getActivityId();
String name = branch.getTitle();
int numberOfMembers = 0;
@@ -383,4 +376,31 @@
return null;
}
+ // Can't do this in BranchingDTO (although that's where it should be) as we have
+ // to get the SequenceActivities via the getActivityById to get around Hibernate
+ // not allowing us to cast the cglib classes.
+ private BranchingDTO getBranchingDTO(BranchingActivity activity, IMonitoringService monitoringService) {
+ BranchingDTO dto = new BranchingDTO();
+
+ dto.setBranchActivityId(activity.getActivityId());
+ dto.setBranchActivityName(activity.getTitle());
+
+ TreeSet branches = new TreeSet();
+ Iterator iter = activity.getActivities().iterator();
+ while (iter.hasNext()) {
+ Activity childActivity = (Activity) iter.next();
+ SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(childActivity.getActivityId(), SequenceActivity.class);
+ Set mappingEntries = branch.getBranchEntries();
+ SortedSet groups = new TreeSet();
+ for ( BranchActivityEntry entry : mappingEntries ) {
+ Group group = entry.getGroup();
+ groups.add(group);
+ }
+ branches.add(new BranchDTO(branch, groups));
+ }
+ dto.setBranches(branches);
+ return dto;
+ }
+
+
}