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.50 -r1.51 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 21 Jun 2006 12:05:30 -0000 1.50 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 10 Jul 2006 07:16:49 -0000 1.51 @@ -25,7 +25,6 @@ import java.io.Serializable; import java.util.Date; -import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.SortedSet; @@ -798,7 +797,7 @@ */ public Set getAuthoringActivityDTOSet() { - HashSet dtoSet = new HashSet(); + Set dtoSet = new TreeSet(new ActivityDTOOrderComparator()); dtoSet.add(new AuthoringActivityDTO(this)); return dtoSet; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityDTOOrderComparator.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityDTOOrderComparator.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityDTOOrderComparator.java 10 Jul 2006 07:16:50 -0000 1.1 @@ -0,0 +1,59 @@ +/*************************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * ***********************************************************************/ +/* $$Id$$ */ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Comparator; + +import org.lamsfoundation.lams.learningdesign.dto.AuthoringActivityDTO; + +/** + * The activity order comparator used for sorted set. Order id is used as + * the primary comparing criteria as it is unique within a complex activity. + * If they are the same, activity id are used for comparison to ensure the + * sorted set won't treat two activities with the same order id as the + * same activity. + * + * @author Dapneg Ni + */ +public class ActivityDTOOrderComparator implements Comparator, Serializable { + + /** + * Compare the order. + * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) + */ + public int compare(AuthoringActivityDTO activity1, AuthoringActivityDTO activity2) { + + if(activity1.getOrderID()==null||activity2.getOrderID()==null) + return activity1.getActivityID().compareTo(activity2.getActivityID()); + + int orderDiff = activity1.getOrderID().compareTo(activity2.getOrderID()); + //return order id compare result if they are not the same + if(orderDiff!=0) + return orderDiff; + //if order id are the same, compare activity id. + else + return activity1.getActivityID().compareTo(activity2.getActivityID()); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java,v diff -u -r1.19 -r1.20 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java 19 May 2006 03:22:23 -0000 1.19 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java 10 Jul 2006 07:16:49 -0000 1.20 @@ -182,7 +182,7 @@ public Set getAuthoringActivityDTOSet() { - HashSet dtoSet = new HashSet(); + Set dtoSet = new TreeSet(new ActivityDTOOrderComparator()); dtoSet.add(new AuthoringActivityDTO(this)); //add parent activity //add the DTO for all child activities Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java,v diff -u -r1.20 -r1.21 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java 31 May 2006 04:32:30 -0000 1.20 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java 10 Jul 2006 07:16:49 -0000 1.21 @@ -29,8 +29,10 @@ import java.util.Iterator; import java.util.List; import java.util.Set; +import java.util.TreeSet; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ActivityDTOOrderComparator; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.LearningDesign; @@ -406,22 +408,19 @@ } public ArrayList populateActivities(LearningDesign design) { - ArrayList activities = new ArrayList(); //ArrayList childActivities = null; + //To use sorted set again: in getAuthoringActivityDTOSet() it will already be sorted, here is just double warranty + Set dtoSet = new TreeSet(new ActivityDTOOrderComparator()); Iterator parentIterator = design.getParentActivities().iterator(); while(parentIterator.hasNext()){ Activity object = (Activity) parentIterator.next(); - if (object.isComplexActivity()) - { - Set dtoSet = object.getAuthoringActivityDTOSet(); - activities.addAll(dtoSet); - } - else - { - activities.addAll(object.getAuthoringActivityDTOSet()); - } + //getAuthoringActivityDTOSet() method will: + //for complex activity: It already populate its children activities. + //for other activity: only get itself DTO object. + dtoSet.addAll(object.getAuthoringActivityDTOSet()); } - return activities; + + return new ArrayList(dtoSet); } public ArrayList populateTransitions(LearningDesign design){ ArrayList transitions = new ArrayList();