Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java,v diff -u -r1.91 -r1.92 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 26 Jul 2006 02:19:30 -0000 1.91 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java 26 Jul 2006 03:32:27 -0000 1.92 @@ -26,6 +26,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Calendar; import java.util.Comparator; import java.util.Date; import java.util.HashSet; @@ -40,6 +41,7 @@ import java.util.TreeSet; import java.util.Vector; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.authoring.service.IAuthoringService; import org.lamsfoundation.lams.learning.service.ICoreLearnerService; @@ -311,16 +313,25 @@ // The duplicated sequence should go in the run sequences folder under the given organisation WorkspaceFolder runSeqFolder = null; + int MAX_DEEP_LEVEL_FOLDER = 50; if ( organisationId != null ) { Organisation org = (Organisation)baseDAO.find(Organisation.class,organisationId); - if ( org!=null ) { - Workspace workspace = org.getWorkspace(); - if ( workspace != null ) { - runSeqFolder = workspace.getDefaultRunSequencesFolder(); - } - + // Don't use unlimited loop to avoid dead lock. For instance, orgA is orgB parent, but orgB parent is orgA as well. + for(int idx=0;idx ldList = learningDesignDAO.getAllLearningDesignsInFolder(workspaceFolder.getWorkspaceFolderId()); + int idx = 1; + + //contruct middle part of name by timestamp + Calendar calendar = Calendar.getInstance(); + int mth = calendar.get(Calendar.MONTH) + 1; + String mthStr = new Integer(mth).toString(); + if(mth < 10) + mthStr = "0" + mthStr; + int day = calendar.get(Calendar.DAY_OF_MONTH); + String dayStr = new Integer(day).toString(); + if(day < 10) + dayStr = "0" + dayStr; + String nameMid = dayStr + mthStr + calendar.get(Calendar.YEAR); + while(true){ + dupName = false; + for(LearningDesign eld :ldList){ + if(StringUtils.equals(eld.getTitle(),newName)){ + dupName = true; + break; + } + } + if(!dupName) + break; + newName = originalLearningDesign.getTitle() + "_" + nameMid + "_" + idx; + idx++; + } + } + //copy the current learning design LearningDesign copiedLearningDesign = authoringService.copyLearningDesign(originalLearningDesign, new Integer(copyType), user, workspaceFolder, true); + + copiedLearningDesign.setTitle(newName); + // copy the tool content // unfortuanately, we have to reaccess the activities to make sure we get the // subclass, not a hibernate proxy. Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java,v diff -u -r1.41 -r1.42 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java 25 Jul 2006 06:07:26 -0000 1.41 +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java 26 Jul 2006 03:32:27 -0000 1.42 @@ -28,6 +28,7 @@ import java.io.PrintWriter; import java.text.DateFormat; import java.util.Date; +import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -169,9 +170,9 @@ if ( title == null ) title = "lesson"; String desc = WebUtil.readStrParam(request,"lessonDescription", true); if ( desc == null ) desc = "description"; - Integer courseId = WebUtil.readIntParam(request,"courseId",true); + Integer organisationId = WebUtil.readIntParam(request,"organisationID",true); long ldId = WebUtil.readLongParam(request, AttributeNames.PARAM_LEARNINGDESIGN_ID); - Lesson newLesson = monitoringService.initializeLesson(title,desc,ldId,courseId,getUserId(request)); + Lesson newLesson = monitoringService.initializeLesson(title,desc,ldId,organisationId,getUserId(request)); flashMessage = new FlashMessage("initializeLesson",newLesson.getLessonId()); } catch (Exception e) {