From c11cf049f7367d3c93195ff62ed8b2e666dd964f Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 6 Nov 2015 09:19:43 +0100 Subject: [PATCH] OO-1768: make a complete create course method which don't use and don't need to lock on the database for a new course --- .../java/org/olat/course/CourseFactory.java | 16 +++++++++---- .../repository/handlers/CourseHandler.java | 24 +++---------------- .../repository/course/CoursesWebService.java | 2 +- .../olat/search/ui/SearchInputController.java | 1 - .../config/CourseConfigManagerImplTest.java | 2 +- .../en/EnrollmentManagerConcurrentTest.java | 4 ++-- 6 files changed, 19 insertions(+), 30 deletions(-) diff --git a/src/main/java/org/olat/course/CourseFactory.java b/src/main/java/org/olat/course/CourseFactory.java index 285aae19440..be58679480f 100644 --- a/src/main/java/org/olat/course/CourseFactory.java +++ b/src/main/java/org/olat/course/CourseFactory.java @@ -205,19 +205,20 @@ public class CourseFactory extends BasicManager { /** * Creates an empty course with a single root node. The course is linked to - * the resourceable ores. + * the resourceable ores. The efficiency statment are enabled per default! * * @param ores * @param shortTitle Short title of root node * @param longTitle Long title of root node * @param learningObjectives Learning objectives of root node - * @return an empty course with a single root node. + * @return An empty course with a single root node. */ - public static ICourse createEmptyCourse(RepositoryEntry courseEntry, String shortTitle, String longTitle, String learningObjectives) { + public static ICourse createCourse(RepositoryEntry courseEntry, + String shortTitle, String longTitle, String learningObjectives) { OLATResource courseResource = courseEntry.getOlatResource(); PersistingCourseImpl newCourse = new PersistingCourseImpl(courseResource.getResourceableId()); // Put new course in course cache - loadedCourses.put(newCourse.getResourceableId() ,newCourse); + loadedCourses.put(newCourse.getResourceableId(), newCourse); Structure initialStructure = new Structure(); CourseNode runRootNode = new STCourseNode(); @@ -233,9 +234,16 @@ public class CourseFactory extends BasicManager { editorTreeModel.setRootNode(editorRootNode); newCourse.setEditorTreeModel(editorTreeModel); newCourse.saveEditorTreeModel(); + + //enable efficiency statement per default + CourseConfig courseConfig = newCourse.getCourseConfig(); + courseConfig.setEfficencyStatementIsEnabled(true); + newCourse.setCourseConfig(courseConfig); return newCourse; } + + /** * Gets the course from cache if already there, or loads the course and puts it into cache. diff --git a/src/main/java/org/olat/repository/handlers/CourseHandler.java b/src/main/java/org/olat/repository/handlers/CourseHandler.java index 190189186dd..40acd4e2647 100644 --- a/src/main/java/org/olat/repository/handlers/CourseHandler.java +++ b/src/main/java/org/olat/repository/handlers/CourseHandler.java @@ -85,7 +85,6 @@ import org.olat.course.config.CourseConfig; import org.olat.course.export.CourseEnvironmentMapper; import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.groupsandrights.PersistingCourseGroupManager; -import org.olat.course.nodes.CourseNode; import org.olat.course.run.CourseRuntimeController; import org.olat.course.run.RunMainController; import org.olat.course.tree.CourseEditorTreeNode; @@ -143,27 +142,10 @@ public class CourseHandler implements RepositoryHandler { OLATResource resource = OLATResourceManager.getInstance().createOLATResourceInstance(CourseModule.class); RepositoryEntry re = repositoryService.create(initialAuthor, null, "", displayname, description, resource, RepositoryEntry.ACC_OWNERS); DBFactory.getInstance().commit(); - - ICourse course = CourseFactory.createEmptyCourse(re, "New Course", "New Course", ""); - course = CourseFactory.openCourseEditSession(re.getOlatResource().getResourceableId()); - + String shortDisplayname = Formatter.truncateOnly(displayname, 25); - CourseNode runRootNode = course.getRunStructure().getRootNode(); - runRootNode.setShortTitle(shortDisplayname); //do not use truncate! - runRootNode.setLongTitle(displayname); - - //enable efficiency statement per default - CourseConfig courseConfig = course.getCourseEnvironment().getCourseConfig(); - courseConfig.setEfficencyStatementIsEnabled(true); - CourseFactory.setCourseConfig(course.getResourceableId(), courseConfig); - - CourseNode rootNode = ((CourseEditorTreeNode)course.getEditorTreeModel().getRootNode()).getCourseNode(); - rootNode.setShortTitle(shortDisplayname); //do not use truncate! - rootNode.setLongTitle(displayname); - - CourseFactory.saveCourse(course.getResourceableId()); - CourseFactory.closeCourseEditSession(course.getResourceableId(), true); - + ICourse course = CourseFactory.createCourse(re, shortDisplayname, displayname, ""); + log.audit("Course created: " + course.getCourseTitle()); return re; } diff --git a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java index 331faae1749..e0f8e787d11 100644 --- a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java +++ b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java @@ -518,7 +518,7 @@ public class CoursesWebService { addedEntry = repositoryService.update(addedEntry); // create an empty course - CourseFactory.createEmptyCourse(addedEntry, shortTitle, longTitle, learningObjectives); + CourseFactory.createCourse(addedEntry, shortTitle, longTitle, learningObjectives); return prepareCourse(addedEntry, shortTitle, longTitle, courseConfigVO); } catch (Exception e) { diff --git a/src/main/java/org/olat/search/ui/SearchInputController.java b/src/main/java/org/olat/search/ui/SearchInputController.java index e9bff5e9b8f..0d0c43d10fc 100644 --- a/src/main/java/org/olat/search/ui/SearchInputController.java +++ b/src/main/java/org/olat/search/ui/SearchInputController.java @@ -49,7 +49,6 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; -import org.olat.core.gui.media.RedirectMediaResource; import org.olat.core.id.OLATResourceable; import org.olat.core.id.context.BusinessControl; import org.olat.core.id.context.BusinessControlFactory; diff --git a/src/test/java/org/olat/course/config/CourseConfigManagerImplTest.java b/src/test/java/org/olat/course/config/CourseConfigManagerImplTest.java index 52b8763ab46..6d2cdf9999d 100644 --- a/src/test/java/org/olat/course/config/CourseConfigManagerImplTest.java +++ b/src/test/java/org/olat/course/config/CourseConfigManagerImplTest.java @@ -64,7 +64,7 @@ public class CourseConfigManagerImplTest extends OlatTestCase { // create course and persist as OLATResourceImpl OLATResource resource = resourceManager.createOLATResourceInstance(CourseModule.class); RepositoryEntry addedEntry = repositoryService.create("Ayanami", "-", "JUnit course configuration course", "A JUnit course", resource); - ICourse course = CourseFactory.createEmptyCourse(addedEntry, "JUnitCourseConfig", "JUnitCourseConfig Long Title", + ICourse course = CourseFactory.createCourse(addedEntry, "JUnitCourseConfig", "JUnitCourseConfig Long Title", "objective 1 objective 2 objective 3"); dbInstance.commitAndCloseSession(); diff --git a/src/test/java/org/olat/course/nodes/en/EnrollmentManagerConcurrentTest.java b/src/test/java/org/olat/course/nodes/en/EnrollmentManagerConcurrentTest.java index bd6852a2eae..0272c99fd09 100644 --- a/src/test/java/org/olat/course/nodes/en/EnrollmentManagerConcurrentTest.java +++ b/src/test/java/org/olat/course/nodes/en/EnrollmentManagerConcurrentTest.java @@ -160,7 +160,7 @@ public class EnrollmentManagerConcurrentTest extends OlatTestCase implements Win OLATResource resource = resourceManager.createOLATResourceInstance(CourseModule.class); RepositoryEntry addedEntry = repositoryService.create("Ayanami", "-", "Enrollment test course 1", "A JUnit course", resource); - CourseEnvironment cenv = CourseFactory.createEmptyCourse(addedEntry, "Test", "Test", "learningObjectives").getCourseEnvironment(); + CourseEnvironment cenv = CourseFactory.createCourse(addedEntry, "Test", "Test", "learningObjectives").getCourseEnvironment(); // 1. enroll wg1 user IdentityEnvironment ienv = new IdentityEnvironment(); ienv.setIdentity(wg1); @@ -257,7 +257,7 @@ public class EnrollmentManagerConcurrentTest extends OlatTestCase implements Win ENCourseNode enNode = new ENCourseNode(); OLATResource resource = resourceManager.createOLATResourceInstance(CourseModule.class); RepositoryEntry addedEntry = repositoryService.create("Ayanami", "-", "Enrollment test course 2", "A JUnit course", resource); - CourseEnvironment cenv = CourseFactory.createEmptyCourse(addedEntry, "Test-Enroll", "Test", "Test enrollment with concurrent users").getCourseEnvironment(); + CourseEnvironment cenv = CourseFactory.createCourse(addedEntry, "Test-Enroll", "Test", "Test enrollment with concurrent users").getCourseEnvironment(); BusinessGroup group = businessGroupService.createBusinessGroup(id1, "Enrollment", "Enroll", new Integer(1), new Integer(10), true, false, null); Assert.assertNotNull(group); dbInstance.commitAndCloseSession(); -- GitLab