Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml,v diff -u -r1.39 -r1.40 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml 29 Aug 2007 03:45:13 -0000 1.39 +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml 16 Oct 2007 02:19:52 -0000 1.40 @@ -130,7 +130,7 @@ - + Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java,v diff -u -r1.67 -r1.68 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 5 Sep 2007 23:24:43 -0000 1.67 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 16 Oct 2007 02:19:52 -0000 1.68 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java,v diff -u -r1.37 -r1.38 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java 15 Oct 2007 01:57:32 -0000 1.37 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java 16 Oct 2007 02:19:52 -0000 1.38 @@ -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();