use of com.zimbra.cs.gal.GalSearchControl in project zm-mailbox by Zimbra.
the class AutoCompleteGal method handle.
@Override
public Element handle(Element request, Map<String, Object> context) throws ServiceException {
ZimbraSoapContext zsc = getZimbraSoapContext(context);
String domainName = request.getAttribute(AdminConstants.A_DOMAIN);
Provisioning prov = Provisioning.getInstance();
Domain domain = prov.get(Key.DomainBy.name, domainName);
if (domain == null)
throw AccountServiceException.NO_SUCH_DOMAIN(domainName);
checkDomainRight(zsc, domain, Admin.R_accessGAL);
String name = request.getAttribute(AccountConstants.E_NAME);
int limit = (int) request.getAttributeLong(AdminConstants.A_LIMIT, 0);
String typeStr = request.getAttribute(AccountConstants.A_TYPE, GalSearchType.account.name());
GalSearchType type = GalSearchType.fromString(typeStr);
String galAcctId = request.getAttribute(AccountConstants.A_GAL_ACCOUNT_ID, null);
GalSearchParams params = new GalSearchParams(domain, zsc);
params.setType(type);
params.setRequest(request);
params.setQuery(name);
params.setLimit(limit);
params.setResponseName(AdminConstants.AUTO_COMPLETE_GAL_RESPONSE);
if (galAcctId != null)
params.setGalSyncAccount(Provisioning.getInstance().getAccountById(galAcctId));
params.setResultCallback(new SearchGal.AdminGalCallback(params));
GalSearchControl gal = new GalSearchControl(params);
gal.autocomplete();
return params.getResultCallback().getResponse();
}
use of com.zimbra.cs.gal.GalSearchControl in project zm-mailbox by Zimbra.
the class LdapProvisioning method autoCompleteGal.
@Override
public SearchGalResult autoCompleteGal(Domain domain, String query, GalSearchType type, int limit, GalContact.Visitor visitor) throws ServiceException {
SearchGalResult searchResult = SearchGalResult.newSearchGalResult(visitor);
GalSearchParams params = new GalSearchParams(domain, null);
params.setQuery(query);
params.setType(type);
params.setOp(GalOp.autocomplete);
params.setLimit(limit);
params.setGalResult(searchResult);
LdapOnlyGalSearchResultCallback callback = new LdapOnlyGalSearchResultCallback(params, visitor);
params.setResultCallback(callback);
GalSearchControl gal = new GalSearchControl(params);
gal.ldapSearch();
// Collections.sort(searchResult.getMatches()); sort?
return searchResult;
}
use of com.zimbra.cs.gal.GalSearchControl in project zm-mailbox by Zimbra.
the class LdapProvisioning method syncGal.
@Override
public SearchGalResult syncGal(Domain domain, String token, GalContact.Visitor visitor) throws ServiceException {
SearchGalResult searchResult = SearchGalResult.newSearchGalResult(visitor);
GalSearchParams params = new GalSearchParams(domain, null);
params.setQuery("");
params.setToken(token);
params.setType(GalSearchType.all);
params.setOp(GalOp.sync);
params.setFetchGroupMembers(true);
params.setNeedSMIMECerts(true);
params.setGalResult(searchResult);
LdapOnlyGalSearchResultCallback callback = new LdapOnlyGalSearchResultCallback(params, visitor);
params.setResultCallback(callback);
GalSearchControl gal = new GalSearchControl(params);
gal.ldapSearch();
return searchResult;
}
use of com.zimbra.cs.gal.GalSearchControl in project zm-mailbox by Zimbra.
the class SearchCalendarResources method searchGal.
private static Element searchGal(ZimbraSoapContext zsc, Account account, Element request) throws ServiceException {
Element name = request.getOptionalElement(AccountConstants.E_NAME);
EntrySearchFilter filter = GalExtraSearchFilter.parseSearchFilter(request);
GalSearchParams params = new GalSearchParams(account, zsc);
params.setQuery(name == null ? null : name.getText());
if (filter != null) {
params.setExtraQueryCallback(new CalendarResourceExtraQueryCallback(filter));
}
params.setType(GalSearchType.resource);
params.setRequest(request);
params.setResponseName(AccountConstants.SEARCH_CALENDAR_RESOURCES_RESPONSE);
// also note that mailbox search has a hard limit of 1000
if (request.getAttribute(MailConstants.A_QUERY_LIMIT, null) == null)
request.addAttribute(MailConstants.A_QUERY_LIMIT, 100);
// set limit for the LDAP search
// paging is not supported for LDAP search, set a high limit
params.setLimit(LC.calendar_resource_ldap_search_maxsize.intValue());
String attrsStr = request.getAttribute(AccountConstants.A_ATTRS, null);
String[] attrs = attrsStr == null ? null : attrsStr.split(",");
Set<String> attrsSet = attrs == null ? null : new HashSet<String>(Arrays.asList(attrs));
params.setResultCallback(new CalendarResourceGalSearchResultCallback(params, filter, attrsSet));
GalSearchControl gal = new GalSearchControl(params);
gal.search();
return params.getResultCallback().getResponse();
}
use of com.zimbra.cs.gal.GalSearchControl in project zm-mailbox by Zimbra.
the class ContactAutoComplete method queryGal.
private void queryGal(String str, AutoCompleteResult result) {
ZimbraLog.gal.debug("querying gal");
GalSearchParams params = new GalSearchParams(mRequestedAcct, mZsc);
params.setQuery(str);
params.setType(mSearchType);
params.setLimit(200);
params.setNeedCanExpand(mNeedCanExpand);
params.setResultCallback(new AutoCompleteCallback(str, result, params));
try {
try {
GalSearchControl gal = new GalSearchControl(params);
gal.autocomplete();
} catch (ServiceException e) {
if (ServiceException.PERM_DENIED.equals(e.getCode())) {
// do not log stack
ZimbraLog.gal.debug("cannot autocomplete gal: %s", e.getMessage());
} else {
throw e;
}
}
} catch (Exception e) {
ZimbraLog.gal.warn("cannot autocomplete gal", e);
return;
}
}
Aggregations