Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -rb78c6944c0df5f463456b89a6af82bb99369b214 -r6753e585772b555f5070050085fd1675a59242bc --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision b78c6944c0df5f463456b89a6af82bb99369b214) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 6753e585772b555f5070050085fd1675a59242bc) @@ -556,15 +556,23 @@ return new NullGroup(); } /** - * Check up whether a is tool activity or not. - * @return + * Check up whether an activity is tool activity or not. + * @return is this activity a tool activity? */ public boolean isToolActivity() { return getActivityTypeId().intValue()==TOOL_ACTIVITY_TYPE; } /** + * Check up whether an activity is sequence activity or not. + * @return is this activity a sequence activity? + */ + public boolean isSequenceActivity() + { + return getActivityTypeId().intValue()==SEQUENCE_ACTIVITY_TYPE; + } + /** * Delegate to activity strategy to check up the status of all children. * @param learnerProgress the current learner progress that record the * all completed activities. Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java =================================================================== diff -u -rfee6e64a584e9b1a7df005ba288332c49310fe7c -r6753e585772b555f5070050085fd1675a59242bc --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision fee6e64a584e9b1a7df005ba288332c49310fe7c) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision 6753e585772b555f5070050085fd1675a59242bc) @@ -117,6 +117,15 @@ return newSequenceActivity; } + /** + * Retrieve the first activity in current sequence activity; + * @return the first activity; + */ + public Activity getFirstActivityInSequenceActivity() + { + return this.getNextActivityByParent(new NullActivity()); + } + public String toString() { return new ToStringBuilder(this) .append("activityId", getActivityId()) Index: lams_common/src/java/org/lamsfoundation/lams/lesson/SequenceActivityStrategy.java =================================================================== diff -u -r0cd6d5f3a368eb1fa3a140d87b5b1664ee4aa88d -r6753e585772b555f5070050085fd1675a59242bc --- lams_common/src/java/org/lamsfoundation/lams/lesson/SequenceActivityStrategy.java (.../SequenceActivityStrategy.java) (revision 0cd6d5f3a368eb1fa3a140d87b5b1664ee4aa88d) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/SequenceActivityStrategy.java (.../SequenceActivityStrategy.java) (revision 6753e585772b555f5070050085fd1675a59242bc) @@ -57,6 +57,9 @@ for(Iterator i=children.iterator();i.hasNext();) { Activity curChild = (Activity)i.next(); + //if no current child, we should return the first one. + if(currentChild.isNull()) + return curChild; if(curChild.getActivityId().longValue()==currentChild.getActivityId().longValue()) return (Activity)i.next(); Index: lams_common/test/java/org/lamsfoundation/lams/lesson/TestActivityStrategy.java =================================================================== diff -u -r600dc5c9c87aa8fc67e052124ac91385847c856c -r6753e585772b555f5070050085fd1675a59242bc --- lams_common/test/java/org/lamsfoundation/lams/lesson/TestActivityStrategy.java (.../TestActivityStrategy.java) (revision 600dc5c9c87aa8fc67e052124ac91385847c856c) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/TestActivityStrategy.java (.../TestActivityStrategy.java) (revision 6753e585772b555f5070050085fd1675a59242bc) @@ -21,6 +21,7 @@ package org.lamsfoundation.lams.lesson; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.NullActivity; import org.lamsfoundation.lams.lesson.dao.TestLearnerProgressDAO; @@ -135,6 +136,17 @@ assertEquals("it should be qna",this.testSubSeuqenceActivityQNA.getActivityId().longValue(),nextActivity.getActivityId().longValue()); } + public void testGetFirstActivityWithinSequenceParentActivity() + { + testSubSeuquencActivitySR = activityDAO.getActivityByActivityId(TEST_SR_ACTIVITY_ID); + + Activity nextActivity = this.testSequenceActivity.getNextActivityByParent(new NullActivity()); + + assertNotNull("we should have a next activity",nextActivity); + assertEquals("it should be share resource",this.testSubSeuquencActivitySR.getActivityId().longValue(),nextActivity.getActivityId().longValue()); + } + + public void testGetNextActivityByOptionsParentActivity() { testSubOptionsActivityNB = activityDAO.getActivityByActivityId(TEST_NB_ACTIVITY_ID);