From 10048a970ee689f2cad3bace9c2cdb4ed5d4dc49 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 2 Nov 2012 10:00:58 +0100 Subject: [PATCH] OO-398: copy the groups with the course copy --- .../org/olat/course/condition/Condition.java | 5 ++-- .../interpreter/ConditionInterpreter.java | 4 +-- .../olat/course/nodes/GenericCourseNode.java | 4 +-- .../repository/CreateNewCourseController.java | 28 ++++++++++++++++++- .../repository/ImportCourseController.java | 7 +++-- .../olat/ims/cp/ui/CreateNewCPController.java | 5 ++++ .../editor/AddNewQTIDocumentController.java | 5 ++++ .../glossary/CreateNewGlossaryController.java | 5 ++++ .../CreateNewSharedFolderController.java | 5 ++++ .../webFeed/ui/blog/CreateBlogController.java | 7 ++++- .../ui/podcast/CreatePodcastController.java | 7 ++++- .../CreateStructureMapTemplateController.java | 6 +++- .../AddFileResourceController.java | 7 ++++- .../controllers/IAddController.java | 7 +++++ .../controllers/RepositoryCopyController.java | 1 + .../handlers/WikiCreateController.java | 5 ++++ 16 files changed, 93 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/olat/course/condition/Condition.java b/src/main/java/org/olat/course/condition/Condition.java index 6808de4dd7b..30f0c3f511c 100644 --- a/src/main/java/org/olat/course/condition/Condition.java +++ b/src/main/java/org/olat/course/condition/Condition.java @@ -38,7 +38,6 @@ import org.olat.core.util.StringHelper; public class Condition implements Serializable, Cloneable { transient private String conditionId = null; private String condition = null; - private String conditionUpgraded = null; private boolean expertMode = false; private String easyModeBeginDate; @@ -95,11 +94,11 @@ public class Condition implements Serializable, Cloneable { } public String getConditionUpgraded() { - return conditionUpgraded; + return null; } public void setConditionUpgraded(String conditionUpgraded) { - this.conditionUpgraded = conditionUpgraded; + //only for compatibility reason, don't delete these methods } /** diff --git a/src/main/java/org/olat/course/condition/interpreter/ConditionInterpreter.java b/src/main/java/org/olat/course/condition/interpreter/ConditionInterpreter.java index 320750a2e6d..69fb769a1fb 100644 --- a/src/main/java/org/olat/course/condition/interpreter/ConditionInterpreter.java +++ b/src/main/java/org/olat/course/condition/interpreter/ConditionInterpreter.java @@ -272,9 +272,7 @@ public class ConditionInterpreter { * @return True if evaluation successfull. */ public boolean evaluateCondition(Condition c) { - if(c.isExpertMode() && StringHelper.containsNonWhitespace(c.getConditionUpgraded())) { - return evaluateCondition(c.getConditionUpgraded()); - } else if (!c.isExpertMode() && (c.getAttributeConditions() == null || c.getAttributeConditions().isEmpty())) { + if (!c.isExpertMode() && (c.getAttributeConditions() == null || c.getAttributeConditions().isEmpty())) { //experimental optimized evaluation of the easy conditions //return evaluateEasyCondition(c); } diff --git a/src/main/java/org/olat/course/nodes/GenericCourseNode.java b/src/main/java/org/olat/course/nodes/GenericCourseNode.java index 896afec2968..c418b5dcb06 100644 --- a/src/main/java/org/olat/course/nodes/GenericCourseNode.java +++ b/src/main/java/org/olat/course/nodes/GenericCourseNode.java @@ -439,7 +439,7 @@ public abstract class GenericCourseNode extends GenericNode implements CourseNod String processExpression = convertExpressionNameToKey(expression, envMapper); processExpression = convertExpressionKeyToKey(expression, envMapper); if(!expression.equals(processExpression)) { - condition.setConditionUpgraded(processExpression); + condition.setConditionExpression(processExpression); } } } @@ -483,7 +483,7 @@ public abstract class GenericCourseNode extends GenericNode implements CourseNod if(backwardsCompatible) { condition.setEasyModeGroupAreaAccessIds(null); condition.setEasyModeGroupAccessIds(null); - condition.setConditionUpgraded(null); + //condition.setConditionUpgraded(null); } } diff --git a/src/main/java/org/olat/course/repository/CreateNewCourseController.java b/src/main/java/org/olat/course/repository/CreateNewCourseController.java index bddafe838a9..509adbbc6e9 100644 --- a/src/main/java/org/olat/course/repository/CreateNewCourseController.java +++ b/src/main/java/org/olat/course/repository/CreateNewCourseController.java @@ -25,6 +25,9 @@ package org.olat.course.repository; +import java.io.File; +import java.util.UUID; + import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.Constants; @@ -34,10 +37,14 @@ 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.controller.BasicController; +import org.olat.core.util.CodeHelper; import org.olat.core.util.Formatter; import org.olat.course.CourseFactory; import org.olat.course.CourseModule; import org.olat.course.ICourse; +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.tree.CourseEditorTreeNode; import org.olat.repository.RepositoryEntry; @@ -144,7 +151,26 @@ public class CreateNewCourseController extends BasicController implements IAddCo CourseFactory.saveCourse(course.getResourceableId()); CourseFactory.closeCourseEditSession(course.getResourceableId(), true); } - + + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + ICourse sourceCourse = CourseFactory.loadCourse(sourceEntry.getOlatResource().getResourceableId()); + CourseGroupManager sourceCgm = sourceCourse.getCourseEnvironment().getCourseGroupManager(); + CourseEnvironmentMapper env = PersistingCourseGroupManager.getInstance(sourceCourse).getBusinessGroupEnvironment(); + + File fExportDir = new File(System.getProperty("java.io.tmpdir"), UUID.randomUUID().toString()); + fExportDir.mkdirs(); + sourceCgm.exportCourseBusinessGroups(fExportDir, env, false); + + course = CourseFactory.loadCourse(newEntry.getOlatResource().getResourceableId()); + CourseGroupManager cgm = course.getCourseEnvironment().getCourseGroupManager(); + // import groups + CourseEnvironmentMapper envMapper = cgm.importCourseBusinessGroups(fExportDir); + //upgrade to the current version of the course + course = CourseFactory.loadCourse(cgm.getCourseResource()); + course.postImport(envMapper); + } + /** * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) */ diff --git a/src/main/java/org/olat/course/repository/ImportCourseController.java b/src/main/java/org/olat/course/repository/ImportCourseController.java index 02bd32174ed..da68f12b1b7 100644 --- a/src/main/java/org/olat/course/repository/ImportCourseController.java +++ b/src/main/java/org/olat/course/repository/ImportCourseController.java @@ -35,7 +35,6 @@ import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.BaseSecurityManager; import org.olat.basesecurity.Constants; import org.olat.commons.file.filechooser.FileChooserController; -import org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.panel.Panel; @@ -46,7 +45,6 @@ import org.olat.core.gui.control.controller.BasicController; import org.olat.core.util.FileUtils; import org.olat.core.util.Formatter; import org.olat.core.util.vfs.LocalFileImpl; -import org.olat.core.util.vfs.LocalImpl; import org.olat.core.util.vfs.QuotaManager; import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.vfs.filters.VFSItemFileTypeFilter; @@ -161,6 +159,11 @@ public class ImportCourseController extends BasicController implements IAddContr CourseFactory.saveCourse(course.getResourceableId()); CourseFactory.closeCourseEditSession(course.getResourceableId(),true); } + + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } /** * @see org.olat.repository.controllers.IAddController#transactionAborted() diff --git a/src/main/java/org/olat/ims/cp/ui/CreateNewCPController.java b/src/main/java/org/olat/ims/cp/ui/CreateNewCPController.java index 0344aafe893..cd936263650 100644 --- a/src/main/java/org/olat/ims/cp/ui/CreateNewCPController.java +++ b/src/main/java/org/olat/ims/cp/ui/CreateNewCPController.java @@ -89,6 +89,11 @@ public class CreateNewCPController extends BasicController implements IAddContro secMgr.createAndPersistPolicy(re.getOwnerGroup(), Constants.PERMISSION_ADMIN, re.getOlatResource()); } + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } + public void transactionAborted() { // Don't do nothing! } diff --git a/src/main/java/org/olat/ims/qti/editor/AddNewQTIDocumentController.java b/src/main/java/org/olat/ims/qti/editor/AddNewQTIDocumentController.java index 8dc6b76f7bf..dfc1d37ba28 100644 --- a/src/main/java/org/olat/ims/qti/editor/AddNewQTIDocumentController.java +++ b/src/main/java/org/olat/ims/qti/editor/AddNewQTIDocumentController.java @@ -129,6 +129,11 @@ public class AddNewQTIDocumentController extends DefaultController implements IA tmpPackage.cleanupTmpPackageDir(); } + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } + /** * @see org.olat.repository.controllers.IAddController#transactionAborted() */ diff --git a/src/main/java/org/olat/modules/glossary/CreateNewGlossaryController.java b/src/main/java/org/olat/modules/glossary/CreateNewGlossaryController.java index ed95d27c6e1..686cc39e3d6 100644 --- a/src/main/java/org/olat/modules/glossary/CreateNewGlossaryController.java +++ b/src/main/java/org/olat/modules/glossary/CreateNewGlossaryController.java @@ -105,6 +105,11 @@ public class CreateNewGlossaryController extends DefaultController implements IA return; } // nothing to do here. + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } + /** * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) */ diff --git a/src/main/java/org/olat/modules/sharedfolder/CreateNewSharedFolderController.java b/src/main/java/org/olat/modules/sharedfolder/CreateNewSharedFolderController.java index 7246a6da5e8..0c76ad279d3 100644 --- a/src/main/java/org/olat/modules/sharedfolder/CreateNewSharedFolderController.java +++ b/src/main/java/org/olat/modules/sharedfolder/CreateNewSharedFolderController.java @@ -100,6 +100,11 @@ public class CreateNewSharedFolderController extends DefaultController implement return; } // nothing to do here. + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } + /** * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) */ diff --git a/src/main/java/org/olat/modules/webFeed/ui/blog/CreateBlogController.java b/src/main/java/org/olat/modules/webFeed/ui/blog/CreateBlogController.java index 6670ebb34b0..b4b1a0dab84 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/blog/CreateBlogController.java +++ b/src/main/java/org/olat/modules/webFeed/ui/blog/CreateBlogController.java @@ -93,10 +93,15 @@ public class CreateBlogController extends DefaultController implements IAddContr /** * @see org.olat.repository.controllers.IAddController#repositoryEntryCreated(org.olat.repository.RepositoryEntry) */ - @SuppressWarnings("unused") + @Override public void repositoryEntryCreated(RepositoryEntry re) { // Nothing to do here, but thanks for asking. } + + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } /** * @see org.olat.repository.controllers.IAddController#transactionAborted() diff --git a/src/main/java/org/olat/modules/webFeed/ui/podcast/CreatePodcastController.java b/src/main/java/org/olat/modules/webFeed/ui/podcast/CreatePodcastController.java index 0d34690fe22..f281c263731 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/podcast/CreatePodcastController.java +++ b/src/main/java/org/olat/modules/webFeed/ui/podcast/CreatePodcastController.java @@ -93,10 +93,15 @@ public class CreatePodcastController extends DefaultController implements IAddCo /** * @see org.olat.repository.controllers.IAddController#repositoryEntryCreated(org.olat.repository.RepositoryEntry) */ - @SuppressWarnings("unused") + @Override public void repositoryEntryCreated(RepositoryEntry re) { // Nothing to do here, but thanks for asking. } + + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } /** * @see org.olat.repository.controllers.IAddController#transactionAborted() diff --git a/src/main/java/org/olat/portfolio/ui/CreateStructureMapTemplateController.java b/src/main/java/org/olat/portfolio/ui/CreateStructureMapTemplateController.java index 4e71be74813..987a8606eef 100644 --- a/src/main/java/org/olat/portfolio/ui/CreateStructureMapTemplateController.java +++ b/src/main/java/org/olat/portfolio/ui/CreateStructureMapTemplateController.java @@ -85,7 +85,6 @@ public class CreateStructureMapTemplateController extends BasicController implem * org.olat.core.gui.control.Event) */ @Override - @SuppressWarnings("unused") protected void event(UserRequest ureq, Component source, Event event) { // Nothing to catch } @@ -111,6 +110,11 @@ public class CreateStructureMapTemplateController extends BasicController implem ePFMgr.createAndPersistPortfolioPage(mapTemp, title, description); } } + + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } /** * @see org.olat.repository.controllers.IAddController#transactionAborted() diff --git a/src/main/java/org/olat/repository/controllers/AddFileResourceController.java b/src/main/java/org/olat/repository/controllers/AddFileResourceController.java index ecbef0f6400..a091c8aefc3 100644 --- a/src/main/java/org/olat/repository/controllers/AddFileResourceController.java +++ b/src/main/java/org/olat/repository/controllers/AddFileResourceController.java @@ -261,7 +261,12 @@ public class AddFileResourceController extends BasicController implements IAddCo // nothing to do here. return; } - + + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // nothing to do here. + } + /** * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) */ diff --git a/src/main/java/org/olat/repository/controllers/IAddController.java b/src/main/java/org/olat/repository/controllers/IAddController.java index 543fd8829bb..8163b3eccfa 100644 --- a/src/main/java/org/olat/repository/controllers/IAddController.java +++ b/src/main/java/org/olat/repository/controllers/IAddController.java @@ -61,6 +61,13 @@ public interface IAddController extends Disposable { */ public void repositoryEntryCreated(RepositoryEntry re); + /** + * Called only if the repository entry is copied + * @param sourceEntry The source of the copy, the original + * @param newEntry The new repository entry + */ + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry); + /** * Called if the repository aborts the transaction. Do any cleanup work. */ diff --git a/src/main/java/org/olat/repository/controllers/RepositoryCopyController.java b/src/main/java/org/olat/repository/controllers/RepositoryCopyController.java index 53b0dc4bc87..d21ea17b605 100644 --- a/src/main/java/org/olat/repository/controllers/RepositoryCopyController.java +++ b/src/main/java/org/olat/repository/controllers/RepositoryCopyController.java @@ -145,6 +145,7 @@ public class RepositoryCopyController extends BasicController { RepositoryHandler typeToCopy = RepositoryHandlerFactory.getInstance().getRepositoryHandler(sourceEntry); IAddController addController = typeToCopy.createAddController(null, null, ureq, getWindowControl()); addController.repositoryEntryCreated(newEntry); + addController.repositoryEntryCopied(sourceEntry, newEntry); // dispose immediately (cleanup temp files), not really used // as a controller, should be in a business logic frontend manager instead! addController.dispose(); diff --git a/src/main/java/org/olat/repository/handlers/WikiCreateController.java b/src/main/java/org/olat/repository/handlers/WikiCreateController.java index 9aeeab13077..8217e54ef55 100644 --- a/src/main/java/org/olat/repository/handlers/WikiCreateController.java +++ b/src/main/java/org/olat/repository/handlers/WikiCreateController.java @@ -101,6 +101,11 @@ public class WikiCreateController extends DefaultController implements IAddContr public void repositoryEntryCreated(RepositoryEntry re) { // } + + @Override + public void repositoryEntryCopied(RepositoryEntry sourceEntry, RepositoryEntry newEntry) { + // + } /** * @see org.olat.repository.controllers.IAddController#transactionAborted() -- GitLab