Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -rc27d97af7a284e7fb373be1efb26af904643329b -r6e041b14d83c90f3f910fac33c7755fca1486b3e Binary files differ Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml =================================================================== diff -u -rfcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4 -r6e041b14d83c90f3f910fac33c7755fca1486b3e --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision fcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -263,9 +263,15 @@ @hibernate.class - + @hibernate.class + + @hibernate.class + + + @hibernate.class + Index: lams_common/db/sql/insert_types_data.sql =================================================================== diff -u -rfcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4 -r6e041b14d83c90f3f910fac33c7755fca1486b3e --- lams_common/db/sql/insert_types_data.sql (.../insert_types_data.sql) (revision fcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4) +++ lams_common/db/sql/insert_types_data.sql (.../insert_types_data.sql) (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -76,7 +76,9 @@ 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_learning_activity_type VALUES (10, 'BRANCHING_CHOSEN'); +INSERT INTO lams_learning_activity_type VALUES (11, 'BRANCHING_GROUP'); +INSERT INTO lams_learning_activity_type VALUES (12, 'BRANCHING_TOOL'); INSERT INTO lams_gate_activity_level VALUES (1, 'LEARNER'); INSERT INTO lams_gate_activity_level VALUES (2, 'GROUP'); @@ -178,13 +180,30 @@ 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() ); +VALUES (6, 10, 'Monitor Chosen Branching', 'Select between multiple sequence activities, with the branch chosen in monitoring.', + 'learning/branching.do?method=performBranching&type=chosen', 'learning/branching.do?method=performBranching&type=chosen', + 'learning/branching.do?method=viewBranching&mode=teacher&type=chosen', 'learning/branchingExportPortfolio?mode=learner&type=chosen', + 'learning/branchingExportPortfolio?mode=teacher&type=chosen', 'monitoring/branching.do?method=assignBranch&type=chosen', + 'monitoring/branching.do?method=assignBranch&type=chosen', 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 (7, 11, 'Group Based Branching', 'Select between multiple sequence activities, with the branch chosen by an existing group.', + 'learning/branching.do?method=performBranching&type=group', 'learning/branching.do?method=performBranching&type=group', + 'learning/branching.do?method=viewBranching&mode=teacher&type=group', 'learning/branchingExportPortfolio?mode=learner&type=group', + 'learning/branchingExportPortfolio?mode=teacher&type=group', 'monitoring/branching.do?method=assignBranch&type=group', + 'monitoring/branching.do?method=assignBranch&type=group', 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 (8, 12, 'Tool Output Based Branching', 'Select between multiple sequence activities, with the branch chosen on results of another activity.', + 'learning/branching.do?method=performBranching&type=tool', 'learning/branching.do?method=performBranching&type=tool', + 'learning/branching.do?method=viewBranching&mode=teacher&type=tool', 'learning/branchingExportPortfolio?mode=learner&type=tool', + 'learning/branchingExportPortfolio?mode=teacher&type=tool', 'monitoring/branching.do?method=assignBranch&type=tool', + 'monitoring/branching.do?method=assignBranch&type=tool', 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/db/sql/updatescripts/alter_21_branching.sql =================================================================== diff -u -rd7c09e6b65cd3caf6b63c9b806e10bc0b2834903 -r6e041b14d83c90f3f910fac33c7755fca1486b3e --- lams_common/db/sql/updatescripts/alter_21_branching.sql (.../alter_21_branching.sql) (revision d7c09e6b65cd3caf6b63c9b806e10bc0b2834903) +++ lams_common/db/sql/updatescripts/alter_21_branching.sql (.../alter_21_branching.sql) (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -1,13 +1,34 @@ -- Script to be run for LAMS 2.1 release, on LAMS 2.0.3 tables. -- Adds all the data needed for branching -INSERT INTO lams_learning_activity_type VALUES (10, 'BRANCHING'); +INSERT INTO lams_learning_activity_type VALUES (10, 'BRANCHING_CHOSEN'); +INSERT INTO lams_learning_activity_type VALUES (11, 'BRANCHING_GROUP'); +INSERT INTO lams_learning_activity_type VALUES (12, 'BRANCHING_TOOL'); -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() ); +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, 'Monitor Chosen Branching', 'Select between multiple sequence activities, with the branch chosen in monitoring.', + 'learning/branching.do?method=performBranching&type=chosen', 'learning/branching.do?method=performBranching&type=chosen', + 'learning/branching.do?method=viewBranching&mode=teacher&type=chosen', 'learning/branchingExportPortfolio?mode=learner&type=chosen', + 'learning/branchingExportPortfolio?mode=teacher&type=chosen', 'monitoring/branching.do?method=assignBranch&type=chosen', + 'monitoring/branching.do?method=assignBranch&type=chosen', 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 (7, 11, 'Group Based Branching', 'Select between multiple sequence activities, with the branch chosen by an existing group.', + 'learning/branching.do?method=performBranching&type=group', 'learning/branching.do?method=performBranching&type=group', + 'learning/branching.do?method=viewBranching&mode=teacher&type=group', 'learning/branchingExportPortfolio?mode=learner&type=group', + 'learning/branchingExportPortfolio?mode=teacher&type=group', 'monitoring/branching.do?method=assignBranch&type=group', + 'monitoring/branching.do?method=assignBranch&type=group', 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 (8, 12, 'Tool Output Based Branching', 'Select between multiple sequence activities, with the branch chosen on results of another activi\ +ty.', + 'learning/branching.do?method=performBranching&type=tool', 'learning/branching.do?method=performBranching&type=tool', + 'learning/branching.do?method=viewBranching&mode=teacher&type=tool', 'learning/branchingExportPortfolio?mode=learner&type=tool', + 'learning/branchingExportPortfolio?mode=teacher&type=tool', 'monitoring/branching.do?method=assignBranch&type=tool', + 'monitoring/branching.do?method=assignBranch&type=tool', now()); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -rfcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4 -r6e041b14d83c90f3f910fac33c7755fca1486b3e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision fcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -70,7 +70,9 @@ 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; + public static final int CHOSEN_BRANCHING_ACTIVITY_TYPE = 10; + public static final int GROUP_BRANCHING_ACTIVITY_TYPE = 11; + public static final int TOOL_BRANCHING_ACTIVITY_TYPE = 12; /******************************************************************/ /** @@ -330,10 +332,18 @@ activity = new SystemGateActivity(); activity.setActivityCategoryID(CATEGORY_SYSTEM); break; - case BRANCHING_ACTIVITY_TYPE: - activity = new BranchingActivity(); + case CHOSEN_BRANCHING_ACTIVITY_TYPE: + activity = new ChosenBranchingActivity(); activity.setActivityCategoryID(CATEGORY_SYSTEM); break; + case GROUP_BRANCHING_ACTIVITY_TYPE: + activity = new GroupBranchingActivity(); + activity.setActivityCategoryID(CATEGORY_SYSTEM); + break; + case TOOL_BRANCHING_ACTIVITY_TYPE: + activity = new ToolBranchingActivity(); + activity.setActivityCategoryID(CATEGORY_SYSTEM); + break; default: activity = new GroupingActivity(); activity.setActivityCategoryID(CATEGORY_SYSTEM); @@ -799,7 +809,9 @@ return getActivityTypeId().intValue()== SEQUENCE_ACTIVITY_TYPE || getActivityTypeId().intValue()== PARALLEL_ACTIVITY_TYPE || getActivityTypeId().intValue()== OPTIONS_ACTIVITY_TYPE || - getActivityTypeId().intValue()== BRANCHING_ACTIVITY_TYPE; + getActivityTypeId().intValue()== CHOSEN_BRANCHING_ACTIVITY_TYPE || + getActivityTypeId().intValue()== GROUP_BRANCHING_ACTIVITY_TYPE || + getActivityTypeId().intValue()== TOOL_BRANCHING_ACTIVITY_TYPE; } public boolean isSystemToolActivity() @@ -862,14 +874,44 @@ } /** - * Check up whether an activity is branching activity or not. + * Check up whether an activity is some sort of branching activity or not * @return is this activity a branching activity */ public boolean isBranchingActivity() { - return getActivityTypeId().intValue()== BRANCHING_ACTIVITY_TYPE; + return getActivityTypeId().intValue()== CHOSEN_BRANCHING_ACTIVITY_TYPE || + getActivityTypeId().intValue()== GROUP_BRANCHING_ACTIVITY_TYPE || + getActivityTypeId().intValue()== TOOL_BRANCHING_ACTIVITY_TYPE; } + + /** + * Check up whether an activity is branching activity based on the monitor choice or not. + * @return is this activity a branching activity + */ + public boolean isChosenBranchingActivity() + { + return getActivityTypeId().intValue()== CHOSEN_BRANCHING_ACTIVITY_TYPE; + } + + /** + * Check up whether an activity is branching activity based on an existing group or not. + * @return is this activity a branching activity + */ + public boolean isGroupBranchingActivity() + { + return getActivityTypeId().intValue()== GROUP_BRANCHING_ACTIVITY_TYPE; + } + + /** + * Check up whether an activity is branching activity based on another activity's output or not. + * @return is this activity a branching activity + */ + public boolean isToolBranchingActivity() + { + return getActivityTypeId().intValue()== TOOL_BRANCHING_ACTIVITY_TYPE; + } + public boolean isActivityReadOnly() { return readOnly.equals(Boolean.TRUE); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java =================================================================== diff -u -rfcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4 -r6e041b14d83c90f3f910fac33c7755fca1486b3e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java (.../BranchingActivity.java) (revision fcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java (.../BranchingActivity.java) (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -36,9 +36,9 @@ * * @hibernate.class */ -public class BranchingActivity extends ComplexActivity implements Serializable { +abstract public class BranchingActivity extends ComplexActivity implements Serializable { - /** full constructor */ + /** full constructor */ public BranchingActivity(Long activityId, Integer id, String description, @@ -112,29 +112,14 @@ 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/ChosenBranchingActivity.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -0,0 +1,132 @@ +/**************************************************************** + * 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$$ */ +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 ChosenBranchingActivity extends BranchingActivity implements Serializable { + + private static final long serialVersionUID = 2735761434798827294L; + + /** full constructor */ + public ChosenBranchingActivity(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); + } + + /** default constructor */ + public ChosenBranchingActivity() { + super(); + } + + /** minimal constructor */ + public ChosenBranchingActivity(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); + } + /** + * Makes a copy of the BranchingActivity for authoring, preview and monitoring enviornment + * @return BranchingActivity Returns a deep-copy of the originalActivity + */ + public Activity createCopy(){ + + ChosenBranchingActivity newBranchingActivity = new ChosenBranchingActivity(); + copyToNewActivity(newBranchingActivity); + return newBranchingActivity; + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + + } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -0,0 +1,130 @@ +/**************************************************************** + * 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$$ */ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Set; + +import org.apache.commons.lang.builder.ToStringBuilder; + +/** + * @author Mitchell Seaton + * @version 2.1 + * + * @hibernate.class +*/ +public class GroupBranchingActivity extends BranchingActivity implements Serializable { + + private static final long serialVersionUID = 7426228060060498158L; + + /** full constructor */ + public GroupBranchingActivity(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); + } + + /** default constructor */ + public GroupBranchingActivity() { + super(); + } + + /** minimal constructor */ + public GroupBranchingActivity(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); + } + /** + * Makes a copy of the BranchingActivity for authoring, preview and monitoring enviornment + * @return BranchingActivity Returns a deep-copy of the originalActivity + */ + public Activity createCopy(){ + + GroupBranchingActivity newBranchingActivity = new GroupBranchingActivity(); + copyToNewActivity(newBranchingActivity); + return newBranchingActivity; + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -0,0 +1,131 @@ +/**************************************************************** + * 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$$ */ +package org.lamsfoundation.lams.learningdesign; + +import java.io.Serializable; +import java.util.Set; + +import org.apache.commons.lang.builder.ToStringBuilder; + +/** + * @author Mitchell Seaton + * @version 2.1 + * + * @hibernate.class +*/ +public class ToolBranchingActivity extends BranchingActivity implements Serializable { + + private static final long serialVersionUID = 8343443197068061495L; + + /** full constructor */ + public ToolBranchingActivity(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); + } + + /** default constructor */ + public ToolBranchingActivity() { + super(); + } + + /** minimal constructor */ + public ToolBranchingActivity(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); + } + + /** + * Makes a copy of the BranchingActivity for authoring, preview and monitoring enviornment + * @return BranchingActivity Returns a deep-copy of the originalActivity + */ + public Activity createCopy(){ + + ToolBranchingActivity newBranchingActivity = new ToolBranchingActivity(); + copyToNewActivity(newBranchingActivity); + return newBranchingActivity; + } + + public String toString() { + return new ToStringBuilder(this) + .append("activityId", getActivityId()) + .toString(); + } + +} Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java =================================================================== diff -u -rfcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4 -r6e041b14d83c90f3f910fac33c7755fca1486b3e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java (.../ActivityDAO.java) (revision fcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java (.../ActivityDAO.java) (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -28,6 +28,8 @@ import org.hibernate.Query; import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.learningdesign.Activity; +import org.lamsfoundation.lams.learningdesign.ChosenBranchingActivity; +import org.lamsfoundation.lams.learningdesign.GroupBranchingActivity; import org.lamsfoundation.lams.learningdesign.GroupingActivity; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.OptionsActivity; @@ -37,8 +39,8 @@ 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.ToolBranchingActivity; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.springframework.dao.DataRetrievalFailureException; @@ -100,8 +102,12 @@ 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); + case Activity.CHOSEN_BRANCHING_ACTIVITY_TYPE: + return getActivityByActivityId(activityId,ChosenBranchingActivity.class); + case Activity.GROUP_BRANCHING_ACTIVITY_TYPE: + return getActivityByActivityId(activityId,GroupBranchingActivity.class); + case Activity.TOOL_BRANCHING_ACTIVITY_TYPE: + return getActivityByActivityId(activityId,ToolBranchingActivity.class); default: break; } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java =================================================================== diff -u -rfcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4 -r6e041b14d83c90f3f910fac33c7755fca1486b3e --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java (.../BranchingActivityStrategy.java) (revision fcdf3f7584d020b2aeb399a8cb0d0b55fb0e6be4) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/BranchingActivityStrategy.java (.../BranchingActivityStrategy.java) (revision 6e041b14d83c90f3f910fac33c7755fca1486b3e) @@ -23,9 +23,15 @@ /* $$Id$$ */ package org.lamsfoundation.lams.learningdesign.strategy; +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + import org.lamsfoundation.lams.learningdesign.Activity; -import org.lamsfoundation.lams.learningdesign.ComplexActivity; +import org.lamsfoundation.lams.learningdesign.ActivityOrderComparator; import org.lamsfoundation.lams.learningdesign.BranchingActivity; +import org.lamsfoundation.lams.learningdesign.ComplexActivity; +import org.lamsfoundation.lams.learningdesign.NullActivity; /** @@ -36,22 +42,31 @@ */ public class BranchingActivityStrategy extends ComplexActivityStrategy { + + private static final long serialVersionUID = -1861859105441615028L; + 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. + * @todo The real strategy is ??? * + * For the moment, always get the first branch. + * * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#getNextActivityByParent(Activity, Activity) */ public Activity getNextActivityByParent(ComplexActivity activity, Activity currentChild) { - return null; + Set children = new TreeSet(new ActivityOrderComparator()); + children.addAll(activity.getActivities()); + Iterator iter = children.iterator(); + if ( iter.hasNext() ) + return (Activity) iter.next(); + + return new NullActivity(); } /** @@ -76,4 +91,6 @@ protected ComplexActivity getComplexActivity() { return branchingActivity; } + + }