Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml
===================================================================
diff -u -r87ec6bd0708e9da634182eacca8c74e442bc748f -r4bf4556646feb7431bf82f3eebc4c3353d5ae4f2
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 87ec6bd0708e9da634182eacca8c74e442bc748f)
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 4bf4556646feb7431bf82f3eebc4c3353d5ae4f2)
@@ -130,7 +130,7 @@
-
+
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java
===================================================================
diff -u -r245c3e8e3ffd8e00786cd143f3467990b838ed9e -r4bf4556646feb7431bf82f3eebc4c3353d5ae4f2
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 245c3e8e3ffd8e00786cd143f3467990b838ed9e)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 4bf4556646feb7431bf82f3eebc4c3353d5ae4f2)
@@ -1051,5 +1051,31 @@
return null;
}
-
+ /** Get the input activity UIIDs in a format suitable for Flash. See also getToolInputActivityID */
+ public ArrayList getInputActivityUIIDs() {
+ ArrayList list = new ArrayList();
+ if ( getInputActivities() != null && getInputActivities().size() > 0 ) {
+ Iterator iter = getInputActivities().iterator();
+ while ( iter.hasNext() ) {
+ Activity inputAct = (Activity) iter.next();
+ list.add(inputAct.getActivityUIID());
+ }
+ }
+ return list;
+ }
+
+ /**
+ * Get the first input activity's UIID as the tool input activity. The db is set up to allow multiple input
+ * activities, but at present we only support one. See also getInputActivityUIIDs.
+ */
+ public Integer getToolInputActivityUIID() {
+ if ( getInputActivities() != null ) {
+ Iterator iter = getInputActivities().iterator();
+ if ( iter.hasNext() ) {
+ return ((Activity)iter.next()).getActivityUIID();
+ }
+ }
+ return null;
+ }
+
}
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java
===================================================================
diff -u -r039707d1e936b6be92842a45e442d37db9886513 -r4bf4556646feb7431bf82f3eebc4c3353d5ae4f2
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision 039707d1e936b6be92842a45e442d37db9886513)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision 4bf4556646feb7431bf82f3eebc4c3353d5ae4f2)
@@ -313,6 +313,8 @@
}
public AuthoringActivityDTO(Activity activity, ArrayList branchMappings){
+ processActivityType(activity, branchMappings);
+
this.activityID = activity.getActivityId();
this.activityUIID = activity.getActivityUIID();
this.description = activity.getDescription();
@@ -353,36 +355,24 @@
this.initialised = activity.isInitialised();
this.stopAfterActivity = activity.isStopAfterActivity();
- if ( activity.getInputActivities() != null && activity.getInputActivities().size() > 0 ) {
- ArrayList list = new ArrayList();
- Iterator iter = activity.getInputActivities().iterator();
- while ( iter.hasNext() ) {
- Activity inputAct = (Activity) iter.next();
- list.add(inputAct.getActivityUIID());
- if ( this.toolActivityUIID == null )
- this.toolActivityUIID=inputAct.getActivityUIID();
- }
- this.inputActivities = list;
- }
-
- // must be done last as it depends on toolActivityUIID
- processActivityType(activity, branchMappings, toolActivityUIID);
+ this.inputActivities = activity.getInputActivityUIIDs();
+ this.toolActivityUIID = activity.getToolInputActivityUIID();
}
- private void processActivityType(Activity activity, ArrayList branchMappings, Integer toolActivityUIID){
+ private void processActivityType(Activity activity, ArrayList branchMappings){
if(activity.isGroupingActivity())
addGroupingActivityAttributes((GroupingActivity)activity);
else if(activity.isToolActivity())
addToolActivityAttributes((ToolActivity)activity);
else if(activity.isGateActivity())
addGateActivityAttributes(activity);
else
- addComplexActivityAttributes(activity, branchMappings, toolActivityUIID);
+ addComplexActivityAttributes(activity, branchMappings);
}
- private void addComplexActivityAttributes(Activity activity, ArrayList branchMappings, Integer toolActivityUIID){
+ private void addComplexActivityAttributes(Activity activity, ArrayList branchMappings){
ComplexActivity complex = (ComplexActivity) activity;
if ( complex.getDefaultActivity() != null ) {
defaultActivityUIID = complex.getDefaultActivity().getActivityUIID();
@@ -395,7 +385,7 @@
else if(activity.isBranchingActivity())
addBranchingActivityAttributes((BranchingActivity)activity);
else
- addSequenceActivityAttributes((SequenceActivity)activity, branchMappings, toolActivityUIID);
+ addSequenceActivityAttributes((SequenceActivity)activity, branchMappings);
}
private void addGroupingActivityAttributes(GroupingActivity groupingActivity){
@@ -420,13 +410,18 @@
this.endXCoord = activity.getEndXcoord();
this.endYCoord = activity.getEndYcoord();
}
- private void addSequenceActivityAttributes(SequenceActivity activity, ArrayList branchMappings, Integer toolActivityUIID){
+ private void addSequenceActivityAttributes(SequenceActivity activity, ArrayList branchMappings){
+
+ Activity parentActivity = activity.getParentActivity();
+ Integer toolActivityUIID = parentActivity != null ? parentActivity.getToolInputActivityUIID() : null;
+
Iterator iter = activity.getBranchEntries().iterator();
while ( iter.hasNext() ) {
BranchActivityEntry ba = (BranchActivityEntry) iter.next();
branchMappings.add(ba.getBranchActivityEntryDTO(toolActivityUIID));
}
}
+
private void addToolActivityAttributes(ToolActivity toolActivity){
this.toolContentID = toolActivity.getToolContentId();
this.toolID = toolActivity.getTool().getToolId();