From 684cf1f81130f6e7443d90c104dd50e43dee8ca7 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Thu, 17 Sep 2015 18:30:45 -0500 Subject: [PATCH] Updated DBEngine functions --- Attribute.cpp | 57 ++++++++++++++++++++++++++++++++++++++++ Attribute.h | 44 ++++++++----------------------- DBEngine.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ DBEngine.h | 60 ++++++++++++------------------------------- Relation.cpp | 44 +++++++++++++++++++++++++++++++ Relation.h | 56 ++++++++-------------------------------- a.out | Bin 63265 -> 0 bytes test.cpp | 6 +++++ 8 files changed, 213 insertions(+), 124 deletions(-) create mode 100755 Attribute.cpp create mode 100755 DBEngine.cpp create mode 100755 Relation.cpp delete mode 100755 a.out diff --git a/Attribute.cpp b/Attribute.cpp new file mode 100755 index 0000000..9a66043 --- /dev/null +++ b/Attribute.cpp @@ -0,0 +1,57 @@ +#include +#include +#include "Attribute.h" + +Attribute::Attribute(string n, string t, bool k){ + name = n; + type = t; + key = k; + size = 0; +} + +void Attribute::addCell(string v){ + values.push_back(v); + size++; +} + +string Attribute::operator[](int i){ + return values[i]; +} + +vector Attribute::getValues(){ + return values; +} + +string Attribute::getName(){ + return name; +} + +string Attribute::getType(){ + return type; +} + +bool Attribute::isKey(){ + return key; +} + +void Attribute::setName(string s){ + name = s; +} + +//may need to change primary key implementation +int Attribute::getSize(){ + return size; +} + +void Attribute::display(){ + cout << "-------------\n"; + cout << name << "\n" << type << "\n\n"; + + vector::iterator it = values.begin(); + while (it != values.end()){ + cout << *it << "\n"; + it++; + } + + cout << "-------------\n"; +} \ No newline at end of file diff --git a/Attribute.h b/Attribute.h index 084706a..30f10ee 100755 --- a/Attribute.h +++ b/Attribute.h @@ -3,9 +3,6 @@ using namespace std; -//Funtional, might need more functionality - -//template class Attribute{ vector values; string name; @@ -14,35 +11,14 @@ class Attribute{ int size; public: - Attribute(string n, string t, bool k){ - name = n; - type = t; - key = k; - size = 0; - } - - void addCell(string v){ - values.push_back(v); - size++; - } - - string operator[](int i){ return values[i]; } - vector getValues(){ return values; } - string getName(){ return name; } - string getType(){ return type; } - bool isKey(){ return key; } - int getSize(){ return size; } //may need to change primary key implementation - - void display(){ - cout << "-------------\n"; - cout << name << "\n" << type << "\n\n"; - - vector::iterator it = values.begin(); - while (it != values.end()){ - cout << *it << "\n"; - it++; - } - - cout << "-------------\n"; - } + Attribute(string n, string t, bool k); + void addCell(string v); + string operator[](int i); + vector getValues(); + string getName(); + string getType(); + bool isKey(); + int getSize(); + void setName(string s); + void display(); }; diff --git a/DBEngine.cpp b/DBEngine.cpp new file mode 100755 index 0000000..a813c90 --- /dev/null +++ b/DBEngine.cpp @@ -0,0 +1,70 @@ +#include +#include +#include +#include "DBEngine.h" + +DBEngine::DBEngine(){ + size = 0; +} + +void DBEngine::createTable(string n){ + Relation r(n); + tables.push_back(r); + size++; +} + +void DBEngine::createTable(string n, vector a){ + Relation r(n, a); + tables.push_back(r); + size++; +} + +void DBEngine::createTable(Relation r){ + tables.push_back(r); + size++; +} + +vector DBEngine::getRelations(){ + return tables; +} + +Relation DBEngine::getTableFromName(string n){ + //will return first occurence + for(int i = 0; i < tables.size(); i++){ + if (tables[i].getTableName() == n){ + return tables[i]; + } + } +} + +void DBEngine::saveToFile(vector cmds){ + //writes nothing meaningful + ofstream file; + file.open("savefile.db"); + + for(int i = 0; i < cmds.size(); ++i){ + file << cmds[i] << endl; + } + + file.close(); +} + +//assumes that all attribute titles are unique +Relation DBEngine::projection(vector input, Relation r){ + + +// for(int i = 0; i < input.size(); i++) { +// it = find(r.getAttributes().begin(), r.getAttributes().end(), input[i]) + + //if(r[i].getName == input[]) +// } +} +/* +void renameAttribute(vector v, string o, string s){ + for(int i = 0; i < v.size(); ++i){ + if(v[i].getName() == o){ + v[i].setName(s); + } + } +} +*/ diff --git a/DBEngine.h b/DBEngine.h index 792c36b..f2e5e3f 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -4,53 +4,25 @@ #include "Relation.h" //still in progress -class DBEngine { +class DBEngine{ vector tables; int size; public: - DBEngine(){ - size = 0; - } - - void createTable(string n) { - Relation r(n); - tables.push_back(r); - size++; - } - - void createTable(string n, vector a) { - Relation r(n, a); - tables.push_back(r); - size++; - } + DBEngine(); + void createTable(string n); + void createTable(string n, vector a); + void createTable(Relation r); + vector getRelations(); + //void showTable(Relation r); + Relation getTableFromName(string n); + void saveToFile(vector cmds); - void createTable(Relation r){ - tables.push_back(r); - size++; - } - - vector getRelations(){ return tables; } - //void showTable(Relation r){} - - Relation getTableFromName(string n){ - //will return first occurence - for(int i = 0; i < tables.size(); i++){ - if (tables[i].getTableName() == n){ - return tables[i]; - } - } - } - - void saveToFile(vector cmds){ - //writes nothing meaningful - ofstream file; - file.open("savefile.db"); - - for(int i = 0; i < cmds.size(); ++i){ - file << cmds[i] << endl; - } - - file.close(); - } + //operations + //void selection(); + Relation projection(vector input, Relation r); + //void renaming(); + //void setUnion(); + //void setDiff(); + //void crossProduct(); }; diff --git a/Relation.cpp b/Relation.cpp new file mode 100755 index 0000000..09eeaf7 --- /dev/null +++ b/Relation.cpp @@ -0,0 +1,44 @@ +#include +#include +#include "Relation.h" + +Relation::Relation(string n){ + name = n; + size = 0; +} + +Relation::Relation(string n, vector a){ + name = n; + att = a; + size = a.size(); +} + +string Relation::getTableName(){ + return name; +} + +vector Relation::getAttributes(){ + return att; +} + +vector Relation::getAttributeNames(){ + vector temp; + for(int i = 0; i < size; ++i){ + temp.push_back(att[i].getName()); + } + return temp; +} + +int Relation::getSize(){ + return size; +} + +void Relation::display(){ + cout << "--------------------------\n"; + cout << name << "\n"; + for (int i = 0; i < att.size(); ++i){ + att[i].display(); + } + + cout << "--------------------------\n"; +} diff --git a/Relation.h b/Relation.h index a404706..75ef810 100755 --- a/Relation.h +++ b/Relation.h @@ -2,53 +2,17 @@ #include #include "Attribute.h" -//Functional -class Relation { - string name; //The title the user gives it - vector att; //A vector of the columns +class Relation{ + string name; + vector att; int size; public: - Relation(string n) { - name = n; - size = 0; - } - Relation(string n, vector a) { - name = n; - att = a; - size = a.size(); - } - - //addAttribute - - string getTableName() { return name; } - vector getAttributes() { return att; } - int getSize() { return size; } - - //assumes that all attribute titles are unique - void projectQuery(string input) { - cout << "-----------Initiated Query Projection---------" << endl; - for(int i = 0; i < att.size(); i++) { - if(att[i].getName() == input) { - cout << "Column Title: " << input << endl; - for(int j = 0; j < att[i].getSize(); j++) { - cout << att[i].getValues()[j] << endl; - } - - break; - } - else - cout << "Attribute input not valid" << endl; - } - } - - void display() { - cout << "--------------------------\n"; - cout << name << "\n"; - for (int i = 0; i < att.size(); ++i){ - att[i].display(); - } - - cout << "--------------------------\n"; - } + Relation(string n); + Relation(string n, vector a); + string getTableName(); + vector getAttributes(); + vector getAttributeNames(); + int getSize(); + void display(); }; diff --git a/a.out b/a.out deleted file mode 100755 index 1a24079c2b46a44cf732db100bd1f54b509a9514..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63265 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 rs = engine.getRelations(); Relation r2 = engine.getTableFromName("Food"); r2.display(); + + vector v1 = r2.getAttributeNames(); + + for (int i = 0; i < v.size(); ++i){ + cout << v1[i]; + } }