Tijl Goens
/
EpaperdisplayII
tempcommit 13/05
Shed.cpp@2:048e163245b7, 2019-05-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |