src/include/common/vocl/iCalendar/iCalConverter.h

00001 /*
00002  * Copyright (C) 2003-2007 Funambol, Inc
00003  *
00004  * This program is free software; you can redistribute it and/or modify
00005  * it under the terms of the GNU General Public License version 2 as
00006  * published by the Free Software Foundation.
00007  *
00008  * This program is distributed in the hope that it will be useful,
00009  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00010  * MERCHANTABILITY, TITLE, NONINFRINGEMENT or FITNESS FOR A PARTICULAR
00011  * PURPOSE.  See the GNU General Public License for more details.
00012  *
00013  * You should have received a copy of the GNU General Public License
00014  * along with this program; if not, write to the Free Software
00015  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
00016  * 02111-1307  USA
00017  */
00018 
00019 
00020 #ifndef INCL_VIRTUAL_CALENDAR_CONVERTER
00021 #define INCL_VIRTUAL_CALENDAR_CONVERTER
00022 
00024 #include "base/fscapi.h"
00025 #include "vocl/iCalendar/Calendar.h"
00026 #include "vocl/VConverter.h"
00027 
00028 class WString;
00029 
00030 #define EVENT_PROPERTIES_LIST TEXT("BEGIN,CLASS,CREATED,DESCRIPTION,DTSTART,GEO,LAST-MODIFIED,LOCATION,ORGANIZER,PRIORITY,") \
00031                                    TEXT("DTSTAMP,SEQUENCE,STATUS,SUMMARY,TRANSP,UID,URL,RECURRENCE-ID,DTEND,DURATION,ATTACH,ATTENDEE,") \
00032                                    TEXT("CATEGORIES,COMMENT,CONTACT,EXDATE,EXRULE,REQUEST-STATUS,RELATED,RESOURCES,RDATE,RRULE,END,GROUP")
00033 
00034 #define TODO_PROPERTIES_LIST  TEXT("BEGIN,CLASS,COMPLETED,CREATED,DESCRIPTION,DTSTAMP,DTSTART,GEO,LAST-MODIFIED,LOCATION,ORGANIZER,PERCENT-COMPLETE,") \
00035                                    TEXT("PRIORITY,RECURRENCE-ID,SEQUENCE,STATUS,SUMMARY,UID,URL,DUE,DURATION,ATTACH,ATTENDEE,") \
00036                                    TEXT("CATEGORIES,COMMENT,CONTACT,EXDATE,EXRULE,REQUEST-STATUS,RELATED,RESOURCES,RDATE,RRULE,END,GROUP")
00037 
00038 #define CLASS_PROPERTY_VALUE  TEXT("PUBLIC,PRIVATE,CONFIDENTIAL")
00039 
00040 #define COMMENT_PARAM_LIST      TEXT("ALTREP,LANGUAGE")
00041 #define DT_PARAM_LIST           TEXT("VALUE,TZID")
00042 #define ORGANIZER_PARAM_LIST    TEXT("CN,DIR,SENT-BY,LANGUAGE,ROLE")
00043 #define ATTACH_PARAM_LIST       TEXT("FMTTYPE,ENCODING,VALUE")
00044 #define ATTENDEE_PARAM_LIST     TEXT("CUTYPE,MEMBER,ROLE,PARTSTAT,RSVP,DELEGATED-TO,DELEGATED-FROM,SENT-BY,CN,DIR,LANGUAGE")
00045 #define RDATE_PARAM_LIST        TEXT("VALUE,DATE-TIME,DATE,PERIOD,TZID")
00046 #define RECRUL_ITEMS_LIST       TEXT("FREQ,UNTIL,COUNT,INTERVAL,BYSECOND,BYMINUTE,BYHOUR,BYDAY,BYMONTHDAY,BYYEARDAY,BYWEEKNO,BYMONTH,BYSETPOS,WKST")
00047 #define FREQUENCY_VALUES_LIST   TEXT("SECONDLY,MINUTELY,HOURLY,DAILY,WEEKLY,MONTHLY,YEARLY")
00048 
00049 #define ERROR_SUCCESS                0L
00050 #define ERROR_KEY_PROPERTY_MISSING   100L
00051 #define ERROR_ILLEGAL_VERSION_NUMBER 101L
00052 #define ERROR_ILLEGAL_PROPERTY_NAME  102L
00053 #define ERROR_UNSUPPORTED_ENCODING   103L
00054 #define ERROR_ILLEGAL_TYPE_PARAMETER 104L
00055 #define ERROR_ILLEGAL_PARAMETER      105L
00056 #define ERROR_INVALID_PROPERTY_VALUE 106L
00057 #define ERROR_PARSING_ERROR          200L
00058 #define ERROR_INVALID_EVENT_BLOCK    301L
00059 #define ERROR_INVALID_TODO_BLOCK     302L
00060 
00061 //#define isdigit(c) ((c) >= '0' && (c)<= '9') FIXME
00062 
00063 
00064 class iCalConverter {
00065 private:
00066     WCHAR* iCalendar;
00067     Calendar* calendar;
00068     bool validateEvent(Event*, WString& error, long* errorCode);
00069     bool validateTodo(ToDo*, WString& error, long* errorCode);
00070     bool validatePropery(VProperty*, WString& error, long* errorCode);
00071     Event* extractEvent(VObject* vo, WString& errorDescription, long* errorCode);
00072     ToDo* extractTask(VObject* vo, WString& errorDescription, long* errorCode);
00073     bool validateGeo(WCHAR* geo);
00074     bool validateDT(WCHAR* dt);
00075     bool validateDate(WCHAR* date);
00076     bool validateRecur(WCHAR* recur);
00077     void extractAlarm(VObject* vo);
00078 
00079 public:
00080     iCalConverter();
00081     ~iCalConverter();
00082     void setSource(WCHAR* inputICalendar);
00083     void setSource(Calendar& inputCalendar);
00084     void getICalendar(WCHAR* vCard);
00085     void getCalendar(Calendar** outputContact);
00086     bool convert(WString& error, long* errorCode);
00087 };
00089 #endif

Generated on Fri Jun 15 11:38:30 2007 for Funambol C++ Client Library by  doxygen 1.5.2