DatabaseController.cpp
1 /** 2 * @file DatabaseController.cpp 3 * @author Rene Ceska xceska06 (xceska06@stud.fit.vutbr.cz) 4 * @date 2023-11-19 5 */ 6 #include "inc/DatabaseController.h" 7 8 std::vector<DatabaseObject> DatabaseController::loadAllRows() { 9 std::vector<DatabaseObject> result; 10 while (!file.eof()) { 11 int err; 12 result.push_back(loadNextRow(&err)); 13 } 14 return result; 15 } 16 17 std::vector<unsigned char> 18 DatabaseController::sanitaze(std::vector<unsigned char> input) { 19 std::vector<unsigned char> result; 20 // allow only printable ascii charactes and numbers 21 for (unsigned long int i = 0; i < input.size(); i++) { 22 if (input[i] >= 32 && input[i] <= 126) { 23 result.push_back(input[i]); 24 } 25 } 26 return result; 27 } 28 29 DatabaseObject DatabaseController::loadNextRow(int *err) { 30 31 if (file.eof()) { 32 *err = 1; 33 return DatabaseObject(std::vector<unsigned char>(), 34 std::vector<unsigned char>(), 35 std::vector<unsigned char>()); 36 } 37 38 std::vector<unsigned char> name; 39 std::vector<unsigned char> uid; 40 std::vector<unsigned char> email; 41 42 // read csv line 43 std::string line; 44 std::getline(file, line); 45 if (line == "") { 46 *err = 1; 47 return DatabaseObject(std::vector<unsigned char>(), 48 std::vector<unsigned char>(), 49 std::vector<unsigned char>()); 50 } 51 std::stringstream ss(line); 52 std::string token; 53 std::getline(ss, token, ';'); 54 55 name = DatabaseController::sanitaze( 56 std::vector<unsigned char>(token.begin(), token.end())); 57 std::getline(ss, token, ';'); 58 uid = DatabaseController::sanitaze( 59 std::vector<unsigned char>(token.begin(), token.end())); 60 std::getline(ss, token, ';'); 61 email = DatabaseController::sanitaze( 62 std::vector<unsigned char>(token.begin(), token.end())); 63 *err = 0; 64 return DatabaseObject(name, uid, email); 65 } 66 67 DatabaseController::DatabaseController(std::string fileName) { 68 file.open(fileName); 69 } 70 71 DatabaseController::~DatabaseController() { file.close(); }