Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml =================================================================== diff -u -r4206c2b9c81db55b984029d55c41bef5abcb4788 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 4206c2b9c81db55b984029d55c41bef5abcb4788) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -1,7 +1,7 @@ + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > - + Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml =================================================================== diff -u -re0ff580c5c2981a84c4edf93bf950b59c1fcabbf -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml (.../Group.hbm.xml) (revision e0ff580c5c2981a84c4edf93bf950b59c1fcabbf) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml (.../Group.hbm.xml) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -1,7 +1,7 @@ + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > - + Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -27,6 +27,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Set; +import java.util.SortedSet; import java.util.TreeSet; import org.apache.commons.lang.builder.EqualsBuilder; @@ -40,18 +41,24 @@ import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.Nullable; /** + * Base class for all activities. If you add another subclass, + * you must update ActivityDAO.getActivityByActivityId() and add a + * ACTIVITY_TYPE constant. + * * @hibernate.class table="lams_learning_activity" */ public abstract class Activity implements Serializable,Nullable { //--------------------------------------------------------------------- // Class Level Constants //--------------------------------------------------------------------- - /** + /* * static final variables indicating the type of activities - * available for a LearningDesign - * */ - /******************************************************************/ + * available for a LearningDesign. As new types of activities + * are added, these constants must be updated, as well as + * ActivityDAO.getActivityByActivityId() + */ + /* *****************************************************************/ public static final int TOOL_ACTIVITY_TYPE = 1; public static final int GROUPING_ACTIVITY_TYPE = 2; public static final int SYNCH_GATE_ACTIVITY_TYPE = 3; @@ -582,41 +589,33 @@ } //--------------------------------------------------------------------- // Service Methods - //--------------------------------------------------------------------- + //--------------------------------------------------------------------- + /** - * This method that get all tool activities belong to a particular activity. + * This method that get all tool activities belong to the current 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. + * that we want to return. This method calls a method getToolActivitiesInActivity() + * which must be defined in subclasses for tool or a complex activities. + * This handles the polymorphic aspect of this function. (Note: we can't + * use instanceOf as we are dealing with Hibernate proxies.) * - * @param activity the requested activity. * @return the set of all tool activities. */ - public Set getAllToolActivitiesFrom(Activity activity) + public Set getAllToolActivities() { - 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)); - } - } - + SortedSet toolActivities = new TreeSet(new ActivityOrderComparator()); + getToolActivitiesInActivity(toolActivities); return toolActivities; - } + protected void getToolActivitiesInActivity(SortedSet toolActivities) { + + // a simple activity doesn't have any tool activities + + } + /** * Return the group information for the requested user when he is running * current activity instance. Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java (.../ComplexActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java (.../ComplexActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -26,10 +26,11 @@ import java.util.Date; import java.util.Iterator; import java.util.Set; +import java.util.SortedSet; import java.util.TreeSet; import org.apache.commons.lang.builder.ToStringBuilder; -import org.lamsfoundation.lams.learningdesign.strategy.ComplextActivityStrategy; +import org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy; import org.lamsfoundation.lams.lesson.LearnerProgress; /** @@ -38,7 +39,7 @@ public abstract class ComplexActivity extends Activity implements Serializable { - protected ComplextActivityStrategy activityStrategy; + protected ComplexActivityStrategy activityStrategy; /** persistent field */ private Set activities; @@ -149,7 +150,7 @@ */ public boolean areChildrenCompleted(LearnerProgress learnerProgress) { - return activityStrategy.areChildrenCompleted(this,learnerProgress); + return activityStrategy.areChildrenCompleted(learnerProgress); } /** @@ -160,11 +161,23 @@ * enigne specific now. Please see the ActivityStrategy * 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); + return activityStrategy.getNextActivityByParent(this, currentChild); } + + /** + * Get all the tool activities in this activity. Called by Activity.getAllToolActivities(). + * Recursively get tool activity from its children. + */ + protected void getToolActivitiesInActivity(SortedSet toolActivities) { + + for(Iterator i = this.getActivities().iterator();i.hasNext();) { + Activity child = (Activity)i.next(); + child.getToolActivitiesInActivity(toolActivities); + } + + } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java (.../GateActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java (.../GateActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -204,7 +204,7 @@ if(getGateOpen()==null) this.setGateOpen(new Boolean(false)); - return ((GateActivityStrategy)simpleActivityStrategy).shouldOpenGateFor(learner,lessonLearners,this); + return ((GateActivityStrategy)simpleActivityStrategy).shouldOpenGateFor(learner,lessonLearners); } //--------------------------------------------------------------------- Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -85,13 +85,13 @@ transitionFrom); this.createGrouping = createGrouping; this.createGroupingUIID = create_grouping_ui_id; - super.simpleActivityStrategy = new GroupingActivityStrategy(); + super.simpleActivityStrategy = new GroupingActivityStrategy(this); } /** default constructor */ public GroupingActivity() { - super.simpleActivityStrategy = new GroupingActivityStrategy(); + super.simpleActivityStrategy = new GroupingActivityStrategy(this); } /** minimal constructor */ @@ -121,7 +121,7 @@ transitionFrom); this.createGrouping = createGrouping; this.createGroupingUIID = create_grouping_ui_id; - super.simpleActivityStrategy = new GroupingActivityStrategy(); + super.simpleActivityStrategy = new GroupingActivityStrategy(this); } /** * This function creates a deep copy of the GroupingActivity passed Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java (.../OptionsActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java (.../OptionsActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -88,12 +88,12 @@ this.maxNumberOfOptions = maxNumberOfOptions; this.minNumberOfOptions = minNumberOfOptions; this.optionsInstructions = options_instructions; - super.activityStrategy = new OptionsActivityStrategy(); + super.activityStrategy = new OptionsActivityStrategy(this); } /** default constructor */ public OptionsActivity() { - super.activityStrategy = new OptionsActivityStrategy(); + super.activityStrategy = new OptionsActivityStrategy(this); } /** minimal constructor */ @@ -119,7 +119,7 @@ transitionTo, transitionFrom, activities); - super.activityStrategy = new OptionsActivityStrategy(); + super.activityStrategy = new OptionsActivityStrategy(this); } public static OptionsActivity createCopy(OptionsActivity originalActivity){ OptionsActivity newOptionsActivity = new OptionsActivity(); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java (.../ParallelActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java (.../ParallelActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -73,12 +73,12 @@ transitionTo, transitionFrom, activities); - super.activityStrategy = new ParallelActivityStrategy(); + super.activityStrategy = new ParallelActivityStrategy(this); } /** default constructor */ public ParallelActivity() { - super.activityStrategy = new ParallelActivityStrategy(); + super.activityStrategy = new ParallelActivityStrategy(this); } /** minimal constructor */ @@ -104,7 +104,7 @@ transitionTo, transitionFrom, activities); - super.activityStrategy = new ParallelActivityStrategy(); + super.activityStrategy = new ParallelActivityStrategy(this); } /** * Makes a copy of the ParallelActivity for authoring, preview and monitoring enviornment Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java (.../PermissionGateActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java (.../PermissionGateActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -79,13 +79,13 @@ transitionFrom, gateActivityLevelId, waitingLearners); - super.simpleActivityStrategy = new PermissionGateActivityStrategy(); + super.simpleActivityStrategy = new PermissionGateActivityStrategy(this); } /** default constructor */ public PermissionGateActivity() { - super.simpleActivityStrategy = new PermissionGateActivityStrategy(); + super.simpleActivityStrategy = new PermissionGateActivityStrategy(this); } /** minimal constructor */ @@ -114,7 +114,7 @@ transitionFrom, gateActivityLevelId, waitingLearners); - super.simpleActivityStrategy = new PermissionGateActivityStrategy(); + super.simpleActivityStrategy = new PermissionGateActivityStrategy(this); } /** * Makes a copy of the PermissionGateActivity for authoring, preview and monitoring enviornment Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java (.../ScheduleGateActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java (.../ScheduleGateActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -132,12 +132,12 @@ this.gateStartTimeOffset = gateStartTimeOffset; this.gateEndTimeOffset = gateEndTimeOffset; - this.simpleActivityStrategy = new ScheduleGateActivityStrategy(); + this.simpleActivityStrategy = new ScheduleGateActivityStrategy(this); } /** default constructor */ public ScheduleGateActivity() { - this.simpleActivityStrategy = new ScheduleGateActivityStrategy(); + this.simpleActivityStrategy = new ScheduleGateActivityStrategy(this); } /** minimal constructor */ @@ -172,7 +172,7 @@ " than start time offset"); this.gateStartTimeOffset = gateStartTimeOffset; this.gateEndTimeOffset = gateEndTimeOffset; - this.simpleActivityStrategy = new ScheduleGateActivityStrategy(); + this.simpleActivityStrategy = new ScheduleGateActivityStrategy(this); } /** * Makes a copy of the ScheduleGateActivity for authoring, preview and monitoring enviornment Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -74,13 +74,13 @@ transitionTo, transitionFrom, activities); - super.activityStrategy = new SequenceActivityStrategy(); + super.activityStrategy = new SequenceActivityStrategy(this); } /** default constructor */ public SequenceActivity() { - super.activityStrategy = new SequenceActivityStrategy(); + super.activityStrategy = new SequenceActivityStrategy(this); } /** minimal constructor */ @@ -106,7 +106,7 @@ transitionTo, transitionFrom, activities); - super.activityStrategy = new SequenceActivityStrategy(); + super.activityStrategy = new SequenceActivityStrategy(this); } /** Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java (.../SimpleActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java (.../SimpleActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -110,6 +110,6 @@ public Integer[] getContributionType(){ - return simpleActivityStrategy.getContributionType(this); + return simpleActivityStrategy.getContributionType(); } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java (.../SynchGateActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java (.../SynchGateActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -77,12 +77,12 @@ transitionFrom, gateActivityLevelId, waitingLearners); - super.simpleActivityStrategy = new SynchGateActivityStrategy(); + super.simpleActivityStrategy = new SynchGateActivityStrategy(this); } /** default constructor */ public SynchGateActivity() { - super.simpleActivityStrategy = new SynchGateActivityStrategy(); + super.simpleActivityStrategy = new SynchGateActivityStrategy(this); } /** minimal constructor */ @@ -111,7 +111,7 @@ transitionFrom, gateActivityLevelId, waitingLearners); - super.simpleActivityStrategy = new SynchGateActivityStrategy(); + super.simpleActivityStrategy = new SynchGateActivityStrategy(this); } /** Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java (.../ToolActivity.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java (.../ToolActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -25,6 +25,7 @@ import java.io.Serializable; import java.util.Date; import java.util.Set; +import java.util.SortedSet; import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.ToolActivityStrategy; @@ -95,12 +96,12 @@ transitionFrom); this.tool = tool; this.toolContentId = toolContentId; - super.simpleActivityStrategy = new ToolActivityStrategy(); + super.simpleActivityStrategy = new ToolActivityStrategy(this); } /** default constructor */ public ToolActivity(){ - super.simpleActivityStrategy = new ToolActivityStrategy(); + super.simpleActivityStrategy = new ToolActivityStrategy(this); } /** minimal constructor */ @@ -129,7 +130,7 @@ transitionFrom); this.tool = tool; this.toolContentId = toolContentId; - super.simpleActivityStrategy = new ToolActivityStrategy(); + super.simpleActivityStrategy = new ToolActivityStrategy(this); } /** @@ -256,4 +257,13 @@ { return false; } + + + /** + * Get all the tool activities in this activity. Called by Activity.getAllToolActivities() + * As we are a tool activity, just add ourself. + */ + protected void getToolActivitiesInActivity(SortedSet toolActivities) { + toolActivities.add(this); + } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java =================================================================== diff -u -r5e579095c4af7fbdd593fe10029ba2de31c7cf36 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java (.../IActivityDAO.java) (revision 5e579095c4af7fbdd593fe10029ba2de31c7cf36) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java (.../IActivityDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -34,8 +34,15 @@ public interface IActivityDAO extends IBaseDAO{ /** + * Returns an object that may be assigned to Activity. + * This must return a true Activity object, rather than + * the Hibernate CGLIB proxy, or other code gets too difficult. + *

+ * If a new type of activity is added, then this method must be + * updated. * @param activityId The activityId of the activity * @return Activity populated Activity object + * @throws DataRetrievalFailureException if it can't work out the correct Activity class. */ public Activity getActivityByActivityId(Long activityId); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IBaseDAO.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IBaseDAO.java (.../IBaseDAO.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IBaseDAO.java (.../IBaseDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -44,10 +44,13 @@ public void delete(Object object); /** + * Find an object. If the object is not found + * then it will return null * @param objClass * @param id */ public Object find(Class objClass, Serializable id); + /** * @param objClass */ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java =================================================================== diff -u -r0959b7213fe1ac012e8be4f6861693899536de18 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java (.../ActivityDAO.java) (revision 0959b7213fe1ac012e8be4f6861693899536de18) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java (.../ActivityDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -24,13 +24,19 @@ import java.util.List; -import net.sf.hibernate.Hibernate; -import net.sf.hibernate.type.Type; - +import org.hibernate.Query; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.OptionsActivity; +import org.lamsfoundation.lams.learningdesign.ParallelActivity; +import org.lamsfoundation.lams.learningdesign.PermissionGateActivity; +import org.lamsfoundation.lams.learningdesign.ScheduleGateActivity; +import org.lamsfoundation.lams.learningdesign.SequenceActivity; +import org.lamsfoundation.lams.learningdesign.SynchGateActivity; +import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; +import org.springframework.dao.DataRetrievalFailureException; /** * @author Manpreet Minhas @@ -56,7 +62,36 @@ * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IActivityDAO#getActivityById(java.lang.Long) */ public Activity getActivityByActivityId(Long activityId) { - return (Activity) super.find(Activity.class,activityId); + Activity act = (Activity) super.find(Activity.class,activityId); + + // we must return the real activity, not a Hibernate proxy. So relook + // it up. This should be quick as it should be in the cache. + if ( act != null ) { + Integer activityType = act.getActivityTypeId(); + if ( activityType != null ) { + switch ( activityType.intValue() ) { + case Activity.TOOL_ACTIVITY_TYPE: + return (ToolActivity) super.find(ToolActivity.class,activityId); + case Activity.GROUPING_ACTIVITY_TYPE: + return (GroupingActivity) super.find(GroupingActivity.class,activityId); + case Activity.SYNCH_GATE_ACTIVITY_TYPE: + return (SynchGateActivity) super.find(SynchGateActivity.class,activityId); + case Activity.SCHEDULE_GATE_ACTIVITY_TYPE: + return (ScheduleGateActivity) super.find(ScheduleGateActivity.class,activityId); + case Activity.PERMISSION_GATE_ACTIVITY_TYPE: + return (PermissionGateActivity) super.find(PermissionGateActivity.class,activityId); + case Activity.PARALLEL_ACTIVITY_TYPE: + return (ParallelActivity) super.find(ParallelActivity.class,activityId); + case Activity.OPTIONS_ACTIVITY_TYPE: + return (OptionsActivity) super.find(OptionsActivity.class,activityId); + case Activity.SEQUENCE_ACTIVITY_TYPE: + return (SequenceActivity) super.find(SequenceActivity.class,activityId); + default: break; + } + } + throw new DataRetrievalFailureException("Unable to get activity as the activity type is unknown or missing. Activity type is "+activityType); + } + return null; } /* @@ -110,12 +145,14 @@ * @see org.lamsfoundation.lams.learningdesign.dao.IActivityDAO#getActivityByID(java.lang.Integer) */ public Activity getActivityByUIID(Integer id, LearningDesign design) { - Long designID = design.getLearningDesignId(); - List list = this.getHibernateTemplate().find(FIND_BY_UI_ID,new Object[]{id,designID},new Type[]{Hibernate.INTEGER,Hibernate.LONG}); - if(list!=null && list.size()!=0) - return (Activity) list.get(0); - else - return null; + if ( id != null && design != null ) { + Long designID = design.getLearningDesignId(); + Query query = this.getSession().createQuery(FIND_BY_UI_ID); + query.setInteger(0,id.intValue()); + query.setLong(1,designID.longValue()); + return (Activity) query.uniqueResult(); + } + return null; } /** * @see org.lamsfoundation.lams.learningdesign.dao.IActivityDAO#getActivitiesByLibraryID(java.lang.Long) Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/BaseDAO.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/BaseDAO.java (.../BaseDAO.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/BaseDAO.java (.../BaseDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -25,7 +25,7 @@ import java.io.Serializable; import java.util.List; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.learningdesign.dao.IBaseDAO; @@ -55,11 +55,14 @@ this.getHibernateTemplate().delete(object); } - /** - * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.IBaseDAO#find(java.lang.Class, java.lang.Long) + /** + * Find an object. If the object is not found, + * then it will return null + * @param objClass + * @param id */ public Object find(Class objClass, Serializable id) { - return this.getHibernateTemplate().load(objClass,id); + return this.getHibernateTemplate().get(objClass,id); } /** Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java (.../LearningDesignDAO.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java (.../LearningDesignDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -24,10 +24,8 @@ import java.util.List; -import net.sf.hibernate.Hibernate; -import net.sf.hibernate.HibernateException; -import net.sf.hibernate.type.Type; - +import org.hibernate.HibernateException; +import org.hibernate.Query; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; @@ -70,11 +68,15 @@ } public List getLearningDesignByUserId(Long userID){ - try{ - return this.getSession().find(FIND_BY_USERID,new Object[]{userID}, new Type[]{Hibernate.LONG}); - }catch(HibernateException he){ - return null; - } + if ( userID != null ) { + try{ + Query query = this.getSession().createQuery(FIND_BY_USERID); + query.setLong(0,userID.longValue()); + return query.list(); + }catch(HibernateException he){ + } + } + return null; } /** Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java (.../TransitionDAO.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java (.../TransitionDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -24,9 +24,7 @@ import java.util.List; -import net.sf.hibernate.Hibernate; -import net.sf.hibernate.type.Type; - +import org.hibernate.Query; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.Transition; import org.lamsfoundation.lams.learningdesign.dao.ITransitionDAO; @@ -55,25 +53,34 @@ * @see org.lamsfoundation.lams.learningdesign.dao.ITransitionDAO#getTransitionByToActivityID(java.lang.Long) */ public Transition getTransitionByToActivityID(Long toActivityID) { - List list = this.getHibernateTemplate().find(FIND_BY_TO_ACTIVITY,new Object[]{toActivityID}, new Type[]{Hibernate.LONG}); - return (Transition)list.get(0); + if ( toActivityID != null ) { + Query query = this.getSession().createQuery(FIND_BY_TO_ACTIVITY); + query.setLong(0,toActivityID.longValue()); + return (Transition) query.uniqueResult(); + } + return null; } /** * (non-Javadoc) * @see org.lamsfoundation.lams.learningdesign.dao.ITransitionDAO#getTransitionByfromActivityID(java.lang.Long) */ public Transition getTransitionByfromActivityID(Long fromActivityID) { - List list = this.getHibernateTemplate().find(FIND_BY_FROM_ACTIVITY,new Object[]{fromActivityID}, new Type[]{Hibernate.LONG}); - if(list.size()!=0) - return (Transition)list.get(0); - else - return null; + if ( fromActivityID != null ) { + return (Transition) this.getSession().createQuery(FIND_BY_FROM_ACTIVITY) + .setLong(0,fromActivityID.longValue()) + .uniqueResult(); + } + return null; } public List getTransitionsByLearningDesignID(Long learningDesignID){ - List list = this.getHibernateTemplate().find(FIND_BY_LEARNING_DESIGN_ID, new Object[]{learningDesignID}, new Type[]{Hibernate.LONG}); - return list; + if ( learningDesignID != null ) { + return this.getSession().createQuery(FIND_BY_LEARNING_DESIGN_ID) + .setLong(0, learningDesignID.longValue()) + .list(); + } + return null; } public Activity getNextActivity(Long fromActivityID){ Transition transition = getTransitionByfromActivityID(fromActivityID); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ComplexActivityStrategy.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ComplexActivityStrategy.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ComplexActivityStrategy.java (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -0,0 +1,106 @@ +/**************************************************************** + * 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.strategy; + +import java.io.Serializable; +import java.util.Iterator; + +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ComplexActivity; +import org.lamsfoundation.lams.lesson.LearnerProgress; + + +/** + * Typical implementation of strategy pattern avoid complicated conditional + * logic to process activity object hierarchy. It is responsible for all + * polymorphism caculation regarding different type of activity. + * + * @author Jacky Fang 2005-2-23 + * @version 1.1 + */ +public abstract class ComplexActivityStrategy implements Serializable +{ + /** + *

Check up all children completion status for a complex activity.

+ * Precondition: the activity should a complex activity that has children. + * + * @param activity the complex activity + * @param learnerProgress the progress data that record what has been + * completed + * @return true if all children are completed. + */ + public boolean areChildrenCompleted(LearnerProgress learnerProgress) + { + ComplexActivity complexActivity = getComplexActivity(); + + int numOfCompletedActivities=0; + + if ( complexActivity != null ) { + for(Iterator i = complexActivity.getActivities().iterator();i.hasNext();) + { + Activity currentActivity = (Activity)i.next(); + if(learnerProgress.getCompletedActivities().contains(currentActivity)) + numOfCompletedActivities++; + } + } + + return isComplete(numOfCompletedActivities); + + } + + /** + * Check up the children activity completion status against number of + * activities that has been completed within target complex activity. + * @param numOfCompletedActivities the number of completed activities in the + * progress data + * @return true if the completion condition is met. + */ + protected abstract boolean isComplete(int numOfCompletedActivities); + + + /** + * This method get next activity that should be progressed against the + * requested incomplete parent activity. + * + * Changes made to remove casting (by Fiona Malikoff) made the assumption + * that the parent is always a ComplexActivity. If this is not correct + * we may have a problem. + * @param parent The requested incomplete parent activity. + * @param currentChild the current children we have just completed. + * + * @return the activity we should progress to. + */ + public abstract Activity getNextActivityByParent(ComplexActivity parent, Activity currentChild); + + /** + * Get the strategy's activity as a Complex Activity. Needed for areChildrenCompleted() + */ + protected abstract ComplexActivity getComplexActivity(); + + /** Set the getActivity() to return the result of getComplexActivity() - no need for + * subclasses to create two methods that do much the same thing. + */ + protected Activity getActivity() { + return getComplexActivity(); + } +} Fisheye: Tag 42ddbd4c509c956cc9f5328cea8d45d6e593e796 refers to a dead (removed) revision in file `lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ComplextActivityStrategy.java'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GateActivityStrategy.java =================================================================== diff -u -r7c861054fe51b0ee7de9fc48d6aebb67a1f6b82e -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GateActivityStrategy.java (.../GateActivityStrategy.java) (revision 7c861054fe51b0ee7de9fc48d6aebb67a1f6b82e) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GateActivityStrategy.java (.../GateActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -41,6 +41,13 @@ */ public abstract class GateActivityStrategy extends SimpleActivityStrategy { + protected GateActivity gateActivity = null; + + public GateActivityStrategy(GateActivity gateActivity) { + this.gateActivity = gateActivity; + } + + //--------------------------------------------------------------------- // Template methods //--------------------------------------------------------------------- @@ -56,23 +63,24 @@ * @param lessonLearners all learners who are currently in the lesson. * @return whether we should open it or not. */ - public boolean shouldOpenGateFor(User learner,List lessonLearners,GateActivity activity) + public boolean shouldOpenGateFor(User learner,List lessonLearners) { - activity.addWaitingLeaner(learner); + gateActivity.addWaitingLeaner(learner); - if(!activity.getGateOpen().booleanValue()) + if(!gateActivity.getGateOpen().booleanValue()) { - if( isOpenConditionMet(activity, lessonLearners)) + if( isOpenConditionMet(lessonLearners)) { - activity.setGateOpen(new Boolean(true)); - activity.getWaitingLearners().clear(); + gateActivity.setGateOpen(new Boolean(true)); + gateActivity.getWaitingLearners().clear(); } } //always clear waiting list if the gate is already opened. - else - activity.getWaitingLearners().clear(); - return activity.getGateOpen().booleanValue(); + else { + gateActivity.getWaitingLearners().clear(); + } + return gateActivity.getGateOpen().booleanValue(); } //--------------------------------------------------------------------- @@ -82,14 +90,23 @@ * Check up the open condition according the gate type. * @return return true if the condition is met. */ - protected abstract boolean isOpenConditionMet(GateActivity activity, - List lessonLearners); + protected abstract boolean isOpenConditionMet(List lessonLearners); //--------------------------------------------------------------------- // Overidden methods //--------------------------------------------------------------------- /** * @see org.lamsfoundation.lams.learningdesign.strategy.SimpleActivityStrategy#setUpContributionType(org.lamsfoundation.lams.learningdesign.Activity, java.util.ArrayList) */ - protected abstract void setUpContributionType(Activity activity, ArrayList contributionTypes); + protected abstract void setUpContributionType(ArrayList contributionTypes); + /** + * Get the activity for this strategy. The activity should be set + * when the strategy is created. + */ + protected Activity getActivity() { + return gateActivity; + } + + + } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GroupingActivityStrategy.java =================================================================== diff -u -r8d2dabc317bc680cb4fc2fff6c598a9a453bec69 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GroupingActivityStrategy.java (.../GroupingActivityStrategy.java) (revision 8d2dabc317bc680cb4fc2fff6c598a9a453bec69) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GroupingActivityStrategy.java (.../GroupingActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -39,17 +39,34 @@ */ public class GroupingActivityStrategy extends SimpleActivityStrategy { + private GroupingActivity groupingActivity = null; + + public GroupingActivityStrategy(GroupingActivity groupingActivity) { + this.groupingActivity = groupingActivity; + } + //--------------------------------------------------------------------- // Overriden methods //--------------------------------------------------------------------- /** * @see org.lamsfoundation.lams.learningdesign.strategy.SimpleActivityStrategy#setUpContributionType(org.lamsfoundation.lams.learningdesign.Activity, java.util.ArrayList) */ - protected void setUpContributionType(Activity activity, ArrayList contributionTypes) + protected void setUpContributionType(ArrayList contributionTypes) { - GroupingActivity groupingActivity =(GroupingActivity)activity; - if(groupingActivity.getCreateGrouping().getGroupingTypeId()== Grouping.CHOSEN_GROUPING_TYPE) - contributionTypes.add(CHOSEN_GROUPING); + if ( groupingActivity != null ) { + if(groupingActivity.getCreateGrouping().getGroupingTypeId()== Grouping.CHOSEN_GROUPING_TYPE) + contributionTypes.add(CHOSEN_GROUPING); + } } + + /** + * Get the activity for this strategy. The activity should be set + * when the strategy is created. + */ + protected Activity getActivity() { + return groupingActivity; + } + + } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/OptionsActivityStrategy.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/OptionsActivityStrategy.java (.../OptionsActivityStrategy.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/OptionsActivityStrategy.java (.../OptionsActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -33,18 +33,23 @@ * @author Jacky Fang 2005-2-24 * @version 1.1 */ -public class OptionsActivityStrategy extends ComplextActivityStrategy +public class OptionsActivityStrategy extends ComplexActivityStrategy { + private OptionsActivity optionsActivity = null; + + public OptionsActivityStrategy(OptionsActivity optionsActivity) { + this.optionsActivity = optionsActivity; + } /** * Return the next activity for a incomplete options activity. In terms of * incomplete option activity, the next activity will always be the option * activity itself so as to display the options page again when the user * finish one option. * - * @see org.lamsfoundation.lams.learningdesign.strategy.ComplextActivityStrategy#getNextActivityByParent(Activity, Activity) + * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#getNextActivityByParent(Activity, Activity) */ - public Activity getNextActivityByParent(Activity parent, Activity currentChild) + public Activity getNextActivityByParent(ComplexActivity parent, Activity currentChild) { return parent; } @@ -54,12 +59,20 @@ * activity. A option activity is marked as complete if the maximum * number of options requirement is met. * - * @see org.lamsfoundation.lams.learningdesign.strategy.ComplextActivityStrategy#isComplete(int, org.lamsfoundation.lams.learningdesign.ComplexActivity) + * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#isComplete(int, org.lamsfoundation.lams.learningdesign.ComplexActivity) */ - protected boolean isComplete(int numOfCompletedActivities, ComplexActivity complexActivity) + protected boolean isComplete(int numOfCompletedActivities) { - OptionsActivity optionsActivity = (OptionsActivity)complexActivity; - return numOfCompletedActivities>=optionsActivity.getMaxNumberOfOptions().intValue()?true:false; + if ( optionsActivity != null ) { + return numOfCompletedActivities>=optionsActivity.getMaxNumberOfOptions().intValue()?true:false; + } + return true; } + /** + * Get the strategy's activity as a Complex Activity. + */ + protected ComplexActivity getComplexActivity() { + return optionsActivity; + } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ParallelActivityStrategy.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ParallelActivityStrategy.java (.../ParallelActivityStrategy.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ParallelActivityStrategy.java (.../ParallelActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -34,16 +34,22 @@ * @author Jacky Fang 2005-2-24 * @version 1.1 */ -public class ParallelActivityStrategy extends ComplextActivityStrategy +public class ParallelActivityStrategy extends ComplexActivityStrategy { + private ParallelActivity parallelActivity = null; + + public ParallelActivityStrategy(ParallelActivity parallelActivity) { + this.parallelActivity = parallelActivity; + } + /** * Regarding incomplete parallel activity, the next activity will always * be a waiting activity, which will finally translated into waiting * message. * - * @see org.lamsfoundation.lams.learningdesign.strategy.ComplextActivityStrategy#getNextActivityByParent(Activity, Activity) + * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#getNextActivityByParent(Activity, Activity) */ - public Activity getNextActivityByParent(Activity activity, Activity currentChild) + public Activity getNextActivityByParent(ComplexActivity activity, Activity currentChild) { return new ParallelWaitActivity(); } @@ -53,12 +59,21 @@ * activity. A parallel activity is marked as complete if all children * activities are completed. * - * @see org.lamsfoundation.lams.learningdesign.strategy.ComplextActivityStrategy#isComplete(int, org.lamsfoundation.lams.learningdesign.ComplexActivity) + * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#isComplete(int) */ - protected boolean isComplete(int numOfCompletedActivities, ComplexActivity complexActivity) + protected boolean isComplete(int numOfCompletedActivities) { - ParallelActivity parallelActivity = (ParallelActivity)complexActivity; - return numOfCompletedActivities==parallelActivity.getActivities().size()?true:false; + if ( parallelActivity != null ) { + return numOfCompletedActivities==parallelActivity.getActivities().size()?true:false; + } else { + return true; + } } + /** + * Get the strategy's activity as a Complex Activity. + */ + protected ComplexActivity getComplexActivity() { + return parallelActivity; + } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/PermissionGateActivityStrategy.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/PermissionGateActivityStrategy.java (.../PermissionGateActivityStrategy.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/PermissionGateActivityStrategy.java (.../PermissionGateActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.List; -import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.GateActivity; /** @@ -39,13 +38,16 @@ */ public class PermissionGateActivityStrategy extends GateActivityStrategy { + public PermissionGateActivityStrategy(GateActivity gateActivity) { + super(gateActivity); + } //--------------------------------------------------------------------- // Overriden methods //--------------------------------------------------------------------- /** * @see org.lamsfoundation.lams.learningdesign.strategy.GateActivityStrategy#setUpContributionType(org.lamsfoundation.lams.learningdesign.Activity, java.util.ArrayList) */ - protected void setUpContributionType(Activity activity, ArrayList contributionTypes) + protected void setUpContributionType(ArrayList contributionTypes) { contributionTypes.add(PERMISSION_GATE); } @@ -57,9 +59,13 @@ * * @see org.lamsfoundation.lams.learningdesign.strategy.GateActivityStrategy#isOpenConditionMet() */ - protected boolean isOpenConditionMet(GateActivity activity,List lessonLearners) + protected boolean isOpenConditionMet(List lessonLearners) { - return activity.getGateOpen().booleanValue(); + if ( gateActivity != null ) { + return gateActivity.getGateOpen().booleanValue(); + } + return true; + } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ScheduleGateActivityStrategy.java =================================================================== diff -u -r5aeac857470016dee2ac67a8369d5c40cce4bb3c -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ScheduleGateActivityStrategy.java (.../ScheduleGateActivityStrategy.java) (revision 5aeac857470016dee2ac67a8369d5c40cce4bb3c) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ScheduleGateActivityStrategy.java (.../ScheduleGateActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.List; -import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.GateActivity; @@ -41,15 +40,19 @@ */ public class ScheduleGateActivityStrategy extends GateActivityStrategy { + public ScheduleGateActivityStrategy(GateActivity gateActivity) { + super(gateActivity); + } + + //--------------------------------------------------------------------- // Overriden methods //--------------------------------------------------------------------- /** * @see org.lamsfoundation.lams.learningdesign.strategy.GateActivityStrategy#setUpContributionType(org.lamsfoundation.lams.learningdesign.Activity, java.util.ArrayList) */ - protected void setUpContributionType(Activity activity, - ArrayList contributionTypes) + protected void setUpContributionType(ArrayList contributionTypes) { contributionTypes.add(SCHEDULE_GATE); } @@ -62,9 +65,11 @@ * * @see org.lamsfoundation.lams.learningdesign.strategy.GateActivityStrategy#isOpenConditionMet() */ - protected boolean isOpenConditionMet(GateActivity activity, - List lessonLearners) + protected boolean isOpenConditionMet(List lessonLearners) { - return activity.getGateOpen().booleanValue(); + if ( gateActivity != null ) { + return gateActivity.getGateOpen().booleanValue(); + } + return true; } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SequenceActivityStrategy.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SequenceActivityStrategy.java (.../SequenceActivityStrategy.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SequenceActivityStrategy.java (.../SequenceActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -38,29 +38,34 @@ * @author Jacky Fang 2005-2-24 * @version 1.1 */ -public class SequenceActivityStrategy extends ComplextActivityStrategy +public class SequenceActivityStrategy extends ComplexActivityStrategy { - + protected SequenceActivity sequenceActivity = null; + + public SequenceActivityStrategy(SequenceActivity sequenceActivity) { + this.sequenceActivity = sequenceActivity; + } + /** - *

Return the next activity for a incomplete options activity. For a - * sequence activity, the activity should be the next activity in the + *

Return the next activity for a incomplete options activity. + * + *

For a sequence activity, the activity should be the next activity in the * children activity set ordered by activity id.

* * Pre-condition: the parent must have some incomplete children * - * @see org.lamsfoundation.lams.learningdesign.strategy.ComplextActivityStrategy#getNextActivityByParent(Activity, Activity) + * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#getNextActivityByParent(Activity, Activity) */ - public Activity getNextActivityByParent(Activity parent, Activity currentChild) + public Activity getNextActivityByParent(ComplexActivity parent, Activity currentChild) { Set children = new TreeSet(new ActivityOrderComparator()); + children.addAll(parent.getActivities()); - children.addAll(((ComplexActivity)parent).getActivities()); - 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()) + if(currentChild==null || currentChild.isNull()) return curChild; if(curChild.getActivityId().longValue()==currentChild.getActivityId().longValue()) @@ -74,12 +79,20 @@ * of this sequence activity appear in the completed activities set from * current learner progress. * - * @see org.lamsfoundation.lams.learningdesign.strategy.ComplextActivityStrategy#isComplete(int, org.lamsfoundation.lams.learningdesign.ComplexActivity) + * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#isComplete(int, org.lamsfoundation.lams.learningdesign.ComplexActivity) */ - protected boolean isComplete(int numOfCompletedActivities, ComplexActivity complexActivity) + protected boolean isComplete(int numOfCompletedActivities) { - SequenceActivity sequenceActivity = (SequenceActivity)complexActivity; - return numOfCompletedActivities==sequenceActivity.getActivities().size()?true:false; + if ( sequenceActivity != null ) { + return numOfCompletedActivities==sequenceActivity.getActivities().size()?true:false; + } + return true; } + /** + * Get the strategy's activity as a Complex Activity. + */ + protected ComplexActivity getComplexActivity() { + return sequenceActivity; + } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SimpleActivityStrategy.java =================================================================== diff -u -r8d2dabc317bc680cb4fc2fff6c598a9a453bec69 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SimpleActivityStrategy.java (.../SimpleActivityStrategy.java) (revision 8d2dabc317bc680cb4fc2fff6c598a9a453bec69) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SimpleActivityStrategy.java (.../SimpleActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -34,7 +34,14 @@ * code as possible. Abstract methods sit at this level is designed to be * overidden by sub simple activities to polymorphically achieve the behavior * specific to particular conrete activity. - * + *

+ * When a particular strategy is created, the activity should be + * stored in the strategy. This allows the strategy to have the + * correct activity type and (hopefully) stops the need for casting, + * which is difficult with Hibernates proxied objects. Each strategy + * needs to define a method getActivity() so that shared methods + * (such as getContributionType()) can access the activity. + *

* @author Jacky Fang * @author Minhas * @version 1.1 @@ -61,12 +68,14 @@ * @param activity the activity that has contribute type. * @return an array of contribute types. */ - public Integer[] getContributionType(Activity activity) + public Integer[] getContributionType() { + Activity activity = getActivity(); + ArrayList contributionTypes = new ArrayList(); //abstract method to polymorphically setup contribute type. - setUpContributionType(activity,contributionTypes); + setUpContributionType(contributionTypes); return (Integer[])contributionTypes.toArray(new Integer[contributionTypes.size()]); } @@ -80,5 +89,11 @@ * for. * @param contributionTypes the list that holds contribution types. */ - protected abstract void setUpContributionType(Activity activity,ArrayList contributionTypes); + protected abstract void setUpContributionType(ArrayList contributionTypes); + + /** + * Get the activity for this strategy. The activity should be set + * when the strategy is created. + */ + protected abstract Activity getActivity(); } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java =================================================================== diff -u -r394bfc3611adc9d71b2549e4863db555bf32c6cd -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java (.../SynchGateActivityStrategy.java) (revision 394bfc3611adc9d71b2549e4863db555bf32c6cd) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java (.../SynchGateActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -26,7 +26,6 @@ import java.util.Iterator; import java.util.List; -import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.GateActivity; import org.lamsfoundation.lams.usermanagement.User; @@ -43,6 +42,10 @@ */ public class SynchGateActivityStrategy extends GateActivityStrategy { + public SynchGateActivityStrategy(GateActivity gateActivity) { + super(gateActivity); + } + //--------------------------------------------------------------------- // Overriden methods //--------------------------------------------------------------------- @@ -59,27 +62,26 @@ * * @see org.lamsfoundation.lams.learningdesign.strategy.GateActivityStrategy#isOpenConditionMet() */ - protected boolean isOpenConditionMet(GateActivity activity, - List lessonLearners) + protected boolean isOpenConditionMet(List lessonLearners) { - for(Iterator i = lessonLearners.iterator();i.hasNext();) - { - User learner = (User)i.next(); - if (!activity.getWaitingLearners().contains(learner)) - return false; - } + if ( gateActivity != null ) { + for(Iterator i = lessonLearners.iterator();i.hasNext();) + { + User learner = (User)i.next(); + if (!gateActivity.getWaitingLearners().contains(learner)) + return false; + } + } return true; } /** * @see org.lamsfoundation.lams.learningdesign.strategy.SimpleActivityStrategy#setUpContributionType(org.lamsfoundation.lams.learningdesign.Activity, java.util.ArrayList) */ - protected void setUpContributionType(Activity activity, - ArrayList contributionTypes) + protected void setUpContributionType(ArrayList contributionTypes) { contributionTypes.add(SYNC_GATE); } - } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ToolActivityStrategy.java =================================================================== diff -u -r8d2dabc317bc680cb4fc2fff6c598a9a453bec69 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ToolActivityStrategy.java (.../ToolActivityStrategy.java) (revision 8d2dabc317bc680cb4fc2fff6c598a9a453bec69) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ToolActivityStrategy.java (.../ToolActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -38,22 +38,37 @@ */ public class ToolActivityStrategy extends SimpleActivityStrategy { + protected ToolActivity toolActivity = null; + + public ToolActivityStrategy(ToolActivity toolActivity) { + this.toolActivity = toolActivity; + } + //--------------------------------------------------------------------- // Overriden methods //--------------------------------------------------------------------- /** * @see org.lamsfoundation.lams.learningdesign.strategy.SimpleActivityStrategy#setUpContributionType(org.lamsfoundation.lams.learningdesign.Activity) */ - protected void setUpContributionType(Activity activity, - ArrayList contributionTypes) + protected void setUpContributionType(ArrayList contributionTypes) { - ToolActivity toolActivity = (ToolActivity)activity; - if(toolActivity.getTool().getSupportsModeration()) - contributionTypes.add(MODERATION); - if(toolActivity.getTool().getSupportsContribute()) - contributionTypes.add(CONTRIBUTION); - if(toolActivity.getDefineLater().booleanValue()) - contributionTypes.add(DEFINE_LATER); + if ( toolActivity != null ) { + if(toolActivity.getTool().getSupportsModeration()) + contributionTypes.add(MODERATION); + if(toolActivity.getTool().getSupportsContribute()) + contributionTypes.add(CONTRIBUTION); + if(toolActivity.getDefineLater().booleanValue()) + contributionTypes.add(DEFINE_LATER); + } } + + /** + * Get the activity for this strategy. The activity should be set + * when the strategy is created. + */ + protected Activity getActivity() { + return toolActivity; + } + } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonDAO.java =================================================================== diff -u -r1e0bc17b86ca19f4d4fca4a7f3fb240b7e79418b -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonDAO.java (.../ILessonDAO.java) (revision 1e0bc17b86ca19f4d4fca4a7f3fb240b7e79418b) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonDAO.java (.../ILessonDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -27,7 +27,7 @@ public List getAllLessons(); - public Lesson getLessonWithEagerlyFetchedProgress(Long lessonId); + public Lesson getLessonWithJoinFetchedProgress(Long lessonId); /** * Gets all lessons that are active for a learner. * @param learner a User that identifies the learner. Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java =================================================================== diff -u -r759eb1d42eebb367bfde396603adf767665cb0c7 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision 759eb1d42eebb367bfde396603adf767665cb0c7) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java (.../LearnerProgressDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -6,17 +6,15 @@ package org.lamsfoundation.lams.lesson.dao.hibernate; -import net.sf.hibernate.HibernateException; -import net.sf.hibernate.Session; - -import org.springframework.orm.hibernate.HibernateCallback; -import org.springframework.orm.hibernate.HibernateTemplate; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; - -import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO; +import org.hibernate.HibernateException; +import org.hibernate.Session; import org.lamsfoundation.lams.lesson.LearnerProgress; import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.lesson.dao.ILearnerProgressDAO; import org.lamsfoundation.lams.usermanagement.User; +import org.springframework.orm.hibernate3.HibernateCallback; +import org.springframework.orm.hibernate3.HibernateTemplate; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * Hibernate implementation of ILessonDAO Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java =================================================================== diff -u -r7e008c96c3f7a56c3c90cff94b5225865b8d99ba -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java (.../LessonClassDAO.java) (revision 7e008c96c3f7a56c3c90cff94b5225865b8d99ba) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java (.../LessonClassDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -7,7 +7,7 @@ package org.lamsfoundation.lams.lesson.dao.hibernate; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.lesson.LessonClass; import org.lamsfoundation.lams.lesson.dao.ILessonClassDAO; Index: lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java =================================================================== diff -u -r1e0bc17b86ca19f4d4fca4a7f3fb240b7e79418b -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java (.../LessonDAO.java) (revision 1e0bc17b86ca19f4d4fca4a7f3fb240b7e79418b) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java (.../LessonDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -8,20 +8,17 @@ import java.util.List; - -import net.sf.hibernate.FetchMode; -import net.sf.hibernate.HibernateException; -import net.sf.hibernate.Query; -import net.sf.hibernate.Session; -import net.sf.hibernate.expression.Expression; - -import org.springframework.orm.hibernate.HibernateCallback; -import org.springframework.orm.hibernate.HibernateTemplate; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; - -import org.lamsfoundation.lams.lesson.dao.ILessonDAO; +import org.hibernate.FetchMode; +import org.hibernate.HibernateException; +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.criterion.Expression; import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.lesson.dao.ILessonDAO; import org.lamsfoundation.lams.usermanagement.User; +import org.springframework.orm.hibernate3.HibernateCallback; +import org.springframework.orm.hibernate3.HibernateTemplate; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * Hibernate implementation of ILessonDAO * @author chris @@ -43,7 +40,7 @@ } - public Lesson getLessonWithEagerlyFetchedProgress(final Long lessonId) + public Lesson getLessonWithJoinFetchedProgress(final Long lessonId) { HibernateTemplate hibernateTemplate = new HibernateTemplate(this.getSessionFactory()); @@ -54,7 +51,7 @@ { return session.createCriteria(Lesson.class) .add(Expression.like("lessonId",lessonId)) - .setFetchMode("learnerProgresses",FetchMode.EAGER) + .setFetchMode("learnerProgresses",FetchMode.JOIN) .uniqueResult(); } } Index: lams_common/src/java/org/lamsfoundation/lams/localApplicationContext.xml =================================================================== diff -u -r75239a45d21d7acea900a9ddecf1ab0cc2d4d9a2 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/localApplicationContext.xml (.../localApplicationContext.xml) (revision 75239a45d21d7acea900a9ddecf1ab0cc2d4d9a2) +++ lams_common/src/java/org/lamsfoundation/lams/localApplicationContext.xml (.../localApplicationContext.xml) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -28,7 +28,7 @@ - + Index: lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsStrutsTestCase.java =================================================================== diff -u -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsStrutsTestCase.java (.../AbstractLamsStrutsTestCase.java) (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) +++ lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsStrutsTestCase.java (.../AbstractLamsStrutsTestCase.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -27,12 +27,12 @@ import junit.framework.TestCase; -import net.sf.hibernate.HibernateException; -import net.sf.hibernate.Session; -import net.sf.hibernate.SessionFactory; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.SessionFactory; -import org.springframework.orm.hibernate.SessionFactoryUtils; -import org.springframework.orm.hibernate.SessionHolder; +import org.springframework.orm.hibernate3.SessionFactoryUtils; +import org.springframework.orm.hibernate3.SessionHolder; import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; Index: lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsTestCase.java =================================================================== diff -u -r6611d2eeb9fb993793125322f07866b2c1841d94 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsTestCase.java (.../AbstractLamsTestCase.java) (revision 6611d2eeb9fb993793125322f07866b2c1841d94) +++ lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsTestCase.java (.../AbstractLamsTestCase.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -14,16 +14,16 @@ import javax.sql.DataSource; import junit.framework.TestCase; -import net.sf.hibernate.HibernateException; -import net.sf.hibernate.Session; -import net.sf.hibernate.SessionFactory; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.SessionFactory; import org.lamsfoundation.lams.util.wddx.WDDXProcessor; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.orm.hibernate.SessionFactoryUtils; -import org.springframework.orm.hibernate.SessionHolder; +import org.springframework.orm.hibernate3.SessionFactoryUtils; +import org.springframework.orm.hibernate3.SessionHolder; import org.springframework.transaction.support.TransactionSynchronizationManager; import com.allaire.wddx.WddxDeserializationException; Index: lams_common/src/java/org/lamsfoundation/lams/themes/dao/hibernate/CSSThemeDAO.java =================================================================== diff -u -rb0e60dcaf9e70b994ba004f4ce83feda7923ad39 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/themes/dao/hibernate/CSSThemeDAO.java (.../CSSThemeDAO.java) (revision b0e60dcaf9e70b994ba004f4ce83feda7923ad39) +++ lams_common/src/java/org/lamsfoundation/lams/themes/dao/hibernate/CSSThemeDAO.java (.../CSSThemeDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -9,7 +9,7 @@ import org.lamsfoundation.lams.themes.CSSThemeVisualElement; import org.lamsfoundation.lams.themes.dao.ICSSThemeDAO; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * This class interacts with Spring's HibernateTemplate to save/delete and Index: lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolContentDAO.java =================================================================== diff -u -r432eded2e44dafaf043b7a6acb26e448cb6697a4 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolContentDAO.java (.../ToolContentDAO.java) (revision 432eded2e44dafaf043b7a6acb26e448cb6697a4) +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolContentDAO.java (.../ToolContentDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -11,7 +11,7 @@ import org.lamsfoundation.lams.tool.ToolContent; import org.lamsfoundation.lams.tool.dao.IToolContentDAO; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** Index: lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolDAO.java =================================================================== diff -u -raa08b1215054e853665848e2e59db391c672679b -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolDAO.java (.../ToolDAO.java) (revision aa08b1215054e853665848e2e59db391c672679b) +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolDAO.java (.../ToolDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -11,13 +11,12 @@ import java.util.List; -import net.sf.hibernate.HibernateException; -import net.sf.hibernate.Session; - +import org.hibernate.HibernateException; +import org.hibernate.Session; import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.dao.IToolDAO; -import org.springframework.orm.hibernate.HibernateCallback; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.HibernateCallback; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** Index: lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java =================================================================== diff -u -r7def51eecc3d871673b614e8cb9a1ffc87a98881 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java (.../ToolSessionDAO.java) (revision 7def51eecc3d871673b614e8cb9a1ffc87a98881) +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java (.../ToolSessionDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -6,18 +6,16 @@ package org.lamsfoundation.lams.tool.dao.hibernate; -import net.sf.hibernate.HibernateException; -import net.sf.hibernate.Session; - -import org.springframework.orm.hibernate.HibernateCallback; -import org.springframework.orm.hibernate.HibernateTemplate; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; - +import org.hibernate.HibernateException; +import org.hibernate.Session; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.tool.ToolSession; import org.lamsfoundation.lams.tool.dao.IToolSessionDAO; import org.lamsfoundation.lams.usermanagement.User; +import org.springframework.orm.hibernate3.HibernateCallback; +import org.springframework.orm.hibernate3.HibernateTemplate; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * Hibernate implementation of ILessonDAO Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java =================================================================== diff -u -r19c9010eff6be2e29657beed94349a978088650f -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java (.../AuthenticationMethod.java) (revision 19c9010eff6be2e29657beed94349a978088650f) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java (.../AuthenticationMethod.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -77,6 +77,7 @@ /** * @hibernate.many-to-one * not-null="true" + * lazy="false" * @hibernate.column name="authentication_method_type_id" * */ Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodDAO.java =================================================================== diff -u -r19c9010eff6be2e29657beed94349a978088650f -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodDAO.java (.../AuthenticationMethodDAO.java) (revision 19c9010eff6be2e29657beed94349a978088650f) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodDAO.java (.../AuthenticationMethodDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -7,7 +7,7 @@ import java.util.List; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; import org.lamsfoundation.lams.usermanagement.User; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodTypeDAO.java =================================================================== diff -u -r19c9010eff6be2e29657beed94349a978088650f -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodTypeDAO.java (.../AuthenticationMethodTypeDAO.java) (revision 19c9010eff6be2e29657beed94349a978088650f) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodTypeDAO.java (.../AuthenticationMethodTypeDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -7,7 +7,7 @@ import java.util.List; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.usermanagement.AuthenticationMethodType; import org.lamsfoundation.lams.usermanagement.dao.IAuthenticationMethodTypeDAO; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java =================================================================== diff -u -r79758294f0dfdfd6f805b9232fe3886b1a5b84ae -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java (.../OrganisationDAO.java) (revision 79758294f0dfdfd6f805b9232fe3886b1a5b84ae) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java (.../OrganisationDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -8,7 +8,7 @@ import java.util.List; import java.util.Iterator; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.usermanagement.dao.IOrganisationDAO; import org.lamsfoundation.lams.usermanagement.Organisation; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAO.java =================================================================== diff -u -r19c9010eff6be2e29657beed94349a978088650f -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAO.java (.../OrganisationTypeDAO.java) (revision 19c9010eff6be2e29657beed94349a978088650f) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAO.java (.../OrganisationTypeDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -7,7 +7,7 @@ import java.util.List; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.usermanagement.OrganisationType; import org.lamsfoundation.lams.usermanagement.dao.IOrganisationTypeDAO; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java (.../RoleDAO.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java (.../RoleDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -24,7 +24,7 @@ import java.util.List; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.usermanagement.dao.IRoleDAO; import org.lamsfoundation.lams.usermanagement.Role; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java =================================================================== diff -u -r19c9010eff6be2e29657beed94349a978088650f -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java (.../UserDAO.java) (revision 19c9010eff6be2e29657beed94349a978088650f) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java (.../UserDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -7,7 +7,7 @@ import java.util.List; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.usermanagement.dao.IUserDAO; import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java =================================================================== diff -u -r19c9010eff6be2e29657beed94349a978088650f -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java (.../UserOrganisationDAO.java) (revision 19c9010eff6be2e29657beed94349a978088650f) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java (.../UserOrganisationDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -7,7 +7,7 @@ import java.util.List; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.User; Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationRoleDAO.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationRoleDAO.java (.../UserOrganisationRoleDAO.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationRoleDAO.java (.../UserOrganisationRoleDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -24,7 +24,7 @@ import java.util.List; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.lamsfoundation.lams.usermanagement.UserOrganisationRole; import org.lamsfoundation.lams.usermanagement.dao.IUserOrganisationRoleDAO; Index: lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java =================================================================== diff -u -r29276ae77ec41cd93deff18fc89fd656d2ad3ed2 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java (.../CustomizedOpenSessionInViewFilter.java) (revision 29276ae77ec41cd93deff18fc89fd656d2ad3ed2) +++ lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java (.../CustomizedOpenSessionInViewFilter.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -22,13 +22,12 @@ package org.lamsfoundation.lams.util; -import net.sf.hibernate.FlushMode; -import net.sf.hibernate.Session; -import net.sf.hibernate.SessionFactory; - +import org.hibernate.FlushMode; +import org.hibernate.Session; +import org.hibernate.SessionFactory; import org.springframework.dao.DataAccessResourceFailureException; -import org.springframework.orm.hibernate.SessionFactoryUtils; -import org.springframework.orm.hibernate.support.OpenSessionInViewFilter; +import org.springframework.orm.hibernate3.SessionFactoryUtils; +import org.springframework.orm.hibernate3.support.OpenSessionInViewFilter; /** @@ -51,8 +50,8 @@ * @param sessionFactory the SessionFactory that this filter uses * @return the Session to use * @throws DataAccessResourceFailureException if the Session could not be created - * @see org.springframework.orm.hibernate.SessionFactoryUtils#getSession(SessionFactory, boolean) - * @see net.sf.hibernate.FlushMode#NEVER + * @see org.springframework.orm.hibernate3.SessionFactoryUtils#getSession(SessionFactory, boolean) + * @see org.hibernate.FlushMode#NEVER */ protected Session getSession(SessionFactory sessionFactory) throws DataAccessResourceFailureException { Index: lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java =================================================================== diff -u -rfa245ffd09fb1192cb8af9d7ddfe23513c15e602 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java (.../WebUtil.java) (revision fa245ffd09fb1192cb8af9d7ddfe23513c15e602) +++ lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java (.../WebUtil.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -117,10 +117,14 @@ * @exception IllegalArgumentException - * if not set */ - public static void checkString(String paramName, String paramValue) throws IllegalArgumentException + public static void checkObject(String paramName, Object paramValue) throws IllegalArgumentException { - if ((paramValue == null) || (paramValue.length() < 1)) - { + boolean isNull = ( paramValue == null ); + if ( ! isNull && String.class.isInstance(paramValue) ) { + String str = (String) paramValue; + isNull = ( str.trim().length() == 0 ); + } + if ( isNull ) { throw new IllegalArgumentException(paramName + " is required '" + paramValue + "'"); } @@ -135,7 +139,7 @@ { try { - checkString(paramName, paramValue); + checkObject(paramName, paramValue); return Integer.parseInt(paramValue.trim()); } @@ -155,7 +159,7 @@ { try { - checkString(paramName, paramValue); + checkObject(paramName, paramValue); return Long.parseLong(paramValue.trim()); } @@ -167,14 +171,27 @@ } /** + * Get a long version of paramValue, throwing an IllegalArgumentException + * if the parameter is null + * @return long value of paramValue + * @exception IllegalArgumentException - + * if not set or not long + */ + public static long checkLong(String paramName, Long paramValue) throws IllegalArgumentException + { + checkObject(paramName, paramValue); + return paramValue.longValue(); + } + + /** * @return boolean value of paramValue * @exception IllegalArgumentException - * if not set or not boolean */ public static boolean checkBoolean(String paramName, String paramValue) throws IllegalArgumentException { - checkString(paramName, paramValue); + checkObject(paramName, paramValue); return Boolean.valueOf(paramValue.trim()).booleanValue(); } @@ -238,7 +255,7 @@ public static String readStrParam(HttpServletRequest req, String paramName, boolean isOptional) { if (!isOptional) - checkString(paramName, req.getParameter(paramName)); + checkObject(paramName, req.getParameter(paramName)); return req.getParameter(paramName); } Index: lams_common/src/java/org/lamsfoundation/lams/util/zipfile/ZipFileUtil.java =================================================================== diff -u -r2503a712d2e136cc49bba3950b42a9deda364151 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/util/zipfile/ZipFileUtil.java (.../ZipFileUtil.java) (revision 2503a712d2e136cc49bba3950b42a9deda364151) +++ lams_common/src/java/org/lamsfoundation/lams/util/zipfile/ZipFileUtil.java (.../ZipFileUtil.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -20,21 +20,20 @@ */ package org.lamsfoundation.lams.util.zipfile; +import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Date; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; import org.apache.log4j.Logger; import org.lamsfoundation.lams.util.FileUtil; -import java.util.zip.ZipOutputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.BufferedInputStream; /** * Handles zip files - expands them to a temporary directory, and Index: lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java =================================================================== diff -u -r190ea78cabc1ed0f0e9e31b83aa73d153ff9620f -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java (.../SessionManager.java) (revision 190ea78cabc1ed0f0e9e31b83aa73d153ff9620f) +++ lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java (.../SessionManager.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -36,7 +36,7 @@ import javax.servlet.http.HttpSessionBindingListener; import javax.servlet.http.HttpSessionContext; -import net.sf.hibernate.id.UUIDHexGenerator; +import org.hibernate.id.UUIDHexGenerator; import org.apache.log4j.Logger; import org.lamsfoundation.lams.util.Configuration; Index: lams_common/src/java/org/lamsfoundation/lams/web/util/CustomStrutsExceptionHandler.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/web/util/CustomStrutsExceptionHandler.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/web/util/CustomStrutsExceptionHandler.java (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -0,0 +1,72 @@ + +package org.lamsfoundation.lams.web.util; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionError; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ExceptionHandler; +import org.apache.struts.config.ExceptionConfig; + + +/** + * @author Jacky + * + */ +public class CustomStrutsExceptionHandler extends ExceptionHandler +{ + + //--------------------------------------------------------------------- + // Instance Data + //--------------------------------------------------------------------- + private static Logger logger = Logger.getLogger(CustomStrutsExceptionHandler.class); + private static final String UNKNOWN_EXCEPTION = "Unknown runtime exception!"; + + // commons logging reference + /** + * Handle the exception. Standard execute method with addition of logging + * the stacktrace. + */ + public ActionForward execute(Exception ex, + ExceptionConfig ae, + ActionMapping mapping, + ActionForm formInstance, + HttpServletRequest request, + HttpServletResponse response) + { + // write the exception information to the log file + logger.fatal("fatal System exception: [" + ex.getMessage() + "] ", ex); + ActionForward forward = null; + + String property = null; + + /* + * Get the path for the forward either from the exception element or + * from the input attribute. + */ + + String path = null; + if (ae.getPath() != null) + { + path = ae.getPath(); + } + else + { + path = mapping.getInput(); + } + // Construct the forward object + forward = new ActionForward(path); + + String errorMessage = ex.getMessage().equals("null")?UNKNOWN_EXCEPTION:ex.getMessage(); + ActionError error = new ActionError( "error.system.survey", errorMessage ); + + storeException(request, property, error, forward, ae.getScope( )); + // process the exception as normal + return forward; + } + +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/workspace/dao/hibernate/WorkspaceFolderContentDAO.java =================================================================== diff -u -r0b2737221177ec6fb88f447aa647f9413f4373f8 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/src/java/org/lamsfoundation/lams/workspace/dao/hibernate/WorkspaceFolderContentDAO.java (.../WorkspaceFolderContentDAO.java) (revision 0b2737221177ec6fb88f447aa647f9413f4373f8) +++ lams_common/src/java/org/lamsfoundation/lams/workspace/dao/hibernate/WorkspaceFolderContentDAO.java (.../WorkspaceFolderContentDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -22,11 +22,9 @@ */ package org.lamsfoundation.lams.workspace.dao.hibernate; +import java.util.Iterator; import java.util.List; -import net.sf.hibernate.Hibernate; -import net.sf.hibernate.type.Type; - import org.lamsfoundation.lams.learningdesign.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.workspace.WorkspaceFolderContent; import org.lamsfoundation.lams.workspace.dao.IWorkspaceFolderContentDAO; @@ -71,22 +69,35 @@ * @see org.lamsfoundation.lams.workspace.dao.IWorkspaceFolderContentDAO#getContentByTypeFromWorkspaceFolder(java.lang.Long, java.lang.String) */ public List getContentByTypeFromWorkspaceFolder(Long workspaceFolderID,String mimeType) { - List list = this.getHibernateTemplate().find(FIND_BY_TYPE_IN_FOLDER, - new Object[]{workspaceFolderID,mimeType}, - new Type[]{Hibernate.LONG,Hibernate.STRING}); - if(list==null||list.size()==0) - return null; - else - return list; + if ( workspaceFolderID !=null ) { + return this.getSession().createQuery(FIND_BY_TYPE_IN_FOLDER) + .setLong(0,workspaceFolderID.longValue()) + .setString(1,mimeType) + .list(); + } + return null; } /** * (non-Javadoc) * @see org.lamsfoundation.lams.workspace.dao.IWorkspaceFolderContentDAO#deleteContentWithVersion(java.lang.Long, java.lang.Long, java.lang.Long) */ public int deleteContentWithVersion(Long uuid, Long versionID, Long folderContentID){ - return this.getHibernateTemplate().delete(DELETE_BY_VERSION, - new Object[]{folderContentID,uuid,versionID}, - new Type[]{Hibernate.LONG,Hibernate.LONG,Hibernate.LONG}); - + int numDeleted = 0; + if ( uuid != null && versionID != null && folderContentID != null ) { + List list = this.getSession().createQuery(DELETE_BY_VERSION) + .setLong(0, folderContentID.longValue()) + .setLong(1, uuid.longValue()) + .setLong(2,versionID.longValue()) + .list(); + if ( list != null && list.size() > 0 ) { + Iterator iter = list.iterator(); + while (iter.hasNext()) { + Object element = (Object) iter.next(); + this.getSession().delete(element); + numDeleted++; + } + } + } + return numDeleted; } } Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestActivity.java =================================================================== diff -u -r4eadad01f792238a725b1482fd63e185a86e3b73 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestActivity.java (.../TestActivity.java) (revision 4eadad01f792238a725b1482fd63e185a86e3b73) +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestActivity.java (.../TestActivity.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -74,7 +74,7 @@ { Activity complexActivity = activityDAO.getActivityByActivityId(TEST_SEQUENCE_ACTIVITY); - Set toolActivities = complexActivity.getAllToolActivitiesFrom(complexActivity); + Set toolActivities = complexActivity.getAllToolActivities(); assertEquals("verify the number tool activity we should get",2,toolActivities.size()); } @@ -83,7 +83,7 @@ { Activity simpleActivity = activityDAO.getActivityByActivityId(TEST_SURVEY_ACTIVITY); - Set toolActivities = simpleActivity.getAllToolActivitiesFrom(simpleActivity); + Set toolActivities = simpleActivity.getAllToolActivities(); assertEquals("verify the number tool activity we should get",1,toolActivities.size()); @@ -104,9 +104,9 @@ public void testGetChildActivityById() { - Activity complexActivity = activityDAO.getActivityByActivityId(TEST_SEQUENCE_ACTIVITY); + ComplexActivity complexActivity = (ComplexActivity) activityDAO.getActivityByActivityId(TEST_SEQUENCE_ACTIVITY); - Activity child = ((ComplexActivity)complexActivity).getChildActivityById(TEST_CHILD_QNA_ACTIVITY_ID); + Activity child = complexActivity.getChildActivityById(TEST_CHILD_QNA_ACTIVITY_ID); assertNotNull(child); assertEquals("verify id",TEST_CHILD_QNA_ACTIVITY_ID,child.getActivityId().longValue()); } Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestComplexActivityStrategy.java =================================================================== diff -u -r35d5350252748108494c7cb4bfc2e7d5f2271cba -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestComplexActivityStrategy.java (.../TestComplexActivityStrategy.java) (revision 35d5350252748108494c7cb4bfc2e7d5f2271cba) +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestComplexActivityStrategy.java (.../TestComplexActivityStrategy.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -130,7 +130,7 @@ testSubSeuquencActivitySR = activityDAO.getActivityByActivityId(TEST_SR_ACTIVITY_ID); testSubSeuqenceActivityQNA = activityDAO.getActivityByActivityId(TEST_QNA_ACTIVITY_ID); - Activity nextActivity = ((ComplexActivity)testSequenceActivity).getNextActivityByParent(testSubSeuquencActivitySR); + Activity nextActivity = testSequenceActivity.getNextActivityByParent(testSubSeuquencActivitySR); assertNotNull("we should have a next activity",nextActivity); assertEquals("it should be qna",this.testSubSeuqenceActivityQNA.getActivityId().longValue(),nextActivity.getActivityId().longValue()); Index: lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestActivityDAO.java =================================================================== diff -u -r4eadad01f792238a725b1482fd63e185a86e3b73 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestActivityDAO.java (.../TestActivityDAO.java) (revision 4eadad01f792238a725b1482fd63e185a86e3b73) +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestActivityDAO.java (.../TestActivityDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -19,6 +19,7 @@ http://www.gnu.org/licenses/gpl.txt */ + import java.util.List; import org.lamsfoundation.lams.learningdesign.Activity; @@ -96,39 +97,29 @@ }*/ public void testCreateToolActivityCopy(){ - activity = activityDAO.getActivityByActivityId(new Long(20)); - ToolActivity newToolActivity =null; - if(activity.isToolActivity()){ - newToolActivity = ToolActivity.createCopy((ToolActivity)activity); - activityDAO.insert(newToolActivity); - } + ToolActivity ta = (ToolActivity) activityDAO.getActivityByActivityId(new Long(20)); + ToolActivity newToolActivity = ToolActivity.createCopy(ta); + activityDAO.insert(newToolActivity); assertNotNull(newToolActivity.getActivityId()); } public void testCreateGroupingActivityCopy(){ - activity = activityDAO.getActivityByActivityId(new Long(23)); + GroupingActivity ga = (GroupingActivity) activityDAO.getActivityByActivityId(new Long(23)); GroupingActivity newGroupingActivity = null; - if(activity.isGroupingActivity()){ - newGroupingActivity = GroupingActivity.createCopy((GroupingActivity)activity); - activityDAO.insert(newGroupingActivity); - } + newGroupingActivity = GroupingActivity.createCopy(ga); + activityDAO.insert(newGroupingActivity); assertNotNull(newGroupingActivity.getActivityId()); } public void testCreateOptionsActivityCopy(){ - activity = activityDAO.getActivityByActivityId(new Long(12)); + OptionsActivity oa = (OptionsActivity) activityDAO.getActivityByActivityId(new Long(12)); OptionsActivity optionsActivity =null; - if(activity.getActivityTypeId().intValue()== Activity.OPTIONS_ACTIVITY_TYPE){ - optionsActivity = OptionsActivity.createCopy((OptionsActivity)activity); - activityDAO.insert(optionsActivity); - } + optionsActivity = OptionsActivity.createCopy(oa); + activityDAO.insert(optionsActivity); assertNotNull(optionsActivity.getActivityId()); } public void testCreateParallelActivityCopy(){ - activity = activityDAO.getActivityByActivityId(new Long(13)); - ParallelActivity parallelActivity = null; - if(activity.getActivityTypeId().intValue()==Activity.PARALLEL_ACTIVITY_TYPE){ - parallelActivity = ParallelActivity.createCopy((ParallelActivity)activity); - activityDAO.insert(parallelActivity); - } + ParallelActivity pa = (ParallelActivity) activityDAO.getActivityByActivityId(new Long(13)); + ParallelActivity parallelActivity = ParallelActivity.createCopy(pa); + activityDAO.insert(parallelActivity); assertNotNull(parallelActivity.getActivityId()); } } Index: lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java =================================================================== diff -u -r4eadad01f792238a725b1482fd63e185a86e3b73 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java (.../LessonDataAccessTestCase.java) (revision 4eadad01f792238a725b1482fd63e185a86e3b73) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java (.../LessonDataAccessTestCase.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -14,8 +14,8 @@ import java.util.Set; import junit.framework.TestCase; -import net.sf.hibernate.HibernateException; +import org.hibernate.HibernateException; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.LearningDesign; Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestInitLesson.java =================================================================== diff -u -r1d40a310039a2975dc474f61e9a732f90f86c707 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestInitLesson.java (.../TestInitLesson.java) (revision 1d40a310039a2975dc474f61e9a732f90f86c707) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestInitLesson.java (.../TestInitLesson.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -9,8 +9,7 @@ package org.lamsfoundation.lams.lesson.dao; -import net.sf.hibernate.HibernateException; - +import org.hibernate.HibernateException; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.LessonClass; import org.lamsfoundation.lams.lesson.LessonDataAccessTestCase; Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java =================================================================== diff -u -rf04ea5dd01ce29924bc450f44d9232b70dfb8f3e -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java (.../TestLearnerProgressDAO.java) (revision f04ea5dd01ce29924bc450f44d9232b70dfb8f3e) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java (.../TestLearnerProgressDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -9,9 +9,12 @@ package org.lamsfoundation.lams.lesson.dao; -import net.sf.hibernate.HibernateException; - +import org.hibernate.HibernateException; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.OptionsActivity; +import org.lamsfoundation.lams.learningdesign.ParallelActivity; +import org.lamsfoundation.lams.learningdesign.SequenceActivity; +import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.learningdesign.dao.hibernate.ActivityDAO; import org.lamsfoundation.lams.lesson.LearnerProgress; @@ -26,10 +29,10 @@ public class TestLearnerProgressDAO extends LessonDataAccessTestCase { protected IActivityDAO activityDAO; - protected Activity testToolActivity; - protected Activity testParallelActivity; - protected Activity testOptionsActivity; - protected Activity testSequenceActivity; + protected ToolActivity testToolActivity; + protected ParallelActivity testParallelActivity; + protected OptionsActivity testOptionsActivity; + protected SequenceActivity testSequenceActivity; //this is survey id we inserted in test data sql script protected static final Long TEST_TOOL_ACTIVITY_ID = new Long(15); @@ -46,10 +49,10 @@ super.initLearnerProgressData(); activityDAO =(ActivityDAO) context.getBean("activityDAO"); - testToolActivity = activityDAO.getActivityByActivityId(TEST_TOOL_ACTIVITY_ID); - testParallelActivity = activityDAO.getActivityByActivityId(TEST_PARALLEL_ACTIVITY_ID); - testOptionsActivity = activityDAO.getActivityByActivityId(TEST_OPTIONS_ACTIVITY_ID); - testSequenceActivity = activityDAO.getActivityByActivityId(TEST_SEQUENCE_ACTIVITY_ID); + testToolActivity = (ToolActivity) activityDAO.getActivityByActivityId(TEST_TOOL_ACTIVITY_ID); + testParallelActivity = (ParallelActivity) activityDAO.getActivityByActivityId(TEST_PARALLEL_ACTIVITY_ID); + testOptionsActivity = (OptionsActivity) activityDAO.getActivityByActivityId(TEST_OPTIONS_ACTIVITY_ID); + testSequenceActivity = (SequenceActivity) activityDAO.getActivityByActivityId(TEST_SEQUENCE_ACTIVITY_ID); } /* Index: lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java =================================================================== diff -u -r1e0bc17b86ca19f4d4fca4a7f3fb240b7e79418b -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java (.../TestLessonDAO.java) (revision 1e0bc17b86ca19f4d4fca4a7f3fb240b7e79418b) +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java (.../TestLessonDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -1,24 +1,37 @@ -/* ******************************************************************************** - * Copyright Notice - * ================= - * This file contains propriety information of LAMS Foundation. - * Copying or reproduction with prior written permission is prohibited. - * Copyright (c) 2005 - * Created on 2/02/2005 - ******************************************************************************** */ - +/**************************************************************** + * 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.lesson.dao; import java.util.Date; import java.util.List; +import junit.framework.TestCase; + import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.lesson.LessonDataAccessTestCase; -import org.springframework.orm.hibernate.HibernateSystemException; +import org.springframework.orm.hibernate3.HibernateSystemException; -import junit.framework.TestCase; - /** * * @author Jacky Fang 2/02/2005 @@ -51,9 +64,9 @@ } - public void testGetLessonWithEagerlyFetchedProgress() + public void testGetLessonWithJoinFetchedProgress() { - Lesson createdLesson = this.lessonDao.getLessonWithEagerlyFetchedProgress(this.testLesson.getLessonId()); + Lesson createdLesson = this.lessonDao.getLessonWithJoinFetchedProgress(this.testLesson.getLessonId()); //assert the data retrieved. super.assertLesson(createdLesson); Index: lams_common/test/java/org/lamsfoundation/lams/tool/ToolDataAccessTestCase.java =================================================================== diff -u -r4eadad01f792238a725b1482fd63e185a86e3b73 -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 --- lams_common/test/java/org/lamsfoundation/lams/tool/ToolDataAccessTestCase.java (.../ToolDataAccessTestCase.java) (revision 4eadad01f792238a725b1482fd63e185a86e3b73) +++ lams_common/test/java/org/lamsfoundation/lams/tool/ToolDataAccessTestCase.java (.../ToolDataAccessTestCase.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) @@ -102,8 +102,8 @@ //retrieve test domain data testUser = userDao.getUserById(TEST_USER_ID); - testNonGroupedActivity = (ToolActivity)activityDAO.getActivityByActivityId(TEST_NON_GROUP_ACTIVITY_ID); - testGroupedActivity = (ToolActivity)activityDAO.getActivityByActivityId(TEST_GROUPED_ACTIVITY_ID); + testNonGroupedActivity = (ToolActivity) activityDAO.getActivityByActivityId(TEST_NON_GROUP_ACTIVITY_ID); + testGroupedActivity = (ToolActivity) activityDAO.getActivityByActivityId(TEST_GROUPED_ACTIVITY_ID); testGroup = (Group)groupDao.getGroupById(TEST_GROUP_ID); testLesson = lessonDao.getLesson(TEST_LESSON_ID); }