NOTES for Backend
=================

Why is the appointment ical renderer located in the *backend* ???
- because the backend is responsible for managing the cache and the frontend
  asking for the iCalendar of an appointment is quite usual - so we should
  cache the whole iCal

Caching/Folder-Version Thoughts
===============================
- TODO: locking, no rollbacks with ID-set checks
- TODO: garbage collection (delete old sets and caches ...)

- Update of the Version
  - someone asks for the version
    - we check
      a) is the version marked as dirty (known change via DAV?)
      b) is the timeout of the version expired ?
      c) do we already have a version
    - if neither a nor b
      - return current version
    - if a or b, fetch folder-set from the database
      - we compare the set with the set of the current version
        - stayed the same, we returned the saved version
        - changed, we bump the generation and save the fetched set under the 
          new ID

DEPRECATED below, we don't want to support Connector:

- Evo Connector asks for all Appointments of /donald/Calendar
  
  - we look up the current Folder Version
    => how ?, when is it updated ?, who does this ?
  
  - if it matches, then
    - check whether "evofull.version" exists
      - if yes, => deliver
      - if no, sorry, why doesn't it match?
  
  - if it doesn't match or exist
    - fetch everything
    - save to evofull.version

- Evo ask for all contacts in /donald/Contacts/

  - prefix created extra cache file !
    eg: priv-persons-a.plist
