Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LD102Importer.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LD102Importer.java,v diff -u -r1.14 -r1.15 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LD102Importer.java 14 Oct 2006 09:55:00 -0000 1.14 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LD102Importer.java 17 Oct 2006 01:12:32 -0000 1.15 @@ -583,6 +583,24 @@ String description = WDDXProcessor.convertToString(activityDetails,WDDXTAGS102.DESCRIPTION); List taskTransitions = (List)activityDetails.get(WDDXTAGS102.ACT_TASKTRAN); + // We've seen a design (LDEV-873) that has two noticeboard tasks within one noticeboard activity. + // Both tasks had the same content id, so we are going to treat them as duplicates and delete the duplicates + // before going any further. + if ( taskTransitions.size() != 1 && taskTransitions.size() != 3 ) { + Set knownToolContentIds = new HashSet(); + Iterator iter = taskTransitions.iterator(); + while ( iter.hasNext() ) { + Hashtable task = (Hashtable) iter.next(); + Integer toolContentId = WDDXProcessor.convertToInteger(task, WDDXTAGS102.TASK_INPUT_CONTENT); + if ( knownToolContentIds.contains(toolContentId) ) { + log.warn("Duplicate task found in activity. Task will be removed. Activity is "+activityDetails); + iter.remove(); + } else { + knownToolContentIds.add(toolContentId); + } + } + } + if ( taskTransitions.size()==1 ) { // standard case - a single tool, grouping or parallel activity Hashtable task = (Hashtable) taskTransitions.get(0);