/**
* @return List of identities that match the criterias from the search form
*/
private List<Identity> findIdentitiesFromSearchForm() {
Manager secMgr = ManagerFactory.getManager();
// get user attributes from form
String login = searchform.getTextElement("login").getValue();
Integer status = null;
// get user fields from form
// build user fields search map
Map<String, String> userPropertiesSearch = new HashMap<String, String>();
for (UserPropertyHandler userPropertyHandler : searchform.userPropertyHandlers) {
if (userPropertyHandler == null) continue;
FormElement ui = searchform.getFormElement(userPropertyHandler.getName());
String uiValue = userPropertyHandler.getStringValue(ui);
if (StringHelper.containsNonWhitespace(uiValue)) {
userPropertiesSearch.put(userPropertyHandler.getName(), uiValue);
}
}
if (userPropertiesSearch.isEmpty()) userPropertiesSearch = null;
// get group memberships from form
List<SecurityGroup> groupsList = new ArrayList<SecurityGroup>();
if (searchform.getCheckBoxElement("admin") != null && searchform.getCheckBoxElement("admin").isChecked()) {
SecurityGroup group = secMgr.findSecurityGroupByName(org.olat.basesecurity.Constants.GROUP_ADMIN);
groupsList.add(group);
}
if (searchform.getCheckBoxElement("author") != null && searchform.getCheckBoxElement("author").isChecked()) {
SecurityGroup group = secMgr.findSecurityGroupByName(org.olat.basesecurity.Constants.GROUP_AUTHORS);
groupsList.add(group);
}
if (searchform.getCheckBoxElement("groupmanager") != null && searchform.getCheckBoxElement("groupmanager").isChecked()) {
SecurityGroup group = secMgr.findSecurityGroupByName(org.olat.basesecurity.Constants.GROUP_GROUPMANAGERS);
groupsList.add(group);
}
if (searchform.getCheckBoxElement("usermanager") != null && searchform.getCheckBoxElement("usermanager").isChecked()) {
SecurityGroup group = secMgr.findSecurityGroupByName(org.olat.basesecurity.Constants.GROUP_USERMANAGERS);
groupsList.add(group);
}
if (searchform.getCheckBoxElement("oresmanager") != null && searchform.getCheckBoxElement("oresmanager").isChecked()) {
SecurityGroup group = secMgr.findSecurityGroupByName(org.olat.basesecurity.Constants.GROUP_INST_ORES_MANAGER);
groupsList.add(group);
}
if (searchform.getSingleSelectionElement("status") != null) {
status = new Integer(searchform.getSingleSelectionElement("status").getSelectedKey());
}
SecurityGroup[] groups = groupsList.toArray(new SecurityGroup[groupsList.size()]);
// no permissions in this form so far
PermissionOnResourceable[] permissionOnResources = null;
// get selected authentication providers from list
List<String> authProvidersList = new ArrayList<String>();
// get all authentication provider from configuration
Collection providers = LoginModule.getAuthenticationProviders();
Iterator iter = providers.iterator();
while (iter.hasNext()) {
AuthenticationProvider provider = (AuthenticationProvider) iter.next();
if (provider.isEnabled()) {
String providerName = provider.getName();
CheckBoxElement authElem = searchform.getCheckBoxElement("auth." + providerName);
if (authElem != null && authElem.isChecked()) {
authProvidersList.add(providerName);
}
}
}
if(WebDAVManager.getInstance().isEnabled()) {
CheckBoxElement authElem = searchform.getCheckBoxElement("auth." + WebDAVAuthManager.PROVIDER_WEBDAV);
if (authElem != null && authElem.isChecked()) {
authProvidersList.add(WebDAVAuthManager.PROVIDER_WEBDAV);
}
}
// add null provider as special case
if (searchform.getCheckBoxElement("admin") != null && searchform.getCheckBoxElement("noAuth").isChecked()) {
authProvidersList.add(null);
}
String[] authProviders = (String[]) authProvidersList.toArray(new String[authProvidersList.size()]);
// get date constraints from form
Date createdBefore = searchform.getDateElement("beforeDate").getDate();
Date createdAfter = searchform.getDateElement("afterDate").getDate();
// now perform power search
List<Identity> myIdentities = secMgr.getIdentitiesByPowerSearch((login.equals("") ? null : login), userPropertiesSearch, true, groups,
permissionOnResources, authProviders, createdAfter, createdBefore, status);
return myIdentities;
}