diff --git a/src/main/java/org/olat/basesecurity/manager/GroupDAO.java b/src/main/java/org/olat/basesecurity/manager/GroupDAO.java index a749387a12db3ee72a6a1bc75954dc25a82cea9b..1b9c05e1026c4707c2c02248ba2cb115b4696bd6 100644 --- a/src/main/java/org/olat/basesecurity/manager/GroupDAO.java +++ b/src/main/java/org/olat/basesecurity/manager/GroupDAO.java @@ -200,14 +200,8 @@ public class GroupDAO { } public List<String> getPermissions(IdentityRef identity, OLATResource resource) { - StringBuilder sb = new StringBuilder(); - sb.append("select grant.permission from bgrant as grant") - .append(" inner join grant.group as baseGroup") - .append(" inner join baseGroup.members as membership") - .append(" where membership.identity.key=:identityKey and grant.resource.key=:resourceKey") - .append(" and membership.role=grant.role"); return dbInstance.getCurrentEntityManager() - .createQuery(sb.toString(), String.class) + .createNamedQuery("grantedPermissionByIdentityAndResource", String.class) .setParameter("identityKey", identity.getKey()) .setParameter("resourceKey", resource.getKey()) .getResultList(); diff --git a/src/main/java/org/olat/basesecurity/model/GrantImpl.java b/src/main/java/org/olat/basesecurity/model/GrantImpl.java index f760a9ee7b273fb6504e4e32636df799012d1a2a..af1807d90908748167bcaba603642c82fb276c4f 100644 --- a/src/main/java/org/olat/basesecurity/model/GrantImpl.java +++ b/src/main/java/org/olat/basesecurity/model/GrantImpl.java @@ -28,6 +28,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; @@ -47,6 +49,9 @@ import org.olat.resource.OLATResourceImpl; */ @Entity(name="bgrant") @Table(name="o_bs_grant") +@NamedQueries({ + @NamedQuery(name="grantedPermissionByIdentityAndResource", query="select grant.permission from bgrant as grant inner join grant.group as baseGroup inner join baseGroup.members as membership where membership.identity.key=:identityKey and grant.resource.key=:resourceKey and membership.role=grant.role") +}) public class GrantImpl implements Grant, Persistable { private static final long serialVersionUID = -9157469088175205845L; diff --git a/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java b/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java index ef7615defaec380506abea3d7393f0d97bb81286..1020ab6b3886db7863119d3d0fd34d1a493434af 100644 --- a/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java +++ b/src/main/java/org/olat/core/commons/controllers/resume/ResumeController.java @@ -105,11 +105,11 @@ public class ResumeController extends FormBasicController implements SupportsAft if(isREST(ureq)) { //do nothing } else if(!historyModule.isResumeEnabled()) { - String bc = getLandingBC(ureq); - redirect(ureq, bc); + String url = toUrl(getLandingBC(ureq)); + redirect(ureq, url); } else if(usess.getRoles().isGuestOnly()) { - String bc = getLandingBC(ureq); - redirect(ureq, bc); + String url = toUrl(getLandingBC(ureq)); + redirect(ureq, url); } else { Preferences prefs = usess.getGuiPreferences(); String resumePrefs = (String)prefs.get(WindowManager.class, "resume-prefs"); @@ -118,8 +118,8 @@ public class ResumeController extends FormBasicController implements SupportsAft } if("none".equals(resumePrefs)) { - String bc = getLandingBC(ureq); - redirect(ureq, bc); + String url = toUrl(getLandingBC(ureq)); + redirect(ureq, url); } else if ("auto".equals(resumePrefs)) { HistoryPoint historyEntry = HistoryManager.getInstance().readHistoryPoint(ureq.getIdentity()); if(historyEntry != null && StringHelper.containsNonWhitespace(historyEntry.getBusinessPath())) { @@ -127,8 +127,8 @@ public class ResumeController extends FormBasicController implements SupportsAft String bc = BusinessControlFactory.getInstance().getAsRestPart(cloneCes, true); redirect(ureq, bc); } else { - String bc = getLandingBC(ureq); - redirect(ureq, bc); + String url = toUrl(getLandingBC(ureq)); + redirect(ureq, url); } } else if ("ondemand".equals(resumePrefs)) { HistoryPoint historyEntry = historyManager.readHistoryPoint(ureq.getIdentity()); @@ -142,8 +142,8 @@ public class ResumeController extends FormBasicController implements SupportsAft landingButton.setVisible(false); } } else { - String bc = getLandingBC(ureq); - redirect(ureq, bc); + String url = toUrl(getLandingBC(ureq)); + redirect(ureq, url); } } } @@ -212,10 +212,13 @@ public class ResumeController extends FormBasicController implements SupportsAft if(StringHelper.containsNonWhitespace(landingPage)) { String path = Rules.cleanUpLandingPath(landingPage); if(StringHelper.containsNonWhitespace(path)) { - return BusinessControlFactory.getInstance().formatFromURI(path); + landingPage = BusinessControlFactory.getInstance().formatFromURI(path); } } - return lpModule.getRules().match(ureq.getUserSession()); + if(!StringHelper.containsNonWhitespace(landingPage)) { + landingPage = lpModule.getRules().match(ureq.getUserSession()); + } + return landingPage; } private void launch(UserRequest ureq, String businessPath) { @@ -229,10 +232,24 @@ public class ResumeController extends FormBasicController implements SupportsAft } } - private void redirect(UserRequest ureq, String businessPath) { - if(StringHelper.containsNonWhitespace(businessPath)) { + private String toUrl(String businessPath) { + String url = businessPath; + if(StringHelper.containsNonWhitespace(url)) { + if(url.startsWith("[")) { + List<ContextEntry> ces = BusinessControlFactory.getInstance().createCEListFromString(url); + url = BusinessControlFactory.getInstance().getAsRestPart(ces, true); + } + if(url.startsWith("/")) { + url = url.substring(1, url.length()); + } + } + return url; + } + + private void redirect(UserRequest ureq, String url) { + if(StringHelper.containsNonWhitespace(url)) { try { - ureq.getUserSession().putEntry("redirect-bc", businessPath); + ureq.getUserSession().putEntry("redirect-bc", url); } catch (Exception e) { logError("Error while resuming", e); } diff --git a/src/main/java/org/olat/core/configuration/AbstractSpringModule.java b/src/main/java/org/olat/core/configuration/AbstractSpringModule.java index 9bae06e68190ef5028c99a2a90334284957e9eda..7e1ec8bb8e4d5219ea381006cb7537c5f0f7e798 100644 --- a/src/main/java/org/olat/core/configuration/AbstractSpringModule.java +++ b/src/main/java/org/olat/core/configuration/AbstractSpringModule.java @@ -19,7 +19,10 @@ */ package org.olat.core.configuration; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; +import java.util.concurrent.atomic.AtomicInteger; import org.olat.core.gui.control.Event; import org.olat.core.logging.OLog; @@ -50,22 +53,48 @@ public abstract class AbstractSpringModule implements GenericEventListener, Init private static final OLog log = Tracing.createLoggerFor(AbstractSpringModule.class); + @Value("${userdata.dir}") + private String userDataDirectory; + private final PersistedProperties moduleConfigProperties; + public static final Map<Class<?>,AtomicInteger> starts = new HashMap<Class<?>,AtomicInteger>(); + public AbstractSpringModule(CoordinatorManager coordinatorManager) { moduleConfigProperties = new PersistedProperties(coordinatorManager, this); + if(!starts.containsKey(this.getClass())) { + starts.put(this.getClass(), new AtomicInteger(1)); + } else { + starts.get(this.getClass()).incrementAndGet(); + } } public AbstractSpringModule(CoordinatorManager coordinatorManager, boolean secured) { moduleConfigProperties = new PersistedProperties(coordinatorManager, this, secured); + if(!starts.containsKey(this.getClass())) { + starts.put(this.getClass(), new AtomicInteger(1)); + } else { + starts.get(this.getClass()).incrementAndGet(); + } } public AbstractSpringModule(CoordinatorManager coordinatorManager, String path, boolean secured) { moduleConfigProperties = new PersistedProperties(coordinatorManager, this, path, secured); + if(!starts.containsKey(this.getClass())) { + starts.put(this.getClass(), new AtomicInteger(1)); + } else { + starts.get(this.getClass()).incrementAndGet(); + } } - @Value("${userdata.dir}") - private String userDataDirectory; + public static void printStats() { + OLog logger = Tracing.createLoggerFor(AbstractSpringModule.class); + for(Map.Entry<Class<?>, AtomicInteger> entry:starts.entrySet()) { + if(entry.getValue().get() > 1) { + logger.info(entry.getValue().get() + " :: " + entry.getKey()); + } + } + } @Override public void afterPropertiesSet() { diff --git a/src/main/java/org/olat/core/servlets/OpenOLATServlet.java b/src/main/java/org/olat/core/servlets/OpenOLATServlet.java index eee9b0e2b9acc96f67ab6f9d145b692bd57c03de..519eef9e4fe764483ed63813d841234d4d261887 100644 --- a/src/main/java/org/olat/core/servlets/OpenOLATServlet.java +++ b/src/main/java/org/olat/core/servlets/OpenOLATServlet.java @@ -37,6 +37,7 @@ import org.olat.core.commons.persistence.DBFactory; import org.olat.core.commons.services.taskexecutor.TaskExecutorManager; import org.olat.core.commons.services.webdav.WebDAVDispatcher; import org.olat.core.configuration.AbstractOLATModule; +import org.olat.core.configuration.AbstractSpringModule; import org.olat.core.configuration.PreWarm; import org.olat.core.dispatcher.Dispatcher; import org.olat.core.dispatcher.DispatcherModule; @@ -128,6 +129,7 @@ public class OpenOLATServlet extends HttpServlet { ExtManager.getInstance().getExtensions(); AbstractOLATModule.printStats(); + AbstractSpringModule.printStats(); preWarm(); } diff --git a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java index d66a926ffeea30b9d68dd0a430544f75ea25baab..05ba4cb693314b3405588cd5cd23de3ca8f311fe 100644 --- a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java +++ b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java @@ -42,7 +42,7 @@ public interface UserCourseInformationsManager { public List<UserCourseInformations> getUserCourseInformations(List<Long> keys); - public void updateUserCourseInformations(Long courseResId, Identity identity, boolean strict); + public void updateUserCourseInformations(OLATResource courseResource, Identity identity, boolean strict); public Date getInitialLaunchDate(Long courseResourceId, IdentityRef identity); diff --git a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java index 0cdb16e5cbbcdab18e7c95ada7d3a352a1af4836..e532011d5911c9ee8889366d0f68f16593be1f06 100644 --- a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java @@ -44,7 +44,6 @@ import org.olat.course.assessment.UserCourseInformations; import org.olat.course.assessment.model.UserCourseInfosImpl; import org.olat.repository.RepositoryEntry; import org.olat.resource.OLATResource; -import org.olat.resource.OLATResourceManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -61,8 +60,6 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations @Autowired private DB dbInstance; - @Autowired - private OLATResourceManager resourceManager; @Override public UserCourseInfosImpl getUserCourseInformations(Long courseResourceId, IdentityRef identity) { @@ -140,17 +137,16 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations * @return */ @Override - public void updateUserCourseInformations(final Long courseResourceableId, final Identity identity, final boolean strict) { - UltraLightInfos ulInfos = getUserCourseInformationsKey(courseResourceableId, identity); + public void updateUserCourseInformations(final OLATResource courseResource, final Identity identity, final boolean strict) { + UltraLightInfos ulInfos = getUserCourseInformationsKey(courseResource, identity); if(ulInfos == null) { OLATResourceable lockRes = OresHelper.createOLATResourceableInstance("CourseLaunchDate::Identity", identity.getKey()); CoordinatorManager.getInstance().getCoordinator().getSyncer().doInSync(lockRes, new SyncerExecutor(){ @Override public void execute() { try { - UltraLightInfos reloadedUlInfos = getUserCourseInformationsKey(courseResourceableId, identity); + UltraLightInfos reloadedUlInfos = getUserCourseInformationsKey(courseResource, identity); if(reloadedUlInfos == null) { - OLATResource courseResource = resourceManager.findResourceable(courseResourceableId, "CourseModule"); UserCourseInfosImpl infos = new UserCourseInfosImpl(); infos.setIdentity(identity); infos.setCreationDate(new Date()); @@ -204,18 +200,18 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations } } - private UltraLightInfos getUserCourseInformationsKey(Long courseResourceId, Identity identity) { + private UltraLightInfos getUserCourseInformationsKey(OLATResource courseResource, Identity identity) { try { StringBuilder sb = new StringBuilder(); sb.append("select infos.key, infos.lastModified from ").append(UserCourseInfosImpl.class.getName()).append(" as infos ") .append(" inner join infos.resource as resource") .append(" inner join infos.identity as identity") - .append(" where identity.key=:identityKey and resource.resId=:resId and resource.resName='CourseModule'"); + .append(" where identity.key=:identityKey and resource.key=:resourceKey"); List<Object[]> infoList = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), Object[].class) .setParameter("identityKey", identity.getKey()) - .setParameter("resId", courseResourceId) + .setParameter("resourceKey", courseResource.getKey()) .getResultList(); if(infoList.isEmpty()) { diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java index a58e5600ce0ae139199201a355cf4b707e69689c..1317c6d57f6d74a47e3de050c38ef4f01a48afc6 100644 --- a/src/main/java/org/olat/course/run/RunMainController.java +++ b/src/main/java/org/olat/course/run/RunMainController.java @@ -134,6 +134,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene private Link nextLink, previousLink; private GlossaryMarkupItemController glossaryMarkerCtr; + /** * Constructor for the run main controller * @@ -330,7 +331,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene private void setLaunchDates() { UserCourseInformationsManager userCourseInfoMgr = CoreSpringFactory.getImpl(UserCourseInformationsManager.class); - userCourseInfoMgr.updateUserCourseInformations(uce.getCourseEnvironment().getCourseResourceableId(), getIdentity(), false); + userCourseInfoMgr.updateUserCourseInformations(uce.getCourseEnvironment().getCourseGroupManager().getCourseResource(), getIdentity(), false); } private CourseNode updateAfterChanges(CourseNode courseNode) { diff --git a/src/main/java/org/olat/repository/RepositoryEntry.java b/src/main/java/org/olat/repository/RepositoryEntry.java index 26c6549909ff9c76e21f70ae6f0a2c921e86c9ad..5da47833b1a621205b7b31b67ebf9523f845e548 100644 --- a/src/main/java/org/olat/repository/RepositoryEntry.java +++ b/src/main/java/org/olat/repository/RepositoryEntry.java @@ -36,6 +36,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.Table; import javax.persistence.Temporal; @@ -64,6 +66,11 @@ import org.olat.resource.OLATResourceImpl; */ @Entity(name="repositoryentry") @Table(name="o_repositoryentry") +@NamedQueries({ + @NamedQuery(name="getRepositoryEntryRoleAndDefaults", query="select membership.role, relGroup.defaultGroup from repositoryentry as v inner join v.groups as relGroup inner join relGroup.group as baseGroup inner join baseGroup.members as membership where v.key=:repoKey and membership.identity.key=:identityKey"), + @NamedQuery(name="filterRepositoryEntryMembership", query="select v.key, membership.identity.key from repositoryentry as v inner join v.groups as relGroup inner join relGroup.group as baseGroup inner join baseGroup.members as membership on membership.role in ('owner','coach','.participant') where membership.identity.key=:identityKey and v.key in (:repositoryEntryKey)"), + @NamedQuery(name="loadRepositoryEntryByKey", query="select v from repositoryentry as v inner join fetch v.olatResource as ores inner join fetch v.statistics as statistics left join fetch v.lifecycle as lifecycle where v.key = :repoKey") +}) public class RepositoryEntry implements CreateInfo, Persistable , RepositoryEntryRef, ModifiedInfo, OLATResourceable { private static final long serialVersionUID = 5319576295875289054L; diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java index 3fac8d2f438fd3a798ef93ca890fa0e90e5e4cc7..97b8c1797bc52e77aaa12a8371b7cc1ed7238ed0 100644 --- a/src/main/java/org/olat/repository/RepositoryManager.java +++ b/src/main/java/org/olat/repository/RepositoryManager.java @@ -230,15 +230,8 @@ public class RepositoryManager extends BasicManager { if(strict) { return lookupRepositoryEntry(key); } - StringBuilder query = new StringBuilder(); - query.append("select v from ").append(RepositoryEntry.class.getName()).append(" as v ") - .append(" inner join fetch v.olatResource as ores") - .append(" inner join fetch v.statistics as statistics") - .append(" left join fetch v.lifecycle as lifecycle") - .append(" where v.key = :repoKey"); - List<RepositoryEntry> entries = dbInstance.getCurrentEntityManager() - .createQuery(query.toString(), RepositoryEntry.class) + .createNamedQuery("loadRepositoryEntryByKey", RepositoryEntry.class) .setParameter("repoKey", key) //.setHint("org.hibernate.cacheable", Boolean.TRUE) .getResultList(); diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java index ece81e4c76fc0d8e6d91adf54ee57ab4986e8bff..9f5230282b91d02c3ecec543b54f635047c759db 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java +++ b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java @@ -88,15 +88,8 @@ public class RepositoryEntryRelationDAO { * @return Return an array with the role and true if the relation is the default one. */ public List<Object[]> getRoleAndDefaults(IdentityRef identity, RepositoryEntryRef re) { - StringBuilder sb = new StringBuilder(); - sb.append("select membership.role, relGroup.defaultGroup from ").append(RepositoryEntry.class.getName()).append(" as v") - .append(" inner join v.groups as relGroup") - .append(" inner join relGroup.group as baseGroup") - .append(" inner join baseGroup.members as membership") - .append(" where v.key=:repoKey and membership.identity.key=:identityKey"); - return dbInstance.getCurrentEntityManager() - .createQuery(sb.toString(), Object[].class) + .createNamedQuery("getRepositoryEntryRoleAndDefaults", Object[].class) .setParameter("identityKey", identity.getKey()) .setParameter("repoKey", re.getKey()) .getResultList(); @@ -196,17 +189,9 @@ public class RepositoryEntryRelationDAO { */ public void filterMembership(IdentityRef identity, List<Long> entries) { if(entries == null || entries.isEmpty()) return; - - StringBuilder sb = new StringBuilder(); - sb.append("select v.key, membership.identity.key ") - .append(" from ").append(RepositoryEntry.class.getName()).append(" as v ") - .append(" inner join v.groups as relGroup") - .append(" inner join relGroup.group as baseGroup") - .append(" inner join baseGroup.members as membership on membership.role in ") - .append(" ('").append(GroupRoles.owner.name()).append("','").append(GroupRoles.coach.name()).append("','").append(GroupRoles.participant.name()).append("')") - .append(" where membership.identity.key=:identityKey and v.key in (:repositoryEntryKey)"); - List<Object[]> membershipList = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Object[].class) + List<Object[]> membershipList = dbInstance.getCurrentEntityManager() + .createNamedQuery("filterRepositoryEntryMembership", Object[].class) .setParameter("identityKey", identity.getKey()) .setParameter("repositoryEntryKey", entries) .getResultList(); diff --git a/src/main/java/org/olat/repository/ui/catalog/CatalogEntryEditController.java b/src/main/java/org/olat/repository/ui/catalog/CatalogEntryEditController.java index d1dc8431925643d62645dfc5638ec1e9a50a1869..e7789261c04e3b9afd51f106a40d7ed859c405b5 100644 --- a/src/main/java/org/olat/repository/ui/catalog/CatalogEntryEditController.java +++ b/src/main/java/org/olat/repository/ui/catalog/CatalogEntryEditController.java @@ -225,9 +225,14 @@ public class CatalogEntryEditController extends FormBasicController { VFSContainer tmpHome = new LocalFolderImpl(new File(WebappHelper.getTmpDir())); VFSContainer container = tmpHome.createChildContainer(UUID.randomUUID().toString()); VFSLeaf newFile = fileUpload.moveUploadFileTo(container, true);//give it it's real name and extension - boolean ok = catalogManager.setImage(newFile, catalogEntry); - if (!ok) { - showError("Failed"); + if(newFile != null) { + boolean ok = catalogManager.setImage(newFile, catalogEntry); + if (!ok) { + showError("error.download.image"); + } + } else { + logError("Cannot move and or crop: " + fileUpload.getUploadFileName() + " ( " + fileUpload.getUploadMimeType() + " )", null); + showError("error.download.image"); } } diff --git a/src/main/java/org/olat/repository/ui/catalog/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/repository/ui/catalog/_i18n/LocalStrings_de.properties index 97a2564a1c33e24799f8c2ce9ae0748420629148..0ade05d882e6ab0efb30bfde36509a37e5382f44 100644 --- a/src/main/java/org/olat/repository/ui/catalog/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/repository/ui/catalog/_i18n/LocalStrings_de.properties @@ -30,6 +30,7 @@ dialog.modal.subtree.delete.text=Wollen Sie die Kategorie "{0}" und alle damit v entry.category=Name entry.description=Beschreibung entry.leaf=Lernressource +error.download.image=Das Bild konnte nicht benutzt werden. filtered.first=Sie sind nicht eingeloggt. Die folgende Liste ist daher nicht vollst\u00E4ndig ( filtered.second=). move=Verschieben diff --git a/src/main/java/org/olat/repository/ui/catalog/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/repository/ui/catalog/_i18n/LocalStrings_en.properties index c01c9902b7fd5412bcfd9668e5285984826ef58a..768fbe69f8cca5d1841a14aaf90e537fbb4f1cea 100644 --- a/src/main/java/org/olat/repository/ui/catalog/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/repository/ui/catalog/_i18n/LocalStrings_en.properties @@ -27,6 +27,7 @@ entry.category=Name entry.description=Description entry.leaf=Learning resource entry.pic=Image +error.download.image=The image cannot be used. filtered.first=You are not logged in. The following list is therefore incomplete ( filtered.second=). list=List diff --git a/src/test/java/org/olat/course/assessment/manager/UserCourseInformationsManagerTest.java b/src/test/java/org/olat/course/assessment/manager/UserCourseInformationsManagerTest.java index 0505275d38538fe477ea8873e532ec7d3f0f9ac8..afb33a3a3fc799b9b2bef5de24485605fb281b4d 100644 --- a/src/test/java/org/olat/course/assessment/manager/UserCourseInformationsManagerTest.java +++ b/src/test/java/org/olat/course/assessment/manager/UserCourseInformationsManagerTest.java @@ -36,6 +36,7 @@ import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.course.ICourse; import org.olat.course.assessment.UserCourseInformations; +import org.olat.resource.OLATResource; import org.olat.restapi.repository.course.CoursesWebService; import org.olat.test.JunitTestHelper; import org.olat.test.OlatTestCase; @@ -62,7 +63,8 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { ICourse course = CoursesWebService.createEmptyCourse(user, "course-launch-dates", "course long name", null); dbInstance.commitAndCloseSession(); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user, true); + OLATResource courseResource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user, true); dbInstance.commitAndCloseSession(); UserCourseInformations infos = userCourseInformationsManager.getUserCourseInformations(course.getResourceableId(), user); @@ -83,11 +85,12 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { Identity user = JunitTestHelper.createAndPersistIdentityAsUser("user-launch-1-" + UUID.randomUUID().toString()); ICourse course = CoursesWebService.createEmptyCourse(user, "course-launch-dates", "course long name", null); dbInstance.commitAndCloseSession(); - - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user, true); + + OLATResource courseResource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user, true); dbInstance.commitAndCloseSession(); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user, true); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user, true); dbInstance.commitAndCloseSession(); UserCourseInformations infos = userCourseInformationsManager.getUserCourseInformations(course.getResourceableId(), user); @@ -101,7 +104,8 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { ICourse course = CoursesWebService.createEmptyCourse(user, "course-launch-dates", "course long name", null); dbInstance.commitAndCloseSession(); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user, true); + OLATResource courseResource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user, true); dbInstance.commitAndCloseSession(); Date launchDate = userCourseInformationsManager.getRecentLaunchDate(course.getResourceableId(), user); @@ -114,7 +118,8 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { ICourse course = CoursesWebService.createEmptyCourse(user, "course-launch-dates", "course long name", null); dbInstance.commitAndCloseSession(); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user, true); + OLATResource courseResource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user, true); dbInstance.commitAndCloseSession(); Date launchDate = userCourseInformationsManager.getInitialLaunchDate(course.getResourceableId(), user); @@ -128,8 +133,9 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { ICourse course = CoursesWebService.createEmptyCourse(user1, "course-launch-dates", "course long name", null); dbInstance.commitAndCloseSession(); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user1, true); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user2, true); + OLATResource courseResource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user1, true); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user2, true); dbInstance.commitAndCloseSession(); List<Identity> users = new ArrayList<Identity>(); @@ -153,9 +159,10 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { ICourse course = CoursesWebService.createEmptyCourse(user1, "course-launch-dates", "course long name", null); dbInstance.commitAndCloseSession(); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user1, true); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user2, true); - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user3, true); + OLATResource courseResource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user1, true); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user2, true); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user3, true); dbInstance.commitAndCloseSession(); //get all launch dates @@ -182,7 +189,8 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { dbInstance.commitAndCloseSession(); for(int i=0; i<10; i++) { - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), user, true); + OLATResource courseResource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); + userCourseInformationsManager.updateUserCourseInformations(courseResource, user, true); } dbInstance.commitAndCloseSession(); @@ -208,7 +216,8 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { CountDownLatch latch = new CountDownLatch(numThreads); UpdateThread[] threads = new UpdateThread[numThreads]; for(int i=0; i<threads.length;i++) { - threads[i] = new UpdateThread(user, course.getResourceableId(), userCourseInformationsManager, latch, dbInstance); + OLATResource courseResource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); + threads[i] = new UpdateThread(user, courseResource, userCourseInformationsManager, latch, dbInstance); } for(int i=0; i<threads.length;i++) { @@ -262,15 +271,15 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { private final CountDownLatch latch; private final UserCourseInformationsManager uciManager; - private final Long courseResourceableId; + private final OLATResource courseResource; private final Identity user; private int errors = 0; - public UpdateThread(Identity user, Long courseResourceableId, + public UpdateThread(Identity user, OLATResource courseResource, UserCourseInformationsManager uciManager, CountDownLatch latch, DB db) { this.user = user; - this.courseResourceableId = courseResourceableId; + this.courseResource = courseResource; this.uciManager = uciManager; this.latch = latch; this.db = db; @@ -285,9 +294,9 @@ public class UserCourseInformationsManagerTest extends OlatTestCase { try { Thread.sleep(10); for(int i=0; i<25;i++) { - uciManager.updateUserCourseInformations(courseResourceableId, user, true); - uciManager.getUserCourseInformations(courseResourceableId, user); - uciManager.updateUserCourseInformations(courseResourceableId, user, true); + uciManager.updateUserCourseInformations(courseResource, user, true); + uciManager.getUserCourseInformations(courseResource.getResourceableId(), user); + uciManager.updateUserCourseInformations(courseResource, user, true); db.commitAndCloseSession(); } } catch (Exception e) { diff --git a/src/test/java/org/olat/course/nodes/gta/rule/GTAReminderRuleTest.java b/src/test/java/org/olat/course/nodes/gta/rule/GTAReminderRuleTest.java index f482bfe454ad6afdd713ed23b7d0140c391855c9..fb9c7ed19f3fd6e060088e8a2eb92bd06e102004 100644 --- a/src/test/java/org/olat/course/nodes/gta/rule/GTAReminderRuleTest.java +++ b/src/test/java/org/olat/course/nodes/gta/rule/GTAReminderRuleTest.java @@ -318,9 +318,9 @@ public class GTAReminderRuleTest extends OlatTestCase { //create user course infos Long courseResId = course.getCourseEnvironment().getCourseResourceableId(); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id1, true); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id2, true); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id3, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id1, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id2, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id3, true); dbInstance.commit(); //fake the date diff --git a/src/test/java/org/olat/modules/coach/manager/CoachingDAOTest.java b/src/test/java/org/olat/modules/coach/manager/CoachingDAOTest.java index 19ffcb76a719db4e13778ad3db5cba09669091bb..d393d69d0b3a3b96706883c56c4ccca698f4b5d3 100644 --- a/src/test/java/org/olat/modules/coach/manager/CoachingDAOTest.java +++ b/src/test/java/org/olat/modules/coach/manager/CoachingDAOTest.java @@ -104,7 +104,7 @@ public class CoachingDAOTest extends OlatTestCase { dbInstance.commitAndCloseSession(); - ICourse course = CourseFactory.loadCourse(re.getOlatResource().getResourceableId()); + ICourse course = CourseFactory.loadCourse(re); boolean enabled = course.getCourseEnvironment().getCourseConfig().isEfficencyStatementEnabled(); Assert.assertTrue(enabled); @@ -134,7 +134,7 @@ public class CoachingDAOTest extends OlatTestCase { effManager.createUserEfficiencyStatement(new Date(), 2.0f, false, participant2, re.getOlatResource()); dbInstance.commitAndCloseSession(); //make user infos - userCourseInformationsManager.updateUserCourseInformations(course.getResourceableId(), participant1, true); + userCourseInformationsManager.updateUserCourseInformations(course.getCourseEnvironment().getCourseGroupManager().getCourseResource(), participant1, true); dbInstance.commitAndCloseSession(); @@ -243,11 +243,11 @@ public class CoachingDAOTest extends OlatTestCase { dbInstance.commitAndCloseSession(); //make user infos - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participant1, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant1, true); - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participant1, true); - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participant2, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant2, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participant1, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant1, true); + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participant1, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participant2, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant2, true); dbInstance.commitAndCloseSession(); //check course @@ -366,15 +366,15 @@ public class CoachingDAOTest extends OlatTestCase { dbInstance.commitAndCloseSession(); //make user infos - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participant1, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant1, true); - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participant1, true); - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participant2, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant2, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant3, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant4, true); - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participant5, true); - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participant6, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participant1, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant1, true); + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participant1, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participant2, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant2, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant3, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant4, true); + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participant5, true); + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participant6, true); dbInstance.commitAndCloseSession(); //owner can see participant 1,2,3 and 4 @@ -538,20 +538,20 @@ public class CoachingDAOTest extends OlatTestCase { dbInstance.commitAndCloseSession(); //make user infos - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participant1, true); - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participant11, true); - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participantG1, true); - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participantG11, true); - - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant2, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant21, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participantG2, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participantG21, true); - - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participant3, true); - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participant31, true); - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participantG3, true); - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participantG31, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participant1, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participant11, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participantG1, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participantG11, true); + + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant2, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant21, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participantG2, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participantG21, true); + + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participant3, true); + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participant31, true); + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participantG3, true); + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participantG31, true); dbInstance.commitAndCloseSession(); @@ -790,9 +790,9 @@ public class CoachingDAOTest extends OlatTestCase { dbInstance.commitAndCloseSession(); //make user infos - userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource().getResourceableId(), participant, true); - userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource().getResourceableId(), participant, true); - userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource().getResourceableId(), participant, true); + userCourseInformationsManager.updateUserCourseInformations(re1.getOlatResource(), participant, true); + userCourseInformationsManager.updateUserCourseInformations(re2.getOlatResource(), participant, true); + userCourseInformationsManager.updateUserCourseInformations(re3.getOlatResource(), participant, true); dbInstance.commitAndCloseSession(); //update props diff --git a/src/test/java/org/olat/modules/reminder/manager/ReminderRuleEngineTest.java b/src/test/java/org/olat/modules/reminder/manager/ReminderRuleEngineTest.java index 611583147225376da22c35ac572bc2e85e0a3374..e65809e737ccee9869a7a5b503552ce8ecb904ef 100644 --- a/src/test/java/org/olat/modules/reminder/manager/ReminderRuleEngineTest.java +++ b/src/test/java/org/olat/modules/reminder/manager/ReminderRuleEngineTest.java @@ -322,9 +322,9 @@ public class ReminderRuleEngineTest extends OlatTestCase { //create user course infos Long courseResId = course.getCourseEnvironment().getCourseResourceableId(); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id1, true); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id2, true); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id3, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id1, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id2, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id3, true); dbInstance.commit(); //fake the date @@ -443,9 +443,9 @@ public class ReminderRuleEngineTest extends OlatTestCase { //create user course infos Long courseResId = course.getCourseEnvironment().getCourseResourceableId(); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id1, true); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id2, true); - userCourseInformationsManager.updateUserCourseInformations(courseResId, id3, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id1, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id2, true); + userCourseInformationsManager.updateUserCourseInformations(re.getOlatResource(), id3, true); dbInstance.commit(); //fake the date