From eee8469daefac6ab2163626194ed038e5a3e2021 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Mon, 10 Aug 2020 17:20:18 +0200
Subject: [PATCH] OO-4545: check duplicates of institutional identifier,
 wording

---
 .../java/org/olat/basesecurity/manager/IdentityDAO.java  | 6 ++++++
 .../member/wizard/ImportMemberByUsernamesController.java | 9 +++++----
 .../member/wizard/_i18n/LocalStrings_de.properties       | 4 ++--
 .../member/wizard/_i18n/LocalStrings_en.properties       | 2 +-
 4 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/olat/basesecurity/manager/IdentityDAO.java b/src/main/java/org/olat/basesecurity/manager/IdentityDAO.java
index e428dcd1b8b..5362b58c4c4 100644
--- a/src/main/java/org/olat/basesecurity/manager/IdentityDAO.java
+++ b/src/main/java/org/olat/basesecurity/manager/IdentityDAO.java
@@ -37,6 +37,7 @@ import org.olat.basesecurity.model.FindNamedIdentity;
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.id.Identity;
 import org.olat.core.id.User;
+import org.olat.core.id.UserConstants;
 import org.olat.core.logging.AssertException;
 import org.olat.core.util.StringHelper;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -143,6 +144,11 @@ public class IdentityDAO {
 				&& names.contains(user.getInstitutionalEmail().toLowerCase())) {
 			namedIdentity.addName(user.getInstitutionalEmail());
 		}
+		
+		if(StringHelper.containsNonWhitespace(user.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, null))
+				&& names.contains(user.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, null).toLowerCase())) {
+			namedIdentity.addName(user.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, null));
+		}
 	}
 	
 	public void setIdentityLastLogin(IdentityRef identity, Date lastLogin) {
diff --git a/src/main/java/org/olat/course/member/wizard/ImportMemberByUsernamesController.java b/src/main/java/org/olat/course/member/wizard/ImportMemberByUsernamesController.java
index c7a5ef0f8da..964d07c3151 100644
--- a/src/main/java/org/olat/course/member/wizard/ImportMemberByUsernamesController.java
+++ b/src/main/java/org/olat/course/member/wizard/ImportMemberByUsernamesController.java
@@ -159,8 +159,9 @@ public class ImportMemberByUsernamesController extends StepFormBasicController {
 	protected void formNext(UserRequest ureq) {
 		String logins = idata.getValue();
 		if(tableContainer.isVisible()) {
-			selectDuplicates();
-			addToRunContext("keyIdentities", new ArrayList<>(identitiesList));
+			List<Identity> all = new ArrayList<>(identitiesList);
+			all.addAll(selectDuplicates());
+			addToRunContext("keyIdentities", all);
 			addToRunContext("notFounds", notFoundNames);
 			fireEvent(ureq, StepsEvent.ACTIVATE_NEXT);
 		} else if(processInput(logins)) {
@@ -179,7 +180,7 @@ public class ImportMemberByUsernamesController extends StepFormBasicController {
 		identitiesList = null;
 	}
 	
-	private void selectDuplicates() {
+	private List<Identity> selectDuplicates() {
 		List<Identity> selectedIdentities = new ArrayList<>();
 		for(Integer index:tableEl.getMultiSelectedIndex()) {
 			Identity identity = userTableModel.getObject(index.intValue());
@@ -187,7 +188,7 @@ public class ImportMemberByUsernamesController extends StepFormBasicController {
 				selectedIdentities.add(identity);
 			}
 		}
-		identitiesList.addAll(selectedIdentities);
+		return selectedIdentities;
 	}
 
 	/**
diff --git a/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_de.properties
index d25ff3f1d33..5a9535e701d 100644
--- a/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_de.properties
@@ -9,6 +9,6 @@ form.addusers=Benutzername, $org.olat.user.propertyhandlers\:table.name.email od
 table.user.login=$org.olat.group.ui.main\:table.header.login
 user.notfound=$org.olat.group.ui.main\:user.notfound
 error.select.role=Sie m\u00FCssen mindestens eine Rolle w\u00E4hlen
-warn.duplicates.names=Multiple users have been found that match for the given inputs for "{0}".
-warn.duplicates.select=W\u00E4hlen Sie bitte den Benutzer zu hinzuf\u00FCgen.
+warn.duplicates.names=Es wurden mehrere Benutzer gefunden, die den genannten Kriterien "{0}" entsprechen.
+warn.duplicates.select=W\u00E4hlen Sie bitte den Benutzer aus, der hinzugef\u00FCgt werden soll.
 
diff --git a/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_en.properties
index 5b18a187ef2..2d22dbb0f0b 100644
--- a/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/course/member/wizard/_i18n/LocalStrings_en.properties
@@ -9,5 +9,5 @@ import.permission.title=Rights
 table.user.login=$org.olat.group.ui.main\:table.header.login
 user.notfound=$org.olat.group.ui.main\:user.notfound
 error.select.role=You must select a role at least
-warn.duplicates.names=Multiple users have been found that match for the given inputs for "{0}".
+warn.duplicates.names=Multiple users were found who meet the specified criteria "{0}".
 warn.duplicates.select=Please select the user to be added.
-- 
GitLab