Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/BranchActivityEntry.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/DataFlowObject.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Group.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Grouping.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Transition.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/lesson/Lesson.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/tool/ToolSession.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Fisheye: Tag 47043f84205046a23497bf8c57060e2dcadf0c9a refers to a dead (removed) revision in file `lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/workspace/WorkspaceFolderContent.hbm.xml'. Fisheye: No comparison available. Pass `N' to diff? Index: lams_common/src/java/org/lamsfoundation/lams/commonContext.xml =================================================================== diff -u -rceb74e3b4097cf6461280448f904fa21a176aaa4 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision ceb74e3b4097cf6461280448f904fa21a176aaa4) +++ lams_common/src/java/org/lamsfoundation/lams/commonContext.xml (.../commonContext.xml) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -26,9 +26,13 @@ org.lamsfoundation.lams.contentrepository org.lamsfoundation.lams.learningdesign + org.lamsfoundation.lams.lesson org.lamsfoundation.lams.logevent org.lamsfoundation.lams.policies org.lamsfoundation.lams.timezone + org.lamsfoundation.lams.tool + org.lamsfoundation.lams.usermanagement + org.lamsfoundation.lams.workspace org.lamsfoundation.lams.**.model Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -33,6 +33,25 @@ import java.util.TreeSet; import java.util.Vector; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.DiscriminatorColumn; +import javax.persistence.DiscriminatorType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.OrderBy; +import javax.persistence.Table; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; @@ -49,8 +68,13 @@ * Base class for all activities. If you add another subclass, you must update ActivityDAO.getActivityByActivityId() and * add a ACTIVITY_TYPE constant. */ +@Entity +@Table(name = "lams_learning_activity") +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "learning_activity_type_id", discriminatorType = DiscriminatorType.INTEGER) public abstract class Activity implements Serializable, Nullable, Comparable { + private static final long serialVersionUID = -7181715764819934724L; // --------------------------------------------------------------------- // Class Level Constants // --------------------------------------------------------------------- @@ -105,124 +129,153 @@ public static final String I18N_DESCRIPTION = "activity.description"; public static final String I18N_HELP_TEXT = "activity.helptext"; - /** identifier field */ + @Id + @Column(name = "activity_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long activityId; /** * Authoring generated value. Unique per LearningDesign. */ + @Column(name = "activity_ui_id") private Integer activityUIID; - /** Description of the activity */ + @Column private String description; - /** Title of the activity */ + @Column private String title; - /** Help text for the activity */ - private String helpText; - /** * UI specific attribute indicating the position of the activity */ + @Column private Integer xcoord; /** * UI specific attribute indicating the position of the activity */ + @Column private Integer ycoord; /** * Indicates the order in which the activities appear inside complex activities. Starts from 0, 1 and so on. */ + @Column(name = "order_id") private Integer orderId; /** Date this activity was created */ + @Column(name = "create_date_time") private Date createDateTime; /** * The image that represents the icon of this activity in the UI */ + @Column(name = "library_activity_ui_image") private String libraryActivityUiImage; /** The LearningLibrary of which this activity is a part */ + @ManyToOne + @JoinColumn(name = "learning_library_id") private LearningLibrary learningLibrary; /** * The activity that acts as a container/parent for this activity. Normally would be one of the complex activities * which have child activities defined inside them. */ + @ManyToOne + @JoinColumn(name = "parent_activity_id") private Activity parentActivity; /** * Single Library can have one or more activities defined inside it. This field indicates which activity is this. */ + @ManyToOne + @JoinColumn(name = "library_activity_id") private Activity libraryActivity; /** The LearningDesign to which this activity belongs */ + @ManyToOne + @JoinColumn(name = "learning_design_id") private LearningDesign learningDesign; /** The Grouping that applies to this activity */ + @ManyToOne + @JoinColumn(name = "grouping_id") private Grouping grouping; /** * The grouping_ui_id of the Grouping that applies that to this activity */ + @Column(name = "grouping_ui_id") private Integer groupingUIID; - /** The type of activity */ + @Column(name = "learning_activity_type_id", insertable = false, updatable = false) private Integer activityTypeId; - /** The category of activity */ + @Column(name = "activity_category_id") private Integer activityCategoryID; - /** persistent field */ + @OneToOne + @JoinColumn(name = "transition_to_id") private Transition transitionTo; - /** persistent field */ + @OneToOne + @JoinColumn(name = "transition_from_id") private Transition transitionFrom; /** the activity_ui_id of the parent activity */ + @Column(name = "parent_ui_id") private Integer parentUIID; + @Column(name = "apply_grouping_flag") private Boolean applyGrouping; + @Column(name = "grouping_support_type_id") private Integer groupingSupportType; /** * Name of the file (including the package) that contains the text strings for this activity. e.g. * org.lamsfoundation.lams.tool.sbmt.SbmtResources.properties. */ + @Column(name = "language_file") private String languageFile; /** * An activity is readOnly when a learner starts doing the activity. Used in editOnFly. */ + @Column(name = "read_only") private Boolean readOnly; /** * An activity is initialised if it is ready to be used in lesson ie the tool content is set up, schedule gates are * scheduled, etc. Used to detect which activities need to be initialised for live edit. */ + @Column private Boolean initialised; /** * If stopAfterActivity is true, then the progress engine should "end" the lesson at this point. Used to arbitrarily * stop somewhere in a design, such as at the end of the branch. The normal final activity of a design does not * necessarily have this set - the progress engine will just stop when it runs out of transitions to follow. */ + @Column(name = "stop_after_activity") private Boolean stopAfterActivity; /** * The activities that supplied inputs to this activity. */ - private Set inputActivities; + @ManyToMany + @JoinTable(name = "lams_input_activity", joinColumns = @JoinColumn(name = "activity_id"), inverseJoinColumns = @JoinColumn(name = "input_activity_id")) + @OrderBy("activity_id") + private Set inputActivities = new HashSet(); /** * The BranchActivityEntries that map conditions to this Activity; bi-directional association required (e.g. * LDEV-1910) */ - private Set branchActivityEntries; + @OneToMany(mappedBy = "branchingActivity", cascade = CascadeType.ALL, orphanRemoval = true) + private Set branchActivityEntries = new HashSet(); // --------------------------------------------------------------------- // Object constructors @@ -237,7 +290,7 @@ Integer orderId, 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 branchActivityEntries) { + Boolean stopAfterActivity, Set inputActivities, Set branchActivityEntries) { this.activityId = activityId; activityUIID = id; this.description = description; @@ -357,7 +410,7 @@ activity.setActivityCategoryID(Activity.CATEGORY_SYSTEM); break; } - activity.setActivityTypeId(new Integer(activityType)); + activity.setActivityTypeId(activityType); return activity; } @@ -547,18 +600,15 @@ /** * @return Returns the inputActivities. */ - public Set getInputActivities() { - if (inputActivities == null) { - this.setInputActivities(new HashSet()); - } + public Set getInputActivities() { return inputActivities; } /** * @param InputActivities * The InputActivities to set. */ - public void setInputActivities(Set inputActivities) { + public void setInputActivities(Set inputActivities) { this.inputActivities = inputActivities; } @@ -573,7 +623,7 @@ * @param branchActivityEntries * The branchActivityEntries to set. */ - public void setBranchActivityEntries(Set branchActivityEntries) { + public void setBranchActivityEntries(Set branchActivityEntries) { this.branchActivityEntries = branchActivityEntries; } @@ -674,14 +724,6 @@ this.libraryActivity = libraryActivity; } - public String getHelpText() { - return helpText; - } - - public void setHelpText(String helpText) { - this.helpText = helpText; - } - public Integer getGroupingUIID() { return groupingUIID; } @@ -720,16 +762,14 @@ * * @return the set of all tool activities. */ - public Set getAllToolActivities() { - SortedSet toolActivities = new TreeSet(new ActivityOrderComparator()); + public Set getAllToolActivities() { + SortedSet toolActivities = new TreeSet(new ActivityOrderComparator()); getToolActivitiesInActivity(toolActivities); return toolActivities; } - protected void getToolActivitiesInActivity(SortedSet toolActivities) { - + protected void getToolActivitiesInActivity(SortedSet toolActivities) { // a simple activity doesn't have any tool activities - } /** @@ -757,8 +797,8 @@ */ protected Group getGroupFor(User learner, Grouping inGrouping) { if (inGrouping != null) { - for (Iterator i = inGrouping.getGroups().iterator(); i.hasNext();) { - Group group = (Group) i.next(); + for (Iterator i = inGrouping.getGroups().iterator(); i.hasNext();) { + Group group = i.next(); if (inGrouping.isLearnerGroup(group) && group.hasLearner(learner)) { return group; } @@ -967,7 +1007,6 @@ newActivity.setActivityUIID(LearningDesign.addOffset(this.getActivityUIID(), uiidOffset)); newActivity.setDescription(this.getDescription()); newActivity.setTitle(this.getTitle()); - newActivity.setHelpText(this.getHelpText()); newActivity.setXcoord(this.getXcoord()); newActivity.setYcoord(this.getYcoord()); newActivity.setActivityTypeId(this.getActivityTypeId()); @@ -993,7 +1032,7 @@ newActivity.setParentUIID(LearningDesign.addOffset(this.getParentUIID(), uiidOffset)); if ((this.getInputActivities() != null) && (this.getInputActivities().size() > 0)) { - newActivity.setInputActivities(new HashSet()); + newActivity.setInputActivities(new HashSet()); newActivity.getInputActivities().addAll(this.getInputActivities()); } } @@ -1016,9 +1055,9 @@ public ArrayList getInputActivityUIIDs() { ArrayList list = new ArrayList(); if ((getInputActivities() != null) && (getInputActivities().size() > 0)) { - Iterator iter = getInputActivities().iterator(); + Iterator iter = getInputActivities().iterator(); while (iter.hasNext()) { - Activity inputAct = (Activity) iter.next(); + Activity inputAct = iter.next(); list.add(inputAct.getActivityUIID()); } } @@ -1031,9 +1070,9 @@ */ public Integer getToolInputActivityUIID() { if (getInputActivities() != null) { - Iterator iter = getInputActivities().iterator(); + Iterator iter = getInputActivities().iterator(); if (iter.hasNext()) { - return ((Activity) iter.next()).getActivityUIID(); + return iter.next().getActivityUIID(); } } return null; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityOrderComparator.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityOrderComparator.java (.../ActivityOrderComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityOrderComparator.java (.../ActivityOrderComparator.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -22,7 +22,6 @@ package org.lamsfoundation.lams.learningdesign; -import java.io.Serializable; import java.util.Comparator; /** @@ -40,18 +39,13 @@ * * @author dgarth, Jacky Fang */ -public class ActivityOrderComparator implements Comparator, Serializable { +public class ActivityOrderComparator implements Comparator { /** * Compare the order. - * - * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ @Override - public int compare(Object o1, Object o2) { - Activity activity1 = (Activity) o1; - Activity activity2 = (Activity) o2; - + public int compare(Activity activity1, Activity activity2) { if (activity1.getOrderId() == null || activity2.getOrderId() == null) { return compareActivityId(activity1, activity2); } @@ -85,4 +79,4 @@ } return activity1.getActivityUIID().compareTo(activity2.getActivityUIID()); } -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityTitleComparator.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityTitleComparator.java (.../ActivityTitleComparator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ActivityTitleComparator.java (.../ActivityTitleComparator.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -22,9 +22,6 @@ package org.lamsfoundation.lams.learningdesign; -import java.io.Serializable; -import java.util.Comparator; - /** * The activity name comparator used for sorted set, sorting on the activity's name then order id * then activity id. This comparator will impose orderings that are inconsistent with equals. @@ -35,18 +32,15 @@ * activities then it calls ActivityOrderComparator to do the other comparisons. Do not assume that * it will always extend the ActivityOrderComparator. */ -public class ActivityTitleComparator extends ActivityOrderComparator implements Comparator, Serializable { +public class ActivityTitleComparator extends ActivityOrderComparator { /** * Compare the order. - * + * * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ @Override - public int compare(Object o1, Object o2) { - Activity activity1 = (Activity) o1; - Activity activity2 = (Activity) o2; - + public int compare(Activity activity1, Activity activity2) { int orderDiff = 0; if (activity1.getTitle() != null) { @@ -57,7 +51,6 @@ } } - return orderDiff != 0 ? orderDiff : super.compare(o1, o2); + return orderDiff != 0 ? orderDiff : super.compare(activity1, activity2); } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchActivityEntry.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchActivityEntry.java (.../BranchActivityEntry.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchActivityEntry.java (.../BranchActivityEntry.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -20,13 +20,26 @@ * **************************************************************** */ - package org.lamsfoundation.lams.learningdesign; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + import org.apache.commons.lang.builder.CompareToBuilder; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.hibernate.annotations.Cascade; +import org.hibernate.annotations.CascadeType; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; import org.lamsfoundation.lams.learningdesign.dto.BranchActivityEntryDTO; import org.lamsfoundation.lams.learningdesign.dto.ToolOutputBranchActivityEntryDTO; import org.lamsfoundation.lams.learningdesign.dto.ToolOutputGateActivityEntryDTO; @@ -42,21 +55,37 @@ * @author Fiona Malikoff * @version 2.1 */ +@Entity +@Table(name = "lams_branch_activity_entry") public class BranchActivityEntry { - /** identifier field */ + @Id + @Column(name = "entry_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) protected Long entryId; - /** persistent field */ + + @Column(name = "entry_ui_id") protected Integer entryUIID; - /** persistent field */ + + @ManyToOne + @JoinColumn(name = "sequence_activity_id") protected SequenceActivity branchSequenceActivity; - /** persistent field */ + + @ManyToOne + @JoinColumn(name = "branch_activity_id") protected Activity branchingActivity; - /** persistent field */ + + @ManyToOne + @JoinColumn(name = "group_id") private Group group; - /** persistent field */ + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "condition_id") + @Cascade(CascadeType.SAVE_UPDATE) + @Fetch(FetchMode.JOIN) private BranchCondition condition; - /** persistent field */ + + @Column(name = "open_gate") private Boolean gateOpenWhenConditionMet; /** @@ -203,8 +232,9 @@ public String toString() { return new ToStringBuilder(this).append("entryId", getEntryId()).append("entryUIID", getEntryUIID()) .append("group", getGroup() != null ? getGroup().getGroupId().toString() : "") - .append("sequence activity", getBranchSequenceActivity() != null - ? getBranchSequenceActivity().getActivityId().toString() : "") + .append("sequence activity", + getBranchSequenceActivity() != null ? getBranchSequenceActivity().getActivityId().toString() + : "") .toString(); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java (.../BranchingActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/BranchingActivity.java (.../BranchingActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -27,29 +27,42 @@ import java.util.Set; import java.util.Vector; +import javax.persistence.Column; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; import org.lamsfoundation.lams.learningdesign.strategy.BranchingActivityStrategy; import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.util.MessageService; /** * @author Mitchell Seaton - * @version 2.1 - * - * */ abstract public class BranchingActivity extends ComplexActivity implements Serializable, ISystemToolActivity { + private static final long serialVersionUID = -7920442950752010105L; // types are used on the URLS to determine which type of branch is expected // the code should always then check against the activity to make sure it is correct public static final String CHOSEN_TYPE = "chosen"; public static final String GROUP_BASED_TYPE = "group"; public static final String TOOL_BASED_TYPE = "tool"; + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "system_tool_id") private SystemTool systemTool; + + @Column(name = "start_xcoord") private Integer startXcoord; + + @Column(name = "start_ycoord") private Integer startYcoord; + + @Column(name = "end_xcoord") private Integer endXcoord; + + @Column(name = "end_ycoord") private Integer endYcoord; /** full constructor */ @@ -58,8 +71,8 @@ Activity parentActivity, Activity libraryActivity, Integer parentUIID, LearningDesign learningDesign, Grouping grouping, Integer activityTypeId, Transition transitionTo, Transition transitionFrom, String languageFile, Integer startXcoord, Integer startYcoord, Integer endXcoord, Integer endYcoord, - Boolean stopAfterActivity, Set inputActivities, Set activities, Activity defaultActivity, - SystemTool systemTool, Set branchActivityEntries) { + Boolean stopAfterActivity, Set inputActivities, Set activities, + Activity defaultActivity, SystemTool systemTool, Set branchActivityEntries) { super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, transitionFrom, languageFile, stopAfterActivity, inputActivities, activities, defaultActivity, @@ -83,23 +96,17 @@ 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) { + Transition transitionFrom, Set activities) { super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, transitionTo, transitionFrom, activities); super.activityStrategy = new BranchingActivityStrategy(this); } - /** - * @see org.lamsfoundation.lams.util.Nullable#isNull() - */ @Override public boolean isNull() { return false; } - /** - * - */ public Integer getEndXcoord() { return endXcoord; } @@ -108,9 +115,6 @@ this.endXcoord = endXcoord; } - /** - * - */ public Integer getEndYcoord() { return endYcoord; } @@ -119,9 +123,6 @@ this.endYcoord = endYcoord; } - /** - * - */ public Integer getStartXcoord() { return startXcoord; } @@ -130,9 +131,6 @@ this.startXcoord = startXcoord; } - /** - * - */ public Integer getStartYcoord() { return startYcoord; } @@ -141,10 +139,6 @@ this.startYcoord = startYcoord; } - /** - * - * - */ @Override public SystemTool getSystemTool() { return systemTool; @@ -171,8 +165,8 @@ * @return error message key */ @Override - public Vector validateActivity(MessageService messageService) { - Vector listOfValidationErrors = new Vector(); + public Vector validateActivity(MessageService messageService) { + Vector listOfValidationErrors = new Vector(); if (getActivities() == null || getActivities().size() == 0) { listOfValidationErrors .add(new ValidationErrorDTO(ValidationErrorDTO.BRANCHING_ACTIVITY_MUST_HAVE_A_BRANCH_ERROR_CODE, @@ -181,5 +175,4 @@ } return listOfValidationErrors; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java (.../ChosenBranchingActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenBranchingActivity.java (.../ChosenBranchingActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -24,51 +24,26 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; -import java.util.Set; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; -import org.lamsfoundation.lams.tool.SystemTool; /** * @author Mitchell Seaton - * @version 2.1 - * - * */ +@Entity +@DiscriminatorValue("10") 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, java.util.Date createDateTime, LearningLibrary learningLibrary, - Activity parentActivity, Activity libraryActivity, Integer parentUIID, LearningDesign learningDesign, - Grouping grouping, Integer activityTypeId, Transition transitionTo, Transition transitionFrom, - String languageFile, Integer startXcoord, Integer startYcoord, Integer endXcoord, Integer endYcoord, - Boolean stopAfterActivity, Set inputActivities, Set activities, Activity defaultActivity, - SystemTool systemTool, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, startXcoord, startYcoord, endXcoord, endYcoord, stopAfterActivity, - inputActivities, activities, defaultActivity, systemTool, branchActivityEntries); - } - /** default constructor */ public ChosenBranchingActivity() { super(); } - /** minimal constructor */ - public ChosenBranchingActivity(Long activityId, 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, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, activities); - } - /** * Makes a copy of the BranchingActivity for authoring, preview and monitoring environment * @@ -96,5 +71,4 @@ public String toString() { return new ToStringBuilder(this).append("activityId", getActivityId()).toString(); } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java (.../ChosenGrouping.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ChosenGrouping.java (.../ChosenGrouping.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -25,26 +25,32 @@ import java.util.Set; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + /** * Grouping formed by staff members choice - * + * * @author chris */ +@Entity +@DiscriminatorValue("2") public class ChosenGrouping extends Grouping { + private static final long serialVersionUID = 3237424022482923008L; /** Creates a new instance of ChosenGrouping */ public ChosenGrouping() { super.grouper = new ChosenGrouper(); } /** full constructor */ - public ChosenGrouping(Long groupingId, Set groups, Set activities) { + public ChosenGrouping(Long groupingId, Set groups, Set activities) { super(groupingId, groups, activities, new ChosenGrouper()); } /** * This method creates a deep copy of the Grouping - * + * * @return ChosenGrouping The deep copied Grouping object */ @Override @@ -57,12 +63,11 @@ /** * This type of grouping doesn't have groups other than learner groups. * So it always return true. - * + * * @see org.lamsfoundation.lams.learningdesign.Grouping#isLearnerGroup(org.lamsfoundation.lams.learningdesign.Group) */ @Override public boolean isLearnerGroup(Group group) { return true; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java (.../ComplexActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ComplexActivity.java (.../ComplexActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -31,31 +31,44 @@ import java.util.SortedSet; import java.util.TreeSet; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.Transient; + import org.apache.commons.lang.builder.ToStringBuilder; +import org.hibernate.annotations.Cascade; +import org.hibernate.annotations.CascadeType; +import org.hibernate.annotations.SortComparator; import org.lamsfoundation.lams.learningdesign.dto.AuthoringActivityDTO; import org.lamsfoundation.lams.learningdesign.dto.BranchActivityEntryDTO; import org.lamsfoundation.lams.learningdesign.strategy.ComplexActivityStrategy; import org.lamsfoundation.lams.lesson.LearnerProgress; -/** - * - */ +@Entity public abstract class ComplexActivity extends Activity implements Serializable { + private static final long serialVersionUID = -6397701814181313412L; + @Transient protected ComplexActivityStrategy activityStrategy; - /** persistent field */ - private Set activities; - /** nullable persistent field */ + @OneToMany(mappedBy = "parentActivity", fetch = FetchType.EAGER) + @Cascade(CascadeType.SAVE_UPDATE) + @SortComparator(ActivityOrderComparator.class) + private Set activities = new TreeSet(new ActivityOrderComparator()); + + @OneToOne + @JoinColumn(name = "default_activity_id") protected Activity defaultActivity; - /** full constructor */ public ComplexActivity(Long activityId, Integer id, String description, String title, Integer xcoord, Integer ycoord, Integer orderId, 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, Set branchActivityEntries) { + String languageFile, Boolean stopAfterActivity, Set inputActivities, Set activities, + Activity defaultActivity, Set branchActivityEntries) { super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, transitionFrom, languageFile, stopAfterActivity, inputActivities, branchActivityEntries); @@ -70,7 +83,7 @@ /** minimal constructor */ public ComplexActivity(Long activityId, Date createDateTime, LearningLibrary learningLibrary, Activity parentActivity, LearningDesign learningDesign, Grouping grouping, Integer activityTypeId, - Transition transitionTo, Transition transitionFrom, Set activities) { + Transition transitionTo, Transition transitionFrom, Set activities) { super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, transitionTo, transitionFrom); this.activities = activities; @@ -81,17 +94,7 @@ return new ToStringBuilder(this).append("activityId", getActivityId()).toString(); } - /** - * - * sort="org.lamsfoundation.lams.learningdesign.ActivityOrderComparator" - * - * - * - */ - public Set getActivities() { - if (this.activities == null) { - setActivities(new TreeSet(new ActivityOrderComparator())); - } + public Set getActivities() { return this.activities; } @@ -103,9 +106,6 @@ *

* A tool based branching activity has to have a default branch in case the conditions don't match to any other * branch. - * - * - * */ public Activity getDefaultActivity() { return defaultActivity; @@ -115,7 +115,7 @@ this.defaultActivity = defaultActivity; } - public void setActivities(Set activities) { + public void setActivities(Set activities) { this.activities = activities; } @@ -131,8 +131,8 @@ * @return the child activity. */ public Activity getChildActivityById(long activityId) { - for (Iterator i = this.activities.iterator(); i.hasNext();) { - Activity child = (Activity) i.next(); + for (Iterator i = this.activities.iterator(); i.hasNext();) { + Activity child = i.next(); if (child.getActivityId().longValue() == activityId) { return child; } @@ -170,13 +170,11 @@ * activity from its children. */ @Override - protected void getToolActivitiesInActivity(SortedSet toolActivities) { - - for (Iterator i = this.getActivities().iterator(); i.hasNext();) { - Activity child = (Activity) i.next(); + protected void getToolActivitiesInActivity(SortedSet toolActivities) { + for (Iterator i = this.getActivities().iterator(); i.hasNext();) { + Activity child = i.next(); child.getToolActivitiesInActivity(toolActivities); } - } @Override @@ -186,9 +184,8 @@ dtoSet.add(new AuthoringActivityDTO(this, branchMappings, languageCode)); // add parent activity // add the DTO for all child activities - for (Iterator i = this.getActivities().iterator(); i.hasNext();) { - Activity child = (Activity) i.next(); - + for (Iterator i = this.getActivities().iterator(); i.hasNext();) { + Activity child = i.next(); dtoSet.addAll(child.getAuthoringActivityDTOSet(branchMappings, languageCode)); } @@ -203,5 +200,4 @@ copyToNewActivity(newComplex, uiidOffset); newComplex.setDefaultActivity(this.getDefaultActivity()); } - } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ConditionGateActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ConditionGateActivity.java (.../ConditionGateActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ConditionGateActivity.java (.../ConditionGateActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -24,15 +24,15 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; -import java.util.HashSet; import java.util.Iterator; -import java.util.Set; import java.util.Vector; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; import org.lamsfoundation.lams.learningdesign.strategy.ConditionGateActivityStrategy; -import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.util.MessageService; /** @@ -41,39 +41,16 @@ * @author Marcin Cieslak * */ +@Entity +@DiscriminatorValue("14") public class ConditionGateActivity extends GateActivity implements Serializable { + private static final long serialVersionUID = 2054132139360279827L; - /** full constructor */ - public ConditionGateActivity(Long activityId, Integer id, String description, String title, Integer xcoord, - Integer ycoord, Integer orderId, 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, Integer gateActivityLevelId, - SystemTool sysTool, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, stopAfterActivity, inputActivities, gateActivityLevelId, sysTool, - branchActivityEntries); - super.simpleActivityStrategy = new ConditionGateActivityStrategy(this); - } - /** default constructor */ public ConditionGateActivity() { super.simpleActivityStrategy = new ConditionGateActivityStrategy(this); } - /** minimal constructor */ - public ConditionGateActivity(Long activityId, 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, Integer gateActivityLevelId) { - super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, gateActivityLevelId); - super.simpleActivityStrategy = new ConditionGateActivityStrategy(this); - } - /** * Makes a copy of the PermissionGateActivity for authoring, preview and monitoring enviornment * @@ -83,14 +60,13 @@ public Activity createCopy(int uiidOffset) { ConditionGateActivity newConditionGateActivity = new ConditionGateActivity(); copyToNewActivity(newConditionGateActivity, uiidOffset); - newConditionGateActivity.setGateOpen(new Boolean(false)); + newConditionGateActivity.setGateOpen(false); newConditionGateActivity.setGateActivityLevelId(this.getGateActivityLevelId()); if ((this.getBranchActivityEntries() != null) && (this.getBranchActivityEntries().size() > 0)) { - newConditionGateActivity.setBranchActivityEntries(new HashSet()); - Iterator iter = this.getBranchActivityEntries().iterator(); + Iterator iter = this.getBranchActivityEntries().iterator(); while (iter.hasNext()) { - BranchActivityEntry oldEntry = (BranchActivityEntry) iter.next(); + BranchActivityEntry oldEntry = iter.next(); BranchActivityEntry newEntry = new BranchActivityEntry(null, LearningDesign.addOffset(oldEntry.getEntryUIID(), uiidOffset), null, newConditionGateActivity, null, oldEntry.getGateOpenWhenConditionMet()); @@ -121,8 +97,8 @@ } @Override - public Vector validateActivity(MessageService messageService) { - Vector listOfValidationErrors = new Vector(); + public Vector validateActivity(MessageService messageService) { + Vector listOfValidationErrors = new Vector(); if ((getInputActivities() == null) || (getInputActivities().size() == 0)) { listOfValidationErrors Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/DataFlowObject.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/DataFlowObject.java (.../DataFlowObject.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/DataFlowObject.java (.../DataFlowObject.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -20,37 +20,52 @@ * **************************************************************** */ - package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + /** * Similar to DataOutputDefinition. It's bound with DataTransitions. It defines what outputs the source tool can * provide. Teacher can rename the data flow object so it's more meaningful to him. * - * */ +@Entity +@Table(name = "lams_data_flow") public class DataFlowObject implements Serializable { - /** identifier field */ + private static final long serialVersionUID = 4460757845007369769L; + + @Id + @Column(name = "data_flow_object_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long dataFlowObjectId; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "transition_id") private DataTransition dataTransition; - /** persistent field */ + @Column private String name; - /** persistent field */ + @Column(name = "display_name") private String displayName; - /** persistent field */ + @Column(name = "order_id") private Integer orderId; /** * persistent field It's a tool's internal parameter. It can be anything - the tool itself should know what to do * with it. It can be for example an ID of question in Q&A which this data flow object provides input for. */ + @Column(name = "tool_assigment_id") private Integer toolAssigmentId; public DataFlowObject() { @@ -67,10 +82,6 @@ this.toolAssigmentId = toolAssigmentId; } - /** - * - * - */ public Long getDataFlowObjectId() { return dataFlowObjectId; } @@ -79,11 +90,6 @@ dataFlowObjectId = dataOutputId; } - /** - * - * - * - */ public DataTransition getDataTransition() { return dataTransition; } @@ -92,9 +98,6 @@ this.dataTransition = dataTransition; } - /** - * - */ public String getName() { return name; } @@ -103,9 +106,6 @@ this.name = name; } - /** - * - */ public String getDisplayName() { return displayName; } @@ -114,9 +114,6 @@ this.displayName = displayName; } - /** - * - */ public Integer getOrderId() { return orderId; } @@ -125,9 +122,6 @@ this.orderId = orderId; } - /** - * - */ public Integer getToolAssigmentId() { return toolAssigmentId; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/DataTransition.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/DataTransition.java (.../DataTransition.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/DataTransition.java (.../DataTransition.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -20,23 +20,35 @@ * **************************************************************** */ - package org.lamsfoundation.lams.learningdesign; import java.util.Date; import java.util.Set; import java.util.TreeSet; +import javax.persistence.CascadeType; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.OneToMany; + +import org.hibernate.annotations.SortComparator; + /** * Different type of transition - does not indicate lesson progress, but rather data flow between tools. * * @author Marcin Cieslak * */ +@Entity +@DiscriminatorValue("1") public class DataTransition extends Transition { + private static final long serialVersionUID = -6508807398165476228L; + /** * Tool output definitions which can be later used in the target tool. */ + @OneToMany(mappedBy = "dataTransition", cascade = CascadeType.ALL) + @SortComparator(DataFlowObjectComparator.class) private Set dataFlowObjects = new TreeSet(new DataFlowObjectComparator()); public DataTransition() { @@ -58,13 +70,6 @@ transitionType = Transition.DATA_TRANSITION_TYPE; } - /** - * - * sort="org.lamsfoundation.lams.learningdesign.DataFlowObjectComparator" - * - * - * - */ public Set getDataFlowObjects() { return dataFlowObjects; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/FloatingActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/FloatingActivity.java (.../FloatingActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/FloatingActivity.java (.../FloatingActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -24,60 +24,41 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; -import java.util.Set; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + 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 - * - * */ +@Entity +@DiscriminatorValue("15") public class FloatingActivity extends ComplexActivity implements Serializable { + private static final long serialVersionUID = 6726503617240839444L; /** preset value for maximum number of floating activities in a design */ public static final int MAX_NO_OF_ACTIVITIES = 6; - /** nullable persistent field */ + @Column(name = "max_number_of_options") private Integer maxNumberOfActivities; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "system_tool_id") private SystemTool systemTool; - /** full constructor */ - public FloatingActivity(Long activityId, Integer id, String description, String title, Integer xcoord, - Integer ycoord, Integer orderId, 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, 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, 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, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, activities); - super.activityStrategy = new FloatingActivityStrategy(this); - } - @Override public Activity createCopy(int uiidOffset) { FloatingActivity newFloatingActivity = new FloatingActivity(); @@ -89,9 +70,6 @@ return newFloatingActivity; } - /** - * - */ public Integer getMaxNumberOfActivities() { return this.maxNumberOfActivities; } @@ -108,10 +86,6 @@ this.maxNumberOfActivities = maxNumberOfActivities; } - /** - * - * - */ public SystemTool getSystemTool() { return systemTool; } @@ -125,11 +99,8 @@ return new ToStringBuilder(this).append("activityId", getActivityId()).toString(); } - /** - * @see org.lamsfoundation.lams.util.Nullable#isNull() - */ @Override public boolean isNull() { return false; } -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java (.../GateActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java (.../GateActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -25,48 +25,63 @@ import java.io.Serializable; import java.util.Date; +import java.util.HashSet; import java.util.Set; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.GateActivityStrategy; import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.usermanagement.User; -/** - * - */ +@Entity public abstract class GateActivity extends SimpleActivity implements Serializable, ISystemToolActivity { + private static final long serialVersionUID = -5436654342587065425L; + public static final int LEARNER_GATE_LEVEL = 1; public static final int GROUP_GATE_LEVEL = 2; public static final int CLASS_GATE_LEVEL = 3; - /** persistent field */ + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "system_tool_id") private SystemTool systemTool; - /** persistent field */ + @Column(name = "gate_activity_level_id") private Integer gateActivityLevelId; - /** persistent field */ + @Column(name = "gate_open_flag") private Boolean gateOpen; + @ManyToOne + @JoinColumn(name = "gate_open_user") private User gateOpenUser; + @Column(name = "gate_open_time") private Date gateOpenTime; /** * The learners who passed the gate. */ - private Set allowedToPassLearners; + @ManyToMany + @JoinTable(name = "lams_gate_allowed_learners", joinColumns = @JoinColumn(name = "activity_id"), inverseJoinColumns = @JoinColumn(name = "user_id")) + private Set allowedToPassLearners = new HashSet(); /** full constructor */ public GateActivity(Long activityId, Integer id, String description, String title, Integer xcoord, Integer ycoord, Integer orderId, 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, Integer gateActivityLevelId, SystemTool sysTool, - Set branchActivityEntries) { + Boolean stopAfterActivity, Set inputActivities, Integer gateActivityLevelId, SystemTool sysTool, + Set branchActivityEntries) { super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, transitionFrom, languageFile, stopAfterActivity, inputActivities, branchActivityEntries); @@ -90,11 +105,6 @@ this.gateActivityLevelId = gateActivityLevelId; } - /** - * - * - * - */ public Integer getGateActivityLevelId() { return gateActivityLevelId; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java (.../Group.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Group.java (.../Group.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -27,51 +27,80 @@ import java.util.HashSet; import java.util.Set; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + import org.apache.commons.lang.builder.CompareToBuilder; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.hibernate.annotations.BatchSize; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; import org.lamsfoundation.lams.learningdesign.dto.GroupDTO; +import org.lamsfoundation.lams.tool.GroupedToolSession; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.util.Nullable; +@Entity +@Table(name = "lams_group") public class Group implements Serializable, Nullable, Comparable { + private static final long serialVersionUID = 5654513153596816881L; public final static int STAFF_GROUP_ORDER_ID = 2; public final static String NAME_OF_STAFF_GROUP = "Staff Group"; - /** identifier field */ + @Id + @Column(name = "group_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long groupId; + @Column(name = "group_name") private String groupName; - /** persistent field */ + @Column(name = "order_id") private int orderId; /** * Authoring generated value. Unique per LearningDesign. */ + @Column(name = "group_ui_id") private Integer groupUIID; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "grouping_id", updatable = false) private Grouping grouping; - /** persistent field */ - private Set users; + @ManyToMany + @JoinTable(name = "lams_user_group", joinColumns = @JoinColumn(name = "group_id"), inverseJoinColumns = @JoinColumn(name = "user_id")) + @BatchSize(size = 20) + @LazyCollection(LazyCollectionOption.EXTRA) + private Set users = new HashSet(); - /** persistent field */ - private Set toolSessions; + @OneToMany(mappedBy = "sessionGroup") + @BatchSize(size = 20) + private Set toolSessions = new HashSet(); - /** persistent field */ - private Set branchActivities; + @OneToMany(mappedBy = "group", cascade = CascadeType.ALL) + private Set branchActivities = new HashSet(); // --------------------------------------------------------------------- // Object creation Methods // --------------------------------------------------------------------- /** full constructor */ - public Group(Long groupId, String groupName, int orderId, Integer groupUIID, Grouping grouping, Set users, - Set toolSessions, Set branchActivities) { + public Group(Long groupId, String groupName, int orderId, Integer groupUIID, Grouping grouping, Set users, + Set toolSessions, Set branchActivities) { this.groupId = groupId; this.groupName = groupName; this.orderId = orderId; @@ -92,10 +121,11 @@ * the users in this group. * @return the new learner group */ - public static Group createLearnerGroup(Grouping grouping, String groupName, Set users) { + public static Group createLearnerGroup(Grouping grouping, String groupName, Set users) { int nextOrderId = grouping.getNextGroupOrderIdCheckName(groupName); if (nextOrderId > -1) { - return new Group(null, groupName, nextOrderId, null, grouping, users, new HashSet(), null); + return new Group(null, groupName, nextOrderId, null, grouping, users, new HashSet(), + null); } return null; } @@ -114,8 +144,8 @@ * all tool sessions included in this group * @return the new learner group */ - public static Group createLearnerGroupWithToolSession(Grouping grouping, String groupName, Set users, - Set toolSessions) { + public static Group createLearnerGroupWithToolSession(Grouping grouping, String groupName, Set users, + Set toolSessions) { int nextOrderId = grouping.getNextGroupOrderIdCheckName(groupName); if (nextOrderId > -1) { return new Group(null, groupName, nextOrderId, null, grouping, users, toolSessions, null); @@ -135,8 +165,9 @@ * * @return the new staff group. */ - public static Group createStaffGroup(Grouping grouping, String groupName, Set staffs) { - return new Group(null, groupName, Group.STAFF_GROUP_ORDER_ID, null, grouping, staffs, new HashSet(), null); + public static Group createStaffGroup(Grouping grouping, String groupName, Set staffs) { + return new Group(null, groupName, Group.STAFF_GROUP_ORDER_ID, null, grouping, staffs, + new HashSet(), null); } /** default constructor */ @@ -186,48 +217,32 @@ this.grouping = grouping; } - /** - * - * - * - */ public Set getUsers() { return this.users; } - public void setUsers(Set userGroups) { + public void setUsers(Set userGroups) { this.users = userGroups; } - /** - * - * - * - * - */ - public Set getToolSessions() { + public Set getToolSessions() { return this.toolSessions; } - public void setToolSessions(Set toolSessions) { + public void setToolSessions(Set toolSessions) { this.toolSessions = toolSessions; } /** * Maps the branch activities appropriate for this Group. Normally there is only one branch per branching activity * that is applicable to a group, but this may be changed in the future. If the group is applied to multiple * branching activities, then there will be multiple branches - one for each branching activity. - * - * - * - * - * */ - public Set getBranchActivities() { + public Set getBranchActivities() { return this.branchActivities; } - public void setBranchActivities(Set branchActivities) { + public void setBranchActivities(Set branchActivities) { this.branchActivities = branchActivities; } @@ -315,12 +330,9 @@ * Create a copy of this group, without copying the users or tool sessions. Copies any group to branch mappings, * updating the group but not the activity. */ - @SuppressWarnings("unchecked") public Group createCopy(Grouping newGrouping) { - Group newGroup = new Group(null, this.getGroupName(), this.getOrderId(), this.getGroupUIID(), newGrouping, null, null, null); - return newGroup; } @@ -331,9 +343,6 @@ public BranchActivityEntry allocateBranchToGroup(Integer entryUIID, SequenceActivity branch, BranchingActivity branchingActivity) { BranchActivityEntry entry = new BranchActivityEntry(null, entryUIID, branch, branchingActivity, this); - if (getBranchActivities() == null) { - setBranchActivities(new HashSet()); - } getBranchActivities().add(entry); return entry; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java (.../GroupBranchingActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupBranchingActivity.java (.../GroupBranchingActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -28,51 +28,27 @@ import java.util.Set; import java.util.Vector; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; -import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.util.MessageService; /** * @author Mitchell Seaton - * @version 2.1 - * - * */ +@Entity +@DiscriminatorValue("11") 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, java.util.Date createDateTime, LearningLibrary learningLibrary, - Activity parentActivity, Activity libraryActivity, Integer parentUIID, LearningDesign learningDesign, - Grouping grouping, Integer activityTypeId, Transition transitionTo, Transition transitionFrom, - String languageFile, Integer startXcoord, Integer startYcoord, Integer endXcoord, Integer endYcoord, - Boolean stopAfterActivity, Set inputActivities, Set activities, Activity defaultActivity, - SystemTool systemTool, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, startXcoord, startYcoord, endXcoord, endYcoord, stopAfterActivity, - inputActivities, activities, defaultActivity, systemTool, branchActivityEntries); - } - /** default constructor */ public GroupBranchingActivity() { super(); } - /** minimal constructor */ - public GroupBranchingActivity(Long activityId, 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, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, activities); - } - /** * Makes a copy of the BranchingActivity for authoring, preview and monitoring environment * @@ -98,8 +74,8 @@ * @return error message key */ @Override - public Vector validateActivity(MessageService messageService) { - Vector listOfValidationErrors = new Vector(); + public Vector validateActivity(MessageService messageService) { + Vector listOfValidationErrors = new Vector(); if (getActivities() == null || getActivities().size() == 0) { listOfValidationErrors .add(new ValidationErrorDTO(ValidationErrorDTO.BRANCHING_ACTIVITY_MUST_HAVE_A_BRANCH_ERROR_CODE, @@ -121,9 +97,9 @@ for (Group group : groups) { boolean foundEntry = false; if (group.getBranchActivities() != null) { - Iterator iter = group.getBranchActivities().iterator(); + Iterator iter = group.getBranchActivities().iterator(); while (iter.hasNext() && !foundEntry) { - BranchActivityEntry entry = (BranchActivityEntry) iter.next(); + BranchActivityEntry entry = iter.next(); foundEntry = entry.getBranchingActivity().equals(this); } } @@ -140,5 +116,4 @@ } return listOfValidationErrors; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Grouping.java (.../Grouping.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -31,53 +31,79 @@ import java.util.Set; import java.util.TreeSet; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.DiscriminatorColumn; +import javax.persistence.DiscriminatorType; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import javax.persistence.Transient; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.hibernate.annotations.BatchSize; import org.lamsfoundation.lams.learningdesign.dto.GroupingDTO; import org.lamsfoundation.lams.lesson.LessonClass; import org.lamsfoundation.lams.usermanagement.User; /** * @author Jacky Fang */ +@Entity +@Table(name = "lams_grouping") +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "grouping_type_id", discriminatorType = DiscriminatorType.INTEGER) public abstract class Grouping implements Serializable { + private static final long serialVersionUID = -8644392914291370672L; + /** Grouping type id of random grouping */ - public static final Integer RANDOM_GROUPING_TYPE = new Integer(1); + public static final Integer RANDOM_GROUPING_TYPE = 1; /** Grouping type id of chosen grouping */ - public static final Integer CHOSEN_GROUPING_TYPE = new Integer(2); + public static final Integer CHOSEN_GROUPING_TYPE = 2; /** Grouping type id for lesson class grouping */ - public static final Integer CLASS_GROUPING_TYPE = new Integer(3); + public static final Integer CLASS_GROUPING_TYPE = 3; /** Grouping type id for learner's choice grouping */ - public static final Integer LEARNER_CHOICE_GROUPING_TYPE = new Integer(4); + public static final Integer LEARNER_CHOICE_GROUPING_TYPE = 4; - /** identifier field */ + @Id + @Column(name = "grouping_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long groupingId; /** - * nullable persistent field * TODO It make sense only if we want to setup some limits for the number * of groups the author can setup in the authoring GUI. It might need * to be deleted if the end user doesn't like this limits. */ + @Column(name = "max_number_of_groups") private Integer maxNumberOfGroups; - /** nullable persistent field */ + @Column(name = "grouping_ui_id") private Integer groupingUIID; - /** persistent field */ - private Set groups; + @OneToMany(mappedBy = "grouping", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.EAGER) + @BatchSize(size = 10) + private Set groups = new HashSet(); - /** persistent field */ - private Set activities; + @OneToMany(mappedBy = "grouping") + private Set activities = new HashSet(); - /** non-persistent field */ - protected Set learners; + @Transient + protected Set learners = new HashSet(); + @Transient protected Grouper grouper; /** * static final variables indicating the grouping_support of activities @@ -91,7 +117,7 @@ /******************************************************************/ /** full constructor */ - public Grouping(Long groupingId, Set groups, Set activities, Grouper grouper) { + public Grouping(Long groupingId, Set groups, Set activities, Grouper grouper) { this.groupingId = groupingId; this.groups = groups; this.activities = activities; @@ -102,11 +128,6 @@ public Grouping() { } - /** minimal constructor */ - public Grouping(Long groupingId) { - this.groupingId = groupingId; - } - /** * Create a deep copy of the this grouping. It should return the same * subclass as the grouping being copied. Does not copy the tool sessions. @@ -132,20 +153,16 @@ newGrouping.setGroupingUIID(LearningDesign.addOffset(this.getGroupingUIID(), uiidOffset)); if (this.getGroups() != null && this.getGroups().size() > 0) { - Iterator iter = this.getGroups().iterator(); + Iterator iter = this.getGroups().iterator(); while (iter.hasNext()) { - Group oldGroup = (Group) iter.next(); + Group oldGroup = iter.next(); Group newGroup = oldGroup.createCopy(newGrouping); newGroup.setGroupUIID(LearningDesign.addOffset(newGroup.getGroupUIID(), uiidOffset)); newGrouping.getGroups().add(newGroup); } } } - /** - * - * - */ public Long getGroupingId() { return groupingId; } @@ -154,10 +171,6 @@ this.groupingId = groupingId; } - /** - * - * - */ public Integer getGroupingTypeId() { if (this instanceof LessonClass) { return Grouping.CLASS_GROUPING_TYPE; @@ -178,7 +191,7 @@ return groups; } - public void setGroups(Set groups) { + public void setGroups(Set groups) { this.groups = groups; } @@ -287,8 +300,8 @@ * @return the group that has the learner */ public Group getGroupBy(User learner) { - for (Iterator i = getGroups().iterator(); i.hasNext();) { - Group group = (Group) i.next(); + for (Iterator i = getGroups().iterator(); i.hasNext();) { + Group group = i.next(); if (isLearnerGroup(group) && group.hasLearner(learner)) { return group; } @@ -303,12 +316,12 @@ * @return the group with the least member. */ public Group getGroupWithLeastMember() { - List groups = new ArrayList(this.getGroups()); + List groups = new ArrayList(this.getGroups()); - Group minGroup = (Group) groups.get(0); + Group minGroup = groups.get(0); for (int i = 1; i < groups.size(); i++) { - Group tempGroup = (Group) groups.get(i); + Group tempGroup = groups.get(i); if (tempGroup.getUsers().size() < minGroup.getUsers().size()) { minGroup = tempGroup; } @@ -377,9 +390,9 @@ public Group getGroup(Integer groupUIID) { if (this.getGroups() != null) { - Iterator iter = this.getGroups().iterator(); + Iterator iter = this.getGroups().iterator(); while (iter.hasNext()) { - Group elem = (Group) iter.next(); + Group elem = iter.next(); if (elem.getGroupUIID().equals(groupUIID)) { return elem; } @@ -393,9 +406,9 @@ * If so, that has implications for the changes allowed at runtime. */ public boolean isUsedForBranching() { - Iterator actIter = getActivities().iterator(); + Iterator actIter = getActivities().iterator(); while (actIter.hasNext()) { - Activity act = (Activity) actIter.next(); + Activity act = actIter.next(); if (act.isBranchingActivity()) { return true; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -24,64 +24,47 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; -import java.util.Set; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.GroupingActivityStrategy; import org.lamsfoundation.lams.tool.SystemTool; /** - * - * * A GroupingActivity creates Grouping. - * + * * @author Manpreet Minhas */ +@Entity +@DiscriminatorValue("2") public class GroupingActivity extends SimpleActivity implements Serializable, ISystemToolActivity { - /** persistent field */ + private static final long serialVersionUID = -6876312193538019171L; + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "system_tool_id") private SystemTool systemTool; /** The grouping_ui_id of the Grouping that this activity creates */ + @Column(name = "create_grouping_ui_id") private Integer createGroupingUIID; /** The grouping that this activity creates */ + @OneToOne(optional = false) + @JoinColumn(name = "create_grouping_id") public Grouping createGrouping; - /** full constructor */ - public GroupingActivity(Long activityId, Integer id, String description, String title, Integer xcoord, - Integer ycoord, Integer orderId, java.util.Date createDateTime, LearningLibrary learningLibrary, - Activity parentActivity, Activity libraryActivity, Integer parentUIID, LearningDesign learningDesign, - Grouping grouping, Integer activityTypeId, Transition transitionTo, Transition transitionFrom, - Grouping createGrouping, Integer grouping_ui_id, Integer create_grouping_ui_id, String languageFile, - Boolean stopAfterActivity, Set inputActivities, SystemTool sysTool, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, stopAfterActivity, inputActivities, branchActivityEntries); - this.createGrouping = createGrouping; - this.createGroupingUIID = create_grouping_ui_id; - this.systemTool = sysTool; - super.simpleActivityStrategy = new GroupingActivityStrategy(this); - } - /** default constructor */ public GroupingActivity() { super.simpleActivityStrategy = new GroupingActivityStrategy(this); } - /** minimal constructor */ - public GroupingActivity(Long activityId, 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, Grouping createGrouping, Integer grouping_ui_id, Integer create_grouping_ui_id) { - super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom); - this.createGrouping = createGrouping; - this.createGroupingUIID = create_grouping_ui_id; - super.simpleActivityStrategy = new GroupingActivityStrategy(this); - } - /** * This function creates a deep copy of the GroupingActivity of the current object. However each time a * GroupingActivity is deep copied it would result in creation of new Groups as well. @@ -154,5 +137,4 @@ super.copyToNewActivity(newActivity, uiidOffset); newActivity.setSystemTool(this.getSystemTool()); } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearnerChoiceGrouping.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearnerChoiceGrouping.java (.../LearnerChoiceGrouping.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearnerChoiceGrouping.java (.../LearnerChoiceGrouping.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -23,36 +23,37 @@ package org.lamsfoundation.lams.learningdesign; -import java.util.Set; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; /** * Grouping formed by learner's choice * * @author Marcin Cieslak */ +@Entity +@DiscriminatorValue("4") public class LearnerChoiceGrouping extends Grouping { - /** nullable persistent field */ + private static final long serialVersionUID = -8162442109881438143L; + + @Column(name = "equal_number_of_learners_per_group") private Boolean equalNumberOfLearnersPerGroup; - /** nullable persistent field */ + @Column(name = "number_of_groups") private Integer numberOfGroups; - /** nullable persistent field */ + @Column(name = "learners_per_group") private Integer learnersPerGroup; - /** nullable persistent field */ + @Column(name = "view_students_before_selection") private Boolean viewStudentsBeforeSelection; /** Creates a new instance of ChosenGrouping */ public LearnerChoiceGrouping() { super.grouper = new LearnerChoiceGrouper(); } - /** full constructor */ - public LearnerChoiceGrouping(Long groupingId, Set groups, Set activities) { - super(groupingId, groups, activities, new LearnerChoiceGrouper()); - } - /** * This method creates a deep copy of the Grouping * Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java (.../LearningDesign.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java (.../LearningDesign.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -32,16 +32,31 @@ import java.util.SortedSet; import java.util.TreeSet; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.hibernate.annotations.SortComparator; +import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; import org.lamsfoundation.lams.workspace.dto.FolderContentDTO; /** * @author Manpreet Minhas */ +@Entity +@Table(name = "lams_learning_design") public class LearningDesign implements Serializable { private static final long serialVersionUID = -5695987114641062118L; @@ -55,105 +70,122 @@ /** Represents a copy of LearningDesign for preview purposes */ public static final int COPY_TYPE_PREVIEW = 3; - /** identifier field */ + @Id + @Column(name = "learning_design_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long learningDesignId; - /** nullable persistent field */ + @Column(name = "learning_design_ui_id") private Integer learningDesignUIID; - /** nullable persistent field */ + @Column private String description; - /** nullable persistent field */ + @Column private String title; - /** nullable persistent field */ + @ManyToOne + @JoinColumn(name = "first_activity_id") private Activity firstActivity; - /** nullable persistent field */ + @ManyToOne + @JoinColumn(name = "floating_activity_id") private FloatingActivity floatingActivity; - /** nullable persistent field */ + @Column(name = "max_id") private Integer maxID; - /** persistent field */ + @Column(name = "valid_design_flag") private Boolean validDesign; - /** persistent field */ + @Column(name = "read_only_flag") private Boolean readOnly; - /** nullable persistent field */ + @Column(name = "date_read_only") private Date dateReadOnly; /** * Override the read only field. When set to true, the user specified in editOverrideUser can edit the learning * design. Used by edit on the fly. */ + @Column(name = "edit_override_lock") private Boolean editOverrideLock; + + @ManyToOne + @JoinColumn(name = "edit_override_user_id") private User editOverrideUser; + + @Column(name = "design_version") private Integer designVersion; - /** nullable persistent field */ + @Column(name = "help_text") private String helpText; - /** persistent field */ + @Column(name = "copy_type_id") private Integer copyTypeID; - /** persistent field */ + @Column(name = "create_date_time") private Date createDateTime; - /** persistent field */ + @Column private String version; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "user_id") private User user; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "original_user_id") private User originalUser; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "original_learning_design_id") private LearningDesign originalLearningDesign; - /** persistent field */ - private Set childLearningDesigns; + @OneToMany + @JoinColumn(name = "parent_learning_design_id") + private Set childLearningDesigns = new HashSet(); - /** persistent field */ - private Set lessons; + @OneToMany(mappedBy = "learningDesign") + private Set lessons = new HashSet(); - /** persistent field */ - private Set transitions; + @OneToMany(mappedBy = "learningDesign", cascade = CascadeType.ALL, orphanRemoval = true) + private Set transitions = new HashSet(); - /** persistent field */ - private Set activities; + @OneToMany(mappedBy = "learningDesign", cascade = CascadeType.ALL, orphanRemoval = true) + @SortComparator(ActivityOrderComparator.class) + private Set activities = new TreeSet(new ActivityOrderComparator()); - /** persistent field */ - private Set competences; + @OneToMany(mappedBy = "learningDesign", cascade = CascadeType.ALL, orphanRemoval = true) + private Set competences = new HashSet(); - /** persistent field */ - private Set annotations; + @OneToMany(mappedBy = "learningDesignId", cascade = CascadeType.ALL, orphanRemoval = true) + private Set annotations = new HashSet(); - /** persistent field */ + @ManyToOne + @JoinColumn(name = "workspace_folder_id") private WorkspaceFolder workspaceFolder; - /** persistent field */ + @Column private Long duration; - /** persistent field */ + @Column(name = "content_folder_id") private String contentFolderID; - /** nullable persistent field */ + @Column(name = "license_text") private String licenseText; - /** nullable persistent field */ + @ManyToOne + @JoinColumn(name = "license_id") private License license; - /** persistent field */ + @Column(name = "last_modified_date_time") private Date lastModifiedDateTime; - /** persistent field */ + @Column private Boolean removed; - /** persistent field */ + @Column(name = "design_type") private String designType; /* @@ -166,9 +198,9 @@ Activity firstActivity, FloatingActivity floatingActivity, Integer maxID, Boolean validDesign, Boolean readOnly, Date dateReadOnly, String helpText, Integer copyTypeID, Date createDateTime, String version, User user, User originalUser, LearningDesign originalLearningDesign, - Set childLearningDesigns, Set lessons, Set transitions, SortedSet activities, Long duration, - String licenseText, License license, String contentFolderID, Boolean editOverrideLock, - User editOverrideUser, Integer designVersion, String designType) { + Set childLearningDesigns, Set lessons, Set transitions, + SortedSet activities, Long duration, String licenseText, License license, String contentFolderID, + Boolean editOverrideLock, User editOverrideUser, Integer designVersion, String designType) { this.learningDesignId = learningDesignId; this.learningDesignUIID = ui_id; this.description = description; @@ -208,34 +240,10 @@ this.createDateTime = new Date(); this.lastModifiedDateTime = new Date(); this.editOverrideLock = false; - this.designVersion = new Integer(1); + this.designVersion = 1; this.removed = Boolean.FALSE; } - /** minimal constructor */ - public LearningDesign(Long learningDesignId, Boolean validDesign, Boolean readOnly, Integer copyTypeID, - Date createDateTime, String version, User user, User originalUser, - org.lamsfoundation.lams.learningdesign.LearningDesign originalLearningDesign, Set childLearningDesigns, - Set lessons, Set transitions, SortedSet activities) { - this.learningDesignId = learningDesignId; - this.validDesign = validDesign; - this.readOnly = readOnly; - this.copyTypeID = copyTypeID; - this.createDateTime = createDateTime != null ? createDateTime : new Date(); - this.version = version; - this.user = user; - this.originalUser = originalUser; - this.originalLearningDesign = originalLearningDesign; - this.childLearningDesigns = childLearningDesigns; - this.lessons = lessons; - this.transitions = transitions; - this.activities = activities; - this.lastModifiedDateTime = new Date(); - this.editOverrideLock = false; - this.designVersion = new Integer(1); - this.removed = Boolean.FALSE; - } - /** * Create a new learning design based on an existing learning design. If setOriginalDesign is true, then set the * input design as the original design in the copied design - this is used when runtime copies of a design are @@ -265,13 +273,8 @@ newDesign.setLicense(design.getLicense()); newDesign.setLicenseText(design.getLicenseText()); newDesign.setLastModifiedDateTime(new Date()); + newDesign.setReadOnly(designCopyType.intValue() != LearningDesign.COPY_TYPE_NONE); - if (designCopyType.intValue() != LearningDesign.COPY_TYPE_NONE) { - newDesign.setReadOnly(new Boolean(true)); - } else { - newDesign.setReadOnly(new Boolean(false)); - } - if (setOriginalDesign) { newDesign.setOriginalLearningDesign(design); } @@ -439,41 +442,35 @@ this.originalLearningDesign = originalLearningDesign; } - public Set getChildLearningDesigns() { + public Set getChildLearningDesigns() { return this.childLearningDesigns; } - public void setChildLearningDesigns(Set childLearningDesigns) { + public void setChildLearningDesigns(Set childLearningDesigns) { this.childLearningDesigns = childLearningDesigns; } - public Set getLessons() { + public Set getLessons() { return this.lessons; } - public void setLessons(Set lessons) { + public void setLessons(Set lessons) { this.lessons = lessons; } - public Set getTransitions() { - if (this.transitions == null) { - setTransitions(new HashSet()); - } + public Set getTransitions() { return this.transitions; } - public void setTransitions(Set transitions) { + public void setTransitions(Set transitions) { this.transitions = transitions; } - public Set getActivities() { - if (this.activities == null) { - setActivities(new TreeSet(new ActivityOrderComparator())); - } + public Set getActivities() { return this.activities; } - public void setActivities(Set activities) { + public void setActivities(Set activities) { this.activities = activities; } @@ -499,28 +496,28 @@ return new HashCodeBuilder().append(getReadOnly()).toHashCode(); } - public HashMap getActivityTree() { - HashMap parentActivities = new HashMap(); - Iterator iterator = this.getActivities().iterator(); + public HashMap> getActivityTree() { + HashMap> parentActivities = new HashMap<>(); + Iterator iterator = this.getActivities().iterator(); while (iterator.hasNext()) { - Activity act = (Activity) iterator.next(); + Activity act = iterator.next(); if (act.isComplexActivity()) { ComplexActivity complexActivity = (ComplexActivity) act; parentActivities.put(complexActivity.getActivityId(), complexActivity.getActivities()); } else { if (act.getParentActivity() == null) { - parentActivities.put(act.getActivityId(), new HashSet()); + parentActivities.put(act.getActivityId(), new HashSet()); } } } return parentActivities; } - public HashSet getParentActivities() { - HashSet parentActivities = new HashSet(); - Iterator iterator = this.getActivities().iterator(); + public HashSet getParentActivities() { + HashSet parentActivities = new HashSet<>(); + Iterator iterator = this.getActivities().iterator(); while (iterator.hasNext()) { - Activity activity = (Activity) iterator.next(); + Activity activity = iterator.next(); if (activity.getParentActivity() == null) { parentActivities.add(activity); } @@ -530,10 +527,10 @@ public Activity calculateFirstActivity() { Activity newFirstActivity = null; - HashSet parentActivities = this.getParentActivities(); - Iterator parentIterator = parentActivities.iterator(); + HashSet parentActivities = this.getParentActivities(); + Iterator parentIterator = parentActivities.iterator(); while (parentIterator.hasNext()) { - Activity activity = (Activity) parentIterator.next(); + Activity activity = parentIterator.next(); if ((activity.getTransitionTo() == null) && !activity.isFloatingActivity()) { newFirstActivity = activity; break; @@ -544,10 +541,10 @@ public FloatingActivity calculateFloatingActivity() { FloatingActivity newFloatingActivity = null; - HashSet parentActivities = this.getParentActivities(); - Iterator parentIterator = parentActivities.iterator(); + HashSet parentActivities = this.getParentActivities(); + Iterator parentIterator = parentActivities.iterator(); while (parentIterator.hasNext()) { - Activity activity = (Activity) parentIterator.next(); + Activity activity = parentIterator.next(); if (activity.isFloatingActivity()) { newFloatingActivity = (FloatingActivity) activity; break; @@ -617,7 +614,7 @@ } public static Integer addOffset(Integer uiid, int uiidOffset) { - return (uiid != null) && (uiidOffset > 0) ? new Integer(uiid.intValue() + uiidOffset) : uiid; + return (uiid != null) && (uiidOffset > 0) ? Integer.valueOf(uiid.intValue() + uiidOffset) : uiid; } public Set getCompetences() { @@ -659,5 +656,4 @@ public void setDesignType(String designType) { this.designType = designType; } - } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java (.../OptionsActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java (.../OptionsActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -24,43 +24,37 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; -import java.util.Set; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.OptionsActivityStrategy; /** * @author Manpreet Minhas * */ +@Entity +@DiscriminatorValue("7") public class OptionsActivity extends ComplexActivity implements Serializable { + private static final long serialVersionUID = 1528382662985852503L; - /** nullable persistent field */ + @Column(name = "max_number_of_options") private Integer maxNumberOfOptions; - /** nullable persistent field */ + @Column(name = "min_number_of_options") private Integer minNumberOfOptions; - /** nullable persistent field */ + @Column(name = "options_instructions") private String optionsInstructions; /** default constructor */ public OptionsActivity() { super.activityStrategy = new OptionsActivityStrategy(this); } - /** minimal constructor */ - public OptionsActivity(Long activityId, 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, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, activities); - super.activityStrategy = new OptionsActivityStrategy(this); - } - @Override public Activity createCopy(int uiidOffset) { OptionsActivity newOptionsActivity = new OptionsActivity(); @@ -98,7 +92,7 @@ * Get the manimum number of options, guaranteed not to return null. If the value is null in the database, returns 0 */ public Integer getMinNumberOfOptionsNotNull() { - return minNumberOfOptions != null ? minNumberOfOptions : new Integer(0); + return minNumberOfOptions != null ? minNumberOfOptions : 0; } public void setMinNumberOfOptions(Integer minNumberOfOptions) { @@ -125,4 +119,4 @@ public boolean isNull() { return false; } -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsWithSequencesActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsWithSequencesActivity.java (.../OptionsWithSequencesActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsWithSequencesActivity.java (.../OptionsWithSequencesActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -20,13 +20,27 @@ * **************************************************************** */ - package org.lamsfoundation.lams.learningdesign; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + +@Entity +@DiscriminatorValue("13") public class OptionsWithSequencesActivity extends OptionsActivity { + private static final long serialVersionUID = -7741699410475149768L; + + @Column(name = "start_xcoord") private Integer startXcoord; + + @Column(name = "start_ycoord") private Integer startYcoord; + + @Column(name = "end_xcoord") private Integer endXcoord; + + @Column(name = "end_ycoord") private Integer endYcoord; @Override @@ -76,4 +90,4 @@ public void setStartYcoord(Integer startYcoord) { this.startYcoord = startYcoord; } -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java (.../ParallelActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java (.../ParallelActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -24,48 +24,27 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; -import java.util.Set; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.ParallelActivityStrategy; /** * @author Manpreet Minhas * */ +@Entity +@DiscriminatorValue("6") public class ParallelActivity extends ComplexActivity implements Serializable { + private static final long serialVersionUID = 5910140223400659619L; - /** full constructor */ - public ParallelActivity(Long activityId, Integer id, String description, String title, Integer xcoord, - Integer ycoord, Integer orderId, 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, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, stopAfterActivity, inputActivities, activities, defaultActivity, - branchActivityEntries); - super.activityStrategy = new ParallelActivityStrategy(this); - } - /** default constructor */ public ParallelActivity() { super.activityStrategy = new ParallelActivityStrategy(this); } - /** minimal constructor */ - public ParallelActivity(Long activityId, 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, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, activities); - super.activityStrategy = new ParallelActivityStrategy(this); - } - /** * Makes a copy of the ParallelActivity for authoring, preview and monitoring enviornment * @@ -84,12 +63,8 @@ return new ToStringBuilder(this).append("activityId", getActivityId()).toString(); } - /** - * @see org.lamsfoundation.lams.util.Nullable#isNull() - */ @Override public boolean isNull() { return false; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java (.../PermissionGateActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java (.../PermissionGateActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -26,6 +26,9 @@ import java.io.Serializable; import java.util.Set; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.PermissionGateActivityStrategy; import org.lamsfoundation.lams.tool.SystemTool; @@ -34,15 +37,18 @@ * @author Manpreet Minhas * */ +@Entity +@DiscriminatorValue("5") public class PermissionGateActivity extends GateActivity implements Serializable { + private static final long serialVersionUID = 7871269712887929284L; /** full constructor */ public PermissionGateActivity(Long activityId, Integer id, String description, String title, Integer xcoord, Integer ycoord, Integer orderId, 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, Integer gateActivityLevelId, - SystemTool sysTool, Set branchActivityEntries) { + String languageFile, Boolean stopAfterActivity, Set inputActivities, Integer gateActivityLevelId, + SystemTool sysTool, Set branchActivityEntries) { super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, transitionFrom, languageFile, stopAfterActivity, inputActivities, gateActivityLevelId, sysTool, @@ -76,7 +82,7 @@ public Activity createCopy(int uiidOffset) { PermissionGateActivity newPermissionGateActivity = new PermissionGateActivity(); copyToNewActivity(newPermissionGateActivity, uiidOffset); - newPermissionGateActivity.setGateOpen(new Boolean(false)); + newPermissionGateActivity.setGateOpen(false); newPermissionGateActivity.setGateActivityLevelId(this.getGateActivityLevelId()); return newPermissionGateActivity; @@ -94,5 +100,4 @@ public boolean isNull() { return false; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java (.../RandomGrouping.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/RandomGrouping.java (.../RandomGrouping.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -23,7 +23,9 @@ package org.lamsfoundation.lams.learningdesign; -import java.util.Set; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; /** *

@@ -41,17 +43,17 @@ * @author chris * @author Jacky Fang */ +@Entity +@DiscriminatorValue("1") public class RandomGrouping extends Grouping { - /** nullable persistent field */ + private static final long serialVersionUID = 364252053930917480L; + + @Column(name = "number_of_groups") private Integer numberOfGroups; - /** nullable persistent field */ + @Column(name = "learners_per_group") private Integer learnersPerGroup; - /** - * - * - */ public Integer getNumberOfGroups() { return this.numberOfGroups; } @@ -60,10 +62,6 @@ this.numberOfGroups = numberOfGroups; } - /** - * - * - */ public Integer getLearnersPerGroup() { return this.learnersPerGroup; } @@ -77,18 +75,10 @@ super.grouper = new RandomGrouper(); } - /** full constructor */ - public RandomGrouping(Long groupingId, Set groups, Set activities, Integer numberOfGroups, - Integer learnersPerGroup) { - super(groupingId, groups, activities, new RandomGrouper()); - this.learnersPerGroup = learnersPerGroup; - this.numberOfGroups = numberOfGroups; - } - /** * This type of grouping doesn't have groups other than learner groups. * So it always return true. - * + * * @see org.lamsfoundation.lams.learningdesign.Grouping#isLearnerGroup(org.lamsfoundation.lams.learningdesign.Group) */ @Override @@ -98,7 +88,7 @@ /** * This method creates a deep copy of the Grouping - * + * * @return RandomGrouping The deep copied Grouping object */ @Override @@ -111,5 +101,4 @@ return randomGrouping; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java (.../ScheduleGateActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java (.../ScheduleGateActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -27,14 +27,16 @@ import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; -import java.util.Set; import java.util.TimeZone; import java.util.Vector; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; import org.lamsfoundation.lams.learningdesign.strategy.ScheduleGateActivityStrategy; -import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.util.MessageService; /** @@ -50,15 +52,17 @@ * * @author Chris Perfect * @author Jacky Fang - * - * */ +@Entity +@DiscriminatorValue("4") public class ScheduleGateActivity extends GateActivity implements Serializable { + private static final long serialVersionUID = -3992109155489420550L; /** * The relative gate open time from the lesson start time. For example, if the lesson starts at 3:00pm and offset is * 1, the gate will be opened at 4:00pm. */ + @Column(name = "gate_start_time_offset") private Long gateStartTimeOffset; /** @@ -69,57 +73,17 @@ * * Note it must be larger than gateStartTimeOffset. */ + @Column(name = "gate_end_time_offset") private Long gateEndTimeOffset; + @Column(name = "gate_activity_completion_based") private Boolean gateActivityCompletionBased; - /** full constructor */ - @SuppressWarnings("rawtypes") - public ScheduleGateActivity(Long activityId, Integer id, String description, String title, Integer xcoord, - Integer ycoord, Integer orderId, 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, Integer gateActivityLevelId, - Long gateStartTimeOffset, Long gateEndTimeOffset, SystemTool sysTool, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, stopAfterActivity, inputActivities, gateActivityLevelId, sysTool, - branchActivityEntries); - // validate pre-condition. - if ((gateStartTimeOffset != null) && (gateEndTimeOffset != null) - && (gateStartTimeOffset.intValue() > gateEndTimeOffset.intValue())) { - throw new IllegalStateException("End time offset must be larger" + " than start time offset"); - } - - this.gateStartTimeOffset = gateStartTimeOffset; - this.gateEndTimeOffset = gateEndTimeOffset; - this.simpleActivityStrategy = new ScheduleGateActivityStrategy(this); - } - /** default constructor */ public ScheduleGateActivity() { this.simpleActivityStrategy = new ScheduleGateActivityStrategy(this); } - /** minimal constructor */ - public ScheduleGateActivity(Long activityId, 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, Integer gateActivityLevelId, Long gateStartTimeOffset, Long gateEndTimeOffset) { - super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, gateActivityLevelId); - if ((gateStartTimeOffset != null) && (gateEndTimeOffset != null) - && (gateStartTimeOffset.intValue() > gateEndTimeOffset.intValue())) { - throw new IllegalStateException("End time offset must be larger" + " than start time offset"); - } - - this.gateStartTimeOffset = gateStartTimeOffset; - this.gateEndTimeOffset = gateEndTimeOffset; - this.simpleActivityStrategy = new ScheduleGateActivityStrategy(this); - } - /** * Makes a copy of the ScheduleGateActivity for authoring, preview and monitoring enviornment * @@ -130,17 +94,14 @@ ScheduleGateActivity newScheduleGateActivity = new ScheduleGateActivity(); copyToNewActivity(newScheduleGateActivity, uiidOffset); newScheduleGateActivity.setGateActivityLevelId(this.getGateActivityLevelId()); - newScheduleGateActivity.setGateOpen(new Boolean(false)); + newScheduleGateActivity.setGateOpen(false); newScheduleGateActivity.setGateEndTimeOffset(this.getGateEndTimeOffset()); newScheduleGateActivity.setGateStartTimeOffset(this.getGateStartTimeOffset()); newScheduleGateActivity.setGateActivityCompletionBased(this.getGateActivityCompletionBased()); return newScheduleGateActivity; } - /** - * - */ public Long getGateStartTimeOffset() { return this.gateStartTimeOffset; } @@ -149,9 +110,6 @@ this.gateStartTimeOffset = gateStartTimeOffset; } - /** - * - */ public Long getGateEndTimeOffset() { return this.gateEndTimeOffset; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -31,6 +31,14 @@ import java.util.TreeSet; import java.util.Vector; +import javax.persistence.CascadeType; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; + import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.log4j.Logger; import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; @@ -42,47 +50,26 @@ * @author Manpreet Minhas * */ +@Entity +@DiscriminatorValue("8") public class SequenceActivity extends ComplexActivity implements Serializable, ISystemToolActivity { + private static final long serialVersionUID = -8469144939023452269L; + private static Logger log = Logger.getLogger(SequenceActivity.class); - private Set branchEntries; + @OneToMany(mappedBy = "branchSequenceActivity", cascade = CascadeType.ALL, orphanRemoval = true) + private Set branchEntries = new HashSet(); + + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "system_tool_id") private SystemTool systemTool; - /** full constructor */ - public SequenceActivity(Long activityId, Integer id, String description, String title, Integer xcoord, - Integer ycoord, Integer orderId, 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, Set branchEntries, SystemTool systemTool, - Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, stopAfterActivity, inputActivities, activities, defaultActivity, - branchActivityEntries); - super.activityStrategy = new SequenceActivityStrategy(this); - this.branchEntries = branchEntries; - this.systemTool = systemTool; - } - /** default constructor */ public SequenceActivity() { super.activityStrategy = new SequenceActivityStrategy(this); } - /** minimal constructor */ - public SequenceActivity(Long activityId, 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, SortedSet activities) { - super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, activities); - super.activityStrategy = new SequenceActivityStrategy(this); - } - /** * Makes a copy of the SequenceActivity for authoring, preview and monitoring environment * @@ -96,10 +83,9 @@ newSequenceActivity.systemTool = this.systemTool; if (this.getBranchEntries() != null && this.getBranchEntries().size() > 0) { - newSequenceActivity.setBranchEntries(new HashSet()); - Iterator iter = this.getBranchEntries().iterator(); + Iterator iter = this.getBranchEntries().iterator(); while (iter.hasNext()) { - BranchActivityEntry oldEntry = (BranchActivityEntry) iter.next(); + BranchActivityEntry oldEntry = iter.next(); BranchActivityEntry newEntry = new BranchActivityEntry(null, LearningDesign.addOffset(oldEntry.getEntryUIID(), uiidOffset), newSequenceActivity, oldEntry.getBranchingActivity(), oldEntry.getGroup()); @@ -120,18 +106,11 @@ return new ToStringBuilder(this).append("activityId", getActivityId()).toString(); } - /** - * @see org.lamsfoundation.lams.util.Nullable#isNull() - */ @Override public boolean isNull() { return false; } - /** - * - * - */ @Override public SystemTool getSystemTool() { return systemTool; @@ -145,16 +124,12 @@ /** * Get the set of the branch to group mappings used for this branching activity. The set contains * BranchActivityEntry entries - * - * - * - * */ public Set getBranchEntries() { return branchEntries; } - public void setBranchEntries(Set branchEntries) { + public void setBranchEntries(Set branchEntries) { this.branchEntries = branchEntries; } @@ -165,11 +140,11 @@ TreeSet sortedGroups = new TreeSet(); if (mappingEntries != null) { - Iterator mappingIter = mappingEntries.iterator(); + Iterator mappingIter = mappingEntries.iterator(); while (mappingIter.hasNext()) { // Not all the BranchEntries have groups - when in preview, if the user selects a different // branch to their expected branch then a group may not exist yet. - Group group = ((BranchActivityEntry) mappingIter.next()).getGroup(); + Group group = mappingIter.next().getGroup(); if (group != null) { sortedGroups.add(group); } @@ -190,9 +165,9 @@ if (groups.size() > 1) { log.warn("Branch " + this + " has more than one group. This is unexpected. Using only the first group."); } - Iterator iter = groups.iterator(); + Iterator iter = groups.iterator(); if (iter.hasNext()) { - return (Group) iter.next(); + return iter.next(); } return null; @@ -206,8 +181,8 @@ * @return error message key */ @Override - public Vector validateActivity(MessageService messageService) { - Vector listOfValidationErrors = new Vector(); + public Vector validateActivity(MessageService messageService) { + Vector listOfValidationErrors = new Vector(); if (getActivities() != null && getActivities().size() > 0 && getDefaultActivity() == null) { listOfValidationErrors.add( new ValidationErrorDTO(ValidationErrorDTO.SEQUENCE_ACTIVITY_MUST_HAVE_FIRST_ACTIVITY_ERROR_CODE, @@ -223,14 +198,13 @@ */ public void removeGroupFromBranch(Group group) { if (getBranchEntries() != null) { - Iterator iter = getBranchEntries().iterator(); + Iterator iter = getBranchEntries().iterator(); while (iter.hasNext()) { - BranchActivityEntry object = (BranchActivityEntry) iter.next(); + BranchActivityEntry object = iter.next(); if (object.getGroup().equals(group)) { iter.remove(); } } } } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java (.../SimpleActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SimpleActivity.java (.../SimpleActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -27,22 +27,29 @@ import java.util.Date; import java.util.Set; +import javax.persistence.Entity; +import javax.persistence.Transient; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.SimpleActivityStrategy; /** * @author Manpreet Minhas * */ +@Entity public abstract class SimpleActivity extends Activity implements Serializable { + private static final long serialVersionUID = 2784194319972928196L; + + @Transient protected SimpleActivityStrategy simpleActivityStrategy; /** full constructor */ public SimpleActivity(Long activityId, Integer id, String description, String title, Integer xcoord, Integer ycoord, Integer orderId, 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 branchActivityEntries) { + Boolean stopAfterActivity, Set inputActivities, Set branchActivityEntries) { super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, transitionFrom, languageFile, stopAfterActivity, inputActivities, branchActivityEntries); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java (.../SynchGateActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java (.../SynchGateActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -24,49 +24,27 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; -import java.util.Set; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.SynchGateActivityStrategy; -import org.lamsfoundation.lams.tool.SystemTool; /** * @author Manpreet Minhas * */ +@Entity +@DiscriminatorValue("3") public class SynchGateActivity extends GateActivity implements Serializable { + private static final long serialVersionUID = 1306760691780177765L; - /** full constructor */ - public SynchGateActivity(Long activityId, Integer id, String description, String title, Integer xcoord, - Integer ycoord, Integer orderId, java.util.Date createDateTime, LearningLibrary learningLibrary, - Activity parentActivity, Activity libraryActivity, Integer parentUIID, LearningDesign learningDesign, - org.lamsfoundation.lams.learningdesign.Grouping grouping, Integer activityTypeId, Transition transitionTo, - Transition transitionFrom, String languageFile, Boolean stopAfterActivity, Set inputActivities, - Integer gateActivityLevelId, Set waitingLearners, SystemTool sysTool, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, stopAfterActivity, inputActivities, gateActivityLevelId, sysTool, - branchActivityEntries); - super.simpleActivityStrategy = new SynchGateActivityStrategy(this); - } - /** default constructor */ public SynchGateActivity() { super.simpleActivityStrategy = new SynchGateActivityStrategy(this); } - /** minimal constructor */ - public SynchGateActivity(Long activityId, 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, Integer gateActivityLevelId, Set waitingLearners) { - super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, gateActivityLevelId); - super.simpleActivityStrategy = new SynchGateActivityStrategy(this); - } - /** * Makes a copy of the SynchGateActivity for authoring, preview and monitoring enviornment * @@ -77,7 +55,7 @@ SynchGateActivity newSynchGateActivity = new SynchGateActivity(); copyToNewActivity(newSynchGateActivity, uiidOffset); newSynchGateActivity.setGateActivityLevelId(this.getGateActivityLevelId()); - newSynchGateActivity.setGateOpen(new Boolean(false)); + newSynchGateActivity.setGateOpen(false); return newSynchGateActivity; } @@ -93,5 +71,4 @@ public boolean isNull() { return false; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java (.../SystemGateActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemGateActivity.java (.../SystemGateActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -24,49 +24,27 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; -import java.util.Set; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.SystemGateActivityStrategy; -import org.lamsfoundation.lams.tool.SystemTool; /** * @author Mitch Seaton * */ +@Entity +@DiscriminatorValue("9") public class SystemGateActivity extends PermissionGateActivity implements Serializable { + private static final long serialVersionUID = -755725984937117677L; - /** full constructor */ - public SystemGateActivity(Long activityId, Integer id, String description, String title, Integer xcoord, - Integer ycoord, Integer orderId, 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, Integer gateActivityLevelId, - SystemTool sysTool, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, stopAfterActivity, inputActivities, gateActivityLevelId, sysTool, - branchActivityEntries); - super.simpleActivityStrategy = new SystemGateActivityStrategy(this); - } - /** default constructor */ public SystemGateActivity() { super.simpleActivityStrategy = new SystemGateActivityStrategy(this); } - /** minimal constructor */ - public SystemGateActivity(Long activityId, 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, Integer gateActivityLevelId) { - super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, gateActivityLevelId); - super.simpleActivityStrategy = new SystemGateActivityStrategy(this); - } - /** * Makes a copy of the SystemGateActivity for authoring, preview and monitoring enviornment * @@ -77,7 +55,7 @@ SystemGateActivity newSysGateActivity = new SystemGateActivity(); copyToNewActivity(newSysGateActivity, uiidOffset); newSysGateActivity.setGateActivityLevelId(this.getGateActivityLevelId()); - newSysGateActivity.setGateOpen(new Boolean(false)); + newSysGateActivity.setGateOpen(false); return newSysGateActivity; } @@ -93,5 +71,4 @@ public boolean isNull() { return false; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java (.../ToolActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java (.../ToolActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -29,8 +29,20 @@ import java.util.Set; import java.util.SortedSet; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.MapsId; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; + import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.log4j.Logger; +import org.hibernate.annotations.Cascade; import org.lamsfoundation.lams.gradebook.GradebookUserActivity; import org.lamsfoundation.lams.learningdesign.strategy.ToolActivityStrategy; import org.lamsfoundation.lams.lesson.Lesson; @@ -48,67 +60,42 @@ * @author Manpreet Minhas * */ +@Entity +@DiscriminatorValue("1") public class ToolActivity extends SimpleActivity implements Serializable { private static final long serialVersionUID = -7500867438126908849L; private static Logger log = Logger.getLogger(ToolActivity.class); - /** Holds value of property toolContentId. */ + @Column(name = "tool_content_id") private Long toolContentId; - /** Holds value of property tool. */ + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "tool_id") private Tool tool; - /** List of sessions associated with this ToolActivity */ - private Set toolSessions; + @OneToMany(mappedBy = "toolActivity") + private Set toolSessions = new HashSet(); - private Set competenceMappings; + @OneToMany(mappedBy = "toolActivity") + private Set competenceMappings = new HashSet(); + @OneToOne(mappedBy = "activity") + @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE) private ActivityEvaluation evaluation; - private Set gradebookUserActivities; + @OneToMany(mappedBy = "activity") + private Set gradebookUserActivities = new HashSet(); + @OneToOne(mappedBy = "activity", cascade = CascadeType.ALL) private PedagogicalPlannerActivityMetadata plannerMetadata; - /** full constructor */ - public ToolActivity(Long activityId, Integer id, String description, String title, Integer xcoord, Integer ycoord, - Integer orderId, 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, Tool tool, Long toolContentId, - Set branchActivityEntries, Set competenceMappings, ActivityEvaluation evaluation, - Set gradebookUserActivities) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, stopAfterActivity, inputActivities, branchActivityEntries); - this.tool = tool; - this.toolContentId = toolContentId; - this.competenceMappings = competenceMappings; - this.evaluation = evaluation; - super.simpleActivityStrategy = new ToolActivityStrategy(this); - this.gradebookUserActivities = gradebookUserActivities; - } - /** default constructor */ public ToolActivity() { super.simpleActivityStrategy = new ToolActivityStrategy(this); } - /** minimal constructor */ - public ToolActivity(Long activityId, 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, Tool tool, Long toolContentId) { - super(activityId, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom); - this.tool = tool; - this.toolContentId = toolContentId; - super.simpleActivityStrategy = new ToolActivityStrategy(this); - } - /** * Makes a copy of the ToolActivity for authoring, preview and monitoring * environment @@ -185,7 +172,6 @@ * the user who should be using this tool session. * @return the new tool session. */ - @SuppressWarnings("unchecked") public ToolSession createToolSessionForActivity(MessageService messageService, User learner, Lesson lesson) throws RequiredGroupMissingException { Date now = new Date(System.currentTimeMillis()); @@ -207,7 +193,7 @@ throw new RequiredGroupMissingException(errorMessage); } - for (ToolSession toolSession : (Set) group.getToolSessions()) { + for (ToolSession toolSession : group.getToolSessions()) { if (this.equals(toolSession.getToolActivity())) { session = toolSession; break; @@ -244,82 +230,42 @@ return new ToStringBuilder(this).append("activityId", getActivityId()).toString(); } - /** - * Getter for property toolContentId. - * - * @return Value of property toolContentId. - */ public Long getToolContentId() { return this.toolContentId; } - /** - * Setter for property toolContentId. - * - * @param toolContentId - * New value of property toolContentId. - */ public void setToolContentId(Long toolContentId) { this.toolContentId = toolContentId; } - /** - * Getter for property tool. - * - * @return Value of property tool. - */ public Tool getTool() { return this.tool; } - /** - * Setter for property tool. - * - * @param tool - * New value of property tool. - */ public void setTool(Tool tool) { this.tool = tool; } - /** - * @return Returns the toolSessions. - */ public Set getToolSessions() { return toolSessions; } - /** - * @param toolSessions - * The toolSessions to set. - */ public void setToolSessions(Set toolSessions) { this.toolSessions = toolSessions; } - /** - * - * @return - */ public Set getCompetenceMappings() { return competenceMappings; } - /** - * - * @param competenceMappings - */ public void setCompetenceMappings(Set competenceMappings) { this.competenceMappings = competenceMappings; } - /** - * @see org.lamsfoundation.lams.util.Nullable#isNull() - */ @Override public boolean isNull() { return false; @@ -331,7 +277,7 @@ * ourself. */ @Override - protected void getToolActivitiesInActivity(SortedSet toolActivities) { + protected void getToolActivitiesInActivity(SortedSet toolActivities) { toolActivities.add(this); } @@ -358,4 +304,4 @@ public void setPlannerMetadata(PedagogicalPlannerActivityMetadata plannerMetadata) { this.plannerMetadata = plannerMetadata; } -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java (.../ToolBranchingActivity.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolBranchingActivity.java (.../ToolBranchingActivity.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -25,54 +25,29 @@ import java.io.Serializable; import java.util.Iterator; -import java.util.Set; import java.util.Vector; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; + import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; -import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.util.MessageService; /** * @author Mitchell Seaton - * @version 2.1 - * - * */ +@Entity +@DiscriminatorValue("12") 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, java.util.Date createDateTime, LearningLibrary learningLibrary, - Activity parentActivity, Activity libraryActivity, Integer parentUIID, LearningDesign learningDesign, - Grouping grouping, Integer activityTypeId, Transition transitionTo, Transition transitionFrom, - String languageFile, Integer startXcoord, Integer startYcoord, Integer endXcoord, Integer endYcoord, - Boolean stopAfterActivity, Set inputActivities, Set activities, Activity defaultActivity, - SystemTool systemTool, Set branchActivityEntries) { - super(activityId, id, description, title, xcoord, ycoord, orderId, createDateTime, learningLibrary, - parentActivity, libraryActivity, parentUIID, learningDesign, grouping, activityTypeId, transitionTo, - transitionFrom, languageFile, startXcoord, startYcoord, endXcoord, endYcoord, stopAfterActivity, - inputActivities, activities, defaultActivity, systemTool, branchActivityEntries); - } - /** default constructor */ public ToolBranchingActivity() { super(); } - /** minimal constructor */ - public ToolBranchingActivity(Long activityId, 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, createDateTime, learningLibrary, parentActivity, learningDesign, grouping, activityTypeId, - transitionTo, transitionFrom, activities); - } - /** * Makes a copy of the BranchingActivity for authoring, preview and monitoring environment * @@ -109,8 +84,8 @@ * @return error message key */ @Override - public Vector validateActivity(MessageService messageService) { - Vector listOfValidationErrors = new Vector(); + public Vector validateActivity(MessageService messageService) { + Vector listOfValidationErrors = new Vector(); if (getDefaultActivity() == null) { listOfValidationErrors.add( @@ -131,13 +106,13 @@ this.getActivityUIID())); } else { boolean conditionsExist = false; - Iterator actIterator = getActivities().iterator(); + Iterator actIterator = getActivities().iterator(); while (actIterator.hasNext()) { SequenceActivity branch = (SequenceActivity) actIterator.next(); if (branch.getBranchEntries() != null) { - Iterator condIterator = branch.getBranchEntries().iterator(); + Iterator condIterator = branch.getBranchEntries().iterator(); while (condIterator.hasNext()) { - BranchActivityEntry entry = (BranchActivityEntry) condIterator.next(); + BranchActivityEntry entry = condIterator.next(); BranchCondition condition = entry.getCondition(); if (condition == null) { listOfValidationErrors @@ -166,5 +141,4 @@ return listOfValidationErrors; } - -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Transition.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Transition.java (.../Transition.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Transition.java (.../Transition.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -26,53 +26,84 @@ import java.io.Serializable; import java.util.Date; +import javax.persistence.Column; +import javax.persistence.DiscriminatorColumn; +import javax.persistence.DiscriminatorType; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToOne; +import javax.persistence.Table; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.hibernate.annotations.Cascade; +import org.hibernate.annotations.CascadeType; import org.lamsfoundation.lams.learningdesign.dto.TransitionDTO; /** * @author Manpreet Minhas */ +@Entity +@Table(name = "lams_learning_transition") +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "transition_type", discriminatorType = DiscriminatorType.INTEGER) +@DiscriminatorValue("0") public class Transition implements Serializable { // LAMS 2.4 introduced different transition types; "classical" one is progress type; now we also have data flow; see // DataTransition + private static final long serialVersionUID = -1508015273745811405L; public static final int PROGRESS_TRANSITION_TYPE = 0; public static final int DATA_TRANSITION_TYPE = 1; - /** identifier field */ + @Id + @Column(name = "transition_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long transitionId; - /** nullable persistent field */ + @Column(name = "transition_ui_id") private Integer transitionUIID; - /** nullable persistent field */ + @Column(name = "to_ui_id") private Integer toUIID; - /** nullable persistent field */ + @Column(name = "from_ui_id") private Integer fromUIID; - /** nullable persistent field */ + @Column private String description; - /** nullable persistent field */ + @Column private String title; - /** persistent field */ + @Column(name = "create_date_time") private Date createDateTime; - /** persistent field */ + @OneToOne(optional = false) + @JoinColumn(name = "to_activity_id") + @Cascade(CascadeType.SAVE_UPDATE) Activity toActivity; - /** persistent field */ + @OneToOne(optional = false) + @JoinColumn(name = "from_activity_id") + @Cascade(CascadeType.SAVE_UPDATE) Activity fromActivity; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "learning_design_id") + @Cascade(CascadeType.SAVE_UPDATE) LearningDesign learningDesign; - /** persistent field */ + @Column(name = "transition_type", insertable = false, updatable = false) protected Integer transitionType = Transition.PROGRESS_TRANSITION_TYPE; /* Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/AuthoringActivityDTO.java (.../AuthoringActivityDTO.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -74,9 +74,6 @@ /** Title of the activity */ private String activityTitle; - /** Help text for the activity */ - private String helpText; - /** Help URL for the activity */ private String helpURL; @@ -273,14 +270,13 @@ ******************************************************************************************************************/ public AuthoringActivityDTO() { } - + public AuthoringActivityDTO(Activity activity, ArrayList branchMappings, String languageCode) { activityID = activity.getActivityId(); activityUIID = activity.getActivityUIID(); description = activity.getDescription(); activityTitle = activity.getTitle(); - helpText = activity.getHelpText(); xCoord = activity.getXcoord(); yCoord = activity.getYcoord(); parentActivityID = activity.getParentActivity() != null ? activity.getParentActivity().getActivityId() : null; @@ -612,13 +608,6 @@ } /** - * @return Returns the helpText. - */ - public String getHelpText() { - return helpText; - } - - /** * @return Returns the learningDesignID. */ public Long getLearningDesignID() { @@ -975,14 +964,6 @@ } /** - * @param helpText - * The helpText to set. - */ - public void setHelpText(String helpText) { - this.helpText = helpText; - } - - /** * @param learningDesignID * The learningDesignID to set. */ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java (.../LibraryActivityDTO.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LibraryActivityDTO.java (.../LibraryActivityDTO.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -57,7 +57,6 @@ private Integer groupingUIID; private String description; private String activityTitle; - private String helpText; private String helpURL; private Integer xCoord; private Integer yCoord; @@ -125,7 +124,6 @@ groupingUIID = activity.getGroupingUIID(); description = activity.getDescription(); activityTitle = activity.getTitle(); - helpText = activity.getHelpText(); xCoord = activity.getXcoord(); yCoord = activity.getYcoord(); libraryActivityUIImage = activity.getLibraryActivityUiImage(); @@ -195,7 +193,7 @@ Tool tool = toolActivity.getTool(); if (tool != null) { toolID = tool.getToolId(); - toolContentID = new Long(tool.getDefaultToolContentId()); + toolContentID = tool.getDefaultToolContentId(); toolDisplayName = tool.getToolDisplayName(); toolLanguageFile = tool.getLanguageFile(); toolSignature = tool.getToolSignature(); @@ -321,14 +319,7 @@ } /** - * @return Returns the helpText. - */ - public String getHelpText() { - return helpText; - } - - /** - * + * * @return Return the helpURL */ public String getHelpURL() { @@ -455,7 +446,7 @@ } /** - * + * * @return Returns the toolSignature */ public String getToolSignature() { @@ -548,14 +539,9 @@ this.description = description; } - /** Set the activity's help text */ - public void setHelpText(String helpText) { - this.helpText = helpText; - } - /** * Set the activity's help url - * + * * @param helpURL */ public void setHelpURL(String helpURL) { @@ -574,7 +560,7 @@ /** * Set the tool's signature - * + * * @param toolSignature */ Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java =================================================================== diff -u -r1de0a203f1cc55783cffd95742782070877781cb -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 1de0a203f1cc55783cffd95742782070877781cb) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/ExportToolContentService.java (.../ExportToolContentService.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -1890,7 +1890,6 @@ act.setActivityTypeId(actDto.getActivityTypeID()); act.setApplyGrouping(actDto.getApplyGrouping()); act.setDescription(actDto.getDescription()); - act.setHelpText(actDto.getHelpText()); act.setLanguageFile(actDto.getLanguageFile()); // added in 2.1 - will be missing from earlier import files. Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignService.java =================================================================== diff -u -r1de0a203f1cc55783cffd95742782070877781cb -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignService.java (.../LearningDesignService.java) (revision 1de0a203f1cc55783cffd95742782070877781cb) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignService.java (.../LearningDesignService.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -444,8 +444,6 @@ activity.getActivityTitle(), locale)); activity.setDescription(toolMessageSource.getMessage(Activity.I18N_DESCRIPTION, null, activity.getDescription(), locale)); - activity.setHelpText(toolMessageSource.getMessage(Activity.I18N_HELP_TEXT, null, - activity.getHelpText(), locale)); } else { log.warn("Unable to internationalise the library activity " + activity.getActivityID() + " " + activity.getActivityTitle() + " message file " + activity.getLanguageFile() @@ -493,12 +491,12 @@ } return FileUtil.getFullPath(thumbnailDir.getAbsolutePath(), thumbnailFileName); } - + /** * Get a unique name for a learning design, based on the names of the learning designs in the folder. If the * learning design has duplicated name in same folder, then the new name will have a timestamp. The new name format * will be oldname_ddMMYYYY_idx. The idx will be auto incremental index number, start from 1. Warning - this may be - * quite intensive as it gets all the learning designs in a folder. Moved from AuthoringService to here so that the + * quite intensive as it gets all the learning designs in a folder. Moved from AuthoringService to here so that the * Import code can use it. * * @param originalLearningDesign @@ -514,10 +512,10 @@ List ldTitleList = learningDesignDAO.getLearningDesignTitlesByWorkspaceFolder(workspaceFolderId, originalTitle); - if ( ldTitleList.size() == 0 ) { + if (ldTitleList.size() == 0) { return originalTitle; } - + Calendar calendar = Calendar.getInstance(); int mth = calendar.get(Calendar.MONTH) + 1; String mthStr = new Integer(mth).toString(); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignValidator.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignValidator.java (.../LearningDesignValidator.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/service/LearningDesignValidator.java (.../LearningDesignValidator.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -20,7 +20,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.learningdesign.service; import java.util.ArrayList; @@ -262,6 +261,7 @@ } + @SuppressWarnings("unchecked") private void checkTransitionsInComplexActivity(ComplexActivity complexActivity) { // All the branching activities and optional activities we find are stored in this list, so we can process them // at the end. @@ -271,15 +271,15 @@ ArrayList complexActivitiesToProcess = null; if (complexActivity.isBranchingActivity()) { - for (ComplexActivity sequence : (Set) complexActivity.getActivities()) { - for (Activity activity : (Set) sequence.getActivities()) { + for (ComplexActivity sequence : (Set) (Set) complexActivity.getActivities()) { + for (Activity activity : sequence.getActivities()) { checkActivityForTransition(activity, sequence.getActivities().size()); complexActivitiesToProcess = checkActivityForFurtherProcessing(complexActivitiesToProcess, activity); } } } else { - for (Activity activity : (Set) complexActivity.getActivities()) { + for (Activity activity : complexActivity.getActivities()) { complexActivitiesToProcess = checkActivityForFurtherProcessing(complexActivitiesToProcess, activity); } } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java (.../Lesson.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/Lesson.java (.../Lesson.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -27,6 +27,26 @@ import java.util.HashSet; import java.util.Set; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.ColumnResult; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.NamedNativeQueries; +import javax.persistence.NamedNativeQuery; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.SqlResultSetMapping; +import javax.persistence.SqlResultSetMappings; +import javax.persistence.Table; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; @@ -40,6 +60,72 @@ * A Lesson is a learning sequence that is assocated with a number of users for use in learning. A lesson needs a run * time copy of learning design to interact with. */ +@NamedNativeQueries({ + @NamedNativeQuery(resultClass = User.class, name = "monitorsByToolSessionId", query = "SELECT DISTINCT user.*" + + " FROM lams_lesson AS l JOIN lams_grouping AS ging ON l.class_grouping_id = ging.grouping_id" + + " JOIN lams_group AS g ON ging.staff_group_id = g.group_id" + + " JOIN lams_user_group AS ug ON g.group_id = ug.group_id" + + " JOIN lams_user AS user ON user.user_id = ug.user_id" + + " JOIN lams_learning_design AS ld ON ld.copy_type_id = 2" + + " AND l.learning_design_id = ld.learning_design_id" + + " JOIN lams_tool_session AS s ON s.tool_session_id = :sessionId AND s.lesson_id = l.lesson_id"), + @NamedNativeQuery(resultClass = Lesson.class, name = "activeLessonsAllOrganisations", query = "SELECT DISTINCT lesson.*" + + " FROM lams_lesson AS lesson JOIN lams_learning_design AS ld ON ld.copy_type_id = 2" + + " AND lesson.learning_design_id = ld.learning_design_id" + + " JOIN lams_grouping AS ging ON lesson.lesson_state_id IN (3,5)" + + " AND lesson.class_grouping_id = ging.grouping_id" + + " JOIN lams_group AS g ON ging.grouping_id = g.grouping_id AND g.group_id != ging.staff_group_id" + + " JOIN lams_user_group AS ug ON ug.user_id = :userId AND g.group_id = ug.group_id"), + @NamedNativeQuery(name = "learnerLessonsByOrgAndUserWithCompletedFlag", resultSetMapping = "lessonsByOrgAndUserWithCompletedFlag", query = "SELECT l.lesson_id, l.name, l.description, l.lesson_state_id," + + " lp.lesson_completed_flag, l.enable_lesson_notifications," + + " (SELECT TRUE FROM lams_lesson_dependency ld WHERE ld.lesson_id = l.lesson_id LIMIT 1) AS dependent," + + " l.schedule_end_date_time IS NOT NULL OR l.scheduled_number_days_to_lesson_finish IS NOT NULL AS scheduledFinish" + + " FROM lams_lesson AS l JOIN lams_learning_design AS ld ON l.organisation_id = :orgId" + + " AND ld.copy_type_id != 3 AND l.lesson_state_id != 7" + + " AND l.learning_design_id = ld.learning_design_id" + + " JOIN lams_group AS g ON l.class_grouping_id = g.grouping_id" + + " JOIN lams_user_group AS ug ON ug.user_id = :userId AND ug.group_id = g.group_id" + + " JOIN lams_grouping AS gi ON gi.grouping_id = g.grouping_id" + + " AND g.group_id != gi.staff_group_id" + + " LEFT JOIN lams_learner_progress AS lp ON lp.user_id = ug.user_id" + + " AND lp.lesson_id = l.lesson_id"), + @NamedNativeQuery(name = "staffLessonsByOrgAndUserWithCompletedFlag", resultSetMapping = "lessonsByOrgAndUserWithCompletedFlag", query = "SELECT l.lesson_id, l.name, l.description, l.lesson_state_id," + + " lp.lesson_completed_flag, l.enable_lesson_notifications," + + " (SELECT TRUE FROM lams_lesson_dependency ld WHERE ld.lesson_id = l.lesson_id LIMIT 1) AS dependent," + + " l.schedule_end_date_time IS NOT NULL OR l.scheduled_number_days_to_lesson_finish IS NOT NULL AS scheduledFinish" + + " FROM lams_lesson AS l JOIN lams_learning_design AS ld ON l.organisation_id = :orgId" + + " AND ld.copy_type_id != 3 AND l.lesson_state_id != 7" + + " AND l.learning_design_id = ld.learning_design_id" + + " JOIN lams_group AS g ON l.class_grouping_id = g.grouping_id" + + " JOIN lams_user_group AS ug ON ug.user_id = :userId AND ug.group_id = g.group_id" + + " JOIN lams_grouping AS gi ON gi.grouping_id = g.grouping_id AND g.group_id = gi.staff_group_id" + + " LEFT JOIN lams_learner_progress AS lp ON lp.user_id = ug.user_id" + + " AND lp.lesson_id = l.lesson_id"), + @NamedNativeQuery(name = "allLessonsByOrgAndUserWithCompletedFlag", resultSetMapping = "lessonsByOrgAndUserWithCompletedFlag", query = "SELECT l.lesson_id, l.name, l.description, l.lesson_state_id," + + " lp.lesson_completed_flag, l.enable_lesson_notifications," + + " (SELECT TRUE FROM lams_lesson_dependency ld WHERE ld.lesson_id = l.lesson_id LIMIT 1) AS dependent," + + " l.schedule_end_date_time IS NOT NULL OR l.scheduled_number_days_to_lesson_finish IS NOT NULL AS scheduledFinish" + + " FROM lams_lesson AS l JOIN lams_learning_design AS ld ON ld.copy_type_id != 3" + + " AND l.lesson_state_id != 7 AND l.organisation_id = :orgId" + + " AND l.learning_design_id = ld.learning_design_id" + + " LEFT JOIN lams_learner_progress lp ON lp.user_id = :userId AND lp.lesson_id = l.lesson_id"), + @NamedNativeQuery(resultClass = Lesson.class, name = "lessonsByOrgAndUserWithChildOrgs", query = "SELECT DISTINCT lesson.*" + + " FROM lams_lesson AS lesson JOIN lams_learning_design AS ld ON ld.copy_type_id != 3" + + " AND lesson.lesson_state_id != 7 AND lesson.learning_design_id = ld.learning_design_id" + + " JOIN lams_organisation AS lo ON lesson.organisation_id = lo.organisation_id" + + " AND (lo.organisation_id = :orgId OR lo.parent_organisation_id = :orgId)" + + " JOIN lams_group AS g ON lesson.class_grouping_id = g.grouping_id" + + " JOIN lams_user_group AS ug ON ug.user_id = :userId" + " AND ug.group_id = g.group_id") }) +@SqlResultSetMappings(@SqlResultSetMapping(name = "lessonsByOrgAndUserWithCompletedFlag", columns = { + @ColumnResult(name = "lesson_id", type = Long.class), @ColumnResult(name = "name", type = String.class), + @ColumnResult(name = "description", type = String.class), + @ColumnResult(name = "lesson_state_id", type = Integer.class), + @ColumnResult(name = "lesson_completed_flag", type = Boolean.class), + @ColumnResult(name = "enable_lesson_notifications", type = Boolean.class), + @ColumnResult(name = "dependent", type = Boolean.class), + @ColumnResult(name = "scheduledFinish", type = Boolean.class) })) +@Entity +@Table(name = "lams_lesson") public class Lesson implements Serializable { private static final long serialVersionUID = 5733920851084229175L; @@ -51,130 +137,141 @@ * The state for newly created lesson. The learning design has been copied. The lesson class may or may not have * been configured. It is seen on the staff interface but not on the learning interface. */ - public static final Integer CREATED = new Integer(1); + public static final Integer CREATED = 1; /** The state for lessons that have been scheduled. */ - public static final Integer NOT_STARTED_STATE = new Integer(2); + public static final Integer NOT_STARTED_STATE = 2; /** The state for started lesson */ - public static final Integer STARTED_STATE = new Integer(3); + public static final Integer STARTED_STATE = 3; /** * The state for lessons that have been suspended by the teacher. The lesson can be seen on the staff interface but * not on the learning interface */ - public static final Integer SUSPENDED_STATE = new Integer(4); + public static final Integer SUSPENDED_STATE = 4; /** * The state for lessons that have been finished. A finished lesson is shown as inactive on the staff interface, and * is shown on the learner interface but the learner is to only see the overall progress and be able to export data * - they should not be able to iteract with the tools */ - public static final Integer FINISHED_STATE = new Integer(5); + public static final Integer FINISHED_STATE = 5; /** * The state for lesssons that are shown as inactive on the staff interface but no longer visible to the learners. */ - public static final Integer ARCHIVED_STATE = new Integer(6); + public static final Integer ARCHIVED_STATE = 6; /** The state for lesssons that are removed and never can be accessed again */ - public static final Integer REMOVED_STATE = new Integer(7); + public static final Integer REMOVED_STATE = 7; - // --------------------------------------------------------------------- - // attributes - // --------------------------------------------------------------------- - /** identifier field */ + @Id + @Column(name = "lesson_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long lessonId; - /** persistent field */ + @Column(name = "name") private String lessonName; - /** persistent field */ + @Column(name = "create_date_time") private Date createDateTime; - /** nullable persistent field */ + @Column(name = "start_date_time") private Date startDateTime; - /** nullable persistent field */ + @Column(name = "end_date_time") private Date endDateTime; - /** nullable persistent field */ + @Column(name = "schedule_start_date_time") private Date scheduleStartDate; - /** nullable persistent field */ + @Column(name = "schedule_end_date_time") private Date scheduleEndDate; - /** nullable persistent field */ + @Column(name = "scheduled_number_days_to_lesson_finish") private Integer scheduledNumberDaysToLessonFinish; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "user_id") private User user; - /** persistent field */ + @Column(name = "lesson_state_id") private Integer lessonStateId; - /** persistent field */ + @Column(name = "previous_state_id") private Integer previousLessonStateId; - /** persistent field */ + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "learning_design_id") private LearningDesign learningDesign; - /** persistent field */ + @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "class_grouping_id") private LessonClass lessonClass; - /** persistent field */ + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "organisation_id") private Organisation organisation; - /** persistent field */ - private Set learnerProgresses; + @OneToMany(mappedBy = "lesson", cascade = CascadeType.ALL, orphanRemoval = true) + private Set learnerProgresses = new HashSet(); - /** persistent field */ - private Set gradebookUserLessons; + @OneToMany(mappedBy = "lesson", cascade = CascadeType.ALL, orphanRemoval = true) + private Set gradebookUserLessons = new HashSet(); - /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ + @Column(name = "enable_lesson_intro") private Boolean enableLessonIntro; - /** persistent field */ + @Column(name = "description") private String lessonDescription; - /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ + @Column(name = "display_design_image") private Boolean displayDesignImage; - /** Persistent field. Defaults to FALSE - is not included in the constructor anywhere. */ + @Column(name = "locked_for_edit") private Boolean lockedForEdit; - /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ + @Column(name = "learner_presence_avail") private Boolean learnerPresenceAvailable; - /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ + @Column(name = "learner_im_avail") private Boolean learnerImAvailable; - /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ + @Column(name = "live_edit_enabled") private Boolean liveEditEnabled; - /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ + @Column(name = "enable_lesson_notifications") private Boolean enableLessonNotifications; - /** Persistent field. Defaults to FALSE if not set to anything by a constructor parameter. */ + @Column(name = "marks_released") private Boolean marksReleased; /** * Should Learner start the lesson from the beginning each time he enters it. * Content is not removed, LessonProgress is deleted, not archived. */ + @Column(name = "force_restart") private Boolean forceLearnerRestart; /** * Should Learners be allowed to restart the lesson after finishing it. * Content is not removed, LessonProgress is archived and then deleted. */ + @Column(name = "allow_restart") private Boolean allowLearnerRestart; /** * Should learners be displayed activity gradebook on lesson complete. */ + @Column(name = "gradebook_on_complete") private Boolean gradebookOnComplete; /** * For lesson conditional release */ - private Set precedingLessons; - private Set succeedingLessons; + @ManyToMany + @JoinTable(name = "lams_lesson_dependency", joinColumns = @JoinColumn(name = "lesson_id"), inverseJoinColumns = @JoinColumn(name = "preceding_lesson_id")) + private Set precedingLessons = new HashSet(); + @ManyToMany + @JoinTable(name = "lams_lesson_dependency", joinColumns = @JoinColumn(name = "preceding_lesson_id"), inverseJoinColumns = @JoinColumn(name = "lesson_id")) + private Set succeedingLessons = new HashSet(); + // --------------------------------------------------------------------- // constructors // --------------------------------------------------------------------- @@ -187,7 +284,7 @@ * constructor pattern implementation. */ public Lesson(String name, String description, Date createDateTime, User user, Integer lessonStateId, - Integer previousLessonStateId, LearningDesign learningDesign, Set learnerProgresses, + Integer previousLessonStateId, LearningDesign learningDesign, Set learnerProgresses, Boolean enableLessonIntro, Boolean displayDesignImage, Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled, Boolean enableLessonNotifications, Boolean forceLearnerRestart, Boolean allowLearnerRestart, Boolean gradebookOnComplete, @@ -202,10 +299,10 @@ public Lesson(Long lessonId, String name, String description, Date createDateTime, Date startDateTime, Date endDateTime, User user, Integer lessonStateId, Integer previousLessonStateId, Boolean enableLessonIntro, Boolean displayDesignImage, Boolean lockedForEdit, LearningDesign learningDesign, - LessonClass lessonClass, Organisation organisation, Set learnerProgresses, Boolean learnerPresenceAvailable, - Boolean learnerImAvailable, Boolean liveEditEnabled, Boolean enableLessonNotifications, - Boolean forceLearnerRestart, Boolean allowLearnerRestart, Boolean gradebookOnComplete, - Integer scheduledNumberDaysToLessonFinish) { + LessonClass lessonClass, Organisation organisation, Set learnerProgresses, + Boolean learnerPresenceAvailable, Boolean learnerImAvailable, Boolean liveEditEnabled, + Boolean enableLessonNotifications, Boolean forceLearnerRestart, Boolean allowLearnerRestart, + Boolean gradebookOnComplete, Integer scheduledNumberDaysToLessonFinish) { this.lessonId = lessonId; this.lessonName = name; this.lessonDescription = description; @@ -250,9 +347,9 @@ Boolean forceLearnerRestart, Boolean allowLearnerRestart, Boolean gradebookOnComplete, Integer scheduledNumberDaysToLessonFinish) { return new Lesson(lessonName, lessonDescription, new Date(System.currentTimeMillis()), user, Lesson.CREATED, - null, ld, new HashSet(), enableLessonIntro, displayDesignImage, learnerPresenceAvailable, - learnerImAvailable, liveEditEnabled, enableLessonNotifications, forceLearnerRestart, - allowLearnerRestart, gradebookOnComplete, scheduledNumberDaysToLessonFinish); + null, ld, new HashSet(), enableLessonIntro, displayDesignImage, + learnerPresenceAvailable, learnerImAvailable, liveEditEnabled, enableLessonNotifications, + forceLearnerRestart, allowLearnerRestart, gradebookOnComplete, scheduledNumberDaysToLessonFinish); } // --------------------------------------------------------------------- @@ -478,11 +575,11 @@ this.organisation = organisation; } - public Set getLearnerProgresses() { + public Set getLearnerProgresses() { return this.learnerProgresses; } - public void setLearnerProgresses(Set learnerProgresses) { + public void setLearnerProgresses(Set learnerProgresses) { this.learnerProgresses = learnerProgresses; } @@ -508,7 +605,7 @@ return new HashCodeBuilder().append(getLessonId()).toHashCode(); } - public Set getAllLearners() { + public Set getAllLearners() { return lessonClass == null ? null : lessonClass.getLearners(); } Index: lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java (.../LessonClass.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/lesson/LessonClass.java (.../LessonClass.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -28,7 +28,14 @@ import java.util.Iterator; import java.util.Set; +import javax.persistence.CascadeType; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; + import org.apache.log4j.Logger; +import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.usermanagement.Organisation; @@ -40,20 +47,27 @@ * * @author chris */ +@Entity +@DiscriminatorValue("3") public class LessonClass extends Grouping { + private static final long serialVersionUID = 5363725488837028794L; + private static Logger log = Logger.getLogger(LessonClass.class); + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "staff_group_id") private Group staffGroup; + @OneToOne(mappedBy = "lessonClass") private Lesson lesson; /** Creates a new instance of LessonClass */ public LessonClass() { } /** full constructor */ - public LessonClass(Long groupingId, Set groups, Set activities, Group staffGroup, Lesson lesson) { + public LessonClass(Long groupingId, Set groups, Set activities, Group staffGroup, Lesson lesson) { //don't think lesson class need perform doGrouping. set grouper to null. super(groupingId, groups, activities, null); this.staffGroup = staffGroup; @@ -91,7 +105,7 @@ /** * This method creates a deep copy of the LessonClass - * + * * @return LessonClass The deep copied LessonClass object */ @Override @@ -137,7 +151,7 @@ * When the users's are added from an external LMS e.g. Moodle, the Learner Group may not exist. * If that happens, then this code will ensure that there is a learners group, etc and so adding * a user won't throw an exception. This is just fallback code!!!! - * + * * @return the learner group */ private Group createLearnerGroupIfMissing() { @@ -151,7 +165,7 @@ } String learnerGroupName = lessonOrganisation != null ? lessonOrganisation.getName() : ""; learnerGroupName = learnerGroupName + "learners"; - getGroups().add(Group.createLearnerGroup(this, learnerGroupName, new HashSet())); + getGroups().add(Group.createLearnerGroup(this, learnerGroupName, new HashSet())); learnersGroup = getLearnersGroup(); } return learnersGroup; @@ -160,7 +174,7 @@ /** * Add one or more learners to the lesson class. Doesn't bother checking for duplicates as it goes into a set, * and User does a check on userID field for equals anyway. - * + * * @return number of learners added */ public int addLearners(Collection newLearners) { @@ -177,7 +191,7 @@ /** * Sets the staff to the value given by the input collection. - * + * * @return number of staff set */ public int setLearners(Collection newLearners) { @@ -194,9 +208,9 @@ public Group getLearnersGroup() { Group learnersGroup = null; - Iterator iter = getGroups().iterator(); + Iterator iter = getGroups().iterator(); while (learnersGroup == null && iter.hasNext()) { - learnersGroup = (Group) iter.next(); + learnersGroup = iter.next(); if (!isLearnerGroup(learnersGroup)) { learnersGroup = null; } @@ -232,7 +246,7 @@ /** * Add one or more staff members to the lesson class. Doesn't bother checking for duplicates it goes * into a set, and User does a check on userID field for equals anyway. - * + * * @return number of learners added */ public int addStaffMembers(Collection newStaff) { @@ -249,7 +263,7 @@ /** * Sets the staff to the value given by the input collection. - * + * * @return number of staff set */ public int setStaffMembers(Collection newStaff) { @@ -268,7 +282,7 @@ * When the users's are added from an external LMS e.g. Moodle, the Staff Group may not exist. * If that happens, then this code will ensure that there is a learners group, etc and so adding * a user won't throw an exception. This is just fallback code!!!! - * + * * @return the staff group */ private Group createStaffGroupIfMissing() { Index: lams_common/src/java/org/lamsfoundation/lams/tool/GroupedToolSession.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/tool/GroupedToolSession.java (.../GroupedToolSession.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/tool/GroupedToolSession.java (.../GroupedToolSession.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -26,6 +26,11 @@ import java.util.Date; import java.util.Set; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.Lesson; @@ -38,10 +43,13 @@ * @author daveg, Jacky Fang * */ +@Entity +@DiscriminatorValue("1") public class GroupedToolSession extends ToolSession { private static final long serialVersionUID = 8638128083435243375L; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "group_id") private Group sessionGroup; /** default constructor */ Index: lams_common/src/java/org/lamsfoundation/lams/tool/NonGroupedToolSession.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/tool/NonGroupedToolSession.java (.../NonGroupedToolSession.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/tool/NonGroupedToolSession.java (.../NonGroupedToolSession.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -27,6 +27,11 @@ import java.util.HashSet; import java.util.Set; +import javax.persistence.DiscriminatorValue; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.usermanagement.User; @@ -37,9 +42,13 @@ * * @author daveg */ +@Entity +@DiscriminatorValue("2") public class NonGroupedToolSession extends ToolSession { + private static final long serialVersionUID = 8063910455683242612L; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "user_id") private User user; public NonGroupedToolSession(ToolActivity toolActivity, Date createDateTime, int toolSessionStateId, User user, Index: lams_common/src/java/org/lamsfoundation/lams/tool/ToolSession.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/tool/ToolSession.java (.../ToolSession.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/tool/ToolSession.java (.../ToolSession.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -27,15 +27,36 @@ import java.util.Date; import java.util.Set; +import javax.persistence.Column; +import javax.persistence.DiscriminatorColumn; +import javax.persistence.DiscriminatorType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.usermanagement.User; +@Entity +@Table(name = "lams_tool_session") +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "tool_session_type_id", discriminatorType = DiscriminatorType.INTEGER) public abstract class ToolSession implements Serializable { + /** + * + */ + private static final long serialVersionUID = 310605806277808940L; /** Tool session type id for grouped */ public static final int GROUPED_TYPE = 1; /** Tool session type id for non-grouped - all learners in a separate session */ @@ -47,23 +68,30 @@ public static final int ENDED_STATE = 2; public static final String UNIQUE_KEY_PREFIX = "uq"; - /** identifier field */ + + @Id + @Column(name = "tool_session_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long toolSessionId; - /** Persistent field * */ + @Column(name = "tool_session_name") private String toolSessionName; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "activity_id") private ToolActivity toolActivity; - /** persistent field */ + @Column(name = "create_date_time") private Date createDateTime; - /** persistent field */ + @Column(name = "tool_session_state_id") private int toolSessionStateId; + @Column(name = "unique_key") private String uniqueKey; + @ManyToOne + @JoinColumn(name = "lesson_id") private Lesson lesson; /** Get all the learners who may be part of this tool session. */ @@ -107,17 +135,10 @@ this.createDateTime = createDateTime; } - /** - * @return Returns the uniqueKey. - */ public String getUniqueKey() { return uniqueKey; } - /** - * @param uniqueKey - * The uniqueKey to set. - */ public void setUniqueKey(String uniqueKey) { this.uniqueKey = uniqueKey; } @@ -175,4 +196,4 @@ public void setLesson(Lesson lesson) { this.lesson = lesson; } -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java (.../User.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/User.java (.../User.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -31,145 +31,173 @@ import java.util.Set; import java.util.TimeZone; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.OrderBy; +import javax.persistence.Table; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; +import org.lamsfoundation.lams.learningdesign.LearningDesign; +import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.lesson.Lesson; import org.lamsfoundation.lams.themes.Theme; import org.lamsfoundation.lams.themes.dto.ThemeDTO; import org.lamsfoundation.lams.usermanagement.dto.UserBasicDTO; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.LanguageUtil; -public class User implements Serializable, Comparable { - /** identifier field */ +@Entity +@Table(name = "lams_user") +public class User implements Serializable, Comparable { + private static final long serialVersionUID = 8711215689846731994L; + + @Id + @Column(name = "user_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer userId; - /** persistent field */ + @Column private String login; - /** - * persistent field - */ + @Column private String password; + @Column(name = "failed_attempts") private Integer failedAttempts; + @Column(name = "lock_out_time") private Date lockOutTime; + @Column(name = "two_factor_auth_enabled") private Boolean twoFactorAuthenticationEnabled; + @Column(name = "two_factor_auth_secret") private String twoFactorAuthenticationSecret; - /** - * persistent field - */ + @Column private String salt; - /** nullable persistent field */ + @Column private String title; - /** nullable persistent field */ + @Column(name = "first_name") private String firstName; - /** nullable persistent field */ + @Column(name = "last_name") private String lastName; - /** nullable persistent field */ + @Column(name = "address_line_1") private String addressLine1; - /** nullable persistent field */ + @Column(name = "address_line_2") private String addressLine2; - /** nullable persistent field */ + @Column(name = "address_line_3") private String addressLine3; - /** nullable persistent field */ + @Column private String city; - /** nullable persistent field */ + @Column private String state; - /** nullable persistent field */ + @Column private String postcode; - /** nullable persistent field */ + @Column private String country; - /** nullable persistent field */ + @Column(name = "day_phone") private String dayPhone; - /** nullable persistent field */ + @Column(name = "evening_phone") private String eveningPhone; - /** nullable persistent field */ + @Column(name = "mobile_phone") private String mobilePhone; - /** nullable persistent field */ + @Column private String fax; - /** nullable persistent field */ + @Column private String email; - /** persistent field */ + @Column(name = "email_verified") private Boolean emailVerified = true; - /** persistent field */ + @Column(name = "disabled_flag") private Boolean disabledFlag; - /** persistent field */ + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "locale_id") private SupportedLocale locale; - /** persistent field */ + @Column(name = "timezone") private String timeZone; - /** persistent field */ + @Column(name = "create_date") private Date createDate; - /** persistent field */ + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "workspace_folder_id") private WorkspaceFolder workspaceFolder; - /** persistent field */ + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "authentication_method_id") private AuthenticationMethod authenticationMethod; - /** persistent field */ - private Set userOrganisations; + @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) + private Set userOrganisations = new HashSet(); - /** persistent field */ + @Column(name = "last_visited_organisation_id") private Integer lastVisitedOrganisationId; - /** persistent field */ + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "theme_id") private Theme theme; - /** persistent field */ - private Set learnerProgresses; + @OneToMany(mappedBy = "user") + @LazyCollection(LazyCollectionOption.EXTRA) + private Set learnerProgresses = new HashSet(); - /** persistent field */ - private Set userToolSessions; + @OneToMany(mappedBy = "user") + private Set learningDesigns = new HashSet(); - /** persistent field */ - private Set userGroups; + @OneToMany(mappedBy = "user") + private Set lessons = new HashSet(); - /** persistent field */ - private Set learningDesigns; - - /** persistent field */ - private Set lessons; - - /** persistent field */ + @Column(name = "portrait_uuid") private Long portraitUuid; - /** persistent field */ + @Column(name = "change_password") private Boolean changePassword; - /** persistent field - latch */ + @Column(name = "first_login") private Boolean firstLogin; - /** persistent field - for Pedagogical Planner */ + @ManyToMany + @JoinTable(name = "lams_planner_recent_learning_designs", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "learning_design_id")) + @OrderBy("learning_design_id") private Set recentlyModifiedLearningDesigns = new LinkedHashSet(); + @Column(name = "modified_date") private Date modifiedDate; - /** default constructor */ public User() { changePassword = false; twoFactorAuthenticationEnabled = false; @@ -399,11 +427,11 @@ this.theme = theme; } - public Set getUserOrganisations() { + public Set getUserOrganisations() { return userOrganisations; } - public void setUserOrganisations(Set userOrganisations) { + public void setUserOrganisations(Set userOrganisations) { this.userOrganisations = userOrganisations; } @@ -417,41 +445,30 @@ /** This methods adds a new membership for the given user */ public void addUserOrganisation(UserOrganisation userOrganisation) { - if (userOrganisations == null) { - userOrganisations = new HashSet(); - } userOrganisations.add(userOrganisation); } - public Set getLearnerProgresses() { + public Set getLearnerProgresses() { return learnerProgresses; } - public void setLearnerProgresses(Set learnerProgresses) { + public void setLearnerProgresses(Set learnerProgresses) { this.learnerProgresses = learnerProgresses; } - public Set getUserToolSessions() { - return userToolSessions; - } - - public void setUserToolSessions(Set userToolSessions) { - this.userToolSessions = userToolSessions; - } - - public Set getLearningDesigns() { + public Set getLearningDesigns() { return learningDesigns; } - public void setLearningDesigns(Set learningDesigns) { + public void setLearningDesigns(Set learningDesigns) { this.learningDesigns = learningDesigns; } - public Set getLessons() { + public Set getLessons() { return lessons; } - public void setLessons(Set lessons) { + public void setLessons(Set lessons) { this.lessons = lessons; } @@ -470,9 +487,8 @@ } @Override - public int compareTo(Object user) { - User u = (User) user; - return login.compareTo(u.getLogin()); + public int compareTo(User user) { + return login.compareTo(user.getLogin()); } @Override @@ -516,9 +532,9 @@ * This method checks whether user is a member of the given organisation */ public boolean isMember(Organisation organisation) { - Iterator iterator = userOrganisations.iterator(); + Iterator iterator = userOrganisations.iterator(); while (iterator.hasNext()) { - UserOrganisation userOrganisation = (UserOrganisation) iterator.next(); + UserOrganisation userOrganisation = iterator.next(); Integer organisationID = userOrganisation.getOrganisation().getOrganisationId(); if (organisationID == organisation.getOrganisationId()) { return true; @@ -547,16 +563,16 @@ return false; } - private boolean checkFolders(Set folders, Integer desiredWorkspaceFolderId) { + private boolean checkFolders(Set folders, Integer desiredWorkspaceFolderId) { boolean foundMemberFolder = false; - Iterator folderIter = folders.iterator(); + Iterator folderIter = folders.iterator(); while (folderIter.hasNext() && !foundMemberFolder) { - WorkspaceFolder folder = (WorkspaceFolder) folderIter.next(); + WorkspaceFolder folder = folderIter.next(); Integer folderID = folder.getWorkspaceFolderId(); if (folderID.equals(desiredWorkspaceFolderId)) { foundMemberFolder = true; } else { - Set childFolders = folder.getChildWorkspaceFolders(); + Set childFolders = folder.getChildWorkspaceFolders(); if (childFolders != null) { foundMemberFolder = checkFolders(childFolders, desiredWorkspaceFolderId); } Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java (.../WorkspaceFolder.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/WorkspaceFolder.java (.../WorkspaceFolder.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -28,73 +28,97 @@ import java.util.HashSet; import java.util.Set; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; + import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; +import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.workspace.WorkspaceFolderContent; /** * @author Fei Yang,Manpreet Minhas - * + * */ +@Entity +@Table(name = "lams_workspace_folder") public class WorkspaceFolder implements Serializable { + private static final long serialVersionUID = -8625668819930442409L; + /** static final variables indicating the type of workspaceFolder */ /******************************************************************/ - public static final Integer NORMAL = new Integer(1); - public static final Integer RUN_SEQUENCES = new Integer(2); - public static final Integer PUBLIC_SEQUENCES = new Integer(3); + public static final Integer NORMAL = 1; + public static final Integer RUN_SEQUENCES = 2; + public static final Integer PUBLIC_SEQUENCES = 3; /******************************************************************/ /** static final variables indicating the permissions on the workspaceFolder */ /******************************************************************/ - public static final Integer READ_ACCESS = new Integer(1); - public static final Integer MEMBERSHIP_ACCESS = new Integer(2); - public static final Integer OWNER_ACCESS = new Integer(3); - public static final Integer NO_ACCESS = new Integer(4); + public static final Integer READ_ACCESS = 1; + public static final Integer MEMBERSHIP_ACCESS = 2; + public static final Integer OWNER_ACCESS = 3; + public static final Integer NO_ACCESS = 4; /******************************************************************/ - /** identifier field */ + @Id + @Column(name = "workspace_folder_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer workspaceFolderId; - /** persistent field */ + @Column private String name; - /** persistent field */ + @ManyToOne + @JoinColumn(name = "parent_folder_id") private WorkspaceFolder parentWorkspaceFolder; - /** persistent field */ - private Set childWorkspaceFolders; + @OneToMany(mappedBy = "parentWorkspaceFolder") + private Set childWorkspaceFolders = new HashSet(); - private Set learningDesigns; + @OneToMany(mappedBy = "workspaceFolder") + private Set learningDesigns = new HashSet(); /** * non-nullable persistent field indicating the * user who created/owns the workspace folder */ + @Column(name = "user_id") private Integer userID; + @Column(name = "organisation_id") private Integer organisationID; - /** non-nullable persistent field */ + @Column(name = "create_date_time") private Date creationDate; - /** non-nullable persistent field */ + @Column(name = "last_modified_date_time") private Date lastModifiedDate; /** * non-nullable persistent field indicating * the type of workspace folder. Can be either * NORMAL OR RUN_SEQUENCES */ + @Column(name = "lams_workspace_folder_type_id") private Integer workspaceFolderType; /** * A Collection of WorkspaceFolderContent * objects representing the content of this * folder. As of now it represents only Files. */ - private Set folderContent; + @OneToMany(mappedBy = "workspaceFolder", cascade = CascadeType.REMOVE) + private Set folderContent = new HashSet(); public WorkspaceFolder(String name, Integer userID, Date creationDate, Date lastModifiedDate, Integer workspaceFolderType) { @@ -119,20 +143,21 @@ /** * @return Returns the learningDesigns. */ - public Set getLearningDesigns() { + public Set getLearningDesigns() { return learningDesigns; } /** * @param learningDesigns * The learningDesigns to set. */ - public void setLearningDesigns(Set learningDesigns) { + public void setLearningDesigns(Set learningDesigns) { this.learningDesigns = learningDesigns; } /** full constructor */ - public WorkspaceFolder(String name, WorkspaceFolder parentWorkspaceFolder, Set childWorkspaceFolders) { + public WorkspaceFolder(String name, WorkspaceFolder parentWorkspaceFolder, + Set childWorkspaceFolders) { this.name = name; this.parentWorkspaceFolder = parentWorkspaceFolder; this.childWorkspaceFolders = childWorkspaceFolders; @@ -166,11 +191,11 @@ this.parentWorkspaceFolder = parentWorkspaceFolder; } - public Set getChildWorkspaceFolders() { + public Set getChildWorkspaceFolders() { return this.childWorkspaceFolders; } - public void setChildWorkspaceFolders(Set childWorkspaceFolders) { + public void setChildWorkspaceFolders(Set childWorkspaceFolders) { this.childWorkspaceFolders = childWorkspaceFolders; } @@ -265,7 +290,7 @@ /** * This is a utility function which checks if the given * workspaceFolder has subFolders defined inside it. - * + * * @return boolean A boolean value indicating whether the * current workspaces contains subFolders */ @@ -280,7 +305,7 @@ /** * This is a utility function which checks whether the given * workspace Folder is empty or not. - * + * * @return boolean A boolean value indicating whether this * folder is empty or it contains Learning Designs */ @@ -299,7 +324,7 @@ /** * This is a utility function which checks if the given * workspaceFolder has files inside it. - * + * * @return boolean A boolean value indicating whether this * folder is empty or it contains Files */ @@ -314,15 +339,15 @@ /** * @return Returns the folderContents. */ - public Set getFolderContent() { + public Set getFolderContent() { return folderContent; } /** * @param folderContents * The folderContents to set. */ - public void setFolderContent(Set folderContent) { + public void setFolderContent(Set folderContent) { this.folderContent = folderContent; } @@ -331,17 +356,11 @@ * The content to be added */ public void addFolderContent(WorkspaceFolderContent workspaceFolderContent) { - if (this.folderContent == null) { - this.folderContent = new HashSet(); - } this.folderContent.add(workspaceFolderContent); workspaceFolderContent.setWorkspaceFolder(this); } public void addChild(WorkspaceFolder workspaceFolder) { - if (childWorkspaceFolders == null) { - childWorkspaceFolders = new HashSet(); - } childWorkspaceFolders.add(workspaceFolder); } -} +} \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java =================================================================== diff -u -r62aaf160878735888d077bf28fac3c1989bb8fbd -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 62aaf160878735888d077bf28fac3c1989bb8fbd) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/service/UserManagementService.java (.../UserManagementService.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -575,12 +575,6 @@ return true; } } - if (user.getUserToolSessions() != null) { - if (!user.getUserToolSessions().isEmpty()) { - log.debug("user has data, userToolSessions: " + user.getUserToolSessions().size()); - return true; - } - } if (user.getLearningDesigns() != null) { if (!user.getLearningDesigns().isEmpty()) { log.debug("user has data, learningDesigns: " + user.getLearningDesigns().size()); @@ -900,7 +894,8 @@ String[] args = new String[1]; args[0] = user.getLogin() + " (" + user.getUserId() + ")"; String message = messageService.getMessage("audit.user.password.change", args); - getLogEventService().logEvent(LogEvent.TYPE_PASSWORD_CHANGE, modifiedBy != null ? modifiedBy.getUserId() : null , user.getUserId(), null, null, message); + getLogEventService().logEvent(LogEvent.TYPE_PASSWORD_CHANGE, modifiedBy != null ? modifiedBy.getUserId() : null, + user.getUserId(), null, null, message); } @Override @@ -909,7 +904,8 @@ args[0] = user.getLogin() + "(" + user.getUserId() + ")"; args[1] = user.getFullName(); String message = messageService.getMessage("audit.user.create", args); - getLogEventService().logEvent(LogEvent.TYPE_USER_ORG_ADMIN, createdBy != null ? createdBy.getUserId() : null, user.getUserId(), null, null, message); + getLogEventService().logEvent(LogEvent.TYPE_USER_ORG_ADMIN, createdBy != null ? createdBy.getUserId() : null, + user.getUserId(), null, null, message); } @Override @@ -918,7 +914,8 @@ args[0] = user.getLogin() + "(" + user.getUserId() + ")"; args[1] = user.getFullName(); String message = messageService.getMessage("audit.user.create", args); - getLogEventService().logEvent(LogEvent.TYPE_USER_ORG_ADMIN, createdBy != null ? createdBy.getUserID() : null, user.getUserId(), null, null, message); + getLogEventService().logEvent(LogEvent.TYPE_USER_ORG_ADMIN, createdBy != null ? createdBy.getUserID() : null, + user.getUserId(), null, null, message); } @Override @@ -1131,7 +1128,8 @@ //resize to the medium size is = new FileInputStream(portraitFile); - modifiedPortraitInputStream = ResizePictureUtil.resize(is, CommonConstants.PORTRAIT_LARGEST_DIMENSION_MEDIUM); + modifiedPortraitInputStream = ResizePictureUtil.resize(is, + CommonConstants.PORTRAIT_LARGEST_DIMENSION_MEDIUM); node = centralToolContentHandler.updateFile(node.getUuid(), modifiedPortraitInputStream, fileNameWithoutExt + "_medium.jpg", "image/jpeg"); modifiedPortraitInputStream.close(); @@ -1143,7 +1141,8 @@ //resize to the small size is = new FileInputStream(portraitFile); - modifiedPortraitInputStream = ResizePictureUtil.resize(is, CommonConstants.PORTRAIT_LARGEST_DIMENSION_SMALL); + modifiedPortraitInputStream = ResizePictureUtil.resize(is, + CommonConstants.PORTRAIT_LARGEST_DIMENSION_SMALL); node = centralToolContentHandler.updateFile(node.getUuid(), modifiedPortraitInputStream, fileNameWithoutExt + "_small.jpg", "image/jpeg"); modifiedPortraitInputStream.close(); Index: lams_common/src/java/org/lamsfoundation/lams/workspace/WorkspaceFolderContent.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_common/src/java/org/lamsfoundation/lams/workspace/WorkspaceFolderContent.java (.../WorkspaceFolderContent.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/workspace/WorkspaceFolderContent.java (.../WorkspaceFolderContent.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -26,17 +26,31 @@ import java.io.Serializable; import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; /** * @author Manpreet Minhas */ +@Entity +@Table(name = "lams_workspace_folder_content") public class WorkspaceFolderContent implements Serializable { - public static final Integer CONTENT_TYPE_FILE = new Integer(1); - public static final Integer CONTENT_TYPE_PACKAGE = new Integer(2); + private static final long serialVersionUID = 3861351481415168595L; + public static final Integer CONTENT_TYPE_FILE = 1; + public static final Integer CONTENT_TYPE_PACKAGE = 2; - /** identifier field */ + @Id + @Column(name = "folder_content_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long folderContentID; /** @@ -45,59 +59,69 @@ * It can be either CONTENT_TYPE_FILE or * CONTENT_TYPE_PACKAGE */ + @Column(name = "content_type_id") private Integer contentTypeID; /** * non-nullable persistent field * representing the name of the File **/ + @Column private String name; /** * non-nullable persistent field * representing the description of the File **/ + @Column private String description; /** * non-nullable persistent field * representing the date the content * was created. **/ + @Column(name = "create_date_time") private Date createDate; /** * non-nullable persistent field * representing the date the content * was last modified. **/ + @Column(name = "last_modified_date") private Date lastModified; /** * nullable persistent field. Represents the two * part key - UUID and version, returned by the * ContentRepository once the content has been successfully updated. **/ + @Column private Long uuid; /** * nullable persistent field. Represents the two * part key - UUID and version, returned by the * ContentRepository once the content has been successfully updated. **/ + @Column(name = "version_id") private Long versionID; /** * non-nullable persistent field * indicating the type of the file **/ + @Column(name = "mime_type") private String mimeType; /** * non-nullable persistent field indicating the * WorkspaceFolder that contains * this content **/ + @ManyToOne + @JoinColumn(name = "workspace_folder_id") private WorkspaceFolder workspaceFolder; /** Default Constructor */ Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java =================================================================== diff -u -r44f25ff763552baf103b1bb4ed7d1d2466a937dc -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 44f25ff763552baf103b1bb4ed7d1d2466a937dc) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringController.java (.../MonitoringController.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -119,7 +119,7 @@ private static final int LATEST_LEARNER_PROGRESS_LESSON_DISPLAY_LIMIT = 53; private static final int LATEST_LEARNER_PROGRESS_ACTIVITY_DISPLAY_LIMIT = 7; private static final int USER_PAGE_SIZE = 10; - + @Autowired private ILogEventService logEventService; @Autowired @@ -804,7 +804,7 @@ learnerCount = monitoringService.getCountLearnersCompletedLesson(lessonId); } else { Activity activity = monitoringService.getActivityById(activityId); - Lesson lesson = (Lesson) activity.getLearningDesign().getLessons().iterator().next(); + Lesson lesson = activity.getLearningDesign().getLessons().iterator().next(); if (!securityService.isLessonMonitor(lesson.getLessonId(), getUserId(), "get activity learners", false)) { response.sendError(HttpServletResponse.SC_FORBIDDEN, "User is not a monitor in the lesson"); return null; @@ -1233,7 +1233,7 @@ Set activities = new HashSet<>(); // filter activities that are interesting for further processing - for (Activity activity : (Set) learningDesign.getActivities()) { + for (Activity activity : learningDesign.getActivities()) { if (activity.isSequenceActivity()) { // skip sequence activities as they are just for grouping continue; @@ -1384,7 +1384,7 @@ // on first fetch get transitions metadata so Monitoring can set their SVG elems IDs if (WebUtil.readBooleanParam(request, "getTransitions", false)) { ArrayNode transitions = JsonNodeFactory.instance.arrayNode(); - for (Transition transition : (Set) learningDesign.getTransitions()) { + for (Transition transition : learningDesign.getTransitions()) { ObjectNode transitionJSON = JsonNodeFactory.instance.objectNode(); transitionJSON.put("uiid", transition.getTransitionUIID()); transitionJSON.put("fromID", transition.getFromActivity().getActivityId()); @@ -1396,19 +1396,19 @@ } // check for live edit status - if ( lesson.getLiveEditEnabled() ) { - if ( lesson.getLockedForEdit()) { + if (lesson.getLiveEditEnabled()) { + if (lesson.getLockedForEdit()) { responseJSON.put("lockedForEdit", true); User currentEditor = lesson.getLearningDesign().getEditOverrideUser(); - if ( currentEditor != null ) { + if (currentEditor != null) { responseJSON.put("lockedForEditUserId", currentEditor.getUserId()); responseJSON.put("lockedForEditUsername", currentEditor.getFullName()); } } else { responseJSON.put("lockedForEdit", false); } } - + response.setContentType("application/json;charset=utf-8"); return responseJSON.toString(); @@ -1505,7 +1505,7 @@ @SuppressWarnings("unchecked") private boolean containsActivity(ComplexActivity complexActivity, long targetActivityId, IMonitoringService monitoringService) { - for (Activity childActivity : (Set) complexActivity.getActivities()) { + for (Activity childActivity : complexActivity.getActivities()) { if (childActivity.getActivityId().equals(targetActivityId)) { return true; } @@ -1546,8 +1546,7 @@ throw new InvalidParameterException( "There are no lessons associated with learning design: " + learningDesignId); } - Integer organisationID = ((Lesson) learningDesign.getLessons().iterator().next()).getOrganisation() - .getOrganisationId(); + Integer organisationID = learningDesign.getLessons().iterator().next().getOrganisation().getOrganisationId(); Integer userID = getUserId(); if (!securityService.hasOrgRole(organisationID, userID, new String[] { Role.AUTHOR }, "start live edit", false)) { @@ -1695,7 +1694,7 @@ Set learners = new HashSet<>(lesson.getLessonClass().getLearners()); ChosenBranchingActivity branching = (ChosenBranchingActivity) monitoringService .getActivityById(contributeActivity.getActivityID()); - for (SequenceActivity branch : (Set) branching.getActivities()) { + for (SequenceActivity branch : (Set) (Set) branching.getActivities()) { Group group = branch.getSoleGroupForBranch(); if (group != null) { learners.removeAll(group.getUsers()); Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java =================================================================== diff -u -rf2ad75cef0c507a64877942631fee13efbc6ed50 -r47043f84205046a23497bf8c57060e2dcadf0c9a --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java (.../TblMonitoringController.java) (revision f2ad75cef0c507a64877942631fee13efbc6ed50) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/TblMonitoringController.java (.../TblMonitoringController.java) (revision 47043f84205046a23497bf8c57060e2dcadf0c9a) @@ -284,14 +284,15 @@ * @param activity * @param sortedActivities */ + @SuppressWarnings("unchecked") private void sortActivitiesByLearningDesignOrder(Activity activity, List sortedActivities) { sortedActivities.add(activity); //in case of branching activity - add all activities based on their orderId if (activity.isBranchingActivity()) { BranchingActivity branchingActivity = (BranchingActivity) activity; Set sequenceActivities = new TreeSet(new ActivityOrderComparator()); - sequenceActivities.addAll(branchingActivity.getActivities()); + sequenceActivities.addAll((Set) (Set) branchingActivity.getActivities()); for (Activity sequenceActivityNotInitialized : sequenceActivities) { SequenceActivity sequenceActivity = (SequenceActivity) monitoringService .getActivityById(sequenceActivityNotInitialized.getActivityId());