package org.ovirt.engine.core.bll;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.ovirt.engine.core.aaa.ProfileEntry;
import org.ovirt.engine.core.aaa.SsoOAuthServiceUtils;
import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
public class GetAAAProfileListQuery<P extends VdcQueryParametersBase> extends QueriesCommandBase<P> {
public GetAAAProfileListQuery(P parameters) {
super(parameters);
}
@Override
protected void executeQueryCommand() {
Map<String, Object> response = SsoOAuthServiceUtils.getProfileList();
List<ProfileEntry> names = new ArrayList<>();
if (response.containsKey("result")) {
names = ((List<Map<String, Object>>) response.get("result")).stream()
.map(this::mapToProfileEntry)
.collect(Collectors.toList());
}
Collections.sort(names, (lhs, rhs) ->
lhs.getProfile().compareTo(rhs.getProfile()) != 0 ?
lhs.getProfile().compareTo(rhs.getProfile())
: lhs.getAuthz().compareTo(rhs.getAuthz())
);
getQueryReturnValue().setReturnValue(names);
}
private ProfileEntry mapToProfileEntry(Map<String, Object> profileInfo) {
return new ProfileEntry((String) profileInfo.get("authn_name"),
(String) profileInfo.get("authz_name"),
(boolean) profileInfo.get("capability_password_auth"));
}
}