package org.ovirt.engine.core.bll.adbroker;
import java.util.List;
import org.ovirt.engine.core.common.businessentities.ad_groups;
import org.ovirt.engine.core.compat.Guid;
//
// JTODO - this needs testing -- Livnat
//
public class LdapGetAdGroupByGroupIdCommand extends LdapWithConfiguredCredentialsCommandBase {
private Guid getGroupId() {
return ((LdapSearchByIdParameters) getParameters()).getId();
}
public LdapGetAdGroupByGroupIdCommand(LdapSearchByIdParameters parameters) {
super(parameters);
}
@Override
protected void executeQuery(DirectorySearcher directorySearcher) {
Object group = null;
LdapQueryData queryData = new LdapQueryDataImpl();
queryData.setFilterParameters(new Object[] { getGroupId() });
queryData.setLdapQueryType(LdapQueryType.getGroupByGuid);
queryData.setDomain(getDomain());
Object searchResult = directorySearcher.FindOne(queryData);
if (searchResult != null) {
GroupSearchResult result = (GroupSearchResult) searchResult;
Guid groupId = result.getGuid();
if (!getGroupId().equals(groupId)) {
/**
* Cannot find group - group is Inactive
*/
group = new ad_groups(getGroupId());
} else {
String distinguishedName = result.getDistinguishedName();
List<String> memberOf = result.getMemberOf();
String groupName = LdapBrokerUtils.generateGroupDisplayValue(distinguishedName);
group = new ad_groups(groupId, groupName, getDomain(), distinguishedName, memberOf);
}
}
setReturnValue(group);
setSucceeded(true);
}
}