Index: lams_build/lib/lams/lams.jar
===================================================================
diff -u -r05db875c7974d705f89231416ff6dfe91a5e70f1 -rd3b9b5d94b98da06dcce673877406d8e580a114e
Binary files differ
Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java
===================================================================
diff -u -rfbde508c149cfd2d5feace69820dae423afe3fbc -rd3b9b5d94b98da06dcce673877406d8e580a114e
--- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision fbde508c149cfd2d5feace69820dae423afe3fbc)
+++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -45,6 +45,7 @@
import org.lamsfoundation.lams.learningdesign.CompetenceMapping;
import org.lamsfoundation.lams.learningdesign.ComplexActivity;
import org.lamsfoundation.lams.learningdesign.ConditionGateActivity;
+import org.lamsfoundation.lams.learningdesign.FloatingActivity;
import org.lamsfoundation.lams.learningdesign.GateActivity;
import org.lamsfoundation.lams.learningdesign.Group;
import org.lamsfoundation.lams.learningdesign.Grouping;
@@ -1332,11 +1333,23 @@
buildParallelActivity((ParallelActivity) activity, activityDetails);
} else if (activity instanceof BranchingActivity) {
buildBranchingActivity((BranchingActivity) activity, activityDetails);
- } else {
+ } else if (activity instanceof FloatingActivity) {
+ buildFloatingActivity((FloatingActivity) activity, activityDetails);
+ } else {
buildSequenceActivity((SequenceActivity) activity, activityDetails);
}
}
+ private void buildFloatingActivity(FloatingActivity floatingActivity, Hashtable activityDetails)
+ throws WDDXProcessorConversionException, ObjectExtractorException {
+ if (keyExists(activityDetails, WDDXTAGS.MAX_ACTIVITIES)) {
+ floatingActivity.setMaxNumberOfActivities(WDDXProcessor.convertToInteger(activityDetails, WDDXTAGS.MAX_ACTIVITIES));
+ }
+
+ SystemTool systemTool = getSystemTool(SystemTool.FLOATING_ACTIVITIES);
+ floatingActivity.setSystemTool(systemTool);
+ }
+
private void buildBranchingActivity(BranchingActivity branchingActivity, Hashtable activityDetails)
throws WDDXProcessorConversionException, ObjectExtractorException {
if (branchingActivity.isChosenBranchingActivity()) {
Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml
===================================================================
diff -u -r8386a3fecd9c7baf6ed69d499016dedd8a83eac6 -rd3b9b5d94b98da06dcce673877406d8e580a114e
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 8386a3fecd9c7baf6ed69d499016dedd8a83eac6)
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -356,6 +356,20 @@
@hibernate.class
+
+
+ @hibernate.class
+
+
+ @hibernate.property column="max_number_of_options" length="5"
+ true
+
+
+
+
+
+
+
Index: lams_common/db/sql/insert_types_data.sql
===================================================================
diff -u -r05db875c7974d705f89231416ff6dfe91a5e70f1 -rd3b9b5d94b98da06dcce673877406d8e580a114e
--- lams_common/db/sql/insert_types_data.sql (.../insert_types_data.sql) (revision 05db875c7974d705f89231416ff6dfe91a5e70f1)
+++ lams_common/db/sql/insert_types_data.sql (.../insert_types_data.sql) (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -82,6 +82,7 @@
INSERT INTO lams_learning_activity_type VALUES (12, 'BRANCHING_TOOL');
INSERT INTO lams_learning_activity_type VALUES (13, 'OPTIONS_WITH_SEQUENCES');
INSERT INTO lams_learning_activity_type VALUES (14, 'GATE_CONDITION');
+INSERT INTO lams_learning_activity_type VALUES (15, 'FLOATING');
INSERT INTO lams_gate_activity_level VALUES (1, 'LEARNER');
INSERT INTO lams_gate_activity_level VALUES (2, 'GROUP');
@@ -225,6 +226,14 @@
'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 (11, 15, 'Floating Activities', 'A collection of floating activities',
+ NULL, NULL, null, 'monitoring/floatingExportPortfolio?mode=learner',
+ 'monitoring/floatingExportPortfolio?mode=teacher', 'monitoring/floating.do?method=viewFloating',
+ 'monitoring/floating.do?method=viewFloating', now() );
+
-- Supported Locales
INSERT INTO lams_supported_locale (locale_id, language_iso_code, country_iso_code, description, direction, fckeditor_code)
VALUES (1, 'en', 'AU', 'English (Australia)', 'LTR', 'en-au');
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java
===================================================================
diff -u -r8386a3fecd9c7baf6ed69d499016dedd8a83eac6 -rd3b9b5d94b98da06dcce673877406d8e580a114e
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 8386a3fecd9c7baf6ed69d499016dedd8a83eac6)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -78,6 +78,7 @@
public static final int TOOL_BRANCHING_ACTIVITY_TYPE = 12;
public static final int OPTIONS_WITH_SEQUENCES_TYPE = 13;
public static final int CONDITION_GATE_ACTIVITY_TYPE = 14;
+ public static final int FLOATING_ACTIVITY_TYPE = 15;
/** *************************************************************** */
/*******************************************************************************************************************
@@ -367,6 +368,10 @@
activity = new OptionsWithSequencesActivity();
activity.setActivityCategoryID(Activity.CATEGORY_SYSTEM);
break;
+ case FLOATING_ACTIVITY_TYPE:
+ activity = new FloatingActivity();
+ activity.setActivityCategoryID(Activity.CATEGORY_SYSTEM);
+ break;
default:
activity = new GroupingActivity();
activity.setActivityCategoryID(Activity.CATEGORY_SYSTEM);
@@ -993,6 +998,15 @@
return getActivityTypeId().intValue() == Activity.TOOL_BRANCHING_ACTIVITY_TYPE;
}
+ /**
+ * Check up whether an activity is floating activity.
+ *
+ * @return is this activity a floating activity
+ */
+ public boolean isFloatingActivity() {
+ return getActivityTypeId().intValue() == Activity.FLOATING_ACTIVITY_TYPE;
+ }
+
public boolean isActivityReadOnly() {
return readOnly.equals(Boolean.TRUE);
}
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/FloatingActivity.java
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/FloatingActivity.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/FloatingActivity.java (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -0,0 +1,191 @@
+/****************************************************************
+ * 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.FloatingActivityStrategy;
+import org.lamsfoundation.lams.tool.SystemTool;
+
+
+/**
+ * @author Mitchell Seaton
+ * @version 2.3
+ *
+ * @hibernate.class
+*/
+public class FloatingActivity extends ComplexActivity implements Serializable {
+
+ /** preset value for maximum number of floating activities in a design */
+ public static final int MAX_NO_OF_ACTIVITIES = 6;
+
+ /** nullable persistent field */
+ private Integer maxNumberOfActivities;
+ private SystemTool systemTool;
+
+ /** full constructor */
+ public FloatingActivity(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,
+ Boolean stopAfterActivity,
+ Set inputActivities,
+ Set activities,
+ Activity defaultActivity,
+ Integer maxNumberOfActivities,
+ SystemTool sysTool,
+ Set branchActivityEntries) {
+ super(activityId,
+ id,
+ description,
+ title,
+ xcoord,
+ ycoord,
+ orderId,
+ defineLater,
+ createDateTime,
+ learningLibrary,
+ parentActivity,
+ libraryActivity,
+ parentUIID,
+ learningDesign,
+ grouping,
+ activityTypeId,
+ transitionTo,
+ transitionFrom,
+ languageFile,
+ stopAfterActivity,
+ inputActivities,
+ activities,
+ defaultActivity,
+ branchActivityEntries);
+ this.maxNumberOfActivities = maxNumberOfActivities;
+ this.systemTool = sysTool;
+ super.activityStrategy = new FloatingActivityStrategy(this);
+ }
+
+ /** default constructor */
+ public FloatingActivity() {
+ super.activityStrategy = new FloatingActivityStrategy(this);
+ }
+
+ /** minimal constructor */
+ public FloatingActivity(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 FloatingActivityStrategy(this);
+ }
+ public Activity createCopy(int uiidOffset){
+ FloatingActivity newFloatingActivity = new FloatingActivity();
+ copyToNewComplexActivity(newFloatingActivity, uiidOffset);
+
+ /** OptionsActivity Specific Attributes */
+ newFloatingActivity.setMaxNumberOfActivities(this.getMaxNumberOfActivities());
+
+ return newFloatingActivity;
+ }
+
+ /**
+ * @hibernate.property column="max_number_of_options" length="5"
+ */
+ public Integer getMaxNumberOfActivities() {
+ return this.maxNumberOfActivities;
+ }
+
+ /**
+ * Get the maximum number of options, guaranteed not to return null. If the
+ * value is null in the database, returns the number of activities
+ * in this optional activity.
+ */
+ public Integer getMaxNumberOfActivitiesNotNull() {
+ return maxNumberOfActivities!=null ? maxNumberOfActivities : getActivities().size();
+ }
+
+ public void setMaxNumberOfActivities(Integer maxNumberOfActivities) {
+ this.maxNumberOfActivities = maxNumberOfActivities;
+ }
+
+ /**
+ * @hibernate.many-to-one lazy="false"
+ * @hibernate.column name="system_tool_id"
+ */
+ public SystemTool getSystemTool() {
+ return systemTool;
+ }
+
+ public void setSystemTool(SystemTool systemTool) {
+ this.systemTool = systemTool;
+ }
+
+ 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
===================================================================
diff -u -r209087915bc219f430c282ad00e5d1e6462f9b5f -rd3b9b5d94b98da06dcce673877406d8e580a114e
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java (.../ActivityDAO.java) (revision 209087915bc219f430c282ad00e5d1e6462f9b5f)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java (.../ActivityDAO.java) (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -30,6 +30,7 @@
import org.lamsfoundation.lams.learningdesign.Activity;
import org.lamsfoundation.lams.learningdesign.ChosenBranchingActivity;
import org.lamsfoundation.lams.learningdesign.ConditionGateActivity;
+import org.lamsfoundation.lams.learningdesign.FloatingActivity;
import org.lamsfoundation.lams.learningdesign.GroupBranchingActivity;
import org.lamsfoundation.lams.learningdesign.GroupingActivity;
import org.lamsfoundation.lams.learningdesign.LearningDesign;
@@ -110,6 +111,8 @@
return getActivityByActivityId(activityId, ToolBranchingActivity.class);
case Activity.OPTIONS_WITH_SEQUENCES_TYPE:
return getActivityByActivityId(activityId, OptionsWithSequencesActivity.class);
+ case Activity.FLOATING_ACTIVITY_TYPE:
+ return getActivityByActivityId(activityId, FloatingActivity.class);
default:
break;
}
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java
===================================================================
diff -u -r8386a3fecd9c7baf6ed69d499016dedd8a83eac6 -rd3b9b5d94b98da06dcce673877406d8e580a114e
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision 8386a3fecd9c7baf6ed69d499016dedd8a83eac6)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -34,6 +34,7 @@
import org.lamsfoundation.lams.learningdesign.CompetenceMapping;
import org.lamsfoundation.lams.learningdesign.ComplexActivity;
import org.lamsfoundation.lams.learningdesign.ConditionGateActivity;
+import org.lamsfoundation.lams.learningdesign.FloatingActivity;
import org.lamsfoundation.lams.learningdesign.GateActivity;
import org.lamsfoundation.lams.learningdesign.Grouping;
import org.lamsfoundation.lams.learningdesign.GroupingActivity;
@@ -132,6 +133,9 @@
/** Maximum number of activities to be attempted */
private Integer maxOptions;
+ /** Maximum number of floating activities allow */
+ private Integer maxActivities;
+
/** Minimum number of activities to be attempted */
private Integer minOptions;
@@ -333,7 +337,9 @@
addParallelActivityAttributes((ParallelActivity) activity);
} else if (activity.isBranchingActivity()) {
addBranchingActivityAttributes((BranchingActivity) activity);
- } else {
+ } else if (activity.isFloatingActivity()) {
+ addFloatingActivityAttributes((FloatingActivity) activity);
+ } else {
addSequenceActivityAttributes((SequenceActivity) activity, branchMappings);
}
@@ -364,7 +370,11 @@
endXCoord = activity.getEndXcoord();
endYCoord = activity.getEndYcoord();
}
-
+
+ private void addFloatingActivityAttributes(FloatingActivity floatingActivity) {
+ maxActivities = floatingActivity.getMaxNumberOfActivities();
+ }
+
private void addSequenceActivityAttributes(SequenceActivity activity,
ArrayList branchMappings) {
@@ -609,6 +619,13 @@
}
/**
+ * @return Returns the maxActivities.
+ */
+ public Integer getMaxActivities() {
+ return maxActivities;
+ }
+
+ /**
* @return Returns the maxOptions.
*/
public Integer getMaxOptions() {
@@ -1025,6 +1042,16 @@
}
/**
+ * @param maxActivities
+ * The maxActivities to set.
+ */
+ public void setMaxActivities(Integer maxActivities) {
+ if (!maxActivities.equals(WDDXTAGS.NUMERIC_NULL_VALUE_INTEGER)) {
+ this.maxActivities = maxActivities;
+ }
+ }
+
+ /**
* @param maxOptions
* The maxOptions to set.
*/
Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/FloatingActivityStrategy.java
===================================================================
diff -u
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/FloatingActivityStrategy.java (revision 0)
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/FloatingActivityStrategy.java (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -0,0 +1,73 @@
+/****************************************************************
+ * 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.strategy;
+
+import org.lamsfoundation.lams.learningdesign.Activity;
+import org.lamsfoundation.lams.learningdesign.ComplexActivity;
+import org.lamsfoundation.lams.learningdesign.FloatingActivity;
+
+
+/**
+ *
+ * Progress calculation strategy for floating activity.
+ * @author Mitchell Seaton
+ * @version 2.3
+ */
+public class FloatingActivityStrategy extends ComplexActivityStrategy
+{
+ private FloatingActivity floatingActivity = null;
+
+ public FloatingActivityStrategy(FloatingActivity floatingActivity) {
+ this.floatingActivity = floatingActivity;
+ }
+
+ /**
+ * Return the next activity for a incomplete floating activity. The next activity will calculated by the normal progress state.
+ *
+ * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#getNextActivityByParent(Activity, Activity)
+ */
+ public Activity getNextActivityByParent(ComplexActivity parent, Activity currentChild)
+ {
+ return null;
+ }
+
+ /**
+ * Return the completion status of children activities within a options
+ * activity. For now a floating activity will not have a progress status dependent on the children.
+ * There is no rule for a minimum number of activities to be completed.
+ *
+ * @see org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy#isComplete(int, org.lamsfoundation.lams.learningdesign.ComplexActivity)
+ */
+ protected boolean isComplete(int numOfCompletedActivities)
+ {
+ return true;
+ }
+
+ /**
+ * Get the strategy's activity as a Complex Activity.
+ */
+ protected ComplexActivity getComplexActivity() {
+ return floatingActivity;
+ }
+}
Index: lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java
===================================================================
diff -u -r05db875c7974d705f89231416ff6dfe91a5e70f1 -rd3b9b5d94b98da06dcce673877406d8e580a114e
--- lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java (.../SystemTool.java) (revision 05db875c7974d705f89231416ff6dfe91a5e70f1)
+++ lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java (.../SystemTool.java) (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -49,6 +49,7 @@
public static final Long TOOL_BASED_BRANCHING = new Long(8);
public static final Long SEQUENCE = new Long(9);
public static final Long CONDITION_GATE = new Long(10);
+ public static final Long FLOATING_ACTIVITIES = new Long(11);
/** identifier field */
private Long systemToolId;
Index: lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java
===================================================================
diff -u -r8386a3fecd9c7baf6ed69d499016dedd8a83eac6 -rd3b9b5d94b98da06dcce673877406d8e580a114e
--- lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java (.../WDDXTAGS.java) (revision 8386a3fecd9c7baf6ed69d499016dedd8a83eac6)
+++ lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java (.../WDDXTAGS.java) (revision d3b9b5d94b98da06dcce673877406d8e580a114e)
@@ -110,6 +110,9 @@
// yet
public static final String INPUT_TOOL_ACTIVITY_UIID = "toolActivityUIID";
+ /** FloatingActivity specific tags */
+ public static final String MAX_ACTIVITIES = "maxActivities";
+
/** OptionsActivity specific tags */
public static final String MAX_OPTIONS = "maxOptions";
public static final String MIN_OPTIONS = "minOptions";