added gettuple

This commit is contained in:
Rebecca Schofield 2015-09-24 20:49:49 -05:00
commit 3983003035
10 changed files with 147 additions and 31 deletions

View file

@ -60,4 +60,8 @@ void Attribute::display(){
}
cout << "-------------\n";
}
void Attribute::clearAllValues(){
values.clear();
}

View file

@ -1,3 +1,4 @@
#pragma once
#include <iostream>
#include <vector>
@ -22,4 +23,5 @@ public:
bool isKey();
int getSize();
void display();
void clearAllValues();
};

View file

@ -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) {
//
}
}
*/

View file

@ -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);

View file

@ -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){
@ -77,4 +83,36 @@ void DBEngine::rename(Relation& r, vector<string> oldnames, vector<string> newna
r.renameAttribute(oldnames[i], newnames[i]);
}
}
}
}
/*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;
}
}*/

View file

@ -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();
//void crossProduct();
};

View file

@ -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;
}

View file

@ -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

Binary file not shown.

View file

@ -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