Search in sources :

Example 6 with BwOrganizer

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

the class BwCalDAVEvent method setOrganizer.

/* (non-Javadoc)
   * @see org.bedework.caldav.server.CalDAVEvent#setOrganizer(org.bedework.caldav.server.Organizer)
   */
@Override
public void setOrganizer(final Organizer val) throws WebdavException {
    BwOrganizer org = new BwOrganizer();
    org.setCn(val.getCn());
    org.setDir(val.getDir());
    org.setLanguage(val.getLanguage());
    org.setSentBy(val.getSentBy());
    org.setOrganizerUri(val.getOrganizerUri());
    getEv().setOrganizer(org);
}
Also used : BwOrganizer(org.bedework.calfacade.BwOrganizer)

Example 7 with BwOrganizer

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

the class BwCalDAVEvent method getOrganizer.

@Override
public Organizer getOrganizer() throws WebdavException {
    BwOrganizer bworg = getEv().getOrganizer();
    Organizer org = new Organizer(bworg.getCn(), bworg.getDir(), bworg.getLanguage(), bworg.getSentBy(), bworg.getOrganizerUri());
    return org;
}
Also used : BwOrganizer(org.bedework.calfacade.BwOrganizer) Organizer(org.bedework.caldav.server.Organizer) BwOrganizer(org.bedework.calfacade.BwOrganizer)

Example 8 with BwOrganizer

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

the class BwSysIntfImpl method getSpecialFreeBusy.

/* (non-Javadoc)
   * @see org.bedework.caldav.server.sysinterface.SysIntf#getSpecialFreeBusy(java.lang.String, java.util.Set, java.lang.String, org.bedework.caldav.util.TimeRange, java.io.Writer)
   */
@Override
public void getSpecialFreeBusy(final String cua, final Set<String> recipients, final String originator, final TimeRange tr, final Writer wtr) throws WebdavException {
    BwOrganizer org = new BwOrganizer();
    org.setOrganizerUri(cua);
    BwEvent ev = new BwEventObj();
    ev.setDtstart(getBwDt(tr.getStart()));
    ev.setDtend(getBwDt(tr.getEnd()));
    ev.setEntityType(IcalDefs.entityTypeFreeAndBusy);
    ev.setScheduleMethod(ScheduleMethods.methodTypeRequest);
    ev.setRecipients(recipients);
    ev.setOriginator(originator);
    ev.setOrganizer(org);
    Collection<SchedRecipientResult> srrs = requestFreeBusy(new BwCalDAVEvent(this, new EventInfo(ev)), false);
    for (SchedRecipientResult srr : srrs) {
        // We expect one only
        BwCalDAVEvent rfb = (BwCalDAVEvent) srr.freeBusy;
        if (rfb != null) {
            rfb.getEv().setOrganizer(org);
            try {
                VFreeBusy vfreeBusy = VFreeUtil.toVFreeBusy(rfb.getEv());
                net.fortuna.ical4j.model.Calendar ical = IcalTranslator.newIcal(ScheduleMethods.methodTypeReply);
                ical.getComponents().add(vfreeBusy);
                IcalTranslator.writeCalendar(ical, wtr);
            } catch (Throwable t) {
                if (debug) {
                    error(t);
                }
                throw new WebdavException(t);
            }
        }
    }
}
Also used : EventInfo(org.bedework.calfacade.svc.EventInfo) VFreeBusy(net.fortuna.ical4j.model.component.VFreeBusy) WebdavException(org.bedework.webdav.servlet.shared.WebdavException) BwEvent(org.bedework.calfacade.BwEvent) Calendar(net.fortuna.ical4j.model.Calendar) BwEventObj(org.bedework.calfacade.BwEventObj) BwOrganizer(org.bedework.calfacade.BwOrganizer)

Example 9 with BwOrganizer

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

the class BwSysIntfImpl method getFreeBusy.

/* (non-Javadoc)
   * @see org.bedework.caldav.server.sysinterface.SysIntf#getFreeBusy(org.bedework.caldav.server.CalDAVCollection, int, org.bedework.caldav.util.TimeRange)
   */
@Override
public CalDAVEvent getFreeBusy(final CalDAVCollection col, final int depth, final TimeRange timeRange) throws WebdavException {
    try {
        BwCalendar bwCol = unwrap(col);
        int calType = bwCol.getCalType();
        if (!bwCol.getCollectionInfo().allowFreeBusy) {
            throw new WebdavForbidden(WebdavTags.supportedReport);
        }
        Collection<BwCalendar> cals = new ArrayList<BwCalendar>();
        if (calType == BwCalendar.calTypeCalendarCollection) {
            cals.add(bwCol);
        } else if (depth == 0) {
        /* Cannot return anything */
        } else {
            for (BwCalendar ch : getSvci().getCalendarsHandler().getChildren(bwCol)) {
                // For depth 1 we only add calendar collections
                if ((depth > 1) || (ch.getCalType() == BwCalendar.calTypeCalendarCollection)) {
                    cals.add(ch);
                }
            }
        }
        AccessPrincipal owner = col.getOwner();
        String orgUri;
        if (owner instanceof BwPrincipal) {
            orgUri = getSvci().getDirectories().principalToCaladdr((BwPrincipal) owner);
        } else {
            BwPrincipal p = BwPrincipal.makeUserPrincipal();
            p.setAccount(owner.getAccount());
            orgUri = getSvci().getDirectories().principalToCaladdr(p);
        }
        BwOrganizer org = new BwOrganizer();
        org.setOrganizerUri(orgUri);
        BwEvent fb;
        if (cals.isEmpty()) {
            // Return an empty object
            fb = new BwEventObj();
            fb.setEntityType(IcalDefs.entityTypeFreeAndBusy);
            fb.setDtstart(getBwDt(timeRange.getStart()));
            fb.setDtend(getBwDt(timeRange.getEnd()));
        } else {
            fb = getSvci().getScheduler().getFreeBusy(cals, (BwPrincipal) currentPrincipal, getBwDt(timeRange.getStart()), getBwDt(timeRange.getEnd()), org, // uid
            null, null);
        }
        EventInfo ei = new EventInfo(fb);
        return new BwCalDAVEvent(this, ei);
    } catch (CalFacadeException cfe) {
        throw new WebdavException(cfe);
    } catch (WebdavException wde) {
        throw wde;
    } catch (Throwable t) {
        throw new WebdavException(t);
    }
}
Also used : EventInfo(org.bedework.calfacade.svc.EventInfo) WebdavForbidden(org.bedework.webdav.servlet.shared.WebdavForbidden) ArrayList(java.util.ArrayList) WebdavException(org.bedework.webdav.servlet.shared.WebdavException) BwEvent(org.bedework.calfacade.BwEvent) BwCalendar(org.bedework.calfacade.BwCalendar) AccessPrincipal(org.bedework.access.AccessPrincipal) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException) BwPrincipal(org.bedework.calfacade.BwPrincipal) BwEventObj(org.bedework.calfacade.BwEventObj) BwOrganizer(org.bedework.calfacade.BwOrganizer)

Example 10 with BwOrganizer

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

the class AttendeePropUpdater method applyUpdate.

public UpdateResult applyUpdate(final UpdateInfo ui) throws WebdavException {
    try {
        ChangeTableEntry cte = ui.getCte();
        BwEvent ev = ui.getEvent();
        Set<BwAttendee> atts = ev.getAttendees();
        AttendeePropType pr = (AttendeePropType) ui.getProp();
        String attUri = ui.getIcalCallback().getCaladdr(ui.getIcalCallback().getPrincipal().getPrincipalRef());
        /* Must have an organizer propery */
        BwOrganizer org = ev.getOrganizer();
        if (org == null) {
            return new UpdateResult("No organizer for attendee update");
        }
        boolean isOrganizer = attUri.equals(org.getOrganizerUri());
        if (!isOrganizer) {
            /* Options are pretty limited here - change partstat only to our own entry
         */
            if (!pr.getCalAddress().equals(attUri)) {
                return new UpdateResult("Cannot update other attendees");
            }
            if (ui.isAdd() || ui.isRemove()) {
                return new UpdateResult("Cannot add or remove attendees");
            }
            if (!ui.isChange()) {
                // Nothing to do
                return UpdateResult.getOkResult();
            }
            // return new UpdateResult("unimplemented - attendee update");
            throw new WebdavException("Unimplemented - attendees update");
        }
        if (ui.isAdd()) {
            if (!Util.isEmpty(atts)) {
                for (BwAttendee att : atts) {
                    if (att.getAttendeeUri().equals(pr.getCalAddress())) {
                        // Already there
                        return UpdateResult.getOkResult();
                    }
                }
            }
            BwAttendee newAtt = makeAttendee(pr);
            ev.addAttendee(newAtt);
            cte.addAddedValue(newAtt);
            return UpdateResult.getOkResult();
        }
        if (ui.isRemove()) {
            if (Util.isEmpty(atts)) {
                // Nothing to remove
                return UpdateResult.getOkResult();
            }
            BwAttendee remAtt = makeAttendee(pr);
            if (ev.removeAttendee(remAtt)) {
                cte.addRemovedValue(remAtt);
            }
            return UpdateResult.getOkResult();
        }
        if (ui.isChange()) {
            // Change a value
            if (Util.isEmpty(atts)) {
                // Nothing to change
                return new UpdateResult("No comment to change");
            }
            for (BwAttendee att : atts) {
                if (att.getAttendeeUri().equals(pr.getCalAddress())) {
                    // Found
                    throw new WebdavException("Unimplemented - attendees update");
                // return UpdateResult.getOkResult();
                }
            }
        }
        return UpdateResult.getOkResult();
    } catch (CalFacadeException cfe) {
        throw new WebdavException(cfe);
    }
}
Also used : WebdavException(org.bedework.webdav.servlet.shared.WebdavException) BwEvent(org.bedework.calfacade.BwEvent) ChangeTableEntry(org.bedework.calfacade.util.ChangeTableEntry) AttendeePropType(ietf.params.xml.ns.icalendar_2.AttendeePropType) BwAttendee(org.bedework.calfacade.BwAttendee) UpdateResult(org.bedework.caldav.server.sysinterface.SysIntf.UpdateResult) CalFacadeException(org.bedework.calfacade.exc.CalFacadeException) BwOrganizer(org.bedework.calfacade.BwOrganizer)

Aggregations

BwOrganizer (org.bedework.calfacade.BwOrganizer)18 BwAttendee (org.bedework.calfacade.BwAttendee)8 BwEvent (org.bedework.calfacade.BwEvent)8 CalFacadeException (org.bedework.calfacade.exc.CalFacadeException)8 EventInfo (org.bedework.calfacade.svc.EventInfo)8 Period (net.fortuna.ical4j.model.Period)5 PropertyList (net.fortuna.ical4j.model.PropertyList)5 VFreeBusy (net.fortuna.ical4j.model.component.VFreeBusy)5 BwFreeBusyComponent (org.bedework.calfacade.BwFreeBusyComponent)5 BwString (org.bedework.calfacade.BwString)5 PeriodList (net.fortuna.ical4j.model.PeriodList)4 Property (net.fortuna.ical4j.model.Property)4 FreeBusy (net.fortuna.ical4j.model.property.FreeBusy)4 ChangeTable (org.bedework.calfacade.util.ChangeTable)4 ParameterList (net.fortuna.ical4j.model.ParameterList)3 BwPrincipal (org.bedework.calfacade.BwPrincipal)3 WebdavException (org.bedework.webdav.servlet.shared.WebdavException)3 VVoter (net.fortuna.ical4j.model.component.VVoter)2 BwAttachment (org.bedework.calfacade.BwAttachment)2 BwCategory (org.bedework.calfacade.BwCategory)2