Search in sources :

Example 6 with GalSearchControl

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();
}
Also used : GalSearchControl(com.zimbra.cs.gal.GalSearchControl) ZimbraSoapContext(com.zimbra.soap.ZimbraSoapContext) GalSearchParams(com.zimbra.cs.gal.GalSearchParams) Domain(com.zimbra.cs.account.Domain) Provisioning(com.zimbra.cs.account.Provisioning) GalSearchType(com.zimbra.soap.type.GalSearchType)

Example 7 with GalSearchControl

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;
}
Also used : GalSearchControl(com.zimbra.cs.gal.GalSearchControl) GalSearchParams(com.zimbra.cs.gal.GalSearchParams)

Example 8 with GalSearchControl

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;
}
Also used : GalSearchControl(com.zimbra.cs.gal.GalSearchControl) GalSearchParams(com.zimbra.cs.gal.GalSearchParams)

Example 9 with GalSearchControl

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();
}
Also used : GalSearchControl(com.zimbra.cs.gal.GalSearchControl) Element(com.zimbra.common.soap.Element) GalSearchParams(com.zimbra.cs.gal.GalSearchParams) EntrySearchFilter(com.zimbra.cs.account.EntrySearchFilter)

Example 10 with GalSearchControl

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;
    }
}
Also used : GalSearchControl(com.zimbra.cs.gal.GalSearchControl) ServiceException(com.zimbra.common.service.ServiceException) GalSearchParams(com.zimbra.cs.gal.GalSearchParams) ServiceException(com.zimbra.common.service.ServiceException)

Aggregations

GalSearchControl (com.zimbra.cs.gal.GalSearchControl)10 GalSearchParams (com.zimbra.cs.gal.GalSearchParams)10 ZimbraSoapContext (com.zimbra.soap.ZimbraSoapContext)4 GalSearchType (com.zimbra.soap.type.GalSearchType)4 Account (com.zimbra.cs.account.Account)2 Domain (com.zimbra.cs.account.Domain)2 EntrySearchFilter (com.zimbra.cs.account.EntrySearchFilter)2 Provisioning (com.zimbra.cs.account.Provisioning)2 ServiceException (com.zimbra.common.service.ServiceException)1 Element (com.zimbra.common.soap.Element)1 MemberOfSelector (com.zimbra.soap.account.type.MemberOfSelector)1