added gettuple
This commit is contained in:
commit
3983003035
10 changed files with 147 additions and 31 deletions
|
@ -61,3 +61,7 @@ void Attribute::display(){
|
|||
|
||||
cout << "-------------\n";
|
||||
}
|
||||
|
||||
void Attribute::clearAllValues(){
|
||||
values.clear();
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
#pragma once
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
|
@ -22,4 +23,5 @@ public:
|
|||
bool isKey();
|
||||
int getSize();
|
||||
void display();
|
||||
void clearAllValues();
|
||||
};
|
|
@ -1,29 +1,59 @@
|
|||
#include <iostream>
|
||||
#include "Attribute.h"
|
||||
#include "Relation.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
//currently only implementing for comparison
|
||||
void equality(Attribute a, string s){
|
||||
Relation equality(string attName, string s, Relation r){
|
||||
Attribute att = r.getAttributeByName(attName);
|
||||
vector<Attribute> r_atts = r.getAttributes();
|
||||
vector<Attribute> new_atts = r_atts;
|
||||
|
||||
for (int i = 0; i < new_atts.size(); ++i) {
|
||||
new_atts[i].clearAllValues();
|
||||
}
|
||||
|
||||
for (int i = 0; i < att.getSize(); ++i) {
|
||||
if (att[i] == s){
|
||||
for (int j = 0; j < r_atts.size(); ++j){
|
||||
new_atts[j].addCell(r_atts[j][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//currently all returned relations are called TEMP
|
||||
Relation new_r("TEMP", new_atts);
|
||||
return new_r;
|
||||
}
|
||||
|
||||
void equality(Attribute a, int i){
|
||||
|
||||
/*
|
||||
vector<Attribute> equality(Attribute a, int i){
|
||||
for (int i = 0; i < a.getSize(); ++i) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
void gt(Attribute a, int i){
|
||||
|
||||
vector<Attribute> gt(Attribute a, int i){
|
||||
for (int i = 0; i < a.getSize(); ++i) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
void lt(Attribute a, int i){
|
||||
|
||||
vector<Attribute> lt(Attribute a, int i){
|
||||
for (int i = 0; i < a.getSize(); ++i) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
void gte(Attribute a, int i){
|
||||
|
||||
vector<Attribute> gte(Attribute a, int i){
|
||||
for (int i = 0; i < a.getSize(); ++i) {
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
void lte(Attribute a, int i){
|
||||
|
||||
vector<Attribute> lte(Attribute a, int i){
|
||||
for (int i = 0; i < a.getSize(); ++i) {
|
||||
//
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
|
12
Condition.h
12
Condition.h
|
@ -1,13 +1,7 @@
|
|||
#include <iostream>
|
||||
#include "Attribute.h"
|
||||
#pragma once
|
||||
#include "Relation.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
//currently only implementing for comparison
|
||||
Condition();
|
||||
void equality(Attribute a, string s);
|
||||
void equality(Attribute a, int i);
|
||||
void gt(Attribute a, int i);
|
||||
void lt(Attribute a, int i);
|
||||
void gte(Attribute a, int i);
|
||||
void lte(Attribute a, int i);
|
||||
Relation equality(string attName, string s, Relation r);
|
||||
|
|
38
DBEngine.cpp
38
DBEngine.cpp
|
@ -1,6 +1,7 @@
|
|||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include "Condition.h"
|
||||
#include "DBEngine.h"
|
||||
|
||||
DBEngine::DBEngine(){
|
||||
|
@ -49,6 +50,11 @@ void DBEngine::saveToFile(vector<string> cmds){
|
|||
file.close();
|
||||
}
|
||||
|
||||
|
||||
Relation DBEngine::selection(string attName, string s, Relation r){
|
||||
equality(attName, s, r);
|
||||
}
|
||||
|
||||
//assumes that all attribute titles are unique
|
||||
Relation DBEngine::projection(vector<string> input, Relation r){
|
||||
|
||||
|
@ -78,3 +84,35 @@ void DBEngine::rename(Relation& r, vector<string> oldnames, vector<string> newna
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*Relation DBEngine::setUnion(Relation r1, Relation r2){
|
||||
if (r1.getAttributeNames() != r2.getAttributeNames()){
|
||||
cout << "Failure to union: the relations are not union-compatible";
|
||||
return;
|
||||
}
|
||||
|
||||
else {
|
||||
vector<Attribute> r1_atts = r1.getAttributes();
|
||||
vector<Attribute> r2_atts = r2.getAttributes();
|
||||
vector<Attribute> new_atts = r1_atts;
|
||||
|
||||
for (int i = 0; i < r2_atts.size(); ++i) {
|
||||
for (int j = 0; j < r2_atts[i].getSize(); ++j){
|
||||
new_atts[i].addCell(r2_atts[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < new_atts.size(); ++i) {
|
||||
for (int j = 0; j < new_atts.size(); ++j){
|
||||
if (new_atts[i] == new_atts[j]){
|
||||
new_atts.erase(new_atts.begin() + i);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//currently all returned relations are called TEMP
|
||||
Relation new_r("TEMP", new_atts);
|
||||
return new_r;
|
||||
}
|
||||
}*/
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#pragma once
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
@ -17,10 +18,10 @@ public:
|
|||
//void showTable(Relation r);
|
||||
Relation& getTableFromName(string n);
|
||||
void saveToFile(vector<string> cmds);
|
||||
//Relation selection();
|
||||
Relation selection(string attName, string s, Relation r);
|
||||
Relation projection(vector<string> input, Relation r);
|
||||
void rename(Relation& r, vector<string> oldnames, vector<string> newnames);
|
||||
//void setUnion();
|
||||
//Relation setUnion(Relation r1, Relation r2);
|
||||
//void setDiff();
|
||||
//void crossProduct();
|
||||
};
|
||||
|
|
14
Relation.cpp
14
Relation.cpp
|
@ -23,6 +23,20 @@ string Relation::getTableName(){
|
|||
return name;
|
||||
}
|
||||
|
||||
Attribute Relation::operator[](int i){
|
||||
return att[i];
|
||||
}
|
||||
|
||||
vector<string> Relation::getTuple(int index){
|
||||
vector<string> temp;
|
||||
|
||||
for (int i = 0; i < att.size(); ++i){
|
||||
temp.push_back(att[i][index]);
|
||||
}
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
vector<Attribute> Relation::getAttributes(){
|
||||
return att;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#pragma once
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include "Attribute.h"
|
||||
|
@ -12,6 +13,8 @@ public:
|
|||
Relation(string n, vector<Attribute> a);
|
||||
void insertAttributes(vector<Attribute> a);
|
||||
string getTableName();
|
||||
Attribute operator[](int i);
|
||||
vector<string> getTuple(int index);
|
||||
vector<Attribute> getAttributes();
|
||||
vector<string> getAttributeNames();
|
||||
Attribute& getAttributeByName(string s);
|
||||
|
|
BIN
test
Executable file
BIN
test
Executable file
Binary file not shown.
38
test.cpp
38
test.cpp
|
@ -1,5 +1,6 @@
|
|||
#include <iostream>
|
||||
#include <vector>
|
||||
#include "Condition.h"
|
||||
#include "DBEngine.h"
|
||||
|
||||
using namespace std;
|
||||
|
@ -26,11 +27,8 @@ int main() {
|
|||
v.push_back(att2);
|
||||
v.push_back(att3);
|
||||
|
||||
//Relation r("Food", v);
|
||||
//r.renameAttribute("Breakfast", "BFST");
|
||||
//r.display();
|
||||
|
||||
engine.createTable("Food", v);
|
||||
<<<<<<< HEAD
|
||||
|
||||
vector<string> tuple;
|
||||
tuple.push_back("Omelette");
|
||||
|
@ -54,3 +52,35 @@ int main() {
|
|||
engine.getTableFromName("Food").display();
|
||||
cout << "finished";
|
||||
}
|
||||
=======
|
||||
|
||||
Attribute att4("SecondBreakfast", "VARCHAR(20)", true);
|
||||
Attribute att5("SecondLunch", "VARCHAR(20)", false);
|
||||
Attribute att6("SecondDinner", "VARCHAR(20)", false);
|
||||
|
||||
att4.addCell("Pancakes");
|
||||
att4.addCell("Bacon");
|
||||
att4.addCell("Eggs");
|
||||
att5.addCell("Turkey Sandwich");
|
||||
att5.addCell("Pasta Salad");
|
||||
att5.addCell("Taco");
|
||||
att6.addCell("Steak");
|
||||
att6.addCell("Fajitas");
|
||||
att6.addCell("Spaghetti");
|
||||
|
||||
vector<Attribute> v2;
|
||||
v2.push_back(att4);
|
||||
v2.push_back(att5);
|
||||
v2.push_back(att6);
|
||||
|
||||
engine.createTable("MoarFood", v2);
|
||||
|
||||
vector<string> test = engine.getTableFromName("Food").getTuple(1);
|
||||
|
||||
for (int i = 0; i < test.size(); ++i){
|
||||
cout << test[i] << " ";
|
||||
}
|
||||
|
||||
//engine.setUnion(engine.getTableFromName("Food"), engine.getTableFromName("MoarFood")).display();
|
||||
}
|
||||
>>>>>>> beccadev
|
||||
|
|
Reference in a new issue