Index: lams_monitoring/.classpath
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/.classpath,v
diff -u -r1.7 -r1.8
--- lams_monitoring/.classpath 7 Sep 2005 01:36:24 -0000 1.7
+++ lams_monitoring/.classpath 21 Sep 2007 06:55:03 -0000 1.8
@@ -3,11 +3,13 @@
-
+
+
+
Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/BranchingDTO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/Attic/BranchingDTO.java,v
diff -u -r1.2 -r1.3
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/BranchingDTO.java 29 Aug 2007 04:00:19 -0000 1.2
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/BranchingDTO.java 21 Sep 2007 06:55:04 -0000 1.3
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java,v
diff -u -r1.66 -r1.67
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java 4 Jul 2007 08:15:17 -0000 1.66
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java 21 Sep 2007 06:55:04 -0000 1.67
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java,v
diff -u -r1.116 -r1.117
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 10 Sep 2007 06:11:15 -0000 1.116
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 21 Sep 2007 06:55:03 -0000 1.117
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java,v
diff -u -r1.6 -r1.7
--- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java 29 Aug 2007 04:00:19 -0000 1.6
+++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java 21 Sep 2007 06:55:04 -0000 1.7
@@ -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;
+ }
+
+
}