tempcommit 13/05

Committer:
tijl
Date:
Wed May 15 13:39:22 2019 +0000
Revision:
2:048e163245b7
Parent:
1:63664175e603
blub 15/05;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tijl 1:63664175e603 1 #include "mbed.h"
tijl 1:63664175e603 2 #include "Shed.h"
tijl 1:63664175e603 3 #include "Datetime.h"
tijl 1:63664175e603 4 using namespace std;
tijl 1:63664175e603 5
tijl 1:63664175e603 6 Shed::Shed(string json) {
tijl 1:63664175e603 7 /* Voorbeeld json input
tijl 1:63664175e603 8 "
tijl 1:63664175e603 9 "id":"7",
tijl 1:63664175e603 10 "lokaal":"2.85",
tijl 1:63664175e603 11 "start":"2019-03-22 15:45:00",
tijl 1:63664175e603 12 "einde":"2019-03-28 18:45:00",
tijl 1:63664175e603 13 "prof":"J. Lannoo",
tijl 1:63664175e603 14 "klasgroep":"1e Bachelor ME",
tijl 1:63664175e603 15 "vak":"Sterkteleer",
tijl 1:63664175e603 16 "comments":"Extra lokaal 4.20 via video"
tijl 1:63664175e603 17 "
tijl 1:63664175e603 18 */
tijl 1:63664175e603 19 string start_str = "";
tijl 1:63664175e603 20 string einde_str = "";
tijl 1:63664175e603 21 int param = 0;
tijl 1:63664175e603 22 bool startCmd = false;
tijl 1:63664175e603 23 bool endCmd = false;
tijl 1:63664175e603 24 bool startParam = false;
tijl 1:63664175e603 25 bool endParam = false;
tijl 1:63664175e603 26 for(int i = 0; i < json.length(); i++) {
tijl 1:63664175e603 27 char c = json.at(i);
tijl 1:63664175e603 28 if(c == '"') {
tijl 1:63664175e603 29 //Eerste keer is er nog geen startCmd, vanaf dan is deze altijd true
tijl 1:63664175e603 30 //als dan de endParam true is, is het de volgende cmd eigenlijk dus alles herinitialiseren
tijl 1:63664175e603 31 if(!startCmd || endParam) {
tijl 1:63664175e603 32 endCmd = false;
tijl 1:63664175e603 33 startParam = false;
tijl 1:63664175e603 34 endParam = false;
tijl 1:63664175e603 35 startCmd = true;
tijl 1:63664175e603 36 param++;
tijl 1:63664175e603 37 } else if(!endCmd) {
tijl 1:63664175e603 38 endCmd = true;
tijl 1:63664175e603 39 } else if(!startParam) {
tijl 1:63664175e603 40 startParam = true;
tijl 1:63664175e603 41 } else if(!endParam) {
tijl 1:63664175e603 42 endParam = true;
tijl 1:63664175e603 43 }
tijl 1:63664175e603 44 } else {
tijl 1:63664175e603 45 if(startParam && !endParam) {
tijl 1:63664175e603 46 //Waarde aan het lezen
tijl 1:63664175e603 47 switch(param) {
tijl 1:63664175e603 48 case 1: {
tijl 1:63664175e603 49 //id
tijl 1:63664175e603 50 //Not needed
tijl 1:63664175e603 51 } break;
tijl 1:63664175e603 52 case 2: {
tijl 1:63664175e603 53 //lokaal
tijl 1:63664175e603 54 this->lokaal += c;
tijl 1:63664175e603 55 } break;
tijl 1:63664175e603 56 case 3: {
tijl 1:63664175e603 57 //start
tijl 1:63664175e603 58 start_str += c;
tijl 1:63664175e603 59 } break;
tijl 1:63664175e603 60 case 4: {
tijl 1:63664175e603 61 //einde
tijl 1:63664175e603 62 einde_str += c;
tijl 1:63664175e603 63 } break;
tijl 1:63664175e603 64 case 5: {
tijl 1:63664175e603 65 //prof
tijl 1:63664175e603 66 this->prof += c;
tijl 1:63664175e603 67 } break;
tijl 1:63664175e603 68 case 6: {
tijl 1:63664175e603 69 //klasgroep
tijl 1:63664175e603 70 this->klasgroep += c;
tijl 1:63664175e603 71 } break;
tijl 1:63664175e603 72 case 7: {
tijl 1:63664175e603 73 //vak
tijl 1:63664175e603 74 this->vak += c;
tijl 1:63664175e603 75 } break;
tijl 1:63664175e603 76 case 8: {
tijl 1:63664175e603 77 //comments
tijl 1:63664175e603 78 this->comments += c;
tijl 1:63664175e603 79 } break;
tijl 1:63664175e603 80 default: {
tijl 1:63664175e603 81 //Error
tijl 1:63664175e603 82 }
tijl 1:63664175e603 83 }
tijl 1:63664175e603 84 }/* else if(startCmd && !endCmd) {
tijl 1:63664175e603 85 //Commando aan het lezen
tijl 1:63664175e603 86 //Not needed
tijl 1:63664175e603 87 }*/
tijl 1:63664175e603 88 }
tijl 1:63664175e603 89 }
tijl 1:63664175e603 90 //Save start & einde as Datetime
tijl 1:63664175e603 91 this->start = new Datetime(start_str);
tijl 1:63664175e603 92 this->einde = new Datetime(einde_str);
tijl 1:63664175e603 93 }
tijl 1:63664175e603 94
tijl 1:63664175e603 95 Shed::~Shed() {
tijl 1:63664175e603 96 //strings are freed automatically
tijl 1:63664175e603 97 //Needed for datetime (found on: https://stackoverflow.com/a/677661)
tijl 1:63664175e603 98 //but this freezes the mbed without errors, so don't?
tijl 1:63664175e603 99 //delete this->start;
tijl 1:63664175e603 100 //delete this->einde;
tijl 1:63664175e603 101 }
tijl 1:63664175e603 102
tijl 1:63664175e603 103 string Shed::getLokaal() {
tijl 1:63664175e603 104 return lokaal;
tijl 1:63664175e603 105 }
tijl 1:63664175e603 106
tijl 1:63664175e603 107 Datetime* Shed::getStart() {
tijl 1:63664175e603 108 return start;
tijl 1:63664175e603 109 }
tijl 1:63664175e603 110
tijl 1:63664175e603 111 Datetime* Shed::getEinde() {
tijl 1:63664175e603 112 return einde;
tijl 1:63664175e603 113 }
tijl 1:63664175e603 114
tijl 1:63664175e603 115 string Shed::getProf() {
tijl 1:63664175e603 116 return prof;
tijl 1:63664175e603 117 }
tijl 1:63664175e603 118
tijl 1:63664175e603 119 string Shed::getKlasgroep() {
tijl 1:63664175e603 120 return klasgroep;
tijl 1:63664175e603 121 }
tijl 1:63664175e603 122
tijl 1:63664175e603 123 string Shed::getVak() {
tijl 1:63664175e603 124 return vak;
tijl 1:63664175e603 125 }
tijl 1:63664175e603 126
tijl 1:63664175e603 127 string Shed::getComments() {
tijl 1:63664175e603 128 return comments;
tijl 1:63664175e603 129 }
tijl 1:63664175e603 130
tijl 1:63664175e603 131 //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
tijl 1:63664175e603 132 vector<Shed>* Shed::getShedVector(vector<string> jsons) {
tijl 1:63664175e603 133 vector<Shed> sheds;
tijl 1:63664175e603 134 for(int i = 0; i < jsons.size(); i++) {
tijl 1:63664175e603 135 sheds.push_back(Shed(jsons[i]));
tijl 1:63664175e603 136 }
tijl 1:63664175e603 137 return &sheds;
tijl 1:63664175e603 138 }