Tijl Goens
/
EpaperdisplayII
tempcommit 13/05
Embed:
(wiki syntax)
Show/hide line numbers
Shed.cpp
00001 #include "mbed.h" 00002 #include "Shed.h" 00003 #include "Datetime.h" 00004 using namespace std; 00005 00006 Shed::Shed(string json) { 00007 /* Voorbeeld json input 00008 " 00009 "id":"7", 00010 "lokaal":"2.85", 00011 "start":"2019-03-22 15:45:00", 00012 "einde":"2019-03-28 18:45:00", 00013 "prof":"J. Lannoo", 00014 "klasgroep":"1e Bachelor ME", 00015 "vak":"Sterkteleer", 00016 "comments":"Extra lokaal 4.20 via video" 00017 " 00018 */ 00019 string start_str = ""; 00020 string einde_str = ""; 00021 int param = 0; 00022 bool startCmd = false; 00023 bool endCmd = false; 00024 bool startParam = false; 00025 bool endParam = false; 00026 for(int i = 0; i < json.length(); i++) { 00027 char c = json.at(i); 00028 if(c == '"') { 00029 //Eerste keer is er nog geen startCmd, vanaf dan is deze altijd true 00030 //als dan de endParam true is, is het de volgende cmd eigenlijk dus alles herinitialiseren 00031 if(!startCmd || endParam) { 00032 endCmd = false; 00033 startParam = false; 00034 endParam = false; 00035 startCmd = true; 00036 param++; 00037 } else if(!endCmd) { 00038 endCmd = true; 00039 } else if(!startParam) { 00040 startParam = true; 00041 } else if(!endParam) { 00042 endParam = true; 00043 } 00044 } else { 00045 if(startParam && !endParam) { 00046 //Waarde aan het lezen 00047 switch(param) { 00048 case 1: { 00049 //id 00050 //Not needed 00051 } break; 00052 case 2: { 00053 //lokaal 00054 this->lokaal += c; 00055 } break; 00056 case 3: { 00057 //start 00058 start_str += c; 00059 } break; 00060 case 4: { 00061 //einde 00062 einde_str += c; 00063 } break; 00064 case 5: { 00065 //prof 00066 this->prof += c; 00067 } break; 00068 case 6: { 00069 //klasgroep 00070 this->klasgroep += c; 00071 } break; 00072 case 7: { 00073 //vak 00074 this->vak += c; 00075 } break; 00076 case 8: { 00077 //comments 00078 this->comments += c; 00079 } break; 00080 default: { 00081 //Error 00082 } 00083 } 00084 }/* else if(startCmd && !endCmd) { 00085 //Commando aan het lezen 00086 //Not needed 00087 }*/ 00088 } 00089 } 00090 //Save start & einde as Datetime 00091 this->start = new Datetime(start_str); 00092 this->einde = new Datetime(einde_str); 00093 } 00094 00095 Shed::~Shed() { 00096 //strings are freed automatically 00097 //Needed for datetime (found on: https://stackoverflow.com/a/677661) 00098 //but this freezes the mbed without errors, so don't? 00099 //delete this->start; 00100 //delete this->einde; 00101 } 00102 00103 string Shed::getLokaal () { 00104 return lokaal; 00105 } 00106 00107 Datetime* Shed::getStart () { 00108 return start; 00109 } 00110 00111 Datetime* Shed::getEinde () { 00112 return einde; 00113 } 00114 00115 string Shed::getProf () { 00116 return prof; 00117 } 00118 00119 string Shed::getKlasgroep () { 00120 return klasgroep; 00121 } 00122 00123 string Shed::getVak () { 00124 return vak; 00125 } 00126 00127 string Shed::getComments () { 00128 return comments; 00129 } 00130 00131 //Er mag hier geen static voor staan als je een pointer wil gebruiken als return. Er staat wel een static voor in de header hiermee weet de main genoeg 00132 vector<Shed>* Shed::getShedVector (vector<string> jsons) { 00133 vector<Shed> sheds; 00134 for(int i = 0; i < jsons.size(); i++) { 00135 sheds.push_back(Shed(jsons[i])); 00136 } 00137 return &sheds; 00138 }
Generated on Thu Jul 14 2022 00:56:38 by 1.7.2