Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml,v diff -u -r1.20 -r1.21 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml 21 Aug 2005 23:47:24 -0000 1.20 +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml 6 Oct 2005 06:31:25 -0000 1.21 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml,v diff -u -r1.6 -r1.7 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml 18 Feb 2005 01:14:48 -0000 1.6 +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml 6 Oct 2005 06:31:25 -0000 1.7 @@ -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/localApplicationContext.xml =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/Attic/localApplicationContext.xml,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/localApplicationContext.xml 30 Aug 2005 04:35:27 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/localApplicationContext.xml 6 Oct 2005 06:32:13 -0000 1.2 @@ -28,7 +28,7 @@ - + Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java,v diff -u -r1.30 -r1.31 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 21 Aug 2005 23:55:20 -0000 1.30 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 6 Oct 2005 06:32:12 -0000 1.31 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java,v diff -u -r1.11 -r1.12 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java 21 Aug 2005 23:55:20 -0000 1.11 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java 6 Oct 2005 06:32:12 -0000 1.12 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java,v diff -u -r1.9 -r1.10 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java 21 Aug 2005 23:55:20 -0000 1.9 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java 6 Oct 2005 06:32:12 -0000 1.10 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java,v diff -u -r1.11 -r1.12 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java 21 Aug 2005 23:55:20 -0000 1.11 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java 6 Oct 2005 06:32:12 -0000 1.12 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java,v diff -u -r1.14 -r1.15 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java 21 Aug 2005 23:55:20 -0000 1.14 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java 6 Oct 2005 06:32:12 -0000 1.15 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java,v diff -u -r1.15 -r1.16 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java 21 Aug 2005 23:55:20 -0000 1.15 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java 6 Oct 2005 06:32:12 -0000 1.16 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java,v diff -u -r1.13 -r1.14 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java 21 Aug 2005 23:55:20 -0000 1.13 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java 6 Oct 2005 06:32:12 -0000 1.14 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java,v diff -u -r1.17 -r1.18 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java 21 Aug 2005 23:55:20 -0000 1.17 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java 6 Oct 2005 06:32:12 -0000 1.18 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java,v diff -u -r1.15 -r1.16 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java 21 Aug 2005 23:55:20 -0000 1.15 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java 6 Oct 2005 06:32:12 -0000 1.16 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java,v diff -u -r1.7 -r1.8 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java 21 Aug 2005 23:55:20 -0000 1.7 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java 6 Oct 2005 06:32:12 -0000 1.8 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java,v diff -u -r1.13 -r1.14 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java 21 Aug 2005 23:55:20 -0000 1.13 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java 6 Oct 2005 06:32:12 -0000 1.14 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java,v diff -u -r1.16 -r1.17 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java 21 Aug 2005 23:55:20 -0000 1.16 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java 6 Oct 2005 06:32:12 -0000 1.17 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java,v diff -u -r1.7 -r1.8 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java 15 Sep 2005 05:23:54 -0000 1.7 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IActivityDAO.java 6 Oct 2005 06:32:12 -0000 1.8 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/Attic/IBaseDAO.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IBaseDAO.java 7 Jun 2005 05:41:11 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/IBaseDAO.java 6 Oct 2005 06:32:13 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java,v diff -u -r1.8 -r1.9 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java 15 Sep 2005 05:26:00 -0000 1.8 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java 6 Oct 2005 06:32:12 -0000 1.9 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/Attic/BaseDAO.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/BaseDAO.java 7 Jun 2005 05:41:20 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/BaseDAO.java 6 Oct 2005 06:32:12 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java,v diff -u -r1.4 -r1.5 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java 7 Jun 2005 05:41:20 -0000 1.4 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java 6 Oct 2005 06:32:12 -0000 1.5 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java,v diff -u -r1.5 -r1.6 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java 7 Jun 2005 05:41:20 -0000 1.5 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/TransitionDAO.java 6 Oct 2005 06:32:12 -0000 1.6 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ComplexActivityStrategy.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ComplexActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.1 @@ -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 1.4 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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GateActivityStrategy.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GateActivityStrategy.java 6 Apr 2005 23:33:59 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GateActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GroupingActivityStrategy.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GroupingActivityStrategy.java 5 Apr 2005 23:59:22 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/GroupingActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/OptionsActivityStrategy.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/OptionsActivityStrategy.java 7 Jun 2005 05:42:21 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/OptionsActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ParallelActivityStrategy.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ParallelActivityStrategy.java 7 Jun 2005 05:42:21 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ParallelActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/PermissionGateActivityStrategy.java,v diff -u -r1.4 -r1.5 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/PermissionGateActivityStrategy.java 7 Jun 2005 05:42:21 -0000 1.4 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/PermissionGateActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.5 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ScheduleGateActivityStrategy.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ScheduleGateActivityStrategy.java 14 Apr 2005 04:43:59 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ScheduleGateActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SequenceActivityStrategy.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SequenceActivityStrategy.java 7 Jun 2005 05:42:21 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SequenceActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SimpleActivityStrategy.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SimpleActivityStrategy.java 5 Apr 2005 23:59:22 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SimpleActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java 6 Apr 2005 07:34:45 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/SynchGateActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ToolActivityStrategy.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ToolActivityStrategy.java 5 Apr 2005 23:59:22 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/ToolActivityStrategy.java 6 Oct 2005 06:32:12 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonDAO.java,v diff -u -r1.7 -r1.8 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonDAO.java 30 Mar 2005 04:14:24 -0000 1.7 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/ILessonDAO.java 6 Oct 2005 06:32:12 -0000 1.8 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java,v diff -u -r1.5 -r1.6 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java 18 Feb 2005 05:11:46 -0000 1.5 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LearnerProgressDAO.java 6 Oct 2005 06:32:13 -0000 1.6 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java,v diff -u -r1.4 -r1.5 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java 4 Feb 2005 04:21:13 -0000 1.4 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonClassDAO.java 6 Oct 2005 06:32:13 -0000 1.5 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java,v diff -u -r1.10 -r1.11 --- lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java 30 Mar 2005 04:14:24 -0000 1.10 +++ lams_common/src/java/org/lamsfoundation/lams/lesson/dao/hibernate/LessonDAO.java 6 Oct 2005 06:32:13 -0000 1.11 @@ -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/test/AbstractLamsStrutsTestCase.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/test/Attic/AbstractLamsStrutsTestCase.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsStrutsTestCase.java 7 Sep 2005 01:33:21 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsStrutsTestCase.java 6 Oct 2005 06:32:12 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/test/Attic/AbstractLamsTestCase.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsTestCase.java 9 Sep 2005 00:20:15 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/test/AbstractLamsTestCase.java 6 Oct 2005 06:32:12 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/themes/dao/hibernate/CSSThemeDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/themes/dao/hibernate/CSSThemeDAO.java 21 Aug 2005 23:55:20 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/themes/dao/hibernate/CSSThemeDAO.java 6 Oct 2005 06:32:13 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolContentDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolContentDAO.java 8 Feb 2005 06:13:44 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolContentDAO.java 6 Oct 2005 06:32:13 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolDAO.java,v diff -u -r1.6 -r1.7 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolDAO.java 29 Jun 2005 02:12:34 -0000 1.6 +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolDAO.java 6 Oct 2005 06:32:13 -0000 1.7 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java,v diff -u -r1.8 -r1.9 --- lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java 1 Mar 2005 01:16:10 -0000 1.8 +++ lams_common/src/java/org/lamsfoundation/lams/tool/dao/hibernate/ToolSessionDAO.java 6 Oct 2005 06:32:13 -0000 1.9 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/AuthenticationMethod.java 6 Oct 2005 06:32:13 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/AuthenticationMethodDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodDAO.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodDAO.java 6 Oct 2005 06:32:12 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/AuthenticationMethodTypeDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodTypeDAO.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/AuthenticationMethodTypeDAO.java 6 Oct 2005 06:32:12 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java 13 Apr 2005 00:49:07 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationDAO.java 6 Oct 2005 06:32:12 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/OrganisationTypeDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAO.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/OrganisationTypeDAO.java 6 Oct 2005 06:32:12 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java 7 Jun 2005 05:43:23 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/RoleDAO.java 6 Oct 2005 06:32:12 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserDAO.java 6 Oct 2005 06:32:12 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java,v diff -u -r1.1 -r1.2 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java 28 Jan 2005 04:20:36 -0000 1.1 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationDAO.java 6 Oct 2005 06:32:12 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/Attic/UserOrganisationRoleDAO.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationRoleDAO.java 7 Jun 2005 05:43:23 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/dao/hibernate/UserOrganisationRoleDAO.java 6 Oct 2005 06:32:12 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java,v diff -u -r1.2 -r1.3 --- lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java 7 Sep 2005 01:33:21 -0000 1.2 +++ lams_common/src/java/org/lamsfoundation/lams/util/CustomizedOpenSessionInViewFilter.java 6 Oct 2005 06:32:13 -0000 1.3 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java,v diff -u -r1.8 -r1.9 --- lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java 23 Sep 2005 07:09:41 -0000 1.8 +++ lams_common/src/java/org/lamsfoundation/lams/util/WebUtil.java 6 Oct 2005 06:32:13 -0000 1.9 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/zipfile/ZipFileUtil.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/util/zipfile/ZipFileUtil.java 15 Sep 2005 05:28:19 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/util/zipfile/ZipFileUtil.java 6 Oct 2005 06:32:13 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java 30 Sep 2005 01:52:51 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java 6 Oct 2005 06:32:13 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/web/util/CustomStrutsExceptionHandler.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/web/util/CustomStrutsExceptionHandler.java 6 Oct 2005 06:32:13 -0000 1.1 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/workspace/dao/hibernate/WorkspaceFolderContentDAO.java,v diff -u -r1.3 -r1.4 --- lams_common/src/java/org/lamsfoundation/lams/workspace/dao/hibernate/WorkspaceFolderContentDAO.java 30 Aug 2005 04:36:11 -0000 1.3 +++ lams_common/src/java/org/lamsfoundation/lams/workspace/dao/hibernate/WorkspaceFolderContentDAO.java 6 Oct 2005 06:32:13 -0000 1.4 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/Attic/TestActivity.java,v diff -u -r1.9 -r1.10 --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestActivity.java 30 Aug 2005 04:37:18 -0000 1.9 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestActivity.java 6 Oct 2005 06:32:13 -0000 1.10 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/Attic/TestComplexActivityStrategy.java,v diff -u -r1.1 -r1.2 --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestComplexActivityStrategy.java 5 Apr 2005 06:52:04 -0000 1.1 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/TestComplexActivityStrategy.java 6 Oct 2005 06:32:13 -0000 1.2 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/Attic/TestActivityDAO.java,v diff -u -r1.17 -r1.18 --- lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestActivityDAO.java 30 Aug 2005 04:37:18 -0000 1.17 +++ lams_common/test/java/org/lamsfoundation/lams/learningdesign/dao/TestActivityDAO.java 6 Oct 2005 06:32:13 -0000 1.18 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/lesson/Attic/LessonDataAccessTestCase.java,v diff -u -r1.23 -r1.24 --- lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java 30 Aug 2005 04:37:18 -0000 1.23 +++ lams_common/test/java/org/lamsfoundation/lams/lesson/LessonDataAccessTestCase.java 6 Oct 2005 06:32:13 -0000 1.24 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/lesson/dao/Attic/TestInitLesson.java,v diff -u -r1.5 -r1.6 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestInitLesson.java 8 Feb 2005 01:27:06 -0000 1.5 +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestInitLesson.java 6 Oct 2005 06:32:12 -0000 1.6 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/lesson/dao/Attic/TestLearnerProgressDAO.java,v diff -u -r1.7 -r1.8 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java 13 Mar 2005 22:51:23 -0000 1.7 +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLearnerProgressDAO.java 6 Oct 2005 06:32:12 -0000 1.8 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/lesson/dao/Attic/TestLessonDAO.java,v diff -u -r1.12 -r1.13 --- lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java 30 Mar 2005 04:14:24 -0000 1.12 +++ lams_common/test/java/org/lamsfoundation/lams/lesson/dao/TestLessonDAO.java 6 Oct 2005 06:32:12 -0000 1.13 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/test/java/org/lamsfoundation/lams/tool/Attic/ToolDataAccessTestCase.java,v diff -u -r1.17 -r1.18 --- lams_common/test/java/org/lamsfoundation/lams/tool/ToolDataAccessTestCase.java 30 Aug 2005 04:37:18 -0000 1.17 +++ lams_common/test/java/org/lamsfoundation/lams/tool/ToolDataAccessTestCase.java 6 Oct 2005 06:32:12 -0000 1.18 @@ -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); } Index: lams_contentrepository/build.xml =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/build.xml,v diff -u -r1.21 -r1.22 --- lams_contentrepository/build.xml 2 Sep 2005 04:39:52 -0000 1.21 +++ lams_contentrepository/build.xml 6 Oct 2005 06:38:44 -0000 1.22 @@ -168,22 +168,6 @@ --> - - - - - - - - - - - - @@ -213,12 +197,6 @@ - - - - - - @@ -350,7 +328,7 @@ - + Index: lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrCredential.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/Attic/CrCredential.hbm.xml,v diff -u -r1.2 -r1.3 --- lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrCredential.hbm.xml 3 Feb 2005 23:39:40 -0000 1.2 +++ lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrCredential.hbm.xml 6 Oct 2005 06:38:03 -0000 1.3 @@ -1,18 +1,14 @@ + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> - - + + - + /> Index: lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNode.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/Attic/CrNode.hbm.xml,v diff -u -r1.4 -r1.5 --- lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNode.hbm.xml 3 Feb 2005 23:39:40 -0000 1.4 +++ lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNode.hbm.xml 6 Oct 2005 06:38:03 -0000 1.5 @@ -1,18 +1,14 @@ + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> @@ -36,7 +32,6 @@ type="java.lang.String" update="true" insert="true" - access="property" column="path" length="255" /> @@ -46,7 +41,6 @@ type="java.lang.String" update="true" insert="true" - access="property" column="type" length="255" not-null="true" @@ -57,17 +51,14 @@ type="java.sql.Timestamp" update="true" insert="true" - access="property" column="created_date_time" - length="14" /> @@ -78,7 +69,6 @@ outer-join="auto" update="true" insert="true" - access="property" > + /> - - + + - + /> Index: lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNodeVersion.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/Attic/CrNodeVersion.hbm.xml,v diff -u -r1.4 -r1.5 --- lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNodeVersion.hbm.xml 3 Feb 2005 23:39:40 -0000 1.4 +++ lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNodeVersion.hbm.xml 6 Oct 2005 06:38:03 -0000 1.5 @@ -1,18 +1,14 @@ + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> @@ -36,7 +32,6 @@ type="java.lang.Long" update="true" insert="true" - access="property" column="version_id" length="20" not-null="true" @@ -47,7 +42,6 @@ type="java.sql.Timestamp" update="true" insert="true" - access="property" column="created_date_time" length="14" /> @@ -59,7 +53,6 @@ outer-join="auto" update="true" insert="true" - access="property" > + /> - - + + - + /> Index: lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/Attic/CrNodeVersionProperty.hbm.xml,v diff -u -r1.3 -r1.4 --- lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.hbm.xml 3 Feb 2005 23:39:40 -0000 1.3 +++ lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.hbm.xml 6 Oct 2005 06:38:03 -0000 1.4 @@ -1,18 +1,14 @@ + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> @@ -36,7 +32,6 @@ type="java.lang.String" update="true" insert="true" - access="property" column="name" length="255" not-null="true" @@ -47,7 +42,6 @@ type="java.lang.String" update="true" insert="true" - access="property" column="value" length="255" not-null="true" @@ -58,7 +52,6 @@ type="int" update="true" insert="true" - access="property" column="type" length="3" not-null="true" @@ -71,7 +64,6 @@ outer-join="auto" update="true" insert="true" - access="property" > + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> @@ -36,7 +32,6 @@ type="java.lang.String" update="true" insert="true" - access="property" column="name" length="255" not-null="true" @@ -50,14 +45,14 @@ sort="unsorted" > - - + + - + /> @@ -69,14 +64,14 @@ sort="unsorted" > - - + + - + /> Index: lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrWorkspaceCredential.hbm.xml =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/Attic/CrWorkspaceCredential.hbm.xml,v diff -u -r1.2 -r1.3 --- lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrWorkspaceCredential.hbm.xml 3 Feb 2005 23:39:40 -0000 1.2 +++ lams_contentrepository/conf/hibernate/mappings/org/lamsfoundation/lams/contentrepository/CrWorkspaceCredential.hbm.xml 6 Oct 2005 06:38:03 -0000 1.3 @@ -1,18 +1,14 @@ + "-//Hibernate/Hibernate Mapping DTD 3.0//EN" + "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> - + Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/Download.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/Download.java,v diff -u -r1.2 -r1.3 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/Download.java 27 Jul 2005 05:04:47 -0000 1.2 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/client/Download.java 6 Oct 2005 06:38:03 -0000 1.3 @@ -32,19 +32,15 @@ import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; -import org.lamsfoundation.lams.contentrepository.AccessDeniedException; import org.lamsfoundation.lams.contentrepository.FileException; import org.lamsfoundation.lams.contentrepository.ITicket; import org.lamsfoundation.lams.contentrepository.IValue; import org.lamsfoundation.lams.contentrepository.IVersionedNode; -import org.lamsfoundation.lams.contentrepository.ItemNotFoundException; import org.lamsfoundation.lams.contentrepository.NodeType; import org.lamsfoundation.lams.contentrepository.PropertyName; import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; import org.lamsfoundation.lams.contentrepository.ValueFormatException; import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; -import org.springframework.web.context.WebApplicationContext; -import org.springframework.web.context.support.WebApplicationContextUtils; /** Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/ICredentialDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/ICredentialDAO.java,v diff -u -r1.2 -r1.3 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/ICredentialDAO.java 21 Feb 2005 06:12:45 -0000 1.2 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/ICredentialDAO.java 6 Oct 2005 06:38:03 -0000 1.3 @@ -25,8 +25,9 @@ import org.lamsfoundation.lams.contentrepository.ICredentials; import org.lamsfoundation.lams.contentrepository.IWorkspace; import org.lamsfoundation.lams.contentrepository.RepositoryRuntimeException; +import org.lamsfoundation.lams.learningdesign.dao.IBaseDAO; -public interface ICredentialDAO { +public interface ICredentialDAO extends IBaseDAO { /** Check the supplied credential to the workspace. * By doing the check at this level, the password does @@ -44,12 +45,6 @@ */ public abstract boolean checkCredential(ICredentials credential) throws RepositoryRuntimeException; - public abstract void insert(Object object); - - public abstract void update(Object object); - - public abstract void delete(Object object); - public abstract CrCredential findByName(String name); } Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java,v diff -u -r1.5 -r1.6 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java 5 Jul 2005 03:24:58 -0000 1.5 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java 6 Oct 2005 06:38:03 -0000 1.6 @@ -20,29 +20,20 @@ */ package org.lamsfoundation.lams.contentrepository.dao; -import java.io.Serializable; import java.util.List; import org.lamsfoundation.lams.contentrepository.CrNode; import org.lamsfoundation.lams.contentrepository.CrNodeVersion; +import org.lamsfoundation.lams.learningdesign.dao.IBaseDAO; /** * Data access routines for Nodes, versions and properties * * @author Fiona Malikoff */ -public interface INodeDAO { +public interface INodeDAO extends IBaseDAO { - public Object find(Class objClass, Serializable id); - public void saveOrUpdate(Object object); - - public void update(Object object); - - public void delete(Object object); - - public List findAll(Class objClass); - public List findChildNodes(CrNodeVersion parentNodeVersion); public CrNode findChildNode(CrNodeVersion parentNodeVersion, String relPath); Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/IWorkspaceDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/IWorkspaceDAO.java,v diff -u -r1.2 -r1.3 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/IWorkspaceDAO.java 21 Feb 2005 06:12:45 -0000 1.2 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/IWorkspaceDAO.java 6 Oct 2005 06:38:03 -0000 1.3 @@ -25,14 +25,15 @@ import java.util.List; import org.lamsfoundation.lams.contentrepository.CrWorkspace; +import org.lamsfoundation.lams.learningdesign.dao.IBaseDAO; /** * Data access routines for Workspaces. * * @author Fiona Malikoff */ -public interface IWorkspaceDAO { +public interface IWorkspaceDAO extends IBaseDAO { /** Get a workspace. * @@ -61,12 +62,5 @@ */ public Object find(Class objClass, Serializable id); - public void insert(Object object); - - public void update(Object object); - - public void delete(Object object); - - public List findAll(Class objClass); } Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/CredentialDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/CredentialDAO.java,v diff -u -r1.2 -r1.3 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/CredentialDAO.java 21 Feb 2005 06:12:45 -0000 1.2 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/CredentialDAO.java 6 Oct 2005 06:38:03 -0000 1.3 @@ -27,16 +27,15 @@ import java.sql.SQLException; import java.util.List; -import net.sf.hibernate.HibernateException; -import net.sf.hibernate.Session; - import org.apache.log4j.Logger; +import org.hibernate.HibernateException; +import org.hibernate.Session; import org.lamsfoundation.lams.contentrepository.CrCredential; import org.lamsfoundation.lams.contentrepository.ICredentials; import org.lamsfoundation.lams.contentrepository.IWorkspace; import org.lamsfoundation.lams.contentrepository.RepositoryRuntimeException; import org.lamsfoundation.lams.contentrepository.dao.ICredentialDAO; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.BaseDAO; /** @@ -46,7 +45,7 @@ * @author Fiona Malikoff * */ -public class CredentialDAO extends HibernateDaoSupport implements ICredentialDAO { +public class CredentialDAO extends BaseDAO implements ICredentialDAO { protected Logger log = Logger.getLogger(CredentialDAO.class); @@ -155,18 +154,6 @@ return credentialMatched; } - public void insert(Object object) { - this.getHibernateTemplate().save(object); - } - - public void update(Object object) { - this.getHibernateTemplate().update(object); - } - - public void delete(Object object) { - this.getHibernateTemplate().delete(object); - } - public CrCredential findByName(String name) { log.debug("Getting credential for name "+name); @@ -181,9 +168,4 @@ return (CrCredential)credentials.get(0); } } - public List findAll(Class objClass) { - String query="from obj in class " + objClass.getName(); - return this.getHibernateTemplate().find(query); - } - } Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java,v diff -u -r1.6 -r1.7 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java 7 Sep 2005 07:13:48 -0000 1.6 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java 6 Oct 2005 06:38:03 -0000 1.7 @@ -21,14 +21,13 @@ package org.lamsfoundation.lams.contentrepository.dao.hibernate; -import java.io.Serializable; import java.util.List; import org.apache.log4j.Logger; import org.lamsfoundation.lams.contentrepository.CrNode; import org.lamsfoundation.lams.contentrepository.CrNodeVersion; import org.lamsfoundation.lams.contentrepository.dao.INodeDAO; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.BaseDAO; @@ -37,30 +36,13 @@ * * @author Fiona Malikoff */ -public class NodeDAO extends HibernateDaoSupport implements INodeDAO { +public class NodeDAO extends BaseDAO implements INodeDAO { protected Logger log = Logger.getLogger(NodeDAO.class); - public Object find(Class objClass, Serializable id) { - return this.getHibernateTemplate().load(objClass,id); - } - public void saveOrUpdate(Object object) { this.getHibernateTemplate().saveOrUpdate(object); } - - public void update(Object object) { - this.getHibernateTemplate().update(object); - } - - public void delete(Object object) { - this.getHibernateTemplate().delete(object); - } - - public List findAll(Class objClass) { - String query="from obj in class " + objClass.getName(); - return this.getHibernateTemplate().find(query); - } /** Get all child nodes for a node/version. * Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/WorkspaceDAO.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/WorkspaceDAO.java,v diff -u -r1.3 -r1.4 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/WorkspaceDAO.java 21 Feb 2005 06:12:45 -0000 1.3 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/WorkspaceDAO.java 6 Oct 2005 06:38:03 -0000 1.4 @@ -30,8 +30,8 @@ import org.lamsfoundation.lams.contentrepository.CrWorkspace; import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; import org.lamsfoundation.lams.contentrepository.dao.IWorkspaceDAO; -import org.springframework.orm.hibernate.HibernateObjectRetrievalFailureException; -import org.springframework.orm.hibernate.support.HibernateDaoSupport; +import org.lamsfoundation.lams.learningdesign.dao.hibernate.BaseDAO; +import org.springframework.orm.hibernate3.HibernateObjectRetrievalFailureException; @@ -40,7 +40,7 @@ * * @author Fiona Malikoff */ -public class WorkspaceDAO extends HibernateDaoSupport implements IWorkspaceDAO { +public class WorkspaceDAO extends BaseDAO implements IWorkspaceDAO { protected Logger log = Logger.getLogger(WorkspaceDAO.class); @@ -87,29 +87,13 @@ public Object find(Class objClass, Serializable id) { try { - return this.getHibernateTemplate().load(objClass,id); + return super.find(objClass,id); } catch (HibernateObjectRetrievalFailureException e ) { return null; } } - public void insert(Object object) { - this.getHibernateTemplate().save(object); - } - public void update(Object object) { - this.getHibernateTemplate().update(object); - } - - public void delete(Object object) { - this.getHibernateTemplate().delete(object); - } - - public List findAll(Class objClass) { - String query="from obj in class " + objClass.getName(); - return this.getHibernateTemplate().find(query); - } - public void flushSession() throws RepositoryCheckedException { try { getSession().flush(); Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java,v diff -u -r1.3 -r1.4 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java 7 Sep 2005 07:13:48 -0000 1.3 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java 6 Oct 2005 06:38:03 -0000 1.4 @@ -738,7 +738,7 @@ // check that the previous version was a file node - error otherwise SimpleVersionedNode node = getNode(ticket.getWorkspaceId(),uuid,versionId); node.setProperty(name, value, type); - node.saveDB(null); + node.validateSaveDB(null); } /* (non-Javadoc) @@ -757,6 +757,7 @@ +"Please delete the parent. Node UUID "+uuid); } List problemPaths = latestNodeVersion.deleteNode(); + latestNodeVersion.saveDB(null); return problemPaths != null ? (String[]) problemPaths.toArray(new String[problemPaths.size()]) : new String[0]; @@ -775,6 +776,7 @@ // get the first version of the node and delete from there. SimpleVersionedNode nodeVersion = getNode(ticket.getWorkspaceId(),uuid,version); List problemPaths = nodeVersion.deleteVersion(); + nodeVersion.saveDB(null); return problemPaths != null ? (String[]) problemPaths.toArray(new String[problemPaths.size()]) : new String[0]; Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java,v diff -u -r1.4 -r1.5 --- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java 30 Aug 2005 04:42:23 -0000 1.4 +++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java 6 Oct 2005 06:38:03 -0000 1.5 @@ -58,7 +58,6 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.orm.hibernate.HibernateObjectRetrievalFailureException; /** @@ -187,12 +186,7 @@ node = null; nodeVersion = null; - try { - node = (CrNode) nodeDAO.find(CrNode.class, uuid); - - } catch (HibernateObjectRetrievalFailureException e ) { - } - + node = (CrNode) nodeDAO.find(CrNode.class, uuid); if ( node == null ) { throw new ItemNotFoundException("Node "+uuid+" not found."); @@ -365,9 +359,9 @@ return node.isNodeType(nodeTypeName); } - /** Get the history for this node. Quite intensive operation the - * first time it is run on a node as it has to build all the - * data structures. + /** Get the history for this node. Quite intensive operation + * as it has to build all the data structures. Can't be easily + * cached. * @return SortedSet of IVersionDetail objects, ordered by version */ public SortedSet getVersionHistory() { @@ -691,14 +685,24 @@ return node.getNodeId(); } - /** Just save the db changes to the current node. + + /** Validate the node and save the db changes to the current node. + * Do not use if there are files that have been updated - the validation may fail and we + * would end up in an odd state. + *

* If files have been added, please call Long save(String versionDescription, List childNodes). - * This method will validate the node and save the database changes - * @param versionDescription optional. If supplied will set the version description + * @param versionDescription optional. If supplied will set the version description */ - protected void saveDB(String versionDescription) throws ValidationException { + protected void validateSaveDB(String versionDescription) throws ValidationException { validateNode(); + saveDB(versionDescription); + } + /** Just save the db changes to the current node. See validateSaveDB() + * @param versionDescription optional. If supplied will set the version description + */ + protected void saveDB(String versionDescription) { + // nodeDAO to take care of insert or update (uses saveOrUpdate) // the nodeVersion and nodeVersionProperty collections cascade // updates and deletes, so we can just save the node! @@ -927,15 +931,17 @@ NodeKey nk = getNodeKey(); if ( node.getCrNodeVersions() != null ) { - node.getCrNodeVersions().remove(nodeVersion); + boolean removed = node.removeCrNodeVersion(nodeVersion); + if ( removed ) { + nodeKeysDeleted.add(nk); + } } // if this was the last version for the node, delete the node if ( node.getCrNodeVersions() == null || node.getCrNodeVersions().size() == 0 ) { nodeDAO.delete(node); } - nodeKeysDeleted.add(nk); } /* ********************************************************** Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/Attic/TestToolContentHandlerImpl.java,v diff -u -r1.2 -r1.3 --- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java 30 Aug 2005 04:42:23 -0000 1.2 +++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/client/TestToolContentHandlerImpl.java 6 Oct 2005 06:38:03 -0000 1.3 @@ -56,42 +56,42 @@ handler = null; } - public void testGetRepositoryWorkspaceName() { - assertEquals(handler.repositoryWorkspace,handler.getRepositoryWorkspaceName()); - } +// public void testGetRepositoryWorkspaceName() { +// assertEquals(handler.repositoryWorkspace,handler.getRepositoryWorkspaceName()); +// } +// +// public void testGetRepositoryUser() { +// assertEquals(handler.repositoryUser,handler.getRepositoryUser()); +// } +// +// public void testGetRepositoryId() { +// assertEquals(handler.repositoryId,handler.getRepositoryId()); +// } +// +// public void testGetRepositoryService() { +// try { +// assertNotNull(handler.getRepositoryService()); +// } catch ( Exception e ) { +// e.printStackTrace(); +// fail("getRepService() threw exception "+e.getMessage()); +// } +// } +// +// public void testGetTicket() { +// try { +// ITicket ticket1 = handler.getTicket(false); +// // repeat call using false should get same ticket; +// ITicket ticket2 = handler.getTicket(false); +// assertSame(ticket1, ticket2); +// // repeat call using true should get new ticket; +// ITicket ticket3 = handler.getTicket(true); +// assertNotSame(ticket1, ticket3); +// } catch ( Exception e ) { +// e.printStackTrace(); +// fail("getRepositoryId() threw exception "+e.getMessage()); +// } +// } - public void testGetRepositoryUser() { - assertEquals(handler.repositoryUser,handler.getRepositoryUser()); - } - - public void testGetRepositoryId() { - assertEquals(handler.repositoryId,handler.getRepositoryId()); - } - - public void testGetRepositoryService() { - try { - assertNotNull(handler.getRepositoryService()); - } catch ( Exception e ) { - e.printStackTrace(); - fail("getRepService() threw exception "+e.getMessage()); - } - } - - public void testGetTicket() { - try { - ITicket ticket1 = handler.getTicket(false); - // repeat call using false should get same ticket; - ITicket ticket2 = handler.getTicket(false); - assertSame(ticket1, ticket2); - // repeat call using true should get new ticket; - ITicket ticket3 = handler.getTicket(true); - assertNotSame(ticket1, ticket3); - } catch ( Exception e ) { - e.printStackTrace(); - fail("getRepositoryId() threw exception "+e.getMessage()); - } - } - /* Creates an offline and online file, checks that the properties are correct and then deletes them. */ public void testUploadFile() { try { @@ -109,7 +109,7 @@ handler.deleteFile(uuid); try { node = handler.getFileNode(uuid); - // fail("Expected ItemNotFoundException to be thrown when trying to access deleted offline file."); + fail("Expected ItemNotFoundException to be thrown when trying to access deleted offline file."); } catch (ItemNotFoundException ie) { assertTrue("Offline node cannot be retrieved after deletion",true); } Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleRepository.java =================================================================== RCS file: /usr/local/cvsroot/lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/Attic/TestSimpleRepository.java,v diff -u -r1.5 -r1.6 --- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleRepository.java 30 Aug 2005 04:42:23 -0000 1.5 +++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleRepository.java 6 Oct 2005 06:38:03 -0000 1.6 @@ -237,8 +237,8 @@ checkFileNodeExist(fileDAO, keys.getUuid(), two, 2); deleteVersion(keys.getUuid(), two); - checkFileNodeExist(fileDAO, keys.getUuid(), one, 1); checkFileNodeDoesNotExist(fileDAO, keys.getUuid(), two, 1); + checkFileNodeExist(fileDAO, keys.getUuid(), one, 1); deleteVersion(keys.getUuid(), one); checkFileNodeDoesNotExist(fileDAO, keys.getUuid(), one, 0);