Hey,

For this week, I just pushed a couple of commits to my github repository, you can find it here: https://github.com/TheAntimist/openmeetings/commit/4166cfcb3f7e2f79625d9d9e7e552bc1083cfb7c

All the classes I have added can be found here: https://github.com/TheAntimist/openmeetings/tree/4166cfcb3f7e2f79625d9d9e7e552bc1083cfb7c/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav

My Forked repository can be found here: https://github.com/TheAntimist/openmeetings/tree/3.2.x/

Here's what I've been able to complete:

* Addition to Entities: Appointments, now have href and OmCalendar, fields. New OmCalendar Entity, for storing the CalendarEvents. Fields included are: id, title, href, username, password, sync-token, deleted, SyncType, owner.

* Implement Sync Handlers, which are basically functions to handle syncing of items from the server to the Openmeetings Database. I have currently implemented all the possible sync methods as mentioned earlier i.e. ChangeLog based and WebDAV-Sync based. These have been divided into three classes, namely, CtagHandler, EtagHandler and WebDAVSyncHandler, along with that another special handler, called the MultigetHandler, which is used by all the three classes.

Classes can be found here: https://github.com/TheAntimist/openmeetings/tree/4166cfcb3f7e2f79625d9d9e7e552bc1083cfb7c/openmeetings-service/src/main/java/org/apache/openmeetings/service/calendar/caldav/handler

* With respect to WebDAV-Sync, along with the Handler I have included a new Method which is used by WebDAVSyncHandler for doing a REPORT, this was necessary as in the original ReportMethods defined in jackrabbit-webdav and caldav4j, don't have a specific support to make changes to the Processing of Responses necessary to be utilized here.

* Included a Basic parser from iCal events from CalDAV to Appointment classes. Using iCal4j. Doesn't handle complex Recurrences yet, due to limitations of Appointment class. Although, in an update I'll include the functions for basic recurrences, which already exists, such as IsDaily, IsWeekly and so on.

* CalendarManager class, which handles basic initialization, and setting up of the calendar. This then uses the specific synchandler, depending on which type of syncing is allowed on the system. This class provides a high level API for syncing, and in the future updates for creation, deletion and updation of events on the server and the database.

Note: I tested the use of the syncing and so on, by creating another object with the same classes, and have come across, no problems, on the syncing side. Though, one issu, I did have initially was with respect to Persistence Exceptions, which I somehow fixed, though, I wasn't using the Spring FrameWork, I'll test the behaviour in spring and hopefully they don't pop up.

Tested on Yahoo CalDAV Server and DAViCal local server.

Future Work:

 * Handle creation and deletion of events.

 * Improve Calendar Discovery functions.

* Implement Digest authentication and if possible OAuth. Currently only Basic authentication supported.

* Handle encryption of Passwords in the database, using something similar to the Firefox way for Symmetric encryption, using AES.

 * Wicket UI.

--
Ankush Mishra

Reply via email to