Index: lams_common/lib/ehcache/ehcache-1.0.jar =================================================================== diff -u Binary files differ Index: lams_common/lib/hibernate/hibernate2.jar =================================================================== diff -u -rbb76513c1211596b3382c3b6870705edeef70dd7 -r18704961d531a547a8a96928980c43a3bf169fd2 Binary files differ Index: lams_common/lib/hibernate/src/hibernate-src.zip =================================================================== diff -u Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -r95aa4590e8f18e8323cd6efc196b2c3a851b5e2e -r18704961d531a547a8a96928980c43a3bf169fd2 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 95aa4590e8f18e8323cd6efc196b2c3a851b5e2e) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 18704961d531a547a8a96928980c43a3bf169fd2) @@ -2,6 +2,10 @@ import java.io.Serializable; import java.util.Date; +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; @@ -419,4 +423,38 @@ public void setHelpText(String helpText) { this.helpText = helpText; } + + /** + * This method that get all tool activities belong to a particular activity. + * + * As the activity object structure might be infinite, we recursively loop + * through the entire structure and added all tool activities into the set + * that we want to return. + * + * @param activity the requested activity. + * @return the set of all tool activities. + */ + public Set getAllToolActivitiesFrom(Activity activity) + { + Set toolActivities = new TreeSet(new ActivityOrderComparator()); + //tool activity is usually leaf node activity, we return it right away + if(activity.getActivityTypeId().intValue()==Activity.TOOL_ACTIVITY_TYPE) + { + toolActivities.add(activity); + return toolActivities; + } + //recursively get tool activity from its children if it is complex activity. + else if(activity instanceof ComplexActivity) + { + ComplexActivity cActivity = (ComplexActivity)activity; + for(Iterator i = cActivity.getActivities().iterator();i.hasNext();) + { + Activity child = (Activity)i.next(); + toolActivities.addAll(getAllToolActivitiesFrom(child)); + } + } + + return toolActivities; + + } } \ No newline at end of file Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestActivity.java =================================================================== diff -u --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestActivity.java (revision 0) +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestActivity.java (revision 18704961d531a547a8a96928980c43a3bf169fd2) @@ -0,0 +1,83 @@ +/* ******************************************************************************** + * Copyright Notice + * ================= + * This file contains propriety information of LAMS Foundation. + * Copying or reproduction with prior written permission is prohibited. + * Copyright (c) 2005 + * Created on 2005-2-18 + ******************************************************************************** */ + +package org.lamsfoundation.lams.learningdesign; + +import java.util.Set; + +import org.lamsfoundation.lams.AbstractLamsTestCase; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.ActivityDAO; + + +/** + * + * @author Jacky Fang 2005-2-18 + * + */ +public class TestActivity extends AbstractLamsTestCase +{ + protected ActivityDAO activityDAO; + + private static final Long TEST_SEQUENCE_ACTIVITY=new Long(14); + + private static final Long TEST_SURVEY_ACTIVITY = new Long(20); + /* + * @see AbstractLamsTestCase#setUp() + */ + protected void setUp() throws Exception + { + super.setUp(); + activityDAO =(ActivityDAO) context.getBean("activityDAO"); + } + + /* + * @see AbstractLamsTestCase#tearDown() + */ + protected void tearDown() throws Exception + { + super.tearDown(); + } + + /** + * Constructor for TestActivity. + * @param arg0 + */ + public TestActivity(String arg0) + { + super(arg0); + } + + public void testGetAllToolActivitiesFromComplexActivity() + { + Activity complexActivity = activityDAO.getActivityByActivityId(TEST_SEQUENCE_ACTIVITY); + + Set toolActivities = complexActivity.getAllToolActivitiesFrom(complexActivity); + + assertEquals("verify the number tool activity we should get",3,toolActivities.size()); + } + + public void testGetAllToolActivitiesFromToolActivity() + { + Activity simpleActivity = activityDAO.getActivityByActivityId(TEST_SURVEY_ACTIVITY); + + Set toolActivities = simpleActivity.getAllToolActivitiesFrom(simpleActivity); + + assertEquals("verify the number tool activity we should get",1,toolActivities.size()); + + } + /** + * @see org.lamsfoundation.lams.AbstractLamsTestCase#getContextConfigLocation() + */ + protected String[] getContextConfigLocation() + { + return new String[] {"/org/lamsfoundation/lams/learningdesign/learningDesignApplicationContext.xml", + "applicationContext.xml"}; + } + +} Index: lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java =================================================================== diff -u -re0ff580c5c2981a84c4edf93bf950b59c1fcabbf -r18704961d531a547a8a96928980c43a3bf169fd2 --- lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java (.../LessonDataAccessTestCase.java) (revision e0ff580c5c2981a84c4edf93bf950b59c1fcabbf) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java (.../LessonDataAccessTestCase.java) (revision 18704961d531a547a8a96928980c43a3bf169fd2) @@ -16,7 +16,6 @@ import junit.framework.TestCase; import net.sf.hibernate.HibernateException; -import net.sf.hibernate.LockMode; import org.lamsfoundation.lams.AbstractLamsTestCase; import org.lamsfoundation.lams.learningdesign.Group;