+#ifndef __OBJECTS_CALENDAROBJECT_CALENDAROBJECT_H__
+#define __OBJECTS_CALENDAROBJECT_CALENDAROBJECT_H__
+
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
+#include <stdexcept>
+#include <map>
+
+#include "../../common/text.h"
+#include "../../version.h"
using namespace std;
enum CalendarObjectLoadResult {
- CALENDAROBJECTLOAD_UNITTESTFAIL = -1,
- CALENDAROBJECTLOAD_OK,
- CALENDAROBJECTLOAD_MISSING,
- CALENDAROBJECTLOAD_INVALIDFORMAT,
- CALENDAROBJECTLOAD_CANNOTOPEN
+ CALENDAROBJECTLOAD_UNITTESTFAIL = -1,
+ CALENDAROBJECTLOAD_OK,
+ CALENDAROBJECTLOAD_MISSING,
+ CALENDAROBJECTLOAD_INVALIDFORMAT,
+ CALENDAROBJECTLOAD_CANNOTOPEN
+};
+
+enum CalendarObjectSaveResult {
+ CALENDAROBJECTSAVE_UNITTESTFAIL = -1,
+ CALENDAROBJECTSAVE_OK,
+ CALENDAROBJECTSAVE_CANNOTOPEN
};
enum CalendarObjectValidResult{
- CALENDAROBJECTVALID_UNITTESTFAIL = -1,
- CALENDAROBJECTVALID_OK,
- CALENDAROBJECTVALID_INVALIDFORMAT
+ CALENDAROBJECTVALID_UNITTESTFAIL = -1,
+ CALENDAROBJECTVALID_OK,
+ CALENDAROBJECTVALID_INVALIDFORMAT
+};
+
+enum CalendarAlarmAction{
+ CALENDARALARM_UNSPECIFIED = -1,
+ CALENDARALARM_AUDIO,
+ CALENDARALARM_DISPLAY,
+ CALENDARALARM_EMAIL
+};
+
+struct CalendarAlarmDataStruct{
+
+ CalendarAlarmAction AlarmType = CALENDARALARM_UNSPECIFIED;
+
+ string AlarmAction;
+ string AlarmActionTokens;
+
+ string TriggerData;
+ string TriggerValue;
+ string TriggerRelated;
+ string TriggerTokens;
+
+ string DescriptionData;
+ string DescriptionAltRep;
+ string DescriptionLanguage;
+ string DescriptionTokens;
+
+ string RepeatData;
+ string RepeatTokens;
+
+ string SummaryData;
+ string SummaryAltRep;
+ string SummaryLanguage;
+ string SummaryTokens;
+
+ vector<string> AttendeeList;
+ vector<string> AttendeeListMember;
+ vector<string> AttendeeListDelegatedFrom;
+ vector<string> AttendeeListDelegatedTo;
+ vector<string> AttendeeListRole;
+ vector<string> AttendeeListRSVP;
+ vector<string> AttendeeListDirectoryEntry;
+ vector<string> AttendeeListSentBy;
+ vector<string> AttendeeListCommonName;
+ vector<string> AttendeeListCalendarUserType;
+ vector<string> AttendeeListParticipationStatus;
+ vector<string> AttendeeListLanguage;
+ vector<string> AttendeeListTokens;
+
+ string DurationData;
+ string DurationTokens;
+
+ vector<string> AttachList;
+ vector<string> AttachListTokens;
+ vector<string> AttachListEncoding;
+ vector<string> AttachListFormatType;
+ vector<string> AttachListValue;
+
+ vector<string> XTokensData;
+ vector<string> XTokensDataTokens;
+
};
class CalendarObject{
public:
- CalendarObjectLoadResult LoadFile(std::string LoadFilename);
- CalendarObjectLoadResult LoadString(std::string *LoadStringData);
+ CalendarObjectLoadResult LoadFile(string LoadFilename);
+ CalendarObjectLoadResult LoadString(string *LoadStringData);
+ CalendarObjectSaveResult SaveFile(string SaveFilename);
+ CalendarObjectSaveResult SaveString(string *SaveStringData);
CalendarObjectValidResult ValidBaseObject();
+ void ProcessBaseData();
// Setup virtual subroutines for use by objects
// inheriting from CalendarObject later on.
virtual CalendarObjectValidResult ValidObject() { return CALENDAROBJECTVALID_OK; };
virtual void Clear() {};
-
- protected:
- // Initial Loading Data.
- vector<std::string> ObjectName;
- vector<std::string> ObjectData;
+ virtual void SaveObjectData(string *SaveData) {};
// Object data.
- vector<std::string> AttachList;
- vector<std::string> AttachListTokens;
- vector<std::string> AttachListEncoding;
- vector<std::string> AttachListValue;
+ string MethodData;
+ string MethodTokens;
+
+ string CalendarScaleData;
+ string CalendarScaleTokens;
+
+ string UniqueID;
+ string UniqueIDTokens;
- vector<std::string> CategoriesList;
- vector<std::string> CategoriesListLanguage;
- vector<std::string> CateogriesListTokens;
+ vector<string> AttachList;
+ vector<string> AttachListTokens;
+ vector<string> AttachListEncoding;
+ vector<string> AttachListFormatType;
+ vector<string> AttachListValue;
- std::string ClassData;
- std::string ClassListTokens;
+ vector<string> CategoriesList;
+ vector<string> CategoriesListLanguage;
+ vector<string> CategoriesListTokens;
- vector<std::string> CommentList;
- vector<std::string> CommentListAltID;
- vector<std::string> CommentListLanguage;
- vector<std::string> CommentListTokens;
+ string ClassData;
+ string ClassDataTokens;
- vector<std::string> DescriptionList;
- vector<std::string> DescriptionListAltID;
- vector<std::string> DescriptionListLanguage;
- vector<std::string> DescriptionListTokens;
+ string CompletedData;
+ string CompletedDataTokens;
- std::string GeographicData;
- std::string GeographicTokens;
+ vector<string> CommentList;
+ vector<string> CommentListAltRep;
+ vector<string> CommentListLanguage;
+ vector<string> CommentListTokens;
- std::string LocationData;
- std::string LocationDataAltID;
+ vector<string> DescriptionList;
+ vector<string> DescriptionListAltRep;
+ vector<string> DescriptionListLanguage;
+ vector<string> DescriptionListTokens;
- std::string PercentCompleteData;
- std::string PercentCompleteTokens;
+ string GeographicData;
+ string GeographicTokens;
- int PriorityData;
- std::string PriorityTokens;
+ string LocationData;
+ string LocationDataAltRep;
+ string LocationDataLanguage;
+ string LocationDataTokens;
- std::string ResourcesData;
- std::string ResourcesDataAltID;
- std::string ResourcesDataLanguage;
- std::string ResourcesDataTokens;
+ string PercentCompleteData;
+ string PercentCompleteTokens;
+
+ int PriorityData = -1;
+ string PriorityTokens;
+
+ vector<string> ResourcesData;
+ vector<string> ResourcesDataAltRep;
+ vector<string> ResourcesDataLanguage;
+ vector<string> ResourcesDataTokens;
- std::string StatusData;
- std::string StatusTokens;
+ string StatusData;
+ string StatusLanguage;
+ string StatusTokens;
- std::string SummaryData;
- std::string SummaryDataAltID;
- std::string SummaryDataLanguage;
- std::string SummaryDataTokens;
+ string SummaryData;
+ string SummaryDataAltRep;
+ string SummaryDataLanguage;
+ string SummaryDataTokens;
- std::string DataTimeEndData;
- std::string DataTimeEndDataValue;
- std::string DataTimeEndDataTimeZoneID;
- std::string DataTimeEndDataTokens;
+ string DateTimeEndData;
+ string DateTimeEndDataValue;
+ string DateTimeEndDataTimeZoneID;
+ string DateTimeEndDataTokens;
- std::string DueData;
- std::string DueDataValue;
- std::string DueDataTimeZoneID;
- std::string DueDataTokens;
+ string DueData;
+ string DueDataValue;
+ string DueDataTimeZoneID;
+ string DueDataTokens;
- std::string DataTimeStartData;
- std::string DataTimeStartDataValue;
- std::string DataTimeStartDataTimeZoneID;
- std::string DataTimeStartDataTokens;
+ string DateTimeStartData;
+ string DateTimeStartDataValue;
+ string DateTimeStartDataTimeZoneID;
+ string DateTimeStartDataTokens;
- std::string DurationData;
- std::string DurationDataTokens;
+ string DurationData;
+ string DurationDataTokens;
- vector<std::string> FreeBusyList;
- vector<std::string> FreeBusyListType;
- vector<std::string> FreeBusyListTokens;
+ vector<string> FreeBusyList;
+ vector<string> FreeBusyListType;
+ vector<string> FreeBusyListTokens;
- std::string TimeTransparencyData;
- std::string TimeTransparencyDataTokens;
+ string TimeTransparencyData;
+ string TimeTransparencyDataTokens;
+
+ string TimeZoneData;
+ string TimeZoneDataTokens;
+
+ vector<string> TimeZoneNameList;
+ vector<string> TimeZoneNameListLanguage;
+ vector<string> TimeZoneNameListTokens;
+
+ string TimeZoneOffsetFromData;
+ string TimeZoneOffsetFromDataTokens;
+
+ string TimeZoneOffsetToData;
+ string TimeZoneOffsetToDataTokens;
+
+ string TimeZoneURLData;
+ string TimeZoneURLTokens;
+
+ vector<string> AttendeeList;
+ vector<string> AttendeeListMember;
+ vector<string> AttendeeListDelegatedFrom;
+ vector<string> AttendeeListDelegatedTo;
+ vector<string> AttendeeListRole;
+ vector<string> AttendeeListRSVP;
+ vector<string> AttendeeListDirectoryEntry;
+ vector<string> AttendeeListSentBy;
+ vector<string> AttendeeListCommonName;
+ vector<string> AttendeeListCalendarUserType;
+ vector<string> AttendeeListParticipationStatus;
+ vector<string> AttendeeListLanguage;
+ vector<string> AttendeeListTokens;
+
+ vector<string> ContactList;
+ vector<string> ContactListAltRep;
+ vector<string> ContactListLanguage;
+ vector<string> ContactListTokens;
+
+ string OrganiserData;
+ string OrganiserDataCommonName;
+ string OrganiserDataDirectoryEntry;
+ string OrganiserDataSentByParam;
+ string OrganiserDataLanguage;
+ string OrganiserDataTokens;
+
+ string RecurranceIDData;
+ string RecurranceIDDataTimeZoneParam;
+ string RecurranceIDDataRangeParam;
+ string RecurranceIDDataValue;
+ string RecurranceIDDataTokens;
+
+ vector<string> RelatedToData;
+ vector<string> RelatedToDataRelationType;
+ vector<string> RelatedToDataTokens;
+
+ string URLData;
+ string URLDataTokens;
+
+ vector<string> ExcludeDateData;
+ vector<string> ExcludeDateDataValue;
+ vector<string> ExcludeDateDataTimeZoneParam;
+ vector<string> ExcludeDateDataTokens;
+
+ vector<string> RecurranceDateData;
+ vector<string> RecurranceDateDataValue;
+ vector<string> RecurranceDateDataTimeZoneParam;
+ vector<string> RecurranceDateDataTokens;
+
+ string RecurranceRuleData;
+ string RecurranceRuleDataTokens;
+
+ string TriggerDataList;
+ string TriggerDataValue;
+ string TriggerDataRelatedParam;
+ string TriggerDataTokens;
+
+ string DateTimeCreatedData;
+ string DateTimeCreatedTokens;
+
+ string DateTimeStampData;
+ string DateTimeStampTokens;
+
+ string LastModifiedData;
+ string LastModifiedTokens;
+ int SequenceData = -1;
+ string SequenceTokens;
+
+ vector<string> XTokensData;
+ vector<string> XTokensDataTokens;
+
+ vector<string> RequestStatusData;
+ vector<string> RequestStatusLanguage;
+ vector<string> RequestStatusTokens;
+
+ vector<CalendarAlarmDataStruct> CalendarAlarmData;
+
+ protected:
+ // Initial Loading Data.
+ vector<string> ObjectName;
+ vector<string> ObjectData;
+
+ vector<vector<string>> EventAlarmName;
+ vector<vector<string>> EventAlarmData;
+
private:
virtual void ProcessData() {};
};
+
+#endif
\ No newline at end of file