diff --git a/src/main/java/org/olat/course/condition/Condition.java b/src/main/java/org/olat/course/condition/Condition.java index 6808de4dd7b6e3c557d4ab9b45a878d82a9a0a9f..30f0c3f511ccdee9d801df67b2c8bfd3bb5ac644 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 320750a2e6d15ab9d017e9863bba98a80907b84c..69fb769a1fbea6cd7a08121fb49235a1d5d47eea 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 896afec2968790d2911f2d549db883768e74a305..c418b5dcb06f989ecca17fdb4a0fc306c6124900 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 bddafe838a9832d3494ffb7198e1becec2f20502..509adbbc6e9f739ddbcdf525754207c3103acea5 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 02bd32174ed66bc87683f1fe2a338dead69e2887..da68f12b1b78fab792a769b4f73166af94e18823 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 0344aafe893fc8b7a931a6fe253ec35eb75c0da7..cd936263650955ae9ca576f4b4a6edc28842f4c7 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 8dc6b76f7bfe4c7443c36ccf24a984d3acddf67e..dfc1d37ba289ae19234ff0eb04f5f8e2b9a0cac6 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 ed95d27c6e1b3e22c265cac057663517cc67c07f..686cc39e3d67a13d6170a5b02ab67f42f9f2cae4 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 7246a6da5e89692923268f0be4251122e78d6bb1..0c76ad279d3620582a197130814a4f4379efb342 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 6670ebb34b04a4edccd3fde101bc40301fdf3522..b4b1a0dab844ba01f3752d3cecbfd9e40bbc2c7a 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 0d34690fe22633abfd4830d30fd56af88b790613..f281c26373155b30ff7cd828c6881d5174e5871b 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 4e71be748134b408425eb4c03dc47e141ed5be9f..987a8606eef1c19657d32106d2379d55d68b5bec 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 ecbef0f64008228c52497ddf99485cb5bcdb3d40..a091c8aefc36f81fc25443b834e31b44ded4cf8b 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 543fd8829bb4ab17e999c9f854300c0c3d12e932..8163b3eccfa4a731c0171ad9429d9be1f42c01db 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 53b0dc4bc87262dac9115a1676eb91585c0a8027..d21ea17b6058c826685a56d3ded2a7e50979ac9c 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 9aeeab130779382006723d9c135994e2d5dcb1b4..8217e54ef558646401c430bcebb1cd487d495bf9 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()