Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== diff -u -r5a7b31fd5f98e009cd77634aa9b310e047a28716 -ra623fd733434dea8ed78c841eec1952f8535f289 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 5a7b31fd5f98e009cd77634aa9b310e047a28716) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision a623fd733434dea8ed78c841eec1952f8535f289) @@ -638,20 +638,40 @@ groupingDAO.insert(grouping); } + //================== Start handle activities ====================== //activity object list List actDtoList = dto.getActivities(); Set actList = new TreeSet (new ActivityOrderComparator()); Map activityMapper = new HashMap(); for(AuthoringActivityDTO actDto: actDtoList){ - Activity act = getActivity(actDto,activityMapper, groupingMapper,toolMapper); + Activity act = getActivity(actDto,groupingMapper,toolMapper); + //so far, the activitiy ID is still old one, so setup the mapping relation between old ID and new activity. activityMapper.put(act.getActivityId(),act); actList.add(act); + } + //rescan the activity list and refresh their parent activity. + for(AuthoringActivityDTO actDto: actDtoList){ + Activity act = activityMapper.get(actDto.getActivityID()); + if(actDto.getParentActivityID() != null){ + Activity parent = activityMapper.get(actDto.getParentActivityID()); + act.setParentActivity(parent); + //also add child as Complex activity: It is useless for persist data, but helpful for validate in learning design! + if(isComplexActivity(parent)){ + Set set = ((ComplexActivity)parent).getActivities(); + if(set == null){ + set = new TreeSet(new ActivityOrderComparator()); + ((ComplexActivity)parent).setActivities(set); + } + set.add(act); + } + } //persist act.setActivityId(null); activityDAO.insert(act); } - + //================== END handle activities ====================== + //transition object list List transDtoList = dto.getTransitions(); Set transList = new HashSet(); @@ -833,7 +853,7 @@ * @param toolMapper * @return */ - private Activity getActivity(AuthoringActivityDTO actDto, Map activityMapper, Map groupingList, Map toolMapper) { + private Activity getActivity(AuthoringActivityDTO actDto, Map groupingList, Map toolMapper) { Activity act = null; if(actDto == null) return act; @@ -916,22 +936,10 @@ act.setLibraryActivityUiImage(actDto.getLibraryActivityUIImage()); act.setOrderId(actDto.getOrderID()); + + //temporarily set as to null, after scan all activities, then set it to valid value. + act.setParentActivity(null); - if(actDto.getParentActivityID() != null){ - Activity parent = activityMapper.get(actDto.getParentActivityID()); - act.setParentActivity(parent); - //also add child as Complex activity: It is useless for persist data, but helpful for validate in learning design! - if(isComplexActivity(parent)){ - Set set = ((ComplexActivity)parent).getActivities(); - if(set == null){ - set = new TreeSet(new ActivityOrderComparator()); - ((ComplexActivity)parent).setActivities(set); - } - set.add(act); - } - }else - act.setParentActivity(null); - act.setParentUIID(actDto.getParentUIID()); act.setRunOffline(actDto.getRunOffline()); act.setTitle(actDto.getTitle());