Search in sources :

Example 1 with BrowseBy

use of com.zimbra.cs.mailbox.Mailbox.BrowseBy in project zm-mailbox by Zimbra.

the class Browse method handle.

@Override
public Element handle(Element request, Map<String, Object> context) throws ServiceException {
    ZimbraSoapContext zsc = getZimbraSoapContext(context);
    Mailbox mbox = getRequestedMailbox(zsc);
    String browseBy = request.getAttribute(MailConstants.A_BROWSE_BY);
    BrowseBy parsedBrowseBy = BrowseBy.valueOf(browseBy.toLowerCase());
    String regex = request.getAttribute(MailConstants.A_REGEX, "").toLowerCase();
    int max = (int) (request.getAttributeLong(MailConstants.A_MAX_TO_RETURN, 0));
    List<BrowseTerm> terms;
    try {
        terms = mbox.browse(getOperationContext(zsc, context), parsedBrowseBy, regex, max);
    } catch (IOException e) {
        throw ServiceException.FAILURE("Failed to browse terms", e);
    }
    Element response = zsc.createElement(MailConstants.BROWSE_RESPONSE);
    for (BrowseTerm term : terms) {
        if (term instanceof DomainBrowseTerm) {
            DomainBrowseTerm domain = (DomainBrowseTerm) term;
            Element e = response.addElement(MailConstants.E_BROWSE_DATA).setText(domain.getText());
            String flags = domain.getHeaderFlags();
            if (!flags.isEmpty()) {
                e.addAttribute(MailConstants.A_BROWSE_DOMAIN_HEADER, flags);
            }
            e.addAttribute(MailConstants.A_FREQUENCY, domain.getFreq());
        } else {
            Element e = response.addElement(MailConstants.E_BROWSE_DATA).setText(term.getText());
            e.addAttribute(MailConstants.A_FREQUENCY, term.getFreq());
        }
    }
    return response;
}
Also used : BrowseBy(com.zimbra.cs.mailbox.Mailbox.BrowseBy) DomainBrowseTerm(com.zimbra.cs.index.DomainBrowseTerm) BrowseTerm(com.zimbra.cs.index.BrowseTerm) Mailbox(com.zimbra.cs.mailbox.Mailbox) ZimbraSoapContext(com.zimbra.soap.ZimbraSoapContext) DomainBrowseTerm(com.zimbra.cs.index.DomainBrowseTerm) Element(com.zimbra.common.soap.Element) IOException(java.io.IOException)

Aggregations

Element (com.zimbra.common.soap.Element)1 BrowseTerm (com.zimbra.cs.index.BrowseTerm)1 DomainBrowseTerm (com.zimbra.cs.index.DomainBrowseTerm)1 Mailbox (com.zimbra.cs.mailbox.Mailbox)1 BrowseBy (com.zimbra.cs.mailbox.Mailbox.BrowseBy)1 ZimbraSoapContext (com.zimbra.soap.ZimbraSoapContext)1 IOException (java.io.IOException)1