Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r3bdb4fcc6476c118fb240ede2739369e88aefa48 -r661b2423ae0cf4ff292bb6052434e14174858383 Binary files differ Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml =================================================================== diff -u -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml (.../LearningDesign.hbm.xml) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml (.../LearningDesign.hbm.xml) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -181,10 +181,10 @@ - - @hibernate.column name="parent_learning_design_id" + + @hibernate.column name="original_learning_design_id" - + Index: lams_common/db/model/lams_11.clay =================================================================== diff -u -r481634c691647183195d5b4a6d20cccb220e3535 -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/db/model/lams_11.clay (.../lams_11.clay) (revision 481634c691647183195d5b4a6d20cccb220e3535) +++ lams_common/db/model/lams_11.clay (.../lams_11.clay) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -915,8 +915,8 @@ - - + +When a lesson is started, the authored design is considered the orginial learning design @@ -1032,13 +1032,6 @@ - - - - - - - @@ -1075,7 +1068,7 @@ - + @@ -2197,8 +2190,8 @@ - + @@ -3604,7 +3597,7 @@ - + Index: lams_common/db/sql/create_lams_11_tables.sql =================================================================== diff -u -r41f00fd247151a183dc02ca9df11c923b1be5d3f -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/db/sql/create_lams_11_tables.sql (.../create_lams_11_tables.sql) (revision 41f00fd247151a183dc02ca9df11c923b1be5d3f) +++ lams_common/db/sql/create_lams_11_tables.sql (.../create_lams_11_tables.sql) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -286,7 +286,7 @@ , copy_type_id TINYINT(4) NOT NULL , create_date_time DATETIME NOT NULL , version VARCHAR(56) - , parent_learning_design_id BIGINT(20) + , original_learning_design_id BIGINT(20) , workspace_folder_id BIGINT(20) , duration BIGINT(38) , license_id BIGINT(20) @@ -298,9 +298,7 @@ , lesson_name VARCHAR(255) , last_modified_date_time DATETIME , PRIMARY KEY (learning_design_id) - , INDEX (parent_learning_design_id) - , CONSTRAINT FK_lams_learning_design_2 FOREIGN KEY (parent_learning_design_id) - REFERENCES lams_learning_design (learning_design_id) ON DELETE NO ACTION ON UPDATE NO ACTION + , INDEX (original_learning_design_id) , INDEX (user_id) , CONSTRAINT FK_lams_learning_design_3 FOREIGN KEY (user_id) REFERENCES lams_user (user_id) Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java =================================================================== diff -u -rfc03598fe329a0b4a1608ad5d6bba178c2794e15 -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java (.../LearningDesign.java) (revision fc03598fe329a0b4a1608ad5d6bba178c2794e15) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java (.../LearningDesign.java) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -106,7 +106,7 @@ private User user; /** persistent field */ - private LearningDesign parentLearningDesign; + private LearningDesign originalLearningDesign; /** persistent field */ private Set childLearningDesigns; @@ -177,7 +177,7 @@ Date createDateTime, String version, User user, - LearningDesign parentLearningDesign, + LearningDesign originalLearningDesign, Set childLearningDesigns, Set lessons, Set transitions, Set activities, Long duration, @@ -199,7 +199,7 @@ this.createDateTime = createDateTime != null ? createDateTime : new Date(); this.version = version; this.user = user; - this.parentLearningDesign = parentLearningDesign; + this.originalLearningDesign = originalLearningDesign; this.childLearningDesigns = childLearningDesigns; this.lessons = lessons; this.transitions = transitions; @@ -228,7 +228,7 @@ Date createDateTime, String version, User user, - org.lamsfoundation.lams.learningdesign.LearningDesign parentLearningDesign, + org.lamsfoundation.lams.learningdesign.LearningDesign originalLearningDesign, Set childLearningDesigns, Set lessons, Set transitions, Set activities) { this.learningDesignId = learningDesignId; @@ -238,25 +238,22 @@ this.createDateTime = createDateTime != null ? createDateTime : new Date(); this.version = version; this.user = user; - this.parentLearningDesign = parentLearningDesign; + this.originalLearningDesign = originalLearningDesign; this.childLearningDesigns = childLearningDesigns; this.lessons = lessons; this.transitions = transitions; this.activities = activities; this.lastModifiedDateTime = new Date(); } - public static LearningDesign createLearningDesignCopy(LearningDesign design, Integer designCopyType){ - LearningDesign newDesign = newInstance(design); - - if(designCopyType.intValue()!=COPY_TYPE_NONE) - newDesign.setReadOnly(new Boolean(true)); - else - newDesign.setReadOnly(new Boolean(false)); - - newDesign.setCopyTypeID(designCopyType); - return newDesign; - } - private static LearningDesign newInstance(LearningDesign design) { + /** 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 created. It is not used + * for user based copying of a design. + * @param design Design to be copied + * @param designCopyType COPY_TYPE_NONE, COPY_TYPE_LESSON, COPY_TYPE_PREVIEW + * @param setOriginalDesign should we set the originalLearningDesign field. + * @return + */ + public static LearningDesign createLearningDesignCopy(LearningDesign design, Integer designCopyType, boolean setOriginalDesign){ LearningDesign newDesign = new LearningDesign(); newDesign.setDescription(design.getDescription()); newDesign.setTitle(design.getTitle()); @@ -265,14 +262,25 @@ newDesign.setDateReadOnly(design.getDateReadOnly()); newDesign.setHelpText(design.getHelpText()); newDesign.setVersion(design.getVersion()); - newDesign.setParentLearningDesign(design); newDesign.setCreateDateTime(new Date()); newDesign.setDuration(design.getDuration()); newDesign.setLicense(design.getLicense()); newDesign.setLicenseText(design.getLicenseText()); newDesign.setLastModifiedDateTime(new Date()); + + // is this really right? why are preview set to read only when we will delete them? do we set them to not read only later? + if(designCopyType.intValue()!=COPY_TYPE_NONE) + newDesign.setReadOnly(new Boolean(true)); + else + newDesign.setReadOnly(new Boolean(false)); + + if ( setOriginalDesign ) + newDesign.setOriginalLearningDesign(design); + + newDesign.setCopyTypeID(designCopyType); return newDesign; } + public Long getLearningDesignId() { return this.learningDesignId; } @@ -352,12 +360,15 @@ public void setUser(User user) { this.user = user; } - public org.lamsfoundation.lams.learningdesign.LearningDesign getParentLearningDesign() { - return this.parentLearningDesign; + /** If this is a lesson type of learning design, then the original learning design was the authoring + * learning design which was copied to make this learning design. The original design may or may not still exist + * in the database. */ + public org.lamsfoundation.lams.learningdesign.LearningDesign getOriginalLearningDesign() { + return this.originalLearningDesign; } - public void setParentLearningDesign( - org.lamsfoundation.lams.learningdesign.LearningDesign parentLearningDesign) { - this.parentLearningDesign = parentLearningDesign; + public void setOriginalLearningDesign( + org.lamsfoundation.lams.learningdesign.LearningDesign originalLearningDesign) { + this.originalLearningDesign = originalLearningDesign; } public Set getChildLearningDesigns() { return this.childLearningDesigns; @@ -433,17 +444,17 @@ return parentActivities; } public Activity calculateFirstActivity(){ - Activity firstActivity = null; + Activity newFirstActivity = null; HashSet parentActivities = this.getParentActivities(); Iterator parentIterator = parentActivities.iterator(); while(parentIterator.hasNext()){ Activity activity = (Activity)parentIterator.next(); if(activity.getTransitionTo()==null){ - firstActivity = activity; + newFirstActivity = activity; break; } } - return firstActivity; + return newFirstActivity; } public WorkspaceFolder getWorkspaceFolder() { return workspaceFolder; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java =================================================================== diff -u -r55901923afea1cbd769d8daa05051aa050bb99b6 -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java (.../ILearningDesignDAO.java) (revision 55901923afea1cbd769d8daa05051aa050bb99b6) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java (.../ILearningDesignDAO.java) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -75,11 +75,11 @@ /** * This method returns a List of Learning Designs with given - * parent_learning_design_id + * original_learning_design_id * - * @param parentDesignID The parent_learning_design_id + * @param originalDesignID The original_learning_design_id * @return List The List of all corresponding Learning designs with - * given parent_learning_design_id + * given original_learning_design_id */ - public List getLearningDesignsByParent(Long parentDesignID); + public List getLearningDesignsByOriginalDesign(Long originalDesignID); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java =================================================================== diff -u -r42ddbd4c509c956cc9f5328cea8d45d6e593e796 -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java (.../LearningDesignDAO.java) (revision 42ddbd4c509c956cc9f5328cea8d45d6e593e796) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java (.../LearningDesignDAO.java) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -42,8 +42,8 @@ private static final String ALL_IN_FOLDER ="from " + TABLENAME +" in class " + LearningDesign.class.getName()+ " where workspace_folder_id=?"; - private static final String FIND_BY_PARENT ="from " + TABLENAME +" in class " + LearningDesign.class.getName()+ - " where parent_learning_design_id=?"; + private static final String FIND_BY_ORIGINAL ="from " + TABLENAME +" in class " + LearningDesign.class.getName()+ + " where original_learning_design_id=?"; /* @@ -96,10 +96,10 @@ } /** * (non-Javadoc) - * @see org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO#getLearningDesignsByParent(java.lang.Long) + * @see getLearningDesignsByOriginalDesign#getLearningDesignsByParent(java.lang.Long) */ - public List getLearningDesignsByParent(Long parentDesignID){ - List list = this.getHibernateTemplate().find(FIND_BY_PARENT,parentDesignID); + public List getLearningDesignsByOriginalDesign(Long originalDesignID){ + List list = this.getHibernateTemplate().find(FIND_BY_ORIGINAL,originalDesignID); return list; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/DesignDetailDTO.java =================================================================== diff -u -r86a0f186099637fc974445894c5462d60420f10d -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/DesignDetailDTO.java (.../DesignDetailDTO.java) (revision 86a0f186099637fc974445894c5462d60420f10d) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/DesignDetailDTO.java (.../DesignDetailDTO.java) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -86,8 +86,8 @@ this.helpText = learningDesign.getHelpText(); this.copyTypeID = learningDesign.getCopyTypeID(); this.version = learningDesign.getVersion(); - this.parentLearningDesignID = learningDesign.getParentLearningDesign()!=null? - learningDesign.getParentLearningDesign().getLearningDesignId(): + this.parentLearningDesignID = learningDesign.getOriginalLearningDesign()!=null? + learningDesign.getOriginalLearningDesign().getLearningDesignId(): null; this.workspaceFolderID = learningDesign.getWorkspaceFolder().getWorkspaceFolderId(); } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java =================================================================== diff -u -r824c193321e15422e18300af2d757dd9f4727236 -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java (.../LearningDesignDTO.java) (revision 824c193321e15422e18300af2d757dd9f4727236) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dto/LearningDesignDTO.java (.../LearningDesignDTO.java) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -29,14 +29,10 @@ import java.util.Set; import org.lamsfoundation.lams.learningdesign.Activity; -import org.lamsfoundation.lams.learningdesign.ChosenGrouping; import org.lamsfoundation.lams.learningdesign.Grouping; import org.lamsfoundation.lams.learningdesign.GroupingActivity; -import org.lamsfoundation.lams.learningdesign.ComplexActivity; import org.lamsfoundation.lams.learningdesign.LearningDesign; -import org.lamsfoundation.lams.learningdesign.RandomGrouping; import org.lamsfoundation.lams.learningdesign.Transition; -import org.lamsfoundation.lams.lesson.LessonClass; import org.lamsfoundation.lams.util.wddx.WDDXTAGS; /** @@ -59,7 +55,7 @@ private Integer copyTypeID; private Date createDateTime; private String version; - private Long parentLearningDesignID; + private Long originalLearningDesignID; private Integer workspaceFolderID; private Long duration; private String licenseText; @@ -97,7 +93,7 @@ Integer copyTypeID, Date createDateTime, String version, - Long parentLearningDesignID, + Long originalLearningDesignID, Integer workspaceFolderID, Long duration, String licenseText, @@ -128,7 +124,7 @@ this.copyTypeID = copyTypeID; this.createDateTime = createDateTime; this.version = version; - this.parentLearningDesignID = parentLearningDesignID; + this.originalLearningDesignID = originalLearningDesignID; this.workspaceFolderID = workspaceFolderID; this.duration = duration; this.licenseText = licenseText; @@ -171,8 +167,8 @@ this.createDateTime = learningDesign.getCreateDateTime(); this.version = learningDesign.getVersion(); - this.parentLearningDesignID = learningDesign.getParentLearningDesign()!=null? - learningDesign.getParentLearningDesign().getLearningDesignId(): + this.originalLearningDesignID = learningDesign.getOriginalLearningDesign()!=null? + learningDesign.getOriginalLearningDesign().getLearningDesignId(): null; this.workspaceFolderID = learningDesign.getWorkspaceFolder()!=null? @@ -325,11 +321,11 @@ return maxID; } /** - * @return Returns the parentLearningDesignID. + * @return Returns the originalLearningDesignID. */ - public Long getParentLearningDesignID() { + public Long getOriginalLearningDesignID() { //return parentLearningDesignID!=null?parentLearningDesignID:WDDXTAGS.NUMERIC_NULL_VALUE_LONG; - return parentLearningDesignID; + return originalLearningDesignID; } /** * @return Returns the readOnly. @@ -588,9 +584,9 @@ /** * @param parentLearningDesignID The parentLearningDesignID to set. */ - public void setParentLearningDesignID(Long parentLearningDesignID) { - if(!parentLearningDesignID.equals(WDDXTAGS.NUMERIC_NULL_VALUE_LONG)) - this.parentLearningDesignID = parentLearningDesignID; + public void setOriginalLearningDesignID(Long originalLearningDesignID) { + if(!originalLearningDesignID.equals(WDDXTAGS.NUMERIC_NULL_VALUE_LONG)) + this.originalLearningDesignID = originalLearningDesignID; } /** * @param readOnly The readOnly to set. Index: lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java =================================================================== diff -u -r013f31fe631963e9822bbf10157e3a0650bd7307 -r661b2423ae0cf4ff292bb6052434e14174858383 --- lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java (.../WDDXTAGS.java) (revision 013f31fe631963e9822bbf10157e3a0650bd7307) +++ lams_common/src/java/org/lamsfoundation/lams/util/wddx/WDDXTAGS.java (.../WDDXTAGS.java) (revision 661b2423ae0cf4ff292bb6052434e14174858383) @@ -155,7 +155,7 @@ public static final String CREATION_DATE ="createDateTime"; public static final String LAST_MODIFIED_DATE = "lastModifiedDateTime"; public static final String VERSION="version"; - public static final String PARENT_DESIGN_ID ="parentLearningDesignID"; + public static final String ORIGINAL_DESIGN_ID ="originalLearningDesignID"; public static final String WORKSPACE_FOLDER_ID= "workspaceFolderID"; public static final String DURATION ="duration"; public static final String LICENCE_ID ="licenseID";