package org.ovirt.engine.core.bll.adbroker;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.compat.LogCompat;
import org.ovirt.engine.core.compat.LogFactoryCompat;
import org.ovirt.engine.core.utils.jwin32.*;
import com.sun.jna.ptr.*;
import com.sun.jna.WString;
public class LUGetAdUserByUserNameCommand extends LUBrokerCommandBase {
private static LogCompat log = LogFactoryCompat.getLog(LUGetAdUserByUserNameCommand.class);
private String getUserName() {
return ((LdapSearchByUserNameParameters) getParameters()).getUserName();
}
public LUGetAdUserByUserNameCommand(LdapSearchByUserNameParameters parameters) {
super(parameters);
}
@Override
protected void ExecuteQuery() {
log.debug("ExecuteQuery, Entry");
IntByReference lToken = null;
PointerByReference p = new PointerByReference();
int nStatus;
IntByReference nEntriesRead;
IntByReference nTotalEntries;
IntByReference nResumeHandle;
if (jwin32.netapi32.NetUserGetInfo(new WString(this.getDomain()), new WString(this.getUserName()), 20, p
) == jwin32.NERR_Success) {
USER_INFO_20 ui = new USER_INFO_20(p.getValue());
log.debug("ui=" + ui.usri20_name);
AdUser user = populateUser(ui);
jwin32.netapi32.NetApiBufferFree(p.getValue());
// Getting the groups
// Seems local users don't get groups..
// TODO: check if this just strange or unused.
setReturnValue(user);
setSucceeded((getReturnValue() != null));
} else {
log.error("ExecuteQuery, NetUserGetInfo failed (" + jwin32.kernel32.GetLastError() + ")");
}
}
}