00001
00017 #ifndef __RECURRENCE_RULE_H__
00018 #define __RECURRENCE_RULE_H__
00019
00020
00021 #include<libical/ical.h>
00022 #include "DbCalls.h"
00023 #include<vector>
00024 #include <string>
00025 using std::string;
00026 using std::vector;
00027
00028
00029 typedef enum FREQUENCY {
00030
00031 SECONDLY_RECURRENCE = 0,
00032 MINUTELY_RECURRENCE = 1,
00033 HOURLY_RECURRENCE = 2,
00034 DAILY_RECURRENCE = 3,
00035 WEEKLY_RECURRENCE = 4,
00036 MONTHLY_RECURRENCE = 5,
00037 YEARLY_RECURRENCE = 6,
00038 NO_RECURRENCE = 7
00039 };
00040
00041 typedef enum {
00042 SUNDAY = 0,
00043 MONDAY,
00044 TUESDAY,
00045 WEDNESDAY,
00046 THURSDAY,
00047 FRIDAY,
00048 SATURDAY
00049 } WeekDay;
00050
00051 typedef enum {
00052 RECURRENCE_RULE = 0,
00053 EXCEPTION_RULE
00054 } RuleType;
00055
00060 class CRecurrenceRule {
00061
00062 public:
00063
00067 CRecurrenceRule(CRecurrenceRule & ref);
00068
00072 CRecurrenceRule & operator=(CRecurrenceRule & right);
00073
00077 CRecurrenceRule();
00078
00082 ~CRecurrenceRule();
00083
00091 bool setRuleType(RuleType iType);
00092
00101 RuleType getRuleType();
00102
00113 bool rruleParser(string szRule);
00114
00121 bool setRrule(string szRRule);
00122
00129 string getRrule();
00130
00138 bool setFrequency(FREQUENCY iValue);
00139
00146 FREQUENCY getFrequency();
00147
00154 bool setUntil(time_t iUntil);
00155
00162 time_t getUntil();
00163
00170 bool setCount(int iCount);
00171
00178 int getCount();
00179
00187 bool setSecond(vector < short > vSec);
00188
00196 vector < short >getSecond();
00197
00206 bool setMinute(vector < short > vMinute);
00207
00215 vector < short >getMinute();
00216
00224 bool setHour(vector < short > vHour);
00225
00233 vector < short >getHour();
00234
00243 bool setWeekDay(vector < short > vByWeekDay);
00244
00253 vector < short >getWeekDay();
00254
00261 bool setMonthDay(vector < short > vByMonthDay);
00262
00269 vector < short >getMonthDay();
00270
00278 bool setYearDay(vector < short > vByYearDay);
00279
00286 vector < short >getYearDay();
00287
00295 bool setWeekNumber(vector < short > vByWeekNumber);
00296
00304 vector < short >getWeekNumber();
00305
00313 bool setMonth(vector < short > vMonth);
00314
00322 vector < short >getMonth();
00323
00339 bool setPos(vector < short > vPosition);
00340
00347 vector < short >getPos();
00348
00365 bool setWeekStart(icalrecurrencetype_weekday start);
00366
00374 icalrecurrencetype_weekday getWeekStart();
00375
00381 bool setInterval(short interval);
00382
00390 short getInterval();
00394 string toString();
00395
00396
00401 CRecurrenceRule(int iType, string szRRule);
00402
00406 bool checkRuleIsComplex();
00407 private:
00415 vector < short > convertArrayToVector(short array[], int iLengthMax);
00416
00417 FREQUENCY iFreq;
00419 string szRule;
00421 int iCount;
00423 short interval;
00425 time_t iUntil;
00427 RuleType iType;
00437 icalrecurrencetype_weekday weekStart;
00438
00439
00440
00441
00442
00443 vector < short >vBySecond;
00445 vector < short >vByMinute;
00447 vector < short >vByHour;
00449 vector < short >vByWeekDay;
00451 vector < short >vByMonthDay;
00453 vector < short >vByYearDay;
00455 vector < short >vByWeekNumber;
00457 vector < short >vByMonth;
00459 vector < short >vBySetPos;
00460 };
00461
00462 #endif