Index: lams_build/lib/lams/lams.jar
===================================================================
RCS file: /usr/local/cvsroot/lams_build/lib/lams/lams.jar,v
diff -u -r1.317 -r1.318
Binary files differ
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.78 -r1.79
--- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java 2 Dec 2008 03:33:36 -0000 1.78
+++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java 7 Jan 2009 02:27:14 -0000 1.79
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml,v
diff -u -r1.47 -r1.48
--- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml 29 Oct 2008 05:35:14 -0000 1.47
+++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml 7 Jan 2009 02:25:51 -0000 1.48
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/db/sql/insert_types_data.sql,v
diff -u -r1.82 -r1.83
--- lams_common/db/sql/insert_types_data.sql 9 Dec 2008 05:38:10 -0000 1.82
+++ lams_common/db/sql/insert_types_data.sql 7 Jan 2009 02:25:51 -0000 1.83
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java,v
diff -u -r1.75 -r1.76
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 29 Oct 2008 05:35:13 -0000 1.75
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java 7 Jan 2009 02:25:51 -0000 1.76
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/FloatingActivity.java,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/FloatingActivity.java 7 Jan 2009 02:25:51 -0000 1.1
@@ -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: FloatingActivity.java,v 1.1 2009/01/07 02:25:51 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.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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java,v
diff -u -r1.22 -r1.23
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java 16 Sep 2008 03:18:13 -0000 1.22
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/ActivityDAO.java 7 Jan 2009 02:25:51 -0000 1.23
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java,v
diff -u -r1.47 -r1.48
--- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java 29 Oct 2008 05:35:14 -0000 1.47
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java 7 Jan 2009 02:25:51 -0000 1.48
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/FloatingActivityStrategy.java,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/strategy/FloatingActivityStrategy.java 7 Jan 2009 02:25:51 -0000 1.1
@@ -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: FloatingActivityStrategy.java,v 1.1 2009/01/07 02:25:51 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.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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java,v
diff -u -r1.13 -r1.14
--- lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java 9 Dec 2008 05:38:09 -0000 1.13
+++ lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java 7 Jan 2009 02:25:51 -0000 1.14
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java,v
diff -u -r1.32 -r1.33
--- lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java 29 Oct 2008 05:35:14 -0000 1.32
+++ lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java 7 Jan 2009 02:25:51 -0000 1.33
@@ -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";