Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java,v diff -u -r1.38 -r1.39 --- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java 9 May 2007 01:03:36 -0000 1.38 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java 5 Jun 2007 04:33:20 -0000 1.39 @@ -36,6 +36,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.BranchingActivity; import org.lamsfoundation.lams.learningdesign.ChosenGrouping; import org.lamsfoundation.lams.learningdesign.ComplexActivity; import org.lamsfoundation.lams.learningdesign.GateActivity; @@ -803,6 +804,8 @@ buildToolActivity((ToolActivity)activity,activityDetails); else if(activity.isGateActivity()) buildGateActivity(activity,activityDetails); + else if(activity.isBranchingActivity()) + buildBranchingActivity((BranchingActivity)activity,activityDetails); else buildComplexActivity((ComplexActivity)activity,activityDetails); } @@ -818,6 +821,20 @@ buildSequenceActivity((SequenceActivity)activity,activityDetails); } + private void buildBranchingActivity(BranchingActivity branchingActivity,Hashtable activityDetails) + throws WDDXProcessorConversionException, ObjectExtractorException { + /** + * read the createBranchingUUID, get the Branching Object, and set CreateBranching to that object + */ + //Integer createBranchingUIID = WDDXProcessor.convertToInteger(activityDetails,WDDXTAGS.CREATE_BRANCHINGS_UIID); + + // Get Branching object + + // doesn't extend SystemToolActivity class?? + //SystemTool systemTool = systemToolDAO.getSystemToolByID(SystemTool.BRANCHING); + //branchingActivity.setSystemTool(systemTool); + + } private void buildGroupingActivity(GroupingActivity groupingActivity,Hashtable activityDetails) throws WDDXProcessorConversionException, ObjectExtractorException { /** @@ -843,8 +860,7 @@ groupingActivity.setCreateGrouping(null); groupingActivity.setCreateGroupingUIID(null); } */ - } - + } private void buildOptionsActivity(OptionsActivity optionsActivity,Hashtable activityDetails) throws WDDXProcessorConversionException{ if (keyExists(activityDetails, WDDXTAGS.MAX_OPTIONS)) optionsActivity.setMaxNumberOfOptions(WDDXProcessor.convertToInteger(activityDetails,WDDXTAGS.MAX_OPTIONS)); 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.28 -r1.29 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml 9 May 2007 01:09:26 -0000 1.28 +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml 5 Jun 2007 04:33:17 -0000 1.29 @@ -263,6 +263,9 @@ @hibernate.class + + @hibernate.class + Index: lams_common/db/sql/insert_types_data.sql =================================================================== RCS file: /usr/local/cvsroot/lams_common/db/sql/insert_types_data.sql,v diff -u -r1.64 -r1.65 --- lams_common/db/sql/insert_types_data.sql 9 May 2007 01:14:31 -0000 1.64 +++ lams_common/db/sql/insert_types_data.sql 5 Jun 2007 04:33:18 -0000 1.65 @@ -76,6 +76,7 @@ INSERT INTO lams_learning_activity_type VALUES (7, 'OPTIONS'); INSERT INTO lams_learning_activity_type VALUES (8, 'SEQUENCE'); INSERT INTO lams_learning_activity_type VALUES (9, 'GATE_SYSTEM'); +INSERT INTO lams_learning_activity_type VALUES (10, 'BRANCHING'); INSERT INTO lams_gate_activity_level VALUES (1, 'LEARNER'); INSERT INTO lams_gate_activity_level VALUES (2, 'GROUP'); @@ -173,7 +174,17 @@ 'learning/gate.do?method=knockGate', 'learning/gate.do?method=knockGate', null, null, 'monitoring/gateExportPortfolio?mode=teacher', 'monitoring/gate.do?method=viewGate', 'monitoring/gate.do?method=viewGate', now() ); + +INSERT INTO lams_system_tool (system_tool_id, learning_activity_type_id, tool_display_name, description, + learner_url, learner_preview_url, learner_progress_url, export_pfolio_learner_url, + export_pfolio_class_url, monitor_url, contribute_url, create_date_time) +VALUES (6, 10, 'Branching', 'Contains multiple sequence activities.', + 'learning/branching.do?method=performBranching', 'learning/branching.do?method=performBranching', + 'learning/branching.do?method=viewBranching&mode=teacher', 'learning/branchingExportPortfolio?mode=learner', + 'learning/branchingExportPortfolio?mode=teacher', 'monitoring/branching.do?method=startBranching', + 'monitoring/branching.do?method=startBranching', now() ); + -- Supported Locales INSERT INTO lams_supported_locale (locale_id, language_iso_code, country_iso_code, description, direction) VALUES (1, 'en', 'AU', 'English (Australia)', 'LTR'); 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.58 -r1.59 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 9 May 2007 01:07:24 -0000 1.58 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 5 Jun 2007 04:33:16 -0000 1.59 @@ -70,6 +70,7 @@ public static final int OPTIONS_ACTIVITY_TYPE = 7; public static final int SEQUENCE_ACTIVITY_TYPE = 8; public static final int SYSTEM_GATE_ACTIVITY_TYPE = 9; + public static final int BRANCHING_ACTIVITY_TYPE = 10; /******************************************************************/ /** @@ -329,6 +330,10 @@ activity = new SystemGateActivity(); activity.setActivityCategoryID(CATEGORY_SYSTEM); break; + case BRANCHING_ACTIVITY_TYPE: + activity = new BranchingActivity(); + activity.setActivityCategoryID(CATEGORY_SYSTEM); + break; default: activity = new GroupingActivity(); activity.setActivityCategoryID(CATEGORY_SYSTEM); @@ -793,7 +798,8 @@ { return getActivityTypeId().intValue()== SEQUENCE_ACTIVITY_TYPE || getActivityTypeId().intValue()== PARALLEL_ACTIVITY_TYPE || - getActivityTypeId().intValue()== OPTIONS_ACTIVITY_TYPE; + getActivityTypeId().intValue()== OPTIONS_ACTIVITY_TYPE || + getActivityTypeId().intValue()== BRANCHING_ACTIVITY_TYPE; } public boolean isSystemToolActivity() @@ -845,10 +851,24 @@ return getActivityTypeId().intValue() == SYSTEM_GATE_ACTIVITY_TYPE; } + /** + * /** + * Check up whether an activity is grouping activity or not. + * @return is this activity a grouping activity + */ public boolean isGroupingActivity() { return getActivityTypeId().intValue()== GROUPING_ACTIVITY_TYPE; } + + /** + * Check up whether an activity is branching activity or not. + * @return is this activity a branching activity + */ + public boolean isBranchingActivity() + { + return getActivityTypeId().intValue()== BRANCHING_ACTIVITY_TYPE; + } public boolean isActivityReadOnly() { Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java 5 Jun 2007 04:33:16 -0000 1.1 @@ -0,0 +1,140 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id: BranchingActivity.java,v 1.1 2007/06/05 04:33:16 mseaton Exp $$ */ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; + +import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.learningdesign.strategy.BranchingActivityStrategy; + +/** + * @author Mitchell Seaton + * @version 2.1 + * + * @hibernate.class +*/ +public class BranchingActivity extends ComplexActivity implements Serializable { + + /** full constructor */ + public BranchingActivity(Long activityId, + Integer id, + String description, + String title, + Integer xcoord, + Integer ycoord, + Integer orderId, + Boolean defineLater, + java.util.Date createDateTime, + LearningLibrary learningLibrary, + Activity parentActivity, + Activity libraryActivity, + Integer parentUIID, + LearningDesign learningDesign, + Grouping grouping, + Integer activityTypeId, + Transition transitionTo, + Transition transitionFrom, + String languageFile, + Set activities) { + super(activityId, + id, + description, + title, + xcoord, + ycoord, + orderId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + libraryActivity, + parentUIID, + learningDesign, + grouping, + activityTypeId, + transitionTo, + transitionFrom, + languageFile, + activities); + super.activityStrategy = new BranchingActivityStrategy(this); + } + + /** default constructor */ + public BranchingActivity() { + super.activityStrategy = new BranchingActivityStrategy(this); + } + + /** minimal constructor */ + public BranchingActivity(Long activityId, + Boolean defineLater, + java.util.Date createDateTime, + org.lamsfoundation.lams.learningdesign.LearningLibrary learningLibrary, + org.lamsfoundation.lams.learningdesign.Activity parentActivity, + org.lamsfoundation.lams.learningdesign.LearningDesign learningDesign, + org.lamsfoundation.lams.learningdesign.Grouping grouping, + Integer activityTypeId, + Transition transitionTo, + Transition transitionFrom, + Set activities) { + super(activityId, + defineLater, + createDateTime, + learningLibrary, + parentActivity, + learningDesign, + grouping, + activityTypeId, + transitionTo, + transitionFrom, + activities); + super.activityStrategy = new BranchingActivityStrategy(this); + } + /** + * Makes a copy of the BranchingActivity for authoring, preview and monitoring enviornment + * @return BranchingActivity Returns a deep-copy of the originalActivity + */ + public Activity createCopy(){ + + BranchingActivity newBranchingActivity = new BranchingActivity(); + copyToNewActivity(newBranchingActivity); + return newBranchingActivity; + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + + /** + * @see org.lamsfoundation.lams.util.Nullable#isNull() + */ + public boolean isNull() + { + return false; + } + +} 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.18 -r1.19 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java 9 May 2007 01:07:25 -0000 1.18 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java 5 Jun 2007 04:33:18 -0000 1.19 @@ -37,6 +37,7 @@ import org.lamsfoundation.lams.learningdesign.SystemGateActivity; import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.learningdesign.SynchGateActivity; +import org.lamsfoundation.lams.learningdesign.BranchingActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.springframework.dao.DataRetrievalFailureException; @@ -99,6 +100,8 @@ return getActivityByActivityId(activityId,SequenceActivity.class); case Activity.SYSTEM_GATE_ACTIVITY_TYPE: return getActivityByActivityId(activityId,SystemGateActivity.class); + case Activity.BRANCHING_ACTIVITY_TYPE: + return getActivityByActivityId(activityId,BranchingActivity.class); default: break; } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java,v diff -u -r1.26 -r1.27 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java 9 May 2007 01:07:23 -0000 1.26 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java 5 Jun 2007 04:33:18 -0000 1.27 @@ -26,6 +26,7 @@ import java.util.Date; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.BranchingActivity; import org.lamsfoundation.lams.learningdesign.GateActivity; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; @@ -334,6 +335,8 @@ addOptionsActivityAttributes((OptionsActivity)activity); else if (activity.isParallelActivity()) addParallelActivityAttributes((ParallelActivity)activity); + else if(activity.isBranchingActivity()) + addBranchingActivityAttributes((BranchingActivity)activity); else addSequenceActivityAttributes((SequenceActivity)activity); @@ -353,6 +356,8 @@ } private void addParallelActivityAttributes(ParallelActivity activity){ } + private void addBranchingActivityAttributes(BranchingActivity activity){ + } private void addSequenceActivityAttributes(SequenceActivity activity){ } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java,v diff -u -r1.15 -r1.16 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java 17 Sep 2006 06:14:19 -0000 1.15 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java 5 Jun 2007 04:33:18 -0000 1.16 @@ -26,6 +26,7 @@ import java.util.Date; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.BranchingActivity; import org.lamsfoundation.lams.learningdesign.GateActivity; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; @@ -143,9 +144,12 @@ addOptionsActivityAttributes((OptionsActivity)activity); else if (activity.isParallelActivity()) addParallelActivityAttributes((ParallelActivity)activity); + else if (activity.isBranchingActivity()) + addBranchingActivityAttributes((BranchingActivity)activity); else addSequenceActivityAttributes((SequenceActivity)activity); + } private void addGroupingActivityAttributes(GroupingActivity groupingActivity){ /* Grouping grouping = groupingActivity.getCreateGrouping(); @@ -162,6 +166,9 @@ private void addParallelActivityAttributes(ParallelActivity activity){ } + private void addBranchingActivityAttributes(BranchingActivity activity){ + + } private void addSequenceActivityAttributes(SequenceActivity activity){ } private void addToolActivityAttributes(ToolActivity toolActivity){ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java 5 Jun 2007 04:33:18 -0000 1.1 @@ -0,0 +1,79 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id: BranchingActivityStrategy.java,v 1.1 2007/06/05 04:33:18 mseaton Exp $$ */ +package org.lamsfoundation.lams.learningdesign.strategy; + +import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ComplexActivity; +import org.lamsfoundation.lams.learningdesign.BranchingActivity; + + +/** + * The progress calculation strategy for branching activity. + * + * @author Mitchell Seaton + * @version 2.1 + */ +public class BranchingActivityStrategy extends ComplexActivityStrategy +{ + private BranchingActivity branchingActivity = null; + + public BranchingActivityStrategy(BranchingActivity branchingActivity) { + this.branchingActivity = branchingActivity; + } + + /** + * 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.ComplexActivityStrategy#getNextActivityByParent(Activity, Activity) + */ + public Activity getNextActivityByParent(ComplexActivity activity, Activity currentChild) + { + return null; + } + + /** + * Return the completion status of children activities within a branching + * activity. A branching activity is marked as complete if all children + * activities are completed. + * + * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#isComplete(int) + */ + protected boolean isComplete(int numOfCompletedActivities) + { + if ( branchingActivity != null ) { + return numOfCompletedActivities==branchingActivity.getActivities().size()?true:false; + } else { + return true; + } + } + + /** + * Get the strategy's activity as a Complex Activity. + */ + protected ComplexActivity getComplexActivity() { + return branchingActivity; + } +} Index: lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java,v diff -u -r1.6 -r1.7 --- lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java 9 May 2007 01:07:24 -0000 1.6 +++ lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java 5 Jun 2007 04:33:16 -0000 1.7 @@ -46,6 +46,7 @@ public static final Long SCHEDULE_GATE = new Long(3); public static final Long PERMISSION_GATE = new Long(4); public static final Long SYSTEM_GATE = new Long(5); + public static final Long BRANCHING = new Long(6); /** identifier field */ private Long systemToolId;