diff --git a/src/main/java/org/olat/repository/RepositoryService.java b/src/main/java/org/olat/repository/RepositoryService.java index 0dcef2af6cc1204736b5b031a2e522a55fa8d7dc..747dd1f725f4c8cc9a6773afe276d107699f7b16 100644 --- a/src/main/java/org/olat/repository/RepositoryService.java +++ b/src/main/java/org/olat/repository/RepositoryService.java @@ -135,9 +135,10 @@ public interface RepositoryService { /** * Count all members (following up to business groups wainting list) * @param res + * @param excludeMe Exclude to user which call the method (optional) * @return */ - public int countMembers(List<? extends RepositoryEntryRef> res); + public int countMembers(List<? extends RepositoryEntryRef> res, Identity excludeMe); /** * Return the smallest enrollment date. diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties index fadfdfa0ae584ae008572986c9873c842de7ecdb..44f1e2e46f3bed49efdba336dd5d1de88c33cca4 100644 --- a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties @@ -220,7 +220,7 @@ details.typeinfoheader=Typenspezifische Information dialog.modal.bg.leave.text=$org.olat.group.ui.main\:dialog.modal.bg.leave.text dialog.modal.bg.send.mail=$org.olat.group.ui.main\:dialog.modal.bg.send.mail dialog.confirm.delete.notAllDeleteable=Sie haben nicht die Berechtigung alle Lernressourcen zu l\u00F6schen. -dialog.confirm.delete=Wollen Sie diese Lernressource wirklich l\u00F6schen? Im Moment wird sie gerade von <strong>{0} Benutzern</strong> verwendet. +dialog.confirm.delete=Wollen Sie diese Lernressource wirklich l\u00F6schen? Sie hat <strong>{0} Mitglieder</strong> die sie eventuell gerade verwenden. dialog.confirm.delete.corrupted=$\:del.confirm<div class\='o_error'>Diese Lernressource wurde als defekt erkannt und kann daher nicht archiviert werden. Fahren Sie fort um die Ressource ohne Archiv zu entfernen.</div> disabledexportreason=F\u00FCr diese Lernressource wurde das Exportieren nicht freigegeben. disabledforwardreason=Bitte speichern Sie erst Ihre Eingaben. diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties index 37499632484716f3935296abcd39d37888b4a5ad..ea61883ceb2ebde5e4b07ee1873a85120b111242 100644 --- a/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties @@ -217,7 +217,7 @@ details.referenceinfo.txt=Used in the following courses\: details.referenceinfoheader=Information on usage details.summaryprop=Summary of settings details.typeinfoheader=Type-specific information -dialog.confirm.delete=Do you really want to delete this learning resource? It is used by <strong>{0} users</strong> at the moment. +dialog.confirm.delete=Do you really want to delete this learning resource? It has <strong>{0} members</strong> which might be using it at the moment.. dialog.confirm.delete.corrupted=$\:del.confirm<div class\='o_error'>This learning resource has been identified as corrupt and therefore can not be archived. Continue to remove the resource from the system without archiving.</div> dialog.confirm.delete.notAllDeleteable=You don't have the permission to delete all learning resources dialog.modal.bg.leave.text=$org.olat.group.ui.main\:dialog.modal.bg.leave.text diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java index 6db5a2a48af961e49f756b8d1f77af608b60b2a8..8bf59f97ec88635e3c5f726a30c1cce30a4dcb3b 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java +++ b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java @@ -238,7 +238,7 @@ public class RepositoryEntryRelationDAO { return count == null ? 0 : count.intValue(); } - public int countMembers(List<? extends RepositoryEntryRef> res) { + public int countMembers(List<? extends RepositoryEntryRef> res, Identity excludeMe) { if(res == null || res.isEmpty()) return 0; List<Long> repoKeys = new ArrayList<>(res.size()); @@ -252,11 +252,18 @@ public class RepositoryEntryRelationDAO { .append(" inner join relGroup.group as baseGroup") .append(" inner join baseGroup.members as members") .append(" where v.key in (:repoKeys)"); + if(excludeMe != null) { + sb.append(" and not(members.identity.key=:identityKey)"); + } - Number count = dbInstance.getCurrentEntityManager() + TypedQuery<Number> countQuery = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), Number.class) - .setParameter("repoKeys", repoKeys) - .getSingleResult(); + .setParameter("repoKeys", repoKeys); + if(excludeMe != null) { + countQuery.setParameter("identityKey", excludeMe.getKey()); + } + + Number count = countQuery.getSingleResult(); return count == null ? 0 : count.intValue(); } diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java index dd4b429865ca785e980cca17db797d4ef21ce0f1..c70b9add31f6c55845bf19364023433f8cfe2c05 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java +++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java @@ -464,9 +464,10 @@ public class RepositoryServiceImpl implements RepositoryService { return reToGroupDao.countMembers(re, roles); } + @Override - public int countMembers(List<? extends RepositoryEntryRef> res) { - return reToGroupDao.countMembers(res); + public int countMembers(List<? extends RepositoryEntryRef> res, Identity excludeMe) { + return reToGroupDao.countMembers(res, excludeMe); } @Override diff --git a/src/main/java/org/olat/repository/ui/author/ConfirmDeleteController.java b/src/main/java/org/olat/repository/ui/author/ConfirmDeleteController.java index 061196abad3cef3579abd35098d89aec6ded4dc2..45871c294db4424ce02dd498be5a0654365c6c9f 100644 --- a/src/main/java/org/olat/repository/ui/author/ConfirmDeleteController.java +++ b/src/main/java/org/olat/repository/ui/author/ConfirmDeleteController.java @@ -85,7 +85,7 @@ public class ConfirmDeleteController extends FormBasicController { this.rows = rows; this.notAllDeleteable = notAllDeleteable; - numOfMembers = repositoryService.countMembers(rows); + numOfMembers = repositoryService.countMembers(rows, getIdentity()); references = referenceManager.getReferencesInfos(rows, getIdentity(), ureq.getUserSession().getRoles()); if(references.size() > 1) { Collections.sort(references, new ReferenceInfosComparator(Collator.getInstance(getLocale()))); diff --git a/src/test/java/org/olat/repository/manager/RepositoryEntryRelationDAOTest.java b/src/test/java/org/olat/repository/manager/RepositoryEntryRelationDAOTest.java index 76ba48079280aba5716bb6e1c8aaa35c193bac50..191d234faf1ca19864256d9ab5c28b42b06c21bb 100644 --- a/src/test/java/org/olat/repository/manager/RepositoryEntryRelationDAOTest.java +++ b/src/test/java/org/olat/repository/manager/RepositoryEntryRelationDAOTest.java @@ -179,8 +179,12 @@ public class RepositoryEntryRelationDAOTest extends OlatTestCase { dbInstance.commitAndCloseSession(); //get the number of members - int numOfMembers = repositoryService.countMembers(Collections.singletonList(re)); + int numOfMembers = repositoryService.countMembers(Collections.singletonList(re), null); Assert.assertEquals(4, numOfMembers); + + //get the number of members without id1 + int numOfMembersWithExclude = repositoryService.countMembers(Collections.singletonList(re), id1); + Assert.assertEquals(3, numOfMembersWithExclude); } @Test