tempcommit 13/05

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Shed.cpp Source File

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 }