Search in sources :

Example 1 with BwString

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

the class LocationRule method end.

@Override
public void end(final String ns, final String name) throws Exception {
    BwLocation entity = (BwLocation) pop();
    globals.counts[globals.locations]++;
    if (entity.getUid() == null) {
        // Presume migrating
        entity.initUid();
    }
    fixSharableEntity(entity, "Location");
    if (entity.getAddress() == null) {
        entity.setAddress(new BwString(null, " "));
        warn("Null address for " + entity);
    }
    try {
        globals.rintf.restoreLocation(entity);
    } catch (Throwable t) {
        warn("Unable to restore " + entity + " with owner " + entity.getOwnerHref());
        throw new Exception(t);
    }
}
Also used : BwLocation(org.bedework.calfacade.BwLocation) BwString(org.bedework.calfacade.BwString)

Example 2 with BwString

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

the class BwObjectFilter method match.

/* ====================================================================
   *                   matching methods
   * ==================================================================== */
@Override
public boolean match(final Object o, final String userHref) throws WebdavException {
    ObjectFilter of = getEntity();
    Object ent = of.getEntity();
    boolean not = of.getNot();
    String val = null;
    Integer ival = null;
    if (ent instanceof BwCalendar) {
        val = ((BwCalendar) ent).getPath();
    } else if (ent instanceof String) {
        val = (String) ent;
    } else if (ent instanceof Integer) {
        ival = (Integer) ent;
    } else {
        throw new WebdavException("Unmatchable filter");
    }
    BwEvent ev = null;
    if (o instanceof BwEvent) {
        ev = (BwEvent) o;
    }
    if (of instanceof EntityTypeFilter) {
        if (ev == null) {
            return false;
        }
        if (not) {
            return ev.getEntityType() != ival;
        }
        return ev.getEntityType() == ival;
    }
    PropertyInfoIndex pii = of.getPropertyIndex();
    BwIcalPropertyInfoEntry pi = BwIcalPropertyInfo.getPinfo(pii);
    if (pi.getParam()) {
        pii = of.getParentPropertyIndex();
    }
    switch(pii) {
        case CLASS:
            if (ev.getClassification() == null) {
                return false;
            }
            return stringMatch(ev.getClassification(), val);
        case CREATED:
            return stringMatch(ev.getCreated(), val);
        case DESCRIPTION:
            for (BwLongString ls : ev.getDescriptions()) {
                if (stringMatch(ls.getValue(), val)) {
                    return true;
                }
            }
            return false;
        case DTSTAMP:
            return stringMatch(ev.getDtstamp(), val);
        case DTEND:
        /* Event only */
        case DUE:
            /* Todo only */
            return matchDateTime(pi, ev.getDtend(), val);
        case DTSTART:
            return matchDateTime(pi, ev.getDtstart(), val);
        case DURATION:
            return stringMatch(ev.getDuration(), val);
        case GEO:
            if (ev.getGeo() == null) {
                return false;
            }
            return stringMatch(ev.getGeo().toString(), val);
        case LAST_MODIFIED:
            return stringMatch(ev.getLastmod(), val);
        case LOCATION:
            if (ev.getLocation() == null) {
                return false;
            }
            return stringMatch(ev.getLocation().getAddress().getValue(), val);
        case ORGANIZER:
            if (ev.getOrganizer() == null) {
                return false;
            }
            return stringMatch(ev.getOrganizer().getOrganizerUri(), val);
        case PRIORITY:
            if (ev.getPriority() == null) {
                return false;
            }
            return stringMatch(String.valueOf(ev.getPriority()), val);
        case RECURRENCE_ID:
            if (ev.getRecurrenceId() == null) {
                return false;
            }
            return stringMatch(ev.getRecurrenceId(), val);
        case SEQUENCE:
            return stringMatch(String.valueOf(ev.getSequence()), val);
        case STATUS:
            if (ev.getStatus() == null) {
                return false;
            }
            return stringMatch(ev.getStatus(), val);
        case SUMMARY:
            for (BwString s : ev.getSummaries()) {
                if (stringMatch(s.getValue(), val)) {
                    return true;
                }
            }
            return false;
        case UID:
            return stringMatch(ev.getUid(), val);
        case URL:
            if (ev.getLink() == null) {
                return false;
            }
            return stringMatch(ev.getLink(), val);
        case TRANSP:
            try {
                if (ev.getPeruserTransparency(userHref) == null) {
                    return false;
                }
                return stringMatch(ev.getPeruserTransparency(userHref), val);
            } catch (Throwable t) {
                throw new WebdavException(t);
            }
        case COMPLETED:
            if (ev.getCompleted() == null) {
                return false;
            }
            return stringMatch(ev.getCompleted(), val);
        case PERCENT_COMPLETE:
            if (ev.getPercentComplete() == null) {
                return false;
            }
            return stringMatch(String.valueOf(ev.getPercentComplete()), val);
        case ATTACH:
            break;
        case ATTENDEE:
            break;
        case CATEGORIES:
            for (BwCategory cat : ev.getCategories()) {
                if (stringMatch(cat.getWordVal(), val)) {
                    return true;
                }
            }
            return false;
        case COMMENT:
            for (BwString s : ev.getComments()) {
                if (stringMatch(s.getValue(), val)) {
                    return true;
                }
            }
            return false;
        case CONTACT:
            for (BwContact c : ev.getContacts()) {
                if (stringMatch(c.getCn().getValue(), val)) {
                    return true;
                }
            }
            return false;
        case EXDATE:
            for (BwDateTime dt : ev.getExdates()) {
                if (stringMatch(dt.getDtval(), val)) {
                    return true;
                }
            }
            return false;
        case EXRULE:
            for (String s : ev.getExrules()) {
                if (stringMatch(s, val)) {
                    return true;
                }
            }
            return false;
        case REQUEST_STATUS:
            for (BwRequestStatus rs : ev.getRequestStatuses()) {
                if (stringMatch(rs.getCode(), val)) {
                    return true;
                }
            }
            return false;
        case RELATED_TO:
            if (ev.getRelatedTo() == null) {
                return false;
            }
            return stringMatch(ev.getRelatedTo().getValue(), val);
        case RESOURCES:
            for (BwString s : ev.getResources()) {
                if (stringMatch(s.getValue(), val)) {
                    return true;
                }
            }
            return false;
        case RDATE:
            for (BwDateTime dt : ev.getRdates()) {
                if (stringMatch(dt.getDtval(), val)) {
                    return true;
                }
            }
            return false;
        case RRULE:
            for (String s : ev.getRrules()) {
                if (stringMatch(s, val)) {
                    return true;
                }
            }
            return false;
        case FREEBUSY:
            break;
        case TZID:
            break;
        case TZNAME:
            break;
        case TZOFFSETFROM:
            break;
        case TZOFFSETTO:
            break;
        case TZURL:
            break;
        case ACTION:
            break;
        case REPEAT:
            break;
        case TRIGGER:
            break;
        case COLLECTION:
            return stringMatch(ev.getColPath(), val);
        case CREATOR:
            return stringMatch(ev.getCreatorHref(), val);
        case OWNER:
            return stringMatch(ev.getOwnerHref(), val);
        case ENTITY_TYPE:
            break;
    }
    return false;
}
Also used : BwDateTime(org.bedework.calfacade.BwDateTime) BwRequestStatus(org.bedework.calfacade.BwRequestStatus) WebdavException(org.bedework.webdav.servlet.shared.WebdavException) BwCategory(org.bedework.calfacade.BwCategory) BwEvent(org.bedework.calfacade.BwEvent) ObjectFilter(org.bedework.caldav.util.filter.ObjectFilter) BwString(org.bedework.calfacade.BwString) BwLongString(org.bedework.calfacade.BwLongString) BwCalendar(org.bedework.calfacade.BwCalendar) BwString(org.bedework.calfacade.BwString) BwContact(org.bedework.calfacade.BwContact) EntityTypeFilter(org.bedework.caldav.util.filter.EntityTypeFilter) BwLongString(org.bedework.calfacade.BwLongString) PropertyInfoIndex(org.bedework.util.calendar.PropertyIndex.PropertyInfoIndex) BwIcalPropertyInfoEntry(org.bedework.calfacade.ical.BwIcalPropertyInfo.BwIcalPropertyInfoEntry)

Example 3 with BwString

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

the class ToXEvent method toComponent.

/**
 * Make a BaseComponentType component from a BwEvent object. This may produce a
 * VEvent, VTodo or VJournal.
 *
 * @param val
 * @param isOverride - true if event object is an override
 * @param pattern - if non-null limit returned components and values to those
 *                  supplied in the pattern.
 * @return JAXBElement<? extends BaseComponentType>
 * @throws CalFacadeException
 */
public static JAXBElement<? extends BaseComponentType> toComponent(final BwEvent val, final boolean isOverride, final boolean wrapXprops, final BaseComponentType pattern) throws CalFacadeException {
    if (val == null) {
        return null;
    }
    boolean isInstance = false;
    try {
        JAXBElement<? extends BaseComponentType> el;
        boolean freeBusy = false;
        boolean todo = false;
        int entityType = val.getEntityType();
        if (entityType == IcalDefs.entityTypeEvent) {
            el = of.createVevent(new VeventType());
        } else if (entityType == IcalDefs.entityTypeTodo) {
            el = of.createVtodo(new VtodoType());
            todo = true;
        } else if (entityType == IcalDefs.entityTypeJournal) {
            el = of.createVjournal(new VjournalType());
        } else if (entityType == IcalDefs.entityTypeFreeAndBusy) {
            el = of.createVfreebusy(new VfreebusyType());
            freeBusy = true;
        } else {
            throw new CalFacadeException("org.bedework.invalid.entity.type", String.valueOf(entityType));
        }
        BaseComponentType comp = el.getValue();
        Class masterClass = comp.getClass();
        comp.setProperties(new ArrayOfProperties());
        List<JAXBElement<? extends BasePropertyType>> pl = comp.getProperties().getBasePropertyOrTzid();
        if (emit(pattern, masterClass, RecurrenceIdPropType.class)) {
            String strval = val.getRecurrenceId();
            if ((strval != null) && (strval.length() > 0)) {
                isInstance = true;
                // DORECUR - we should be restoring to original form.
                /* Try using timezone from dtstart so we can more often be in same form
           * as original.
           */
                BwDateTime dts = val.getDtstart();
                RecurrenceIdPropType ri = new RecurrenceIdPropType();
                String tzid = null;
                if (dts.getDateType()) {
                    // RECUR - fix all day recurrences sometime
                    if (strval.length() > 8) {
                        // Try to fix up bad all day recurrence ids. - assume a local timezone
                        strval = strval.substring(0, 8);
                    }
                    ri.setDate(XcalUtil.fromDtval(strval));
                } else {
                    if (!val.getForceUTC()) {
                        if ((dts != null) && !dts.isUTC()) {
                            tzid = dts.getTzid();
                        }
                    }
                    XcalUtil.initDt(ri, strval, tzid);
                }
                pl.add(of.createRecurrenceId(ri));
            }
        }
        /* ------------------- Alarms -------------------- */
        processEventAlarm(val, comp, pattern, masterClass);
        /* ------------------- Attachments -------------------- */
        if (emit(pattern, masterClass, AttachPropType.class)) {
            if (val.getNumAttachments() > 0) {
                for (BwAttachment att : val.getAttachments()) {
                // pl.add(setAttachment(att));
                }
            }
        }
        /* ------------------- Attendees -------------------- */
        if (emit(pattern, masterClass, AttendeePropType.class)) {
            if (val.getNumAttendees() > 0) {
                for (BwAttendee att : val.getAttendees()) {
                    pl.add(of.createAttendee(makeAttendee(att)));
                }
            }
        }
        if (emit(pattern, masterClass, CategoriesPropType.class)) {
            if (val.getNumCategories() > 0) {
                // LANG - filter on language - group language in one cat list?
                for (BwCategory cat : val.getCategories()) {
                    CategoriesPropType c = new CategoriesPropType();
                    c.getText().add(cat.getWord().getValue());
                    pl.add(of.createCategories((CategoriesPropType) langProp(c, cat.getWord())));
                }
            }
        }
        if (emit(pattern, masterClass, ClassPropType.class)) {
            String pval = val.getClassification();
            if (pval != null) {
                ClassPropType c = new ClassPropType();
                c.setText(pval);
                pl.add(of.createClass(c));
            }
        }
        if (emit(pattern, masterClass, CommentPropType.class)) {
            if (val.getNumComments() > 0) {
                for (BwString str : val.getComments()) {
                    CommentPropType c = new CommentPropType();
                    c.setText(str.getValue());
                    pl.add(of.createComment((CommentPropType) langProp(c, str)));
                }
            }
        }
        if (emit(pattern, masterClass, CompletedPropType.class)) {
            if ((entityType == IcalDefs.entityTypeTodo) && (val.getCompleted() != null)) {
                CompletedPropType c = new CompletedPropType();
                c.setUtcDateTime(XcalUtil.getXMlUTCCal(val.getCompleted()));
                pl.add(of.createCompleted(c));
            }
        }
        if (emit(pattern, masterClass, ContactPropType.class)) {
            if (val.getNumContacts() > 0) {
                for (BwContact ctct : val.getContacts()) {
                    // LANG
                    ContactPropType c = new ContactPropType();
                    c.setText(ctct.getCn().getValue());
                    pl.add(of.createContact((ContactPropType) langProp(uidProp(altrepProp(c, ctct.getLink()), ctct.getUid()), ctct.getCn())));
                }
            }
        }
        if (emit(pattern, masterClass, CreatedPropType.class)) {
            CreatedPropType created = new CreatedPropType();
            created.setUtcDateTime(XcalUtil.getXMlUTCCal(val.getCreated()));
            pl.add(of.createCreated(created));
        }
        if (emit(pattern, masterClass, DescriptionPropType.class)) {
            BwStringBase bwstr = val.findDescription(null);
            if (bwstr != null) {
                DescriptionPropType desc = new DescriptionPropType();
                if (bwstr.getValue().contains("Â")) {
                    warn("Odd character  in description: " + bwstr.getValue());
                }
                desc.setText(bwstr.getValue());
                pl.add(of.createDescription((DescriptionPropType) langProp(desc, bwstr)));
            }
        }
        if ((todo && emit(pattern, masterClass, DuePropType.class)) || (!todo && emit(pattern, masterClass, DtendPropType.class))) {
            if (val.getEndType() == BwEvent.endTypeDate) {
                if (todo) {
                    DuePropType due = (DuePropType) makeDateDatetime(new DuePropType(), val.getDtend(), freeBusy | val.getForceUTC());
                    pl.add(of.createDue(due));
                } else {
                    DtendPropType dtend = (DtendPropType) makeDateDatetime(new DtendPropType(), val.getDtend(), freeBusy | val.getForceUTC());
                    pl.add(of.createDtend(dtend));
                }
            } else if (val.getEndType() == BwEvent.endTypeDuration) {
                DurationPropType dur = new DurationPropType();
                dur.setDuration(val.getDuration());
                pl.add(of.createDuration(dur));
            }
        }
        if (emit(pattern, masterClass, DtstampPropType.class)) {
            DtstampPropType dtstamp = new DtstampPropType();
            dtstamp.setUtcDateTime(XcalUtil.getXMlUTCCal(val.getDtstamp()));
            pl.add(of.createDtstamp(dtstamp));
        }
        if (emit(pattern, masterClass, DtstartPropType.class)) {
            if ((val.getNoStart() == null) || !val.getNoStart()) {
                DtstartPropType dtstart = (DtstartPropType) makeDateDatetime(new DtstartPropType(), val.getDtstart(), freeBusy | val.getForceUTC());
                pl.add(of.createDtstart(dtstart));
            }
        }
        if (emit(pattern, masterClass, FreebusyPropType.class)) {
            if (entityType == IcalDefs.entityTypeFreeAndBusy) {
                Collection<BwFreeBusyComponent> fbps = val.getFreeBusyPeriods();
                if (fbps != null) {
                    for (BwFreeBusyComponent fbc : fbps) {
                        FreebusyPropType fb = new FreebusyPropType();
                        /*
              int type = fbc.getType();
              FbtypeValueType fbtype;

              if (type == BwFreeBusyComponent.typeBusy) {
                fbtype = FbtypeValueType.BUSY;
              } else if (type == BwFreeBusyComponent.typeFree) {
                fbtype = FbtypeValueType.FREE;
              } else if (type == BwFreeBusyComponent.typeBusyUnavailable) {
                fbtype = FbtypeValueType.BUSY_UNAVAILABLE;
              } else if (type == BwFreeBusyComponent.typeBusyTentative) {
                fbtype = FbtypeValueType.BUSY_TENTATIVE;
              } else {
                fbtype = FbtypeValueType.BUSY;
  //              throw new CalFacadeException("Bad free-busy type " + type);
              }

              ArrayOfParameters pars = getAop(fb);

              FbtypeParamType f = new FbtypeParamType();
              f.setText(fbtype.name());
              */
                        ArrayOfParameters pars = getAop(fb);
                        FbtypeParamType f = new FbtypeParamType();
                        f.setText(BwFreeBusyComponent.fbtypes[fbc.getType()]);
                        JAXBElement<FbtypeParamType> param = of.createFbtype(f);
                        pars.getBaseParameter().add(param);
                        List<PeriodType> pdl = fb.getPeriod();
                        for (Period p : fbc.getPeriods()) {
                            PeriodType np = new PeriodType();
                            np.setStart(XcalUtil.getXMlUTCCal(p.getStart().toString()));
                            np.setEnd(XcalUtil.getXMlUTCCal(p.getEnd().toString()));
                            pdl.add(np);
                        }
                        pl.add(of.createFreebusy(fb));
                    }
                }
            }
        }
        if (emit(pattern, masterClass, GeoPropType.class)) {
            BwGeo geo = val.getGeo();
            if (geo != null) {
                GeoPropType g = new GeoPropType();
                g.setLatitude(geo.getLatitude().floatValue());
                g.setLatitude(geo.getLongitude().floatValue());
                pl.add(of.createGeo(g));
            }
        }
        if (emit(pattern, masterClass, LastModifiedPropType.class)) {
            LastModifiedPropType lm = new LastModifiedPropType();
            lm.setUtcDateTime(XcalUtil.getXMlUTCCal(val.getLastmod()));
            pl.add(of.createLastModified(lm));
        }
        if (emit(pattern, masterClass, LocationPropType.class)) {
            BwLocation loc = val.getLocation();
            if (loc != null) {
                LocationPropType l = new LocationPropType();
                l.setText(loc.getAddress().getValue());
                pl.add(of.createLocation((LocationPropType) langProp(uidProp(l, loc.getUid()), loc.getAddress())));
            }
        }
        if (emit(pattern, masterClass, OrganizerPropType.class)) {
            BwOrganizer org = val.getOrganizer();
            if (org != null) {
                pl.add(of.createOrganizer(makeOrganizer(org)));
            }
        }
        if (emit(pattern, masterClass, PercentCompletePropType.class)) {
            Integer pc = val.getPercentComplete();
            if (pc != null) {
                PercentCompletePropType p = new PercentCompletePropType();
                p.setInteger(BigInteger.valueOf(pc));
                pl.add(of.createPercentComplete(p));
            }
        }
        if (emit(pattern, masterClass, PriorityPropType.class)) {
            Integer prio = val.getPriority();
            if (prio != null) {
                PriorityPropType p = new PriorityPropType();
                p.setInteger(BigInteger.valueOf(prio));
                pl.add(of.createPriority(p));
            }
        }
        if (emit(pattern, masterClass, RelatedToPropType.class)) {
            BwRelatedTo relto = val.getRelatedTo();
            if (relto != null) {
                RelatedToPropType rt = new RelatedToPropType();
                rt.setUid(relto.getValue());
                if (relto.getRelType() != null) {
                    ArrayOfParameters pars = getAop(rt);
                    ReltypeParamType r = new ReltypeParamType();
                    r.setText(relto.getRelType());
                    JAXBElement<ReltypeParamType> param = of.createReltype(r);
                    pars.getBaseParameter().add(param);
                }
                pl.add(of.createRelatedTo(rt));
            }
        }
        if (emit(pattern, masterClass, ResourcesPropType.class)) {
            if (val.getNumResources() > 0) {
                /* This event has a resource */
                ResourcesPropType r = new ResourcesPropType();
                List<String> rl = r.getText();
                for (BwString str : val.getResources()) {
                    // LANG
                    rl.add(str.getValue());
                }
                pl.add(of.createResources(r));
            }
        }
        if (emit(pattern, masterClass, SequencePropType.class)) {
            if (val.getSequence() > 0) {
                SequencePropType s = new SequencePropType();
                s.setInteger(BigInteger.valueOf(val.getSequence()));
                pl.add(of.createSequence(s));
            }
        }
        if (emit(pattern, masterClass, StatusPropType.class)) {
            String status = val.getStatus();
            if ((status != null) && !status.equals(BwEvent.statusMasterSuppressed)) {
                StatusPropType s = new StatusPropType();
                s.setText(status);
                pl.add(of.createStatus(s));
            }
        }
        if (emit(pattern, masterClass, SummaryPropType.class)) {
            BwString bwstr = val.findSummary(null);
            if (bwstr != null) {
                SummaryPropType s = new SummaryPropType();
                s.setText(bwstr.getValue());
                s = (SummaryPropType) langProp(s, bwstr);
                pl.add(of.createSummary(s));
            }
        }
        if (emit(pattern, masterClass, TranspPropType.class)) {
            String strval = val.getTransparency();
            if ((strval != null) && (strval.length() > 0)) {
                TranspPropType t = new TranspPropType();
                t.setText(strval);
                pl.add(of.createTransp(t));
            }
        }
        if (emit(pattern, masterClass, UidPropType.class)) {
            UidPropType uid = new UidPropType();
            uid.setText(val.getUid());
            pl.add(of.createUid(uid));
        }
        if (emit(pattern, masterClass, UrlPropType.class)) {
            String strval = val.getLink();
            if (strval != null) {
                // Possibly drop this if we do it on input and check all data
                strval = strval.trim();
            }
            if ((strval != null) && (strval.length() > 0)) {
                UrlPropType u = new UrlPropType();
                u.setUri(strval);
                pl.add(of.createUrl(u));
            }
        }
        if (emit(pattern, masterClass, XBedeworkCostPropType.class)) {
            if (val.getCost() != null) {
                XBedeworkCostPropType c = new XBedeworkCostPropType();
                c.setText(val.getCost());
                pl.add(of.createXBedeworkCost(c));
            }
        }
        if (val.getNumXproperties() > 0) {
            try {
                xpropertiesToXcal(pl, val.getXproperties(), pattern, masterClass, wrapXprops);
            } catch (Throwable t) {
                // XXX For the moment swallow these.
                error(t);
            }
        }
        if (!isInstance && !isOverride && val.testRecurring()) {
            doRecurring(pattern, masterClass, val, pl);
        }
        return el;
    } catch (final CalFacadeException cfe) {
        throw cfe;
    } catch (final Throwable t) {
        throw new CalFacadeException(t);
    }
}
Also used : PeriodType(ietf.params.xml.ns.icalendar_2.PeriodType) VfreebusyType(ietf.params.xml.ns.icalendar_2.VfreebusyType) RelatedToPropType(ietf.params.xml.ns.icalendar_2.RelatedToPropType) BwRelatedTo(org.bedework.calfacade.BwRelatedTo) TranspPropType(ietf.params.xml.ns.icalendar_2.TranspPropType) BwCategory(org.bedework.calfacade.BwCategory) BwString(org.bedework.calfacade.BwString) CreatedPropType(ietf.params.xml.ns.icalendar_2.CreatedPropType) DescriptionPropType(ietf.params.xml.ns.icalendar_2.DescriptionPropType) DurationPropType(ietf.params.xml.ns.icalendar_2.DurationPropType) UrlPropType(ietf.params.xml.ns.icalendar_2.UrlPropType) ArrayOfProperties(ietf.params.xml.ns.icalendar_2.ArrayOfProperties) BaseComponentType(ietf.params.xml.ns.icalendar_2.BaseComponentType) BasePropertyType(ietf.params.xml.ns.icalendar_2.BasePropertyType) LastModifiedPropType(ietf.params.xml.ns.icalendar_2.LastModifiedPropType) ResourcesPropType(ietf.params.xml.ns.icalendar_2.ResourcesPropType) CategoriesPropType(ietf.params.xml.ns.icalendar_2.CategoriesPropType) PriorityPropType(ietf.params.xml.ns.icalendar_2.PriorityPropType) BwAttachment(org.bedework.calfacade.BwAttachment) XBedeworkCostPropType(ietf.params.xml.ns.icalendar_2.XBedeworkCostPropType) PercentCompletePropType(ietf.params.xml.ns.icalendar_2.PercentCompletePropType) BwFreeBusyComponent(org.bedework.calfacade.BwFreeBusyComponent) SummaryPropType(ietf.params.xml.ns.icalendar_2.SummaryPropType) BwLocation(org.bedework.calfacade.BwLocation) RecurrenceIdPropType(ietf.params.xml.ns.icalendar_2.RecurrenceIdPropType) ArrayOfParameters(ietf.params.xml.ns.icalendar_2.ArrayOfParameters) Period(net.fortuna.ical4j.model.Period) VjournalType(ietf.params.xml.ns.icalendar_2.VjournalType) FreebusyPropType(ietf.params.xml.ns.icalendar_2.FreebusyPropType) JAXBElement(javax.xml.bind.JAXBElement) BwString(org.bedework.calfacade.BwString) BwContact(org.bedework.calfacade.BwContact) DtstartPropType(ietf.params.xml.ns.icalendar_2.DtstartPropType) VtodoType(ietf.params.xml.ns.icalendar_2.VtodoType) SequencePropType(ietf.params.xml.ns.icalendar_2.SequencePropType) LocationPropType(ietf.params.xml.ns.icalendar_2.LocationPropType) BwAttendee(org.bedework.calfacade.BwAttendee) GeoPropType(ietf.params.xml.ns.icalendar_2.GeoPropType) DuePropType(ietf.params.xml.ns.icalendar_2.DuePropType) BwDateTime(org.bedework.calfacade.BwDateTime) BwGeo(org.bedework.calfacade.BwGeo) StatusPropType(ietf.params.xml.ns.icalendar_2.StatusPropType) ContactPropType(ietf.params.xml.ns.icalendar_2.ContactPropType) DtstampPropType(ietf.params.xml.ns.icalendar_2.DtstampPropType) VeventType(ietf.params.xml.ns.icalendar_2.VeventType) ReltypeParamType(ietf.params.xml.ns.icalendar_2.ReltypeParamType) FbtypeParamType(ietf.params.xml.ns.icalendar_2.FbtypeParamType) BwOrganizer(org.bedework.calfacade.BwOrganizer) UidPropType(ietf.params.xml.ns.icalendar_2.UidPropType) CommentPropType(ietf.params.xml.ns.icalendar_2.CommentPropType) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException) BigInteger(java.math.BigInteger) CompletedPropType(ietf.params.xml.ns.icalendar_2.CompletedPropType) ClassPropType(ietf.params.xml.ns.icalendar_2.ClassPropType) BwStringBase(org.bedework.calfacade.base.BwStringBase) DtendPropType(ietf.params.xml.ns.icalendar_2.DtendPropType)

Example 4 with BwString

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

the class VEventUtil method toIcalComponent.

/**
 * Make an Icalendar component from a BwEvent object. This may produce a
 * VEvent, VTodo, VJournal or VPoll.
 *
 * @param ei the event
 * @param isOverride - true if event object is an override
 * @param tzreg - timezone registry
 * @param currentPrincipal - href for current authenticated user
 * @return Component
 * @throws CalFacadeException
 */
public static Component toIcalComponent(final EventInfo ei, final boolean isOverride, final TimeZoneRegistry tzreg, final String currentPrincipal) throws CalFacadeException {
    if ((ei == null) || (ei.getEvent() == null)) {
        return null;
    }
    final BwEvent val = ei.getEvent();
    boolean isInstance = false;
    try {
        Component xcomp = null;
        Calendar cal = null;
        final List<BwXproperty> xcompProps = val.getXproperties(BwXproperty.bedeworkIcal);
        if (!Util.isEmpty(xcompProps)) {
            final BwXproperty xcompProp = xcompProps.get(0);
            final String xcompPropVal = xcompProp.getValue();
            if (xcompPropVal != null) {
                final StringBuilder sb = new StringBuilder();
                final Icalendar ic = new Icalendar();
                try {
                    sb.append("BEGIN:VCALENDAR\n");
                    sb.append(Version.VERSION_2_0.toString());
                    sb.append("\n");
                    sb.append(xcompPropVal);
                    if (!xcompPropVal.endsWith("\n")) {
                        sb.append("\n");
                    }
                    sb.append("END:VCALENDAR\n");
                    CalendarBuilder bldr = new CalendarBuilder(new CalendarParserImpl(), ic);
                    UnfoldingReader ufrdr = new UnfoldingReader(new StringReader(sb.toString()), true);
                    cal = bldr.build(ufrdr);
                } catch (Throwable t) {
                    error(t);
                    error("Trying to parse:\n" + xcompPropVal);
                }
            }
        }
        Component comp;
        PropertyList pl = new PropertyList();
        boolean freeBusy = false;
        boolean vavail = false;
        boolean todo = false;
        boolean vpoll = false;
        int entityType = val.getEntityType();
        if (entityType == IcalDefs.entityTypeEvent) {
            comp = new VEvent(pl);
        } else if (entityType == IcalDefs.entityTypeTodo) {
            comp = new VToDo(pl);
            todo = true;
        } else if (entityType == IcalDefs.entityTypeJournal) {
            comp = new VJournal(pl);
        } else if (entityType == IcalDefs.entityTypeFreeAndBusy) {
            comp = new VFreeBusy(pl);
            freeBusy = true;
        } else if (entityType == IcalDefs.entityTypeVavailability) {
            comp = new VAvailability(pl);
            vavail = true;
        } else if (entityType == IcalDefs.entityTypeAvailable) {
            comp = new Available(pl);
        } else if (entityType == IcalDefs.entityTypeVpoll) {
            comp = new VPoll(pl);
            vpoll = true;
        } else {
            throw new CalFacadeException("org.bedework.invalid.entity.type", String.valueOf(entityType));
        }
        if (cal != null) {
            xcomp = cal.getComponent(comp.getName());
        }
        Property prop;
        /* ------------------- RecurrenceID --------------------
       * Done early so we know if this is an instance.
       */
        String strval = val.getRecurrenceId();
        if ((strval != null) && (strval.length() > 0)) {
            isInstance = true;
            pl.add(new RecurrenceId(makeZonedDt(val, strval)));
        }
        /* ------------------- Alarms -------------------- */
        VAlarmUtil.processEventAlarm(val, comp, currentPrincipal);
        /* ------------------- Attachments -------------------- */
        if (val.getNumAttachments() > 0) {
            for (BwAttachment att : val.getAttachments()) {
                pl.add(setAttachment(att));
            }
        }
        /* ------------------- Attendees -------------------- */
        if (!vpoll && (val.getNumAttendees() > 0)) {
            for (BwAttendee att : val.getAttendees()) {
                prop = setAttendee(att);
                mergeXparams(prop, xcomp);
                pl.add(prop);
            }
        }
        if (val.getNumCategories() > 0) {
            // LANG - filter on language - group language in one cat list?
            for (BwCategory cat : val.getCategories()) {
                prop = new Categories();
                TextList cl = ((Categories) prop).getCategories();
                cl.add(cat.getWord().getValue());
                pl.add(langProp(prop, cat.getWord()));
            }
        }
        /* ------------------- Class -------------------- */
        final String pval = val.getClassification();
        if (pval != null) {
            pl.add(new Clazz(pval));
        }
        if (val.getNumComments() > 0) {
            for (final BwString str : val.getComments()) {
                pl.add(langProp(new Comment(str.getValue()), str));
            }
        }
        if ((todo || vpoll) && (val.getCompleted() != null)) {
            prop = new Completed(new DateTime(val.getCompleted()));
            pl.add(prop);
        }
        if (val.getNumContacts() > 0) {
            for (final BwContact c : val.getContacts()) {
                // LANG
                prop = new Contact(c.getCn().getValue());
                final String l = c.getLink();
                if (l != null) {
                    prop.getParameters().add(new AltRep(l));
                }
                pl.add(langProp(uidProp(prop, c.getUid()), c.getCn()));
            }
        }
        if (val.getCost() != null) {
            IcalUtil.addXproperty(pl, BwXproperty.bedeworkCost, null, val.getCost());
        }
        /* ------------------- Created -------------------- */
        prop = new Created(val.getCreated());
        // if (pars.includeDateTimeProperty) {
        // prop.getParameters().add(Value.DATE_TIME);
        // }
        pl.add(prop);
        if (val.getDeleted()) {
            IcalUtil.addXproperty(pl, BwXproperty.bedeworkDeleted, null, String.valueOf(val.getDeleted()));
        }
        /* ------------------- Description -------------------- */
        BwStringBase bwstr = val.findDescription(null);
        if (bwstr != null) {
            pl.add(langProp(new Description(bwstr.getValue()), bwstr));
        }
        if (val.getEndType() == StartEndComponent.endTypeDate) {
            if (todo) {
                Due due = val.getDtend().makeDue(tzreg);
                if (freeBusy | val.getForceUTC()) {
                    due.setUtc(true);
                }
                pl.add(due);
            } else {
                DtEnd dtend = val.getDtend().makeDtEnd(tzreg);
                if (freeBusy | val.getForceUTC()) {
                    dtend.setUtc(true);
                }
                pl.add(dtend);
            }
        } else if (val.getEndType() == StartEndComponent.endTypeDuration) {
            addProperty(comp, new Duration(new Dur(val.getDuration())));
        }
        /* ------------------- DtStamp -------------------- */
        prop = new DtStamp(new DateTime(val.getDtstamp()));
        // if (pars.includeDateTimeProperty) {
        // prop.getParameters().add(Value.DATE_TIME);
        // }
        pl.add(prop);
        if (!val.getNoStart()) {
            DtStart dtstart = val.getDtstart().makeDtStart(tzreg);
            if (freeBusy | val.getForceUTC()) {
                dtstart.setUtc(true);
            }
            pl.add(dtstart);
        }
        if (freeBusy) {
            Collection<BwFreeBusyComponent> fbps = val.getFreeBusyPeriods();
            if (fbps != null) {
                for (BwFreeBusyComponent fbc : fbps) {
                    FreeBusy fb = new FreeBusy();
                    int type = fbc.getType();
                    if (type == BwFreeBusyComponent.typeBusy) {
                        addParameter(fb, FbType.BUSY);
                    } else if (type == BwFreeBusyComponent.typeFree) {
                        addParameter(fb, FbType.FREE);
                    } else if (type == BwFreeBusyComponent.typeBusyUnavailable) {
                        addParameter(fb, FbType.BUSY_UNAVAILABLE);
                    } else if (type == BwFreeBusyComponent.typeBusyTentative) {
                        addParameter(fb, FbType.BUSY_TENTATIVE);
                    } else {
                        throw new CalFacadeException("Bad free-busy type " + type);
                    }
                    PeriodList pdl = fb.getPeriods();
                    for (Period p : fbc.getPeriods()) {
                        // XXX inverse.ca plugin cannot handle durations.
                        Period np = new Period(p.getStart(), p.getEnd());
                        pdl.add(np);
                    }
                    pl.add(fb);
                }
            }
        }
        if (!vpoll) {
            BwGeo bwgeo = val.getGeo();
            if (bwgeo != null) {
                Geo geo = new Geo(bwgeo.getLatitude(), bwgeo.getLongitude());
                pl.add(geo);
            }
        }
        /* ------------------- LastModified -------------------- */
        prop = new LastModified(new DateTime(val.getLastmod()));
        // if (pars.includeDateTimeProperty) {
        // prop.getParameters().add(Value.DATE_TIME);
        // }
        pl.add(prop);
        if (!vpoll) {
            final BwLocation loc = val.getLocation();
            if (loc != null) {
                prop = new Location(loc.getCombinedValues());
                pl.add(langProp(uidProp(prop, loc.getUid()), loc.getAddress()));
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationAddr, null, loc.getAddressField());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationRoom, null, loc.getRoomField());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationAccessible, null, String.valueOf(loc.getAccessible()));
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationSfield1, null, loc.getSubField1());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationSfield2, null, loc.getSubField2());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationGeo, null, loc.getGeouri());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationStreet, null, loc.getStreet());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationCity, null, loc.getCity());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationState, null, loc.getState());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationZip, null, loc.getZip());
                IcalUtil.addXproperty(pl, BwXproperty.xBedeworkLocationLink, null, loc.getLink());
            }
        }
        /* ------------------- Organizer -------------------- */
        BwOrganizer org = val.getOrganizer();
        if (org != null) {
            prop = setOrganizer(org);
            mergeXparams(prop, xcomp);
            pl.add(prop);
        }
        if (todo) {
            Integer pc = val.getPercentComplete();
            if (pc != null) {
                pl.add(new PercentComplete(pc.intValue()));
            }
        }
        /* ------------------- Priority -------------------- */
        Integer prio = val.getPriority();
        if (prio != null) {
            pl.add(new Priority(prio.intValue()));
        }
        /* ------------------- RDate -below------------------- */
        /* ------------------- RelatedTo -------------------- */
        /* We encode related to (maybe) as triples - reltype, value-type, value */
        String[] info = null;
        BwRelatedTo relto = val.getRelatedTo();
        if (relto != null) {
            info = new String[3];
            info[0] = relto.getRelType();
            // default
            info[1] = "";
            info[2] = relto.getValue();
        } else {
            String relx = val.getXproperty(BwXproperty.bedeworkRelatedTo);
            if (relx != null) {
                info = Util.decodeArray(relx);
            }
        }
        if (info != null) {
            int i = 0;
            while (i < info.length) {
                RelatedTo irelto;
                String reltype = info[i];
                String valtype = info[i + 1];
                String relval = info[i + 2];
                ParameterList rtpl = null;
                if (reltype.length() > 0) {
                    rtpl = new ParameterList();
                    rtpl.add(new RelType(reltype));
                }
                if (valtype.length() > 0) {
                    if (rtpl == null) {
                        rtpl = new ParameterList();
                    }
                    rtpl.add(new Value(valtype));
                }
                if (rtpl != null) {
                    irelto = new RelatedTo(rtpl, relval);
                } else {
                    irelto = new RelatedTo(relval);
                }
                pl.add(irelto);
                i += 3;
            }
        }
        if (val.getNumResources() > 0) {
            /* This event has a resource */
            prop = new Resources();
            TextList rl = ((Resources) prop).getResources();
            for (BwString str : val.getResources()) {
                // LANG
                rl.add(str.getValue());
            }
            pl.add(prop);
        }
        if (val.getSequence() > 0) {
            pl.add(new Sequence(val.getSequence()));
        }
        /* ------------------- Status -------------------- */
        String status = val.getStatus();
        if ((status != null) && !status.equals(BwEvent.statusMasterSuppressed)) {
            pl.add(new Status(status));
        }
        /* ------------------- Summary -------------------- */
        bwstr = val.findSummary(null);
        if (bwstr != null) {
            pl.add(langProp(new Summary(bwstr.getValue()), bwstr));
        }
        if (!todo && !vpoll) {
            strval = val.getPeruserTransparency(currentPrincipal);
            if ((strval != null) && (strval.length() > 0)) {
                pl.add(new Transp(strval));
            }
        }
        /* ------------------- Uid -------------------- */
        pl.add(new Uid(val.getUid()));
        /* ------------------- Url -------------------- */
        strval = val.getLink();
        if (strval != null) {
            // Possibly drop this if we do it on input and check all data
            strval = strval.trim();
        }
        if ((strval != null) && (strval.length() > 0)) {
            URI uri = Util.validURI(strval);
            if (uri != null) {
                pl.add(new Url(uri));
            }
        }
        if (val.getNumXproperties() > 0) {
            try {
                IcalUtil.xpropertiesToIcal(pl, val.getXproperties());
            } catch (Throwable t) {
                // XXX For the moment swallow these.
                error(t);
            }
        }
        if (!vpoll && !isInstance && !isOverride && val.testRecurring()) {
            doRecurring(val, pl);
        }
        if (vavail) {
            if (ei.getNumContainedItems() > 0) {
                final VAvailability va = (VAvailability) comp;
                for (final EventInfo aei : ei.getContainedItems()) {
                    va.getAvailable().add((Available) toIcalComponent(aei, false, tzreg, currentPrincipal));
                }
            }
            /* ----------- Vavailability - busyType ----------------- */
            String s = val.getBusyTypeString();
            if (s != null) {
                pl.add(new BusyType(s));
            }
        }
        if (vpoll) {
            final Integer ival = val.getPollWinner();
            if (ival != null) {
                pl.add(new PollWinner(ival));
            }
            strval = val.getPollAcceptResponse();
            if ((strval != null) && (strval.length() > 0)) {
                pl.add(new AcceptResponse(strval));
            }
            strval = val.getPollMode();
            if ((strval != null) && (strval.length() > 0)) {
                pl.add(new PollMode(strval));
            }
            strval = val.getPollProperties();
            if ((strval != null) && (strval.length() > 0)) {
                pl.add(new PollProperties(strval));
            }
            final Map<String, VVoter> vvoters = parseVpollVvoters(val);
            for (final VVoter vv : vvoters.values()) {
                ((VPoll) comp).getVoters().add(vv);
            }
            final Map<Integer, Component> comps = parseVpollCandidates(val);
            for (final Component candidate : comps.values()) {
                ((VPoll) comp).getCandidates().add(candidate);
            }
        }
        return comp;
    } catch (final CalFacadeException cfe) {
        throw cfe;
    } catch (final Throwable t) {
        throw new CalFacadeException(t);
    }
}
Also used : FreeBusy(net.fortuna.ical4j.model.property.FreeBusy) VFreeBusy(net.fortuna.ical4j.model.component.VFreeBusy) BwRelatedTo(org.bedework.calfacade.BwRelatedTo) EventInfo(org.bedework.calfacade.svc.EventInfo) BwCategory(org.bedework.calfacade.BwCategory) BwString(org.bedework.calfacade.BwString) VAvailability(net.fortuna.ical4j.model.component.VAvailability) DateTime(net.fortuna.ical4j.model.DateTime) BwDateTime(org.bedework.calfacade.BwDateTime) TextList(net.fortuna.ical4j.model.TextList) LastModified(net.fortuna.ical4j.model.property.LastModified) DtStamp(net.fortuna.ical4j.model.property.DtStamp) AcceptResponse(net.fortuna.ical4j.model.property.AcceptResponse) Available(net.fortuna.ical4j.model.component.Available) BwAttachment(org.bedework.calfacade.BwAttachment) RelatedTo(net.fortuna.ical4j.model.property.RelatedTo) BwRelatedTo(org.bedework.calfacade.BwRelatedTo) VEvent(net.fortuna.ical4j.model.component.VEvent) Status(net.fortuna.ical4j.model.property.Status) BwFreeBusyComponent(org.bedework.calfacade.BwFreeBusyComponent) BwLocation(org.bedework.calfacade.BwLocation) VVoter(net.fortuna.ical4j.model.component.VVoter) Transp(net.fortuna.ical4j.model.property.Transp) Categories(net.fortuna.ical4j.model.property.Categories) Priority(net.fortuna.ical4j.model.property.Priority) BusyType(net.fortuna.ical4j.model.property.BusyType) PeriodList(net.fortuna.ical4j.model.PeriodList) Period(net.fortuna.ical4j.model.Period) Duration(net.fortuna.ical4j.model.property.Duration) BwString(org.bedework.calfacade.BwString) BwContact(org.bedework.calfacade.BwContact) Sequence(net.fortuna.ical4j.model.property.Sequence) Geo(net.fortuna.ical4j.model.property.Geo) BwGeo(org.bedework.calfacade.BwGeo) Uid(net.fortuna.ical4j.model.property.Uid) PollMode(net.fortuna.ical4j.model.property.PollMode) BwXproperty(org.bedework.calfacade.BwXproperty) Value(net.fortuna.ical4j.model.parameter.Value) ParameterList(net.fortuna.ical4j.model.ParameterList) RecurrenceId(net.fortuna.ical4j.model.property.RecurrenceId) Resources(net.fortuna.ical4j.model.property.Resources) BwAttendee(org.bedework.calfacade.BwAttendee) VToDo(net.fortuna.ical4j.model.component.VToDo) CalendarParserImpl(net.fortuna.ical4j.data.CalendarParserImpl) VJournal(net.fortuna.ical4j.model.component.VJournal) Description(net.fortuna.ical4j.model.property.Description) BwGeo(org.bedework.calfacade.BwGeo) AltRep(net.fortuna.ical4j.model.parameter.AltRep) BwEvent(org.bedework.calfacade.BwEvent) URI(java.net.URI) Url(net.fortuna.ical4j.model.property.Url) PollWinner(net.fortuna.ical4j.model.property.PollWinner) Created(net.fortuna.ical4j.model.property.Created) VPoll(net.fortuna.ical4j.model.component.VPoll) Due(net.fortuna.ical4j.model.property.Due) StringReader(java.io.StringReader) PollProperties(net.fortuna.ical4j.model.property.PollProperties) Clazz(net.fortuna.ical4j.model.property.Clazz) StartEndComponent(org.bedework.calfacade.base.StartEndComponent) Component(net.fortuna.ical4j.model.Component) BwFreeBusyComponent(org.bedework.calfacade.BwFreeBusyComponent) DateListProperty(net.fortuna.ical4j.model.property.DateListProperty) Property(net.fortuna.ical4j.model.Property) BwOrganizer(org.bedework.calfacade.BwOrganizer) Dur(net.fortuna.ical4j.model.Dur) Comment(net.fortuna.ical4j.model.property.Comment) RelType(net.fortuna.ical4j.model.parameter.RelType) VFreeBusy(net.fortuna.ical4j.model.component.VFreeBusy) Calendar(net.fortuna.ical4j.model.Calendar) UnfoldingReader(net.fortuna.ical4j.data.UnfoldingReader) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException) Contact(net.fortuna.ical4j.model.property.Contact) BwContact(org.bedework.calfacade.BwContact) PropertyList(net.fortuna.ical4j.model.PropertyList) DtStart(net.fortuna.ical4j.model.property.DtStart) BwStringBase(org.bedework.calfacade.base.BwStringBase) PercentComplete(net.fortuna.ical4j.model.property.PercentComplete) Completed(net.fortuna.ical4j.model.property.Completed) Summary(net.fortuna.ical4j.model.property.Summary) DtEnd(net.fortuna.ical4j.model.property.DtEnd) BwLocation(org.bedework.calfacade.BwLocation) Location(net.fortuna.ical4j.model.property.Location)

Example 5 with BwString

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

the class BwEventUtil method checkCategory.

/* Return true if value matches a category - which may be added as
   * a result
   */
private static boolean checkCategory(final IcalCallback cb, final ChangeTable chg, final BwEvent ev, final String lang, final String val) throws CalFacadeException {
    final BwString sval = new BwString(lang, val);
    final BwCategory cat = cb.findCategory(sval);
    if (cat == null) {
        return false;
    }
    final Set<BwCategory> cats = ev.getCategories();
    if (cats != null) {
        for (final BwCategory c : cats) {
            if (c.getWord().equals(sval)) {
                // Already present
                return true;
            }
        }
    }
    ev.addCategory(cat);
    chg.addValue(PropertyIndex.PropertyInfoIndex.CATEGORIES, cat);
    return true;
}
Also used : BwCategory(org.bedework.calfacade.BwCategory) BwString(org.bedework.calfacade.BwString)

Aggregations

BwString (org.bedework.calfacade.BwString)30 BwEvent (org.bedework.calfacade.BwEvent)14 BwCategory (org.bedework.calfacade.BwCategory)11 BwContact (org.bedework.calfacade.BwContact)11 BwLocation (org.bedework.calfacade.BwLocation)9 CalFacadeException (org.bedework.calfacade.exc.CalFacadeException)9 BwAttendee (org.bedework.calfacade.BwAttendee)7 BwXproperty (org.bedework.calfacade.BwXproperty)6 EventInfo (org.bedework.calfacade.svc.EventInfo)6 ChangeTableEntry (org.bedework.calfacade.util.ChangeTableEntry)6 WebdavException (org.bedework.webdav.servlet.shared.WebdavException)5 Period (net.fortuna.ical4j.model.Period)4 UpdateResult (org.bedework.caldav.server.sysinterface.SysIntf.UpdateResult)4 BwDateTime (org.bedework.calfacade.BwDateTime)4 BwFreeBusyComponent (org.bedework.calfacade.BwFreeBusyComponent)4 BwOrganizer (org.bedework.calfacade.BwOrganizer)4 BwRequestStatus (org.bedework.calfacade.BwRequestStatus)4 BwStringBase (org.bedework.calfacade.base.BwStringBase)4 BwLongString (org.bedework.calfacade.BwLongString)3 Parameter (net.fortuna.ical4j.model.Parameter)2