1 // CalendarJournal.cpp - CalendarJournal class functions
3 // (c) 2016-2017 Xestia Software Development.
5 // This file is part of Xestia Calendar.
7 // Xestia Calendar is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Calendar is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
19 #include "CalendarJournal.h"
23 CalendarObjectValidResult CalendarJournalObject::ValidObject(){
25 bool validBegin = false;
26 bool validEnd = false;
27 bool validDateTimeStamp = false;
28 bool validUniqueID = false;
32 // Look for BEGIN:VJOURNAL.
34 for (vector<string>::iterator iter = objectName.begin();
35 iter != objectName.end(); iter++){
37 if (objectName[seekCount] == "BEGIN" &&
38 objectData[seekCount] == "VJOURNAL"){
40 if (validBegin == false){
43 return CALENDAROBJECTVALID_INVALIDFORMAT;
48 if (objectName[seekCount] == "END" &&
49 objectData[seekCount] == "VJOURNAL" &&
52 return CALENDAROBJECTVALID_INVALIDFORMAT;
64 for (vector<string>::iterator iter = objectName.begin();
65 iter != objectName.end(); iter++){
68 propertyName = objectName[seekCount].substr(0,7);
71 catch(const out_of_range& oor){
75 if (propertyName == "DTSTAMP"){
77 if (validDateTimeStamp == false){
78 validDateTimeStamp = true;
80 return CALENDAROBJECTVALID_INVALIDFORMAT;
93 for (vector<string>::iterator iter = objectName.begin();
94 iter != objectName.end(); iter++){
97 propertyName = objectName[seekCount].substr(0,3);
100 catch(const out_of_range& oor){
104 if (propertyName == "UID"){
106 if (validUniqueID == false){
107 validUniqueID = true;
109 return CALENDAROBJECTVALID_INVALIDFORMAT;
120 // Look for END:VJOURNAL.
122 for (vector<string>::iterator iter = objectName.begin();
123 iter != objectName.end(); iter++){
125 if (objectName[SeekCount] == "END" &&
126 objectData[SeekCount] == "VJOURNAL"){
128 if (validEnd == false){
131 return CALENDAROBJECTVALID_INVALIDFORMAT;
140 // Check if the VJOURNAL is valid.
142 if (validBegin == true &&
144 validDateTimeStamp == true &&
145 validUniqueID == true){
147 return CALENDAROBJECTVALID_OK;
151 return CALENDAROBJECTVALID_INVALIDFORMAT;
157 void CalendarJournalObject::ProcessData(){
161 multimap<string,string> dataReceived;
162 map<string,string> propertyData;
163 string *PropertyNameData = nullptr;
164 int objectSeekCount = 0;
166 // Get the Date Time Stamp (DTSTAMP).
168 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "DTSTAMP");
170 // Process the data from DTSTAMP.
172 if (dataReceived.begin() != dataReceived.end()){
175 dateTimeStampTokens = dataReceived.begin()->first.substr(8);
178 catch(const out_of_range &oor){
179 // Do nothing as there is no data.
182 dateTimeStampData = dataReceived.begin()->second;
186 // Get the Unique ID (UID).
188 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "UID");
190 // Process the data from UID.
192 if (dataReceived.begin() != dataReceived.end()){
195 uniqueIDTokens = dataReceived.begin()->first.substr(4);
198 catch(const out_of_range &oor){
199 // Do nothing as there is no data.
202 uniqueID = dataReceived.begin()->second;
206 // Process the data from CLASS.
208 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "CLASS");
210 if (dataReceived.begin() != dataReceived.end()){
213 classDataTokens = dataReceived.begin()->first.substr(6);
216 catch(const out_of_range &oor){
217 // Do nothing as there is no data.
220 classData = dataReceived.begin()->second;
224 // Get the Date Time Start value.
226 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "DTSTART");
228 // Process the data from DTSTART.
230 if (dataReceived.begin() != dataReceived.end()){
232 bool tokenData = false;
233 string propertyTokens;
235 propertyNameData = (string*)&dataReceived.begin()->first;
237 propertyData = SplitValues(*propertyNameData);
239 for(map<string,string>::iterator iter = propertyData.begin();
240 iter != propertyData.end(); iter++){
242 if (iter->first == "VALUE"){
244 dateTimeStartDataValue = iter->second;
246 } else if (iter->first == "TZID"){
248 dateTimeStartDataTimeZoneID = iter->second;
252 if (tokenData == false){
255 propertyTokens += ";";
258 propertyTokens += iter->first;
259 propertyTokens += "=";
260 propertyTokens += iter->second;
266 if (propertyTokens.size() > 0){
267 dateTimeStartDataTokens = propertyTokens;
270 dateTimeStartData = dataReceived.begin()->second;
274 // Process the data from LAST-MODIFIED.
276 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "LAST-MODIFIED");
278 if (dataReceived.begin() != dataReceived.end()){
281 lastModifiedTokens = dataReceived.begin()->first.substr(14);
284 catch(const out_of_range &oor){
285 // Do nothing as there is no data.
288 lastModifiedData = dataReceived.begin()->second;
292 // Process the data from ORGANIZER.
294 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "ORGANIZER");
296 if (dataReceived.begin() != dataReceived.end()){
298 bool tokenData = false;
299 string propertyTokens;
301 propertyNameData = (string*)&dataReceived.begin()->first;
303 propertyData = SplitValues(*propertyNameData);
305 for(map<string,string>::iterator iter = propertyData.begin();
306 iter != propertyData.end(); iter++){
308 if (iter->first == "CN"){
310 organiserDataCommonName = iter->second;
312 } else if (iter->first == "DIR"){
314 organiserDataDirectoryEntry = iter->second;
316 } else if (iter->first == "SENT-BY"){
318 organiserDataSentByParam = iter->second;
320 } else if (iter->first == "LANGUAGE"){
322 organiserDataLanguage = iter->second;
326 if (tokenData == false){
329 propertyTokens += ";";
332 propertyTokens += iter->first;
333 propertyTokens += "=";
334 propertyTokens += iter->second;
340 if (propertyTokens.size() > 0){
342 organiserDataTokens = propertyTokens;
346 organiserData = dataReceived.begin()->second;
350 // Process the data from RECURRENCE-ID.
352 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "RECURRENCE-ID");
354 if (dataReceived.begin() != dataReceived.end()){
356 bool tokenData = false;
357 string propertyTokens;
359 propertyNameData = (string*)&dataReceived.begin()->first;
361 propertyData = SplitValues(*propertyNameData);
363 for(map<string,string>::iterator iter = propertyData.begin();
364 iter != propertyData.end(); iter++){
366 if (iter->first == "TZID"){
368 recurranceIDDataTimeZoneParam = iter->second;
370 } else if (iter->first == "VALUE"){
372 recurranceIDDataValue = iter->second;
374 } else if (iter->first == "RANGE"){
376 recurranceIDDataRangeParam = iter->second;
380 if (tokenData == false){
383 propertyTokens += ";";
386 propertyTokens += iter->first;
387 propertyTokens += "=";
388 propertyTokens += iter->second;
394 if (propertyTokens.size() > 0){
396 recurranceIDDataTokens = propertyTokens;
400 recurranceIDData = dataReceived.begin()->second;
404 // Process the data from SEQUENCE.
406 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "SEQUENCE");
408 if (dataReceived.begin() != dataReceived.end()){
411 sequenceTokens = dataReceived.begin()->first.substr(9);
414 catch(const out_of_range &oor){
415 // Do nothing as there is no data.
419 sequenceData = stoi(dataReceived.begin()->second);
422 catch(const invalid_argument &oor){
423 sequenceTokens.clear();
428 // Process the data from STATUS.
430 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "STATUS");
432 if (dataReceived.begin() != dataReceived.end()){
434 bool tokenData = false;
435 string propertyTokens;
437 propertyNameData = (string*)&dataReceived.begin()->first;
439 propertyData = SplitValues(*propertyNameData);
441 for(map<string,string>::iterator iter = propertyData.begin();
442 iter != propertyData.end(); iter++){
444 if (iter->first == "LANGUAGE"){
446 statusLanguage = iter->second;
450 if (tokenData == false){
453 propertyTokens += ";";
456 propertyTokens += iter->first;
457 propertyTokens += "=";
458 propertyTokens += iter->second;
464 if (propertyTokens.size() > 0){
466 statusTokens = propertyTokens;
470 statusData = DataReceived.begin()->second;
474 // Process the data from SUMMARY.
476 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "SUMMARY");
478 if (dataReceived.begin() != dataReceived.end()){
480 bool tokenData = false;
481 string propertyTokens;
483 propertyNameData = (string*)&dataReceived.begin()->first;
485 propertyData = SplitValues(*propertyNameData);
487 for(map<string,string>::iterator iter = propertyData.begin();
488 iter != propertyData.end(); iter++){
490 if (iter->first == "ALTREP"){
492 summaryDataAltRep = iter->second;
494 } else if (iter->first == "LANGUAGE"){
496 summaryDataLanguage = iter->second;
500 if (tokenData == false){
503 propertyTokens += ";";
506 propertyTokens += iter->first;
507 propertyTokens += "=";
508 propertyTokens += iter->second;
514 if (propertyTokens.size() > 0){
516 summaryDataTokens = propertyTokens;
520 summaryData = dataReceived.begin()->second;
524 // Process the data from URL.
526 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "URL");
528 if (dataReceived.begin() != dataReceived.end()){
531 urlDataTokens = dataReceived.begin()->first.substr(4);
534 catch(const out_of_range &oor){
535 // Do nothing as there is no data.
538 urlData = dataReceived.begin()->second;
542 // Process the data from RRULE.
544 dataReceived = ProcessTextVectors(&objectName, &objectData, false, "RRULE");
546 if (dataReceived.begin() != dataReceived.end()){
549 recurranceRuleDataTokens = dataReceived.begin()->first.substr(6);
552 catch(const out_of_range &oor){
553 // Do nothing as there is no data.
556 recurranceRuleData = dataReceived.begin()->second;
560 // Process the data from ATTACH.
562 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "ATTACH");
564 for(multimap<string,string>::iterator iter = dataReceived.begin();
565 iter != dataReceived.end();
568 attachListEncoding.push_back("");
569 attachListValue.push_back("");
570 attachListFormatType.push_back("");
571 attachListTokens.push_back("");
572 attachList.push_back("");
574 bool tokenData = false;
575 string propertyTokens;
577 propertyNameData = (string*)&iter->first;
579 propertyData = SplitValues(*propertyNameData);
581 for(map<string,string>::iterator dataiter = propertyData.begin();
582 dataiter != propertyData.end(); dataiter++){
584 if (dataiter->first == "ENCODING"){
586 attachListEncoding[objectSeekCount] = dataiter->second;
588 } else if (dataiter->first == "VALUE"){
590 attachListValue[objectSeekCount] = dataiter->second;
592 } else if (dataiter->first == "FMTTYPE"){
594 attachListFormatType[objectSeekCount] = dataiter->second;
598 if (tokenData == false){
601 propertyTokens += ";";
604 propertyTokens += dataiter->first;
605 propertyTokens += "=";
606 propertyTokens += dataiter->second;
612 if (propertyTokens.size() > 0){
613 attachListTokens[objectSeekCount] = PropertyTokens;
616 attachList[objectSeekCount] = iter->second;
622 // Process the data from ATTENDEE.
624 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "ATTENDEE");
628 for(multimap<string,string>::iterator iter = dataReceived.begin();
629 iter != dataReceived.end();
632 attendeeListMember.push_back("");
633 attendeeListDelegatedFrom.push_back("");
634 attendeeListDelegatedTo.push_back("");
635 attendeeListRole.push_back("");
636 attendeeListRSVP.push_back("");
637 attendeeListDirectoryEntry.push_back("");
638 attendeeListSentBy.push_back("");
639 attendeeListCommonName.push_back("");
640 attendeeListCalendarUserType.push_back("");
641 attendeeListParticipationStatus.push_back("");
642 attendeeListLanguage.push_back("");
643 attendeeListTokens.push_back("");
644 attendeeList.push_back("");
646 bool tokenData = false;
647 string propertyTokens;
649 propertyNameData = (string*)&iter->first;
651 propertyData = SplitValues(*propertyNameData);
653 for(map<string,string>::iterator dataiter = propertyData.begin();
654 dataiter != propertyData.end(); dataiter++){
656 if (dataiter->first == "CUTYPE"){
658 attendeeListCalendarUserType[objectSeekCount] = dataiter->second;
660 } else if (dataiter->first == "MEMBER"){
662 attendeeListMember[objectSeekCount] = dataiter->second;
664 } else if (dataiter->first == "ROLE"){
666 attendeeListRole[objectSeekCount] = dataiter->second;
668 } else if (dataiter->first == "PARTSTAT"){
670 attendeeListParticipationStatus[objectSeekCount] = dataiter->second;
672 } else if (dataiter->first == "RSVP"){
674 attendeeListRSVP[objectSeekCount] = dataiter->second;
676 } else if (dataiter->first == "DELEGATED-TO"){
678 attendeeListDelegatedTo[objectSeekCount] = dataiter->second;
680 } else if (dataiter->first == "DELEGATED-FROM"){
682 attendeeListDelegatedFrom[objectSeekCount] = dataiter->second;
684 } else if (dataiter->first == "SENT-BY"){
686 attendeeListSentBy[objectSeekCount] = dataiter->second;
688 } else if (dataiter->first == "CN"){
690 attendeeListCommonName[objectSeekCount] = dataiter->second;
692 } else if (dataiter->first == "DIR"){
694 attendeeListDirectoryEntry[objectSeekCount] = dataiter->second;
696 } else if (dataiter->first == "LANGUAGE"){
698 attendeeListLanguage[objectSeekCount] = dataiter->second;
702 if (tokenData == false){
705 propertyTokens += ";";
708 propertyTokens += dataiter->first;
709 propertyTokens += "=";
710 propertyTokens += dataiter->second;
716 if (propertyTokens.size() > 0){
717 attendeeListTokens[objectSeekCount] = propertyTokens;
720 attendeeList[objectSeekCount] = iter->second;
726 // Process the data from CATEGORIES.
728 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "CATEGORIES");
732 for(multimap<string,string>::iterator iter = dataReceived.begin();
733 iter != dataReceived.end();
736 categoriesListTokens.push_back("");
737 categoriesListLanguage.push_back("");
738 categoriesList.push_back("");
740 bool tokenData = false;
741 string propertyTokens;
743 propertyNameData = (string*)&iter->first;
745 propertyData = SplitValues(*PropertyNameData);
747 for(map<string,string>::iterator dataiter = propertyData.begin();
748 dataiter != propertyData.end(); dataiter++){
750 if (dataiter->first == "LANGUAGE"){
752 categoriesListLanguage[objectSeekCount] = dataiter->second;
756 if (tokenData == false){
759 propertyTokens += ";";
762 propertyTokens += dataiter->first;
763 propertyTokens += "=";
764 propertyTokens += dataiter->second;
770 if (propertyTokens.size() > 0){
771 categoriesListTokens[objectSeekCount] = propertyTokens;
774 categoriesList[objectSeekCount] = iter->second;
780 // Process the data from COMMENT.
782 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "COMMENT");
786 for(multimap<string,string>::iterator iter = dataReceived.begin();
787 iter != dataReceived.end();
790 commentListTokens.push_back("");
791 commentListAltRep.push_back("");
792 commentListLanguage.push_back("");
793 commentList.push_back("");
795 bool tokenData = false;
796 string propertyTokens;
798 propertyNameData = (string*)&iter->first;
800 propertyData = SplitValues(*propertyNameData);
802 for(map<string,string>::iterator dataiter = propertyData.begin();
803 dataiter != propertyData.end(); dataiter++){
805 if (dataiter->first == "ALTREP"){
807 commentListAltRep[objectSeekCount] = dataiter->second;
809 } else if (dataiter->first == "LANGUAGE"){
811 commentListLanguage[objectSeekCount] = dataiter->second;
815 if (tokenData == false){
818 propertyTokens += ";";
821 propertyTokens += dataiter->first;
822 propertyTokens += "=";
823 propertyTokens += dataiter->second;
829 if (propertyTokens.size() > 0){
830 commentListTokens[objectSeekCount] = propertyTokens;
833 commentList[objectSeekCount] = iter->second;
839 // Process the data from CONTACT.
841 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "CONTACT");
845 for(multimap<string,string>::iterator iter = dataReceived.begin();
846 iter != dataReceived.end();
849 contactListTokens.push_back("");
850 contactListAltRep.push_back("");
851 contactListLanguage.push_back("");
852 contactList.push_back("");
854 bool tokenData = false;
855 string propertyTokens;
857 propertyNameData = (string*)&iter->first;
859 propertyData = SplitValues(*propertyNameData);
861 for(map<string,string>::iterator dataiter = propertyData.begin();
862 dataiter != propertyData.end(); dataiter++){
864 if (dataiter->first == "ALTREP"){
866 contactListAltRep[objectSeekCount] = dataiter->second;
868 } else if (dataiter->first == "LANGUAGE"){
870 contactListLanguage[objectSeekCount] = dataiter->second;
874 if (tokenData == false){
877 propertyTokens += ";";
880 propertyTokens += dataiter->first;
881 propertyTokens += "=";
882 propertyTokens += dataiter->second;
888 if (propertyTokens.size() > 0){
889 contactListTokens[objectSeekCount] = propertyTokens;
892 contactList[objectSeekCount] = iter->second;
898 // Process the data from Description.
900 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "DESCRIPTION");
904 for(multimap<string,string>::iterator iter = dataReceived.begin();
905 iter != dataReceived.end();
908 descriptionListTokens.push_back("");
909 descriptionListAltRep.push_back("");
910 descriptionListLanguage.push_back("");
911 descriptionList.push_back("");
913 bool tokenData = false;
914 string propertyTokens;
916 propertyNameData = (string*)&iter->first;
918 propertyData = SplitValues(*propertyNameData);
920 for(map<string,string>::iterator dataiter = propertyData.begin();
921 dataiter != propertyData.end(); dataiter++){
923 if (dataiter->first == "ALTREP"){
925 descriptionListAltRep[objectSeekCount] = dataiter->second;
927 } else if (dataiter->first == "LANGUAGE"){
929 descriptionListLanguage[objectSeekCount] = dataiter->second;
933 if (tokenData == false){
936 propertyTokens += ";";
939 propertyTokens += dataiter->first;
940 propertyTokens += "=";
941 propertyTokens += dataiter->second;
947 if (propertyTokens.size() > 0){
948 descriptionListTokens[objectSeekCount] = propertyTokens;
951 descriptionList[objectSeekCount] = iter->second;
957 // Process the data from EXDATE.
959 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "EXDATE");
963 for(multimap<string,string>::iterator iter = dataReceived.begin();
964 iter != dataReceived.end();
967 excludeDateDataTokens.push_back("");
968 excludeDateDataValue.push_back("");
969 excludeDateDataTimeZoneParam.push_back("");
970 excludeDateData.push_back("");
972 bool tokenData = false;
973 string propertyTokens;
975 propertyNameData = (string*)&iter->first;
977 propertyData = SplitValues(*propertyNameData);
979 for(map<string,string>::iterator dataiter = propertyData.begin();
980 dataiter != propertyData.end(); dataiter++){
982 if (dataiter->first == "VALUE"){
984 excludeDateDataValue[objectSeekCount] = dataiter->second;
986 } else if (dataiter->first == "TZID"){
988 excludeDateDataTimeZoneParam[objectSeekCount] = dataiter->second;
992 if (tokenData == false){
995 propertyTokens += ";";
998 propertyTokens += dataiter->first;
999 propertyTokens += "=";
1000 propertyTokens += dataiter->second;
1006 if (propertyTokens.size() > 0){
1007 excludeDateDataTokens[objectSeekCount] = propertyTokens;
1010 excludeDateData[objectSeekCount] = iter->second;
1016 // Process the data from RELATED-TO.
1018 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "RELATED-TO");
1020 objectSeekCount = 0;
1022 for(multimap<string,string>::iterator iter = dataReceived.begin();
1023 iter != dataReceived.end();
1026 relatedToDataTokens.push_back("");
1027 relatedToDataRelationType.push_back("");
1028 relatedToData.push_back("");
1030 bool tokenData = false;
1031 string propertyTokens;
1033 propertyNameData = (string*)&iter->first;
1035 propertyData = SplitValues(*propertyNameData);
1037 for(map<string,string>::iterator dataiter = propertyData.begin();
1038 dataiter != propertyData.end(); dataiter++){
1040 if (dataiter->first == "RELTYPE"){
1042 relatedToDataRelationType[objectSeekCount] = dataiter->second;
1046 if (tokenData == false){
1049 propertyTokens += ";";
1052 propertyTokens += dataiter->first;
1053 propertyTokens += "=";
1054 propertyTokens += dataiter->second;
1060 if (propertyTokens.size() > 0){
1061 relatedToDataTokens[objectSeekCount] = propertyTokens;
1064 relatedToData[objectSeekCount] = iter->second;
1070 // Process the data from RDATE.
1072 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "RDATE");
1074 objectSeekCount = 0;
1076 for(multimap<string,string>::iterator iter = dataReceived.begin();
1077 iter != dataReceived.end();
1080 recurranceDateDataTokens.push_back("");
1081 recurranceDateDataValue.push_back("");
1082 recurranceDateDataTimeZoneParam.push_back("");
1083 recurranceDateData.push_back("");
1085 bool tokenData = false;
1086 string propertyTokens;
1088 propertyNameData = (string*)&iter->first;
1090 propertyData = SplitValues(*propertyNameData);
1092 for(map<string,string>::iterator dataiter = propertyData.begin();
1093 dataiter != propertyData.end(); dataiter++){
1095 if (dataiter->first == "VALUE"){
1097 recurranceDateDataValue[objectSeekCount] = dataiter->second;
1099 } else if (dataiter->first == "TZID"){
1101 recurranceDateDataTimeZoneParam[objectSeekCount] = dataiter->second;
1105 if (tokenData == false){
1108 propertyTokens += ";";
1111 propertyTokens += dataiter->first;
1112 propertyTokens += "=";
1113 propertyTokens += dataiter->second;
1119 if (propertyTokens.size() > 0){
1120 recurranceDateDataTokens[objectSeekCount] = propertyTokens;
1123 recurranceDateData[objectSeekCount] = iter->second;
1129 // Process the data from REQUEST-STATUS.
1131 dataReceived = ProcessTextVectors(&objectName, &objectData, true, "REQUEST-STATUS");
1133 objectSeekCount = 0;
1135 for(multimap<string,string>::iterator iter = dataReceived.begin();
1136 iter != dataReceived.end();
1139 requestStatusTokens.push_back("");
1140 requestStatusLanguage.push_back("");
1141 requestStatusData.push_back("");
1143 bool tokenData = false;
1144 string propertyTokens;
1146 propertyNameData = (string*)&iter->first;
1148 propertyData = SplitValues(*propertyNameData);
1150 for(map<string,string>::iterator dataiter = propertyData.begin();
1151 dataiter != propertyData.end(); dataiter++){
1153 if (dataiter->first == "LANGUAGE"){
1155 requestStatusLanguage[objectSeekCount] = dataiter->second;
1159 if (tokenData == false){
1162 propertyTokens += ";";
1165 propertyTokens += dataiter->first;
1166 propertyTokens += "=";
1167 propertyTokens += dataiter->second;
1173 if (propertyTokens.size() > 0){
1174 requestStatusTokens[objectSeekCount] = propertyTokens;
1177 requestStatusData[objectSeekCount] = iter->second;
1183 objectSeekCount = 0;
1185 // Process data from X-*
1187 for(vector<string>::iterator iter = objectName.begin();
1188 iter != objectName.end(); ++iter){
1190 bool tokenData = false;
1191 string propertyTokens;
1193 if (iter->substr(0,2) == "X-" &&
1196 xTokensData.push_back(objectData[objectSeekCount]);
1197 xTokensDataTokens.push_back(objectName[objectSeekCount]);