From d65ea0eb3d775437926a03ae70b8a40691f1f701 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 16 Mar 2016 09:06:07 +0100 Subject: [PATCH] OO-1923: wording + exclude the user which delete the resource from the count --- .../org/olat/repository/RepositoryService.java | 3 ++- .../repository/_i18n/LocalStrings_de.properties | 2 +- .../repository/_i18n/LocalStrings_en.properties | 2 +- .../manager/RepositoryEntryRelationDAO.java | 15 +++++++++++---- .../repository/manager/RepositoryServiceImpl.java | 5 +++-- .../ui/author/ConfirmDeleteController.java | 2 +- .../manager/RepositoryEntryRelationDAOTest.java | 6 +++++- 7 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/olat/repository/RepositoryService.java b/src/main/java/org/olat/repository/RepositoryService.java index 0dcef2af6cc..747dd1f725f 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 fadfdfa0ae5..44f1e2e46f3 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 37499632484..ea61883ceb2 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 6db5a2a48af..8bf59f97ec8 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 dd4b429865c..c70b9add31f 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 061196abad3..45871c294db 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 76ba4807928..191d234faf1 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 -- GitLab