From e908d9dd60507bc73a896db4d3924b76bc2c1249 Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Wed, 15 Jul 2020 11:13:19 +0200
Subject: [PATCH] OO-4804: Apply user status to filters

---
 .../form/flexible/elements/FlexiTableElement.java      |  5 ++++-
 .../impl/elements/table/FlexiTableElementImpl.java     | 10 ++++++++++
 .../olat/user/ui/admin/UserSearchTableController.java  |  9 ++++++++-
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
index 96968e3de2d..03da67f6256 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java
@@ -25,6 +25,7 @@
 */ 
 package org.olat.core.gui.components.form.flexible.elements;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
@@ -36,9 +37,9 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.ExtendedFl
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiColumnModel;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponent;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableComponentDelegate;
+import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableCssDelegate;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableRendererType;
 import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTreeTableNode;
-import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableCssDelegate;
 import org.olat.core.gui.components.velocity.VelocityContainer;
 import org.olat.core.gui.control.generic.ajax.autocompletion.ListProvider;
 import org.olat.core.util.UserSession;
@@ -282,6 +283,8 @@ public interface FlexiTableElement extends FormItem, FormItemCollection {
 	 */
 	public void setSelectedFilterKey(String key);
 	
+	public void setSelectedFilterKeys(Collection<String> keys);
+	
 	/**
 	 * Make sure that the option multi-selection is enabled if you specify several filters.
 	 * 
diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
index 58712fadbd1..f91f0ee3319 100644
--- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
+++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java
@@ -430,6 +430,16 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle
 			}
 		}
 	}
+	
+	@Override
+	public void setSelectedFilterKeys(Collection<String> keys) {
+		if(filters != null) {
+			for(FlexiTableFilter filter:filters) {
+				boolean selected = keys.contains(filter.getFilter());
+				filter.setSelected(selected);
+			}
+		}
+	}
 
 	@Override
 	public void setSelectedFilters(List<FlexiTableFilter> selectedFilters) {
diff --git a/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java b/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java
index f37b408f845..96abdbf796a 100644
--- a/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java
+++ b/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java
@@ -20,10 +20,12 @@
 package org.olat.user.ui.admin;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.olat.admin.user.UserAdminController;
 import org.olat.admin.user.UsermanagerUserSearchController;
@@ -263,8 +265,13 @@ public class UserSearchTableController extends FormBasicController implements Ac
 		selectedFilters.add(loginDeniedFilter);
 		tableEl.setSelectedFilters(selectedFilters);
 	}
-	
+
 	public void loadModel(SearchIdentityParams params) {
+		if (params.getExactStatusList() != null && !params.getExactStatusList().isEmpty()) {
+			Collection<String> keys = params.getExactStatusList().stream().map(i -> Integer.toString(i)).collect(Collectors.toSet());
+			tableEl.setSelectedFilterKeys(keys);
+			params.setExactStatusList(null);
+		}
 		currentSearchParams = params;
 		UserSearchDataSource dataSource = new UserSearchDataSource(params, userPropertyHandlers, getLocale());
 		tableModel.setSource(dataSource);
-- 
GitLab