Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -rc44482d534e42cdecb0eefd678fad9cc5d8eb137 -r8bbaae4777d25bac513a7adc0b42b2d8480e05cc --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision c44482d534e42cdecb0eefd678fad9cc5d8eb137) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc) @@ -31,6 +31,7 @@ import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.learningdesign.dto.ProgressActivityDTO; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.Nullable; @@ -586,31 +587,46 @@ } /** * Delegate to activity strategy to check up the status of all children. - * @param learnerProgress the current learner progress that record the - * all completed activities. - * @return the boolean to indicate the status of children. + * + * @param learnerProgress the progress data that record what has been + * completed + * @return true if all children are completed. + */ public boolean areChildrenCompleted(LearnerProgress learnerProgress) { return activityStrategy.areChildrenCompleted(this,learnerProgress); } /** - * Delegate to activity strategy to calculate what is the next activity - * within the parent activity. + *
Delegate to activity strategy to calculate what is the next activity + * within the parent activity.
* - * @param learnerProgress the progress data that record what has been - * completed - * @return true if all children are completed. + * Note: The logic of what is the next activity here is progress + * enigne specific now. Please see theActivityStrategy
+ * for details explaination of what is next.
+ *
+ * @param currentChild the current child activity in a complex activity.
+ * @return the next activity within a parent activity
*/
public Activity getNextActivityByParent(Activity currentChild)
{
return activityStrategy.getNextActivityByParent(this,currentChild);
}
+
public Integer getActivityCategoryID() {
return activityCategoryID;
}
public void setActivityCategoryID(Integer activityCategoryID) {
this.activityCategoryID = activityCategoryID;
}
+
+ /**
+ * Return the activity dto for progress view.
+ * @return the activity dto.
+ */
+ public ProgressActivityDTO getProgressActivityData()
+ {
+ return new ProgressActivityDTO(this.activityId);
+ }
}
\ No newline at end of file
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java
===================================================================
diff -u -r069bac311e45f31f2c84b154aca926b5469f9d33 -r8bbaae4777d25bac513a7adc0b42b2d8480e05cc
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision 069bac311e45f31f2c84b154aca926b5469f9d33)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc)
@@ -8,6 +8,7 @@
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.lamsfoundation.lams.lesson.LessonClass;
+import org.lamsfoundation.lams.usermanagement.User;
/**
@@ -197,8 +198,26 @@
}
/**
- * @return
+ * Returns the group that current learner is in.
+ * @param learner the user in the group
+ * @return the group that has the learner
*/
+ public Group getGroupBy(User learner)
+ {
+ for(Iterator i = getGroups().iterator();i.hasNext();)
+ {
+ Group group = (Group)i.next();
+ if(isLearnerGroup(group)&&group.hasLearner(learner))
+ return group;
+ }
+ return new NullGroup();
+ }
+
+ /**
+ * Is this group a learner group. It is also possible that the group is a
+ * staff group.
+ * @return whether the group is learner group or not.
+ */
public abstract boolean isLearnerGroup(Group group);
public Integer getGroupingUIID() {
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/ProgressActivityDTO.java
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/ProgressActivityDTO.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/ProgressActivityDTO.java (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc)
@@ -0,0 +1,85 @@
+/***************************************************************************
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ * =============================================================
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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
+ * ***********************************************************************/
+
+package org.lamsfoundation.lams.learningdesign.dto;
+
+
+/**
+ * The data transfer object to allow flash to view an activity from learner
+ * progress bar or monitoring flash component.
+ *
+ * @author Jacky Fang
+ * @since 2005-3-15
+ * @version 1.1
+ *
+ */
+public class ProgressActivityDTO
+{
+ //---------------------------------------------------------------------
+ // attributes
+ //---------------------------------------------------------------------
+ private Long activityId;
+ private String activityURL;
+
+
+ //---------------------------------------------------------------------
+ // Construtors
+ //---------------------------------------------------------------------
+ /**
+ * Minimum constructor
+ */
+ public ProgressActivityDTO(Long activityId)
+ {
+ this(activityId,null);
+ }
+
+ /**
+ * Full constructor
+ */
+ public ProgressActivityDTO(Long activityId,String activityURL)
+ {
+ this.activityId = activityId;
+ this.activityURL = activityURL;
+ }
+
+ /**
+ * @return Returns the activityId.
+ */
+ public Long getActivityId()
+ {
+ return activityId;
+ }
+ /**
+ * @return Returns the activityURL.
+ */
+ public String getActivityURL()
+ {
+ return activityURL;
+ }
+ /**
+ * @param activityURL The activityURL to set.
+ */
+ public void setActivityURL(String activityURL)
+ {
+ this.activityURL = activityURL;
+ }
+}
Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LearnerProgressDTO.java
===================================================================
diff -u -r6e59ce4878d3f44cf14542a284c749258f2a9039 -r8bbaae4777d25bac513a7adc0b42b2d8480e05cc
--- lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LearnerProgressDTO.java (.../LearnerProgressDTO.java) (revision 6e59ce4878d3f44cf14542a284c749258f2a9039)
+++ lams_common/src/java/org/lamsfoundation/lams/lesson/dto/LearnerProgressDTO.java (.../LearnerProgressDTO.java) (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc)
@@ -62,13 +62,6 @@
}
/**
- * @return Returns the currentActivityID.
- */
- public Long getCurrentActivityID()
- {
- return currentActivityId;
- }
- /**
* @return Returns the learnerId.
*/
public Integer getLearnerId()
Fisheye: Tag 8bbaae4777d25bac513a7adc0b42b2d8480e05cc refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/tool/ProgressOutputData.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolSessionManager.java
===================================================================
diff -u -r14092613cbb3d0bec8c306d5a6abdf6de151307f -r8bbaae4777d25bac513a7adc0b42b2d8480e05cc
--- lams_common/src/java/org/lamsfoundation/lams/tool/ToolSessionManager.java (.../ToolSessionManager.java) (revision 14092613cbb3d0bec8c306d5a6abdf6de151307f)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolSessionManager.java (.../ToolSessionManager.java) (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc)
@@ -11,23 +11,35 @@
import java.util.List;
+import org.lamsfoundation.lams.lesson.LearnerProgress;
+
/**
+ * The interface that defines the tool's contract regarding session. It must
+ * be implemented by the tool to establish the communication channel between
+ * tool and lams core service.
*
- * @author Jacky Fang 2004-12-6
- *
+ * @author Jacky Fang
+ * @since 2004-12-6
+ * @version 1.1
*/
public interface ToolSessionManager
{
+ /**
+ * Create a tool session for a piece of tool content using the tool
+ * session id generated by lams.
+ * @param toolSessionId the generated tool session id.
+ * @param toolContentId the tool content id specified.
+ */
public void createToolSession(Long toolSessionId, Long toolContentId);
/**
* Call the controller service to complete and leave the tool session.
* @param toolSessionId the runtime tool session id.
* @return the data object that wraps the progess information.
*/
- public ProgressOutputData leaveToolSession(Long toolSessionId);
+ public LearnerProgress leaveToolSession(Long toolSessionId);
public ToolSessionExportOutputData exportToolSession(Long toolSessionId);
Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java
===================================================================
diff -u -r7def51eecc3d871673b614e8cb9a1ffc87a98881 -r8bbaae4777d25bac513a7adc0b42b2d8480e05cc
--- lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision 7def51eecc3d871673b614e8cb9a1ffc87a98881)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/service/ILamsToolService.java (.../ILamsToolService.java) (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc)
@@ -50,6 +50,9 @@
* @return the tool session object
*/
public ToolSession getToolSessionById(Long toolSessionId);
+
+
+ public ToolSession getToolSessionByActivity(User learner, ToolActivity toolActivity)throws LamsToolServiceException;
/**
* Notify tools to create their tool sessions in their own tables.
* @param toolSessionId the tool session generated by lams.
Index: lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java
===================================================================
diff -u -rc44482d534e42cdecb0eefd678fad9cc5d8eb137 -r8bbaae4777d25bac513a7adc0b42b2d8480e05cc
--- lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision c44482d534e42cdecb0eefd678fad9cc5d8eb137)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/service/LamsToolService.java (.../LamsToolService.java) (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc)
@@ -23,7 +23,9 @@
import java.util.List;
import org.lamsfoundation.lams.learningdesign.Activity;
+import org.lamsfoundation.lams.learningdesign.Group;
import org.lamsfoundation.lams.learningdesign.ToolActivity;
+import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO;
import org.lamsfoundation.lams.lesson.Lesson;
import org.lamsfoundation.lams.tool.ToolContentIDGenerator;
import org.lamsfoundation.lams.tool.ToolContentManager;
@@ -49,6 +51,7 @@
//---------------------------------------------------------------------
private ApplicationContext context;
private IToolSessionDAO toolSessionDAO;
+ private IActivityDAO activityDAO;
private ToolContentIDGenerator contentIDGenerator;
//---------------------------------------------------------------------
// Inversion of Control Methods - Method injection
@@ -76,6 +79,7 @@
{
this.contentIDGenerator = contentIDGenerator;
}
+
//---------------------------------------------------------------------
// Service Methods
//---------------------------------------------------------------------
@@ -114,7 +118,30 @@
{
return toolSessionDAO.getToolSession(toolSessionId);
}
+
/**
+ * Get the tool session based on the activity id and the learner.
+ * @throws LamsToolServiceException
+ * @see org.lamsfoundation.lams.tool.service.ILamsToolService#getToolSessionByActivity(org.lamsfoundation.lams.usermanagement.User, ToolActivity)
+ */
+ public ToolSession getToolSessionByActivity(User learner, ToolActivity toolActivity) throws LamsToolServiceException
+ {
+ //TODO need to be changed to grouping flag when grouping activity is mapped
+ //properly.
+ if(toolActivity.getGrouping()!=null)
+ {
+ Group learnerGroup = toolActivity.getGrouping().getGroupBy(learner);
+
+ if(learnerGroup.isNull())
+ throw new LamsToolServiceException("Fail to get grouped tool session: No group found for this learner.");
+
+ return this.toolSessionDAO.getToolSessionByGroup(learnerGroup,toolActivity);
+ }
+ else
+ return this.toolSessionDAO.getToolSessionByLearner(learner,toolActivity);
+ }
+
+ /**
* @see org.lamsfoundation.lams.tool.service.ILamsToolService#notifyToolsToCreateSession(java.lang.Long, org.lamsfoundation.lams.learningdesign.ToolActivity)
*/
public void notifyToolsToCreateSession(Long toolSessionId, ToolActivity activity)
@@ -179,6 +206,4 @@
{
return toolActivity.getTool().getServiceName().equals("surveyService");
}
-
-
}
Index: lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java
===================================================================
diff -u -rce9f6b5bcb8cec8268504f40d5e2387155163e99 -r8bbaae4777d25bac513a7adc0b42b2d8480e05cc
--- lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java (.../WebUtil.java) (revision ce9f6b5bcb8cec8268504f40d5e2387155163e99)
+++ lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java (.../WebUtil.java) (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc)
@@ -21,10 +21,12 @@
//---------------------------------------------------------------------
public static final String PARAM_MODE = "mode";
public static final String PARAM_SESSION_STATUS = "sessionStatus";
+ public static final String PARAM_TOOL_SESSION_ID = "sessionId";
public static final String PARAM_CONTENT_ID = "content_id";
public static final String PARAM_USER_ID = "user_id";
public static final String PARAM_LESSON_ID = "lesson_id";
+
public static final String ATTR_MODE = "mode";
public static final String ATTR_USERNAME = "username";
public static final String ATTR_UPDATE_PROGRESS_BAR = "updateProgressBar";
Index: lams_common/test/java/applicationContext.xml
===================================================================
diff -u -ra6cf2cb595b55b325c991334ba51a099b269e18b -r8bbaae4777d25bac513a7adc0b42b2d8480e05cc
--- lams_common/test/java/applicationContext.xml (.../applicationContext.xml) (revision a6cf2cb595b55b325c991334ba51a099b269e18b)
+++ lams_common/test/java/applicationContext.xml (.../applicationContext.xml) (revision 8bbaae4777d25bac513a7adc0b42b2d8480e05cc)
@@ -26,7 +26,7 @@