#include "CalendarTimezone.h" using namespace std; CalendarObjectValidResult CalendarTimezoneObject::ValidObject(){ bool ValidBegin = false; bool ValidEnd = false; bool ValidTimeZoneID = false; int SeekCount = 0; string PropertyName; // Look for BEGIN:VEVENT. for (vector::iterator iter = ObjectName.begin(); iter != ObjectName.end(); iter++){ if (ObjectName[SeekCount] == "BEGIN" && ObjectData[SeekCount] == "VTIMEZONE"){ if (ValidBegin == false){ ValidBegin = true; } else { return CALENDAROBJECTVALID_INVALIDFORMAT; } } if (ObjectName[SeekCount] == "END" && ObjectData[SeekCount] == "VTIMEZONE" && ValidBegin == false){ return CALENDAROBJECTVALID_INVALIDFORMAT; } SeekCount++; } SeekCount = 0; // Look for DTSTAMP. for (vector::iterator iter = ObjectName.begin(); iter != ObjectName.end(); iter++){ try{ PropertyName = ObjectName[SeekCount].substr(0,4); } catch(const out_of_range& oor){ continue; } if (PropertyName == "TZID"){ if (ValidTimeZoneID == false){ ValidTimeZoneID = true; } else { return CALENDAROBJECTVALID_INVALIDFORMAT; } } SeekCount++; } SeekCount = 0; // Look for END:VEVENT. for (vector::iterator iter = ObjectName.begin(); iter != ObjectName.end(); iter++){ if (ObjectName[SeekCount] == "END" && ObjectData[SeekCount] == "VTIMEZONE"){ if (ValidEnd == false){ ValidEnd = true; } else { return CALENDAROBJECTVALID_INVALIDFORMAT; } } SeekCount++; } // Check if the VEVENT is valid. if (ValidBegin == true && ValidEnd == true && ValidTimeZoneID == true){ return CALENDAROBJECTVALID_OK; } else { return CALENDAROBJECTVALID_INVALIDFORMAT; } } void CalendarTimezoneObject::ProcessData(){ // Process the data. multimap DataReceived; map PropertyData; string *PropertyNameData = nullptr; int ObjectSeekCount = 0; // Get the Date Time Stamp (DTSTAMP). DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "TZID"); // Process the data from DTSTAMP. if (DataReceived.begin() != DataReceived.end()){ try { TimeZoneDataTokens = DataReceived.begin()->first.substr(5); } catch(const out_of_range &oor){ // Do nothing as there is no data. } TimeZoneData = DataReceived.begin()->second; } }