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();