Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -rc46a8e8187c1ca4e546ed2952192e63606d95c68 -rb8ac974ec0363f4fe59a224e41093f99243927d5 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision c46a8e8187c1ca4e546ed2952192e63606d95c68) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision b8ac974ec0363f4fe59a224e41093f99243927d5) @@ -378,14 +378,6 @@ } /** - * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getAllLearningDesigns() - */ - @Override - public List getAllLearningDesigns() { - return learningDesignDAO.getAllLearningDesigns(); - } - - /** * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getAllLearningLibraries() */ @Override @@ -1719,19 +1711,6 @@ } /** - * (non-Javadoc) - * - * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getAllLearningDesignDetails() - */ - @Override - public String getAllLearningDesignDetails() throws IOException { - Iterator iterator = getAllLearningDesigns().iterator(); - ArrayList arrayList = createDesignDetailsPacket(iterator); - FlashMessage flashMessage = new FlashMessage("getAllLearningDesignDetails", arrayList); - return flashMessage.serializeMessage(); - } - - /** * This is a utility method used by the method getAllLearningDesignDetails to pack the required * information in a data transfer object. * @@ -1751,19 +1730,6 @@ /** * (non-Javadoc) * - * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getLearningDesignsForUser(java.lang.Long) - */ - @Override - public String getLearningDesignsForUser(Long userID) throws IOException { - List list = learningDesignDAO.getLearningDesignByUserId(userID); - ArrayList arrayList = createDesignDetailsPacket(list.iterator()); - FlashMessage flashMessage = new FlashMessage("getLearningDesignsForUser", arrayList); - return flashMessage.serializeMessage(); - } - - /** - * (non-Javadoc) - * * @see org.lamsfoundation.lams.authoring.service.IAuthoringService#getAllLearningLibraryDetails() */ @Override Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java =================================================================== diff -u -r1367c68bda1ff51ded26c5220a9a059fa67235f5 -rb8ac974ec0363f4fe59a224e41093f99243927d5 --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision 1367c68bda1ff51ded26c5220a9a059fa67235f5) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision b8ac974ec0363f4fe59a224e41093f99243927d5) @@ -153,11 +153,6 @@ throws UserException, LearningDesignException, WorkspaceFolderException, IOException; /** - * @return List Returns the list of all the available LearningDesign's - */ - public List getAllLearningDesigns(); - - /** * @return List Returns a list of all available Learning Libraries */ public List getAllLearningLibraries(); @@ -222,14 +217,6 @@ throws IOException; /** - * This method returns a list of all available Learning Designs in WDDX format. - * - * @return String The required list in WDDX format - * @throws IOException - */ - public String getAllLearningDesignDetails() throws IOException; - - /** * Saves the LearningDesign to the database. Will update if already saved. Used when a design is run. * * @param learningDesign @@ -238,16 +225,6 @@ public void saveLearningDesign(LearningDesign learningDesign); /** - * Returns a list of LearningDesign's in WDDX format, belonging to the given user - * - * @param user - * The user_id of the User for whom the designs are to be fetched - * @return The requested list of LearningDesign's in WDDX format - * @throws IOException - */ - public String getLearningDesignsForUser(Long userID) throws IOException; - - /** * This method returns a list of all available system libraries in WDDX format. * * @return String The required information in WDDX format Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java =================================================================== diff -u -r4ab4ba6ef63a831648ca63ca4d91edd4c0fba55f -rb8ac974ec0363f4fe59a224e41093f99243927d5 --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision 4ab4ba6ef63a831648ca63ca4d91edd4c0fba55f) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision b8ac974ec0363f4fe59a224e41093f99243927d5) @@ -276,33 +276,6 @@ } - public ActionForward getLearningDesignsForUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, - HttpServletResponse response) throws ServletException, IOException { - String wddxPacket; - IAuthoringService authoringService = getAuthoringService(); - try { - Long userID = new Long(getUserId()); - - wddxPacket = authoringService.getLearningDesignsForUser(userID); - } catch (Exception e) { - wddxPacket = handleException(e, "getLearningDesignsForUser", authoringService, true).serializeMessage(); - } - return outputPacket(mapping, request, response, wddxPacket, "details"); - } - - public ActionForward getAllLearningDesignDetails(ActionMapping mapping, ActionForm form, - HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String wddxPacket; - IAuthoringService authoringService = getAuthoringService(); - try { - wddxPacket = authoringService.getAllLearningDesignDetails(); - } catch (Exception e) { - wddxPacket = handleException(e, "getAllLearningDesignDetails", authoringService, true).serializeMessage(); - } - AuthoringAction.log.debug("getAllLearningDesignDetails: returning " + wddxPacket); - return outputPacket(mapping, request, response, wddxPacket, "details"); - } - public ActionForward getAllLearningLibraryDetails(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String wddxPacket; Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml =================================================================== diff -u -rc7798d2b81a0595194a5e905ef6c33e372ad8007 -rb8ac974ec0363f4fe59a224e41093f99243927d5 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml (.../LearningDesign.hbm.xml) (revision c7798d2b81a0595194a5e905ef6c33e372ad8007) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/LearningDesign.hbm.xml (.../LearningDesign.hbm.xml) (revision b8ac974ec0363f4fe59a224e41093f99243927d5) @@ -151,6 +151,14 @@ + + @hibernate.property column ="duration" Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040042.sql =================================================================== diff -u --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040042.sql (revision 0) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch02040042.sql (revision b8ac974ec0363f4fe59a224e41093f99243927d5) @@ -0,0 +1,12 @@ +-- Turn off autocommit, so nothing is committed if there is an error + +SET AUTOCOMMIT = 0; +SET FOREIGN_KEY_CHECKS=0; + +-- LDEV-3491 Mark designs as removed without deleting the record +ALTER TABLE lams_learning_design ADD COLUMN removed TINYINT(1) NOT NULL DEFAULT 0; + +-- If there were no errors, commit and restore autocommit to on +SET FOREIGN_KEY_CHECKS=0; +COMMIT; +SET AUTOCOMMIT = 1; Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java =================================================================== diff -u -r0144e9d0f7fc574a887933024183a8a9049bc414 -rb8ac974ec0363f4fe59a224e41093f99243927d5 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java (.../LearningDesign.java) (revision 0144e9d0f7fc574a887933024183a8a9049bc414) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/LearningDesign.java (.../LearningDesign.java) (revision b8ac974ec0363f4fe59a224e41093f99243927d5) @@ -156,7 +156,10 @@ /** persistent field*/ private Date lastModifiedDateTime; - + + /** persistent field*/ + private Boolean removed; + /* If the values for createDateTime and/or lastModifiedDateTime * are null, then it will default to the current datetime. */ @@ -219,6 +222,7 @@ this.editOverrideLock = editOverrideLock; this.editOverrideUser = editOverrideUser; this.designVersion = designVersion; + this.removed = Boolean.FALSE; } /** default constructor */ @@ -228,6 +232,7 @@ this.lastModifiedDateTime = new Date(); this.editOverrideLock = false; this.designVersion = new Integer(1); + this.removed = Boolean.FALSE; } /** minimal constructor */ @@ -259,6 +264,7 @@ 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 created. It is not used @@ -297,6 +303,7 @@ newDesign.setEditOverrideLock(design.getEditOverrideLock()); newDesign.setEditOverrideUser(design.getEditOverrideUser()); newDesign.setOriginalUser(design.getOriginalUser()); + newDesign.setRemoved(design.getRemoved()); return newDesign; } @@ -593,4 +600,11 @@ public FloatingActivity getFloatingActivity() { return floatingActivity; } + public Boolean getRemoved() { + return removed; + } + public void setRemoved(Boolean removed) { + this.removed = removed; + } + } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java =================================================================== diff -u -r423c4fff74f1672a86716d95ab5c4dc4b75ab1c2 -rb8ac974ec0363f4fe59a224e41093f99243927d5 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java (.../ILearningDesignDAO.java) (revision 423c4fff74f1672a86716d95ab5c4dc4b75ab1c2) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/ILearningDesignDAO.java (.../ILearningDesignDAO.java) (revision b8ac974ec0363f4fe59a224e41093f99243927d5) @@ -28,7 +28,7 @@ import org.lamsfoundation.lams.dao.IBaseDAO; import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.LearningDesignAccess; -; + /** * @author Manpreet Minhas */ @@ -39,24 +39,8 @@ * @return LearningDesign populated LearningDesign object */ public LearningDesign getLearningDesignById(Long learningDesignId); - /** - * @param title - * @return LearningDesign populated LearningDesign object - */ - public LearningDesign getLearningDesignByTitle(String title); /** - * @return List of all Learning designs - */ - public List getAllLearningDesigns(); - - /** - * @param userID - * @return List of learning designs with given userID - */ - public List getLearningDesignByUserId(Long userID); - - /** * This method returns a list of all designs that are valid in * the given workspaceFolder. * @@ -76,17 +60,16 @@ */ public List getAllLearningDesignsInFolder(Integer workspaceFolderID); + /** This method returns a List of Learning Designs with given + * original_learning_design_id + * + * @param originalDesignID The original_learning_design_id + * @return List The List of all corresponding Learning designs with + * given original_learning_design_id + */ + public List getLearningDesignsByOriginalDesign(Long originalDesignID); + /** - * This method returns a List of Learning Designs with given - * original_learning_design_id - * - * @param originalDesignID The original_learning_design_id - * @return List The List of all corresponding Learning designs with - * given original_learning_design_id - */ - public List getLearningDesignsByOriginalDesign(Long originalDesignID); - - /** * Get the titles of all the learning designs with the given prefix in the given folder. */ public List getLearningDesignTitlesByWorkspaceFolder(Integer workspaceFolderID, String prefix); @@ -111,4 +94,5 @@ * Count how many learning designs exist in a given folder. */ public long countAllLearningDesigns(Integer workspaceFolderID, boolean validDesignsOnly); + } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java =================================================================== diff -u -r423c4fff74f1672a86716d95ab5c4dc4b75ab1c2 -rb8ac974ec0363f4fe59a224e41093f99243927d5 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java (.../LearningDesignDAO.java) (revision 423c4fff74f1672a86716d95ab5c4dc4b75ab1c2) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/dao/hibernate/LearningDesignDAO.java (.../LearningDesignDAO.java) (revision b8ac974ec0363f4fe59a224e41093f99243927d5) @@ -42,18 +42,16 @@ public class LearningDesignDAO extends LAMSBaseDAO implements ILearningDesignDAO { private static final String TABLENAME ="lams_learning_design"; - private static final String FIND_BY_USERID = "from " + TABLENAME +" in class " + LearningDesign.class.getName()+ " where user_id =?"; - private static final String VALID_IN_FOLDER ="from " + TABLENAME +" in class " + LearningDesign.class.getName()+ - " where valid_design_flag=true AND workspace_folder_id=?"; + " where valid_design_flag=true AND workspace_folder_id=? AND removed=0"; private static final String ALL_IN_FOLDER ="from " + TABLENAME +" in class " + LearningDesign.class.getName()+ - " where workspace_folder_id=?"; + " where workspace_folder_id=? AND removed=0"; private static final String FIND_BY_ORIGINAL ="from " + TABLENAME +" in class " + LearningDesign.class.getName()+ - " where original_learning_design_id=?"; + " where original_learning_design_id=? AND removed=0"; private static final String FIND_LD_NAMES_IN_FOLDER = "select title from " + LearningDesign.class.getName()+ - " where workspace_folder_id=? and title like ?"; + " where workspace_folder_id=? AND title like ? AND removed=0"; private static final String ACCESS_BY_USER = "from " + LearningDesignAccess.class.getName() + " as a where a.userId = ? order by a.accessDate desc"; @@ -62,35 +60,10 @@ * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningDesignDAO#getLearningDesignById(java.lang.Long) */ public LearningDesign getLearningDesignById(Long learningDesignId) { - return (LearningDesign)super.find(LearningDesign.class,learningDesignId); + LearningDesign design = (LearningDesign) super.find(LearningDesign.class,learningDesignId); + return design != null && ! design.getRemoved() ? design : null; } - - /* - * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningDesignDAO#getLearningDesignByTitle(java.lang.String) - */ - public LearningDesign getLearningDesignByTitle(String title) { - return (LearningDesign) super.find(LearningDesign.class,title); - } - - /* - * @see org.lamsfoundation.lams.learningdesign.dao.interfaces.ILearningDesignDAO#getAllLearningDesigns() - */ - public List getAllLearningDesigns() { - return super.findAll(LearningDesign.class); - } - public List getLearningDesignByUserId(Long userID){ - if ( userID != null ) { - try{ - Query query = getSessionFactory().getCurrentSession().createQuery(FIND_BY_USERID); - query.setLong(0,userID.longValue()); - return query.list(); - }catch(HibernateException he){ - } - } - return null; - } - /** * (non-Javadoc) * @see org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO#getAllValidLearningDesignsInFolder(java.lang.Integer) @@ -166,9 +139,18 @@ public long countAllLearningDesigns(Integer workspaceFolderID, boolean validDesignsOnly) { Map properties = new HashMap(); properties.put("workspaceFolder.workspaceFolderId", workspaceFolderID); + properties.put("removed", Boolean.FALSE); if ( validDesignsOnly ) properties.put("validDesign", Boolean.valueOf(validDesignsOnly)); return countByProperties(LearningDesign.class, properties); } + /** Overrides the standard delete to merely mark as removed in the database. */ + public void delete(Object object) { + LearningDesign design = (LearningDesign) object; + if ( design != null && ! design.getRemoved() ) { + design.setRemoved(Boolean.TRUE); + update(design); + } + } } \ No newline at end of file