From 15185bcb8ded8989bd3e2db69c9b028c6cd21326 Mon Sep 17 00:00:00 2001 From: Rebecca Schofield Date: Tue, 6 Oct 2015 13:16:56 -0500 Subject: [PATCH] update being weird --- DBEngine.cpp | 11 ++++++++++- DBEngine.h | 3 ++- Relation.cpp | 24 ++++++++++++++++++++++-- test.cpp | 2 +- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/DBEngine.cpp b/DBEngine.cpp index cc65ad1..c9a55ac 100755 --- a/DBEngine.cpp +++ b/DBEngine.cpp @@ -286,7 +286,7 @@ Relation DBEngine::crossProduct(Relation r1, Relation r2){ return new_r; } -Relation DBEngine::updateCmd(Relation r, string attNameSet, string attSet, string attNameWhere, string attWhere){ +/*Relation DBEngine::updateCmd(Relation r, string attNameSet, string attSet, string attNameWhere, string attWhere){ //brute forcing this, sorry universe //add error matching!! vector inds; @@ -313,6 +313,15 @@ Relation DBEngine::updateCmd(Relation r, string attNameSet, string attSet, strin r.setAttributes(atts); return r; +}*/ + +void DBEngine::updateCmd(string relationName, string attNameSet, string attSet, string attNameWhere, string attWhere){ + for(int i = 0; i < tables.size(); i++){ + if (tables[i].getTableName() == relationName){ + tables[i].updateCmd(attNameSet, attSet, attNameWhere, attWhere); + return; + } + } } /*Relation DBEngine::deleteCmd(Relation r, string attName, string att){ diff --git a/DBEngine.h b/DBEngine.h index 40c370e..1db9b32 100755 --- a/DBEngine.h +++ b/DBEngine.h @@ -31,7 +31,8 @@ public: Relation setUnion(Relation r1, Relation r2); Relation setDiff(Relation r1, Relation r2); Relation crossProduct(Relation r1, Relation r2); - Relation updateCmd(Relation r, string attNameSet, string attSet, string attNameWhere, string attWhere); + //Relation updateCmd(Relation r, string attNameSet, string attSet, string attNameWhere, string attWhere); + void updateCmd(string relationName, string attNameSet, string attSet, string attNameWhere, string attWhere); //Relation deleteCmd(Relation r, string attName, string att); void deleteCmd(string relationName, string attName, string att); }; diff --git a/Relation.cpp b/Relation.cpp index 84b534b..c7377ab 100755 --- a/Relation.cpp +++ b/Relation.cpp @@ -158,8 +158,28 @@ void Relation::removeFromTuple(int rindex, int aindex) } } -void Relation::updateCmd(){ - // +void Relation::updateCmd(string attNameSet, string attSet, string attNameWhere, string attWhere){ + vector inds; + + for (int i = 0; i < att.size(); ++i){ + if (att[i].getName() == attNameWhere){ + for (int j = 0; j < att[i].getSize(); ++j){ + if (att[i][j] == attWhere){ + inds.push_back(j); + } + } + } + } + + for (int i = 0; i < att.size(); ++i){ + if (att[i].getName() == attNameSet){ + for (int j = 0; j < inds.size(); ++j){ + att[i].setValue(attSet, inds[j]); + } + } + } + + return; } void Relation::deleteCmd(string attName, string s){ diff --git a/test.cpp b/test.cpp index c190087..85dca06 100755 --- a/test.cpp +++ b/test.cpp @@ -33,6 +33,6 @@ int main () { v.push_back(att3); engine.createTable("Food", v); - engine.deleteCmd("Food", "Breakfast", "Pancakes"); + engine.updateCmd("Food", "Dinner", "SUCCESS", "Breakfast", "Pancakes"); engine.getTableFromName("Food").display(); }