Subject: From CAP DELETE...

From: Doug Royer <[email-masked]>
Date: Wed, 14 Nov 2001 16:42:12 -0700

[EDITORS NOTE: Issues:

      - Currently CAP requires that the server return a response status.
      However, if there are multiple components deleted, should the UID
      also be returned?

Yes!

      - VQUERY EXPAND and MAXSIZE parameters do not seem to apply to
      deletion?

For DELETE - EXPAND has no meaning...

Some implementors were talking about expanding recurring VEVENTs
as the store them (vs expanding them when queried). So it does
bring up a good point. However, you would be deleting by
date range or UID (all).

Deleting a VEVENT by UID would result in ONE reply as no
matter how the CS stores the VEVENT, there is only ONE VEVENT
with that UID.

Deleting a VEVENT by date/range would be done with a MODIFY
and not a DELETE - you would get one reply.

You DELETE COMPONENTS (or calendars) - not instances of recurrence.

And for MAXSIZE:

Deleting with something like 'all VEVENTs where ATTENDEE contains
user-x' could return N number of replies. So it does sound
like a good idea - as long as the CUA knows that it can not
specify which N are deleted. The CUA would then have to
re-issue the DELETE METHOD - over and over?

** WE NEED A STATEMENT in CAP that says that commands
   issued with a MAXSIZE limit MUST BE  be repeatedly
   called until the end is reached as there is no way
   to tell which 'N-number' of components were acted upon.
   And that failure to do this probably will result in
   undesired effects.

      - Can one use DELETE to remove all VALARMs and VTIMEZONEs that
      match a certain search criteria and that belong to all components,
      event though VALARMs and VTIMEZONEs never exist as independent
      components? Or should one use MODIFY? If they can be deleted, do
      we return the REQUEST-STATUS of their deletion in a VEVENT or
      separately?

VALARMS should have a ALARMID (see my previous post).
VTIMEZONEs have an id.

MODIFY - tricky, as a VALARM and VTIMEZONE have a minimum set
of properties - how could you delete the contents of one of them,
unless you declare that when you do is is the same as DELETE.
So why should we have two ways to do the same thing?

      - In the example in CAP where a calendar is deleted all the server
      returns is 2.0, nothing else?

I would say the TARGET should be returned also - or PIPELINING 
is busted.

      - We should not be able to delete any VFREEBUSY components?

I had always assumed that a CS would calculate a VFREEBUSY.
Also a CS VFREEBUSY returned value could be an accumulation
of information stored. So how could you delete that?

On the other hand - if you can store it - you must be
able to delete it?

      - Currently one can not delete a VAGENDA and some other component
      in the same DELETE command.  This seems OK.  Anyone see any need
      to be able to do this?

I agree.

      - Should the MAXRESULTS property of VQUERY apply to deletion? We
      can use it to delete only the first n components that match.  ]

Then delete by date range if that is what you want. Otherwise there
is no way to know which N instances you deleted. (see above).

-Doug

---

From: George Babics <[email-masked]>
Date: Fri, 23 Nov 2001 14:51:28 -0500

>       However, if there are multiple components deleted, should the UID

  The UIDs are a must in the server restriction table. The example now
returns a UID.

> matter how the CS stores the VEVENT, there is only ONE VEVENT

  You can also delete a range of events by doing a query on
SUMMARY.

> You DELETE COMPONENTS (or calendars) - not instances of recurrence.

  But can not instances be expressed as components?
One would use modify to remove properties, delete to remove
components, and what to remove instances?
  
>    And that failure to do this probably will result in

  Does it have to be a must? There may be cases where the CUA
only wants to check if there is at least one match, or if the
user aborts a search because what he was looking for was in
the first "N" number of components returned.

  However, I do not see cases where a user will want to delete
only the first N components matching the query.
   
> VALARMS should have a ALARMID (see my previous post).

  We only have to make sure that the syntax for VQUERY permits
this.

>       returns is 2.0, nothing else?

  The example has been updated.

> of information stored. So how could you delete that?

  Yes. We should be able to delete VFREEBUSY components. I'll
remove from to do list.

>       in the same DELETE command.  This seems OK.  Anyone see any need

  I will remove this from the To Do list, unless someone disagrees.

> is no way to know which N instances you deleted. (see above).

George

---

From: Doug Royer <[email-masked]>
Date: Fri, 23 Nov 2001 15:40:40 -0700

>   You can also delete a range of events by doing a query on

EXPAND applied to the expansion of one VEVENT into
multiple instances.

Okay - so I think it is still true - For DELETE - EXPAND
has no meaning? Do you agree? As in you do not get a
reply to each instance (RRULE) of VEVENT times each match of SUMMARY.
If you delete N VEVENTs because of the contents of their SUMMARY,
they each have one UID. You would get N replies, but not because
any one or more VEVENTs had multiple instances. And you would
not get (N * instnaces) replies.

> components, and what to remove instances?

iTIP CANCEL with a recurrance-id.
Then use METHOD:MODIFY to update the data in the store.
The CUA could MODIFY the entry with an EXRULE, EXDATE, or whatever
it needed to modify the entry to exclude the instance(s) what was canceled.

> the first "N" number of components returned.

If you want to check, don't do a DELETE METHOD.

Then how about prefixing it with some like:
  For actions by the CUA that modify
  or delete anything in the calendar with MAXSIZE set, ....
  ... Otherwise the results are unpredictable.

>   We only have to make sure that the syntax for VQUERY permits

It does.