Search in sources :

Example 1 with CardDavInfo

use of org.bedework.calfacade.configs.CardDavInfo in project bw-calendar-engine by Bedework.

the class AbstractDirImpl method find.

@Override
public List<BwPrincipalInfo> find(final String cua, final String cutype, final boolean expand, final Holder<Boolean> truncated) throws CalFacadeException {
    final CardDavInfo cdi = getCardDavInfo(false);
    if ((cdi == null) || (cdi.getHost() == null)) {
        return null;
    }
    BasicHttpClient cdc = null;
    try {
        cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
        final List<BwPrincipalInfo> pis = find(cdc, cdi, cua, cutype);
        if (!expand) {
            return pis;
        }
        for (final BwPrincipalInfo pi : pis) {
            if (!Kind.GROUP.getValue().equalsIgnoreCase(pi.getKind())) {
                continue;
            }
            final List<BwPrincipalInfo> memberPis = new ArrayList<>();
            VCard card = pi.getCard();
            List<Property> members = card.getProperties(Id.MEMBER);
            if (members == null) {
                continue;
            }
            for (final Property p : members) {
                BwPrincipalInfo memberPi = fetch(cdc, cdi, p.getValue());
                if (memberPi != null) {
                    memberPis.add(memberPi);
                }
            }
            pi.setMembers(memberPis);
        }
        return pis;
    } catch (final Throwable t) {
        if (getLogger().isDebugEnabled()) {
            error(t);
        }
        throw new CalFacadeException(t);
    } finally {
        if (cdc != null) {
            try {
                cdc.release();
            } catch (final Throwable ignored) {
            }
        }
    }
}
Also used : ArrayList(java.util.ArrayList) BasicHttpClient(org.bedework.util.http.BasicHttpClient) CardDavInfo(org.bedework.calfacade.configs.CardDavInfo) BwPrincipalInfo(org.bedework.calfacade.BwPrincipalInfo) VCard(net.fortuna.ical4j.vcard.VCard) BooleanPrincipalProperty(org.bedework.calfacade.BwPrincipalInfo.BooleanPrincipalProperty) IntPrincipalProperty(org.bedework.calfacade.BwPrincipalInfo.IntPrincipalProperty) Property(net.fortuna.ical4j.vcard.Property) WebdavProperty(org.bedework.webdav.servlet.shared.WebdavProperty) BwProperty(org.bedework.calfacade.BwProperty) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException)

Example 2 with CardDavInfo

use of org.bedework.calfacade.configs.CardDavInfo in project bw-calendar-engine by Bedework.

the class AbstractDirImpl method getDirInfo.

@Override
public BwPrincipalInfo getDirInfo(final BwPrincipal p) throws CalFacadeException {
    BwPrincipalInfo pi = principalInfoMap.get(p.getPrincipalRef());
    if (pi != null) {
        return pi;
    }
    // If carddav lookup is enabled - use that
    final CardDavInfo cdi = getCardDavInfo(false);
    if ((cdi == null) || (cdi.getHost() == null)) {
        return null;
    }
    BasicHttpClient cdc = null;
    pi = new BwPrincipalInfo();
    try {
        cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
        pi.setPropertiesFromVCard(getCard(cdc, cdi.getContextPath(), p), "text/vcard");
    } catch (final Throwable t) {
        if (getLogger().isDebugEnabled()) {
            error(t);
        }
    } finally {
        if (cdc != null) {
            cdc.close();
        }
    }
    principalInfoMap.put(p.getPrincipalRef(), pi);
    return pi;
}
Also used : BasicHttpClient(org.bedework.util.http.BasicHttpClient) CardDavInfo(org.bedework.calfacade.configs.CardDavInfo) BwPrincipalInfo(org.bedework.calfacade.BwPrincipalInfo)

Example 3 with CardDavInfo

use of org.bedework.calfacade.configs.CardDavInfo in project bw-calendar-engine by Bedework.

the class AbstractDirImpl method find.

@Override
public List<BwPrincipalInfo> find(final List<WebdavProperty> props, final List<WebdavProperty> returnProps, final String cutype, final Holder<Boolean> truncated) throws CalFacadeException {
    final CardDavInfo cdi = getCardDavInfo(false);
    if ((cdi == null) || (cdi.getHost() == null)) {
        return null;
    }
    BasicHttpClient cdc = null;
    final String path = getCutypePath(cutype, cdi);
    String addrCtype = null;
    /* See if we want address data in any particular form */
    for (final WebdavProperty wd : returnProps) {
        if (!wd.getTag().equals(CarddavTags.addressData)) {
            continue;
        }
        addrCtype = wd.getAttr("content-type");
        break;
    }
    try {
        cdc = new BasicHttpClient(cdi.getHost(), cdi.getPort(), null, 15 * 1000);
        final List<MatchResult> mrs = matching(cdc, cdi.getContextPath() + path, addrCtype, props);
        final List<BwPrincipalInfo> pis = new ArrayList<>();
        if (mrs == null) {
            return pis;
        }
        for (final MatchResult mr : mrs) {
            final BwPrincipalInfo pi = new BwPrincipalInfo();
            pi.setPropertiesFromVCard(mr.card, addrCtype);
            pis.add(pi);
        }
        return pis;
    } catch (final Throwable t) {
        if (getLogger().isDebugEnabled()) {
            error(t);
        }
        throw new CalFacadeException(t);
    } finally {
        if (cdc != null) {
            cdc.close();
        }
    }
}
Also used : WebdavProperty(org.bedework.webdav.servlet.shared.WebdavProperty) ArrayList(java.util.ArrayList) BasicHttpClient(org.bedework.util.http.BasicHttpClient) CardDavInfo(org.bedework.calfacade.configs.CardDavInfo) BwPrincipalInfo(org.bedework.calfacade.BwPrincipalInfo) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException)

Aggregations

BwPrincipalInfo (org.bedework.calfacade.BwPrincipalInfo)3 CardDavInfo (org.bedework.calfacade.configs.CardDavInfo)3 BasicHttpClient (org.bedework.util.http.BasicHttpClient)3 ArrayList (java.util.ArrayList)2 CalFacadeException (org.bedework.calfacade.exc.CalFacadeException)2 WebdavProperty (org.bedework.webdav.servlet.shared.WebdavProperty)2 Property (net.fortuna.ical4j.vcard.Property)1 VCard (net.fortuna.ical4j.vcard.VCard)1 BooleanPrincipalProperty (org.bedework.calfacade.BwPrincipalInfo.BooleanPrincipalProperty)1 IntPrincipalProperty (org.bedework.calfacade.BwPrincipalInfo.IntPrincipalProperty)1 BwProperty (org.bedework.calfacade.BwProperty)1