From 016d4d0c46356497d31abb4ea15d44514fa3fc82 Mon Sep 17 00:00:00 2001 From: micio Date: Wed, 9 Feb 2011 15:20:47 +0000 Subject: [PATCH] Bazaar/Protect : add some logs to ProtectDB git-svn-id: svn://ultimatepp.org/upp/trunk@3182 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- bazaar/Protect/ProtectDB.cpp | 340 ++++++++++++++++++----------------- 1 file changed, 176 insertions(+), 164 deletions(-) diff --git a/bazaar/Protect/ProtectDB.cpp b/bazaar/Protect/ProtectDB.cpp index 10b839b48..580fc0dbc 100644 --- a/bazaar/Protect/ProtectDB.cpp +++ b/bazaar/Protect/ProtectDB.cpp @@ -1,164 +1,176 @@ -#include "ProtectDB.h" - -NAMESPACE_UPP - -#include -#include - -ProtectDB::ProtectDB() -{ - connected = false; - upgraded = false; -} - -ProtectDB::~ProtectDB() -{ - if(connected) - Disconnect(); -} - -// connect/disconnect -bool ProtectDB::Connect(void) -{ - if(!session.Connect(userName, password, dbName, host)) - return false; - connected = true; - SQL = session; - - // upgrade database on first connect - if(!upgraded) - { - SqlSchema sch(MY_SQL); - All_Tables(sch); - SqlPerformScript(sch.Upgrade()); - SqlPerformScript(sch.Attributes()); - SQL.ClearError(); - upgraded = true; - } - - return true; -} - -bool ProtectDB::Disconnect(void) -{ - if(!connected) - return true; - session.Close(); - connected = false; - return true; -} - -// get data -- email is the key -- non repeatable -VectorMap ProtectDB::Get(String const &mail) -{ - VectorMap res = Default(); - - SQL * Select(SqlAll()).From(USERS).Where(EMAIL == mail); - // we've unique key, so... - if(SQL.Fetch()) - for(int i = 0; i < res.GetCount(); i++) - res[i] = SQL[res.GetKey(i)]; - else - res.Clear(); - - return res; -} - -// set/append data -bool ProtectDB::Set(VectorMap const &d) -{ - String eMail = d.Get("EMAIL"); - - // fill missing fields with default values - VectorMapdata = Default(d); - - SQL * Select(SqlAll()).From(USERS).Where(EMAIL == eMail); - if(SQL.Fetch()) - { - SQL * Update(USERS) - (NAME , data.Get("NAME")) - (ADDRESS , data.Get("ADDRESS")) - (COUNTRY , data.Get("COUNTRY")) - (ZIP , data.Get("ZIP")) - (PHONE , data.Get("PHONE")) - (FAX , data.Get("FAX")) - (CELL , data.Get("CELL")) - (LICENSES , data.Get("LICENSES")) - (EXPIRATION , data.Get("EXPIRATION")) - (ALLOWEDVERSION , data.Get("ALLOWEDVERSION")) - (ACTIVATIONKEY , data.Get("ACTIVATIONKEY")) - (REGISTRATIONDATE , data.Get("REGISTRATIONDATE")) - (ACTIVATED , data.Get("ACTIVATED")) - (ACTIVATIONDATE , data.Get("ACTIVATIONDATE")) - (LASTCONNECTIONDATE , data.Get("LASTCONNECTIONDATE")) - (TOTALCONNECTIONS , data.Get("TOTALCONNECTIONS")) - (TOTALCONNECTIONTIME , data.Get("TOTALCONNECTIONTIME")) - .Where(EMAIL == eMail); - } - else - { - SQL * Insert(USERS) - (EMAIL , eMail) - (NAME , data.Get("NAME")) - (ADDRESS , data.Get("ADDRESS")) - (COUNTRY , data.Get("COUNTRY")) - (ZIP , data.Get("ZIP")) - (PHONE , data.Get("PHONE")) - (FAX , data.Get("FAX")) - (CELL , data.Get("CELL")) - (LICENSES , data.Get("LICENSES")) - (EXPIRATION , data.Get("EXPIRATION")) - (ALLOWEDVERSION , data.Get("ALLOWEDVERSION")) - (ACTIVATIONKEY , data.Get("ACTIVATIONKEY")) - (REGISTRATIONDATE , data.Get("REGISTRATIONDATE")) - (ACTIVATED , data.Get("ACTIVATED")) - (ACTIVATIONDATE , data.Get("ACTIVATIONDATE")) - (LASTCONNECTIONDATE , data.Get("LASTCONNECTIONDATE")) - (TOTALCONNECTIONS , data.Get("TOTALCONNECTIONS")) - (TOTALCONNECTIONTIME , data.Get("TOTALCONNECTIONTIME")) - ; - } - return true; -} - -// get default record -VectorMap ProtectDB::Default(VectorMap const &base) -{ - VectorMap res(base, 1); - res.FindAdd("EMAIL", ""); - res.FindAdd("NAME", ""); - res.FindAdd("ADDRESS", ""); - res.FindAdd("COUNTRY", ""); - res.FindAdd("ZIP", ""); - res.FindAdd("PHONE", ""); - res.FindAdd("FAX", ""); - res.FindAdd("CELL", ""); - res.FindAdd("LICENSES", 1); - res.FindAdd("EXPIRATION", GetSysTime() + 24*60*60*30); - res.FindAdd("ALLOWEDVERSION", "9999.9999.9999"); - res.FindAdd("ACTIVATIONKEY", ""); - res.FindAdd("REGISTRATIONDATE", GetSysTime()); - res.FindAdd("ACTIVATED", false); - res.FindAdd("ACTIVATIONDATE", GetSysTime()); - res.FindAdd("LASTCONNECTIONDATE", GetSysTime()); - res.FindAdd("TOTALCONNECTIONS", 0); - res.FindAdd("TOTALCONNECTIONTIME", Time()); - - return res; -} - -/* - MySqlSession session; - // substitute your 'username' and 'password' here: - if(!session.Connect("username", "password", "mysql", "localhost")) { - printf("Can't connect with MySql\n"); - return; - } - Sql sql(session); - sql.Execute("use mysql"); - sql.Execute("show tables"); - while(sql.Fetch()) - Cout() << (String)sql[0] << '\n'; -*/ - -END_UPP_NAMESPACE +#include "ProtectDB.h" + +NAMESPACE_UPP + +#include +#include + +ProtectDB::ProtectDB() +{ + connected = false; + upgraded = false; +} + +ProtectDB::~ProtectDB() +{ + if(connected) + Disconnect(); +} + +// connect/disconnect +bool ProtectDB::Connect(void) +{ + if(!session.Connect(userName, password, dbName, host)) + return false; + connected = true; + SQL = session; + + // upgrade database on first connect + if(!upgraded) + { + SqlSchema sch(MY_SQL); + All_Tables(sch); + SqlPerformScript(sch.Upgrade()); + SqlPerformScript(sch.Attributes()); + SQL.ClearError(); + upgraded = true; + } + + return true; +} + +bool ProtectDB::Disconnect(void) +{ + if(!connected) + return true; + session.Close(); + connected = false; + return true; +} + +// get data -- email is the key -- non repeatable +VectorMap ProtectDB::Get(String const &mail) +{ + VectorMap res = Default(); + + SQL * Select(SqlAll()).From(USERS).Where(EMAIL == mail); + if(SQL.WasError()) + { + Cerr() << "SQL Error : " << session.GetErrorCodeString() << "\n"; + res.Clear(); + return res; + } + // we've unique key, so... + if(SQL.Fetch()) + for(int i = 0; i < res.GetCount(); i++) + res[i] = SQL[res.GetKey(i)]; + else + { + Cerr() << "ProtectDB::Get(\"" << mail << "\") failed\n"; + res.Clear(); + return res; + } + + return res; +} + +// set/append data +bool ProtectDB::Set(VectorMap const &d) +{ + String eMail = d.Get("EMAIL"); + + // fill missing fields with default values + VectorMapdata = Default(d); + + SQL * Select(SqlAll()).From(USERS).Where(EMAIL == eMail); + if(SQL.Fetch()) + { + Cerr() << "Updating record for e-mail " << eMail << "\n"; + SQL * Update(USERS) + (NAME , data.Get("NAME")) + (ADDRESS , data.Get("ADDRESS")) + (COUNTRY , data.Get("COUNTRY")) + (ZIP , data.Get("ZIP")) + (PHONE , data.Get("PHONE")) + (FAX , data.Get("FAX")) + (CELL , data.Get("CELL")) + (LICENSES , data.Get("LICENSES")) + (EXPIRATION , data.Get("EXPIRATION")) + (ALLOWEDVERSION , data.Get("ALLOWEDVERSION")) + (ACTIVATIONKEY , data.Get("ACTIVATIONKEY")) + (REGISTRATIONDATE , data.Get("REGISTRATIONDATE")) + (ACTIVATED , data.Get("ACTIVATED")) + (ACTIVATIONDATE , data.Get("ACTIVATIONDATE")) + (LASTCONNECTIONDATE , data.Get("LASTCONNECTIONDATE")) + (TOTALCONNECTIONS , data.Get("TOTALCONNECTIONS")) + (TOTALCONNECTIONTIME , data.Get("TOTALCONNECTIONTIME")) + .Where(EMAIL == eMail); + } + else + { + Cerr() << "Inserting record for e-mail " << eMail << "\n"; + SQL * Insert(USERS) + (EMAIL , eMail) + (NAME , data.Get("NAME")) + (ADDRESS , data.Get("ADDRESS")) + (COUNTRY , data.Get("COUNTRY")) + (ZIP , data.Get("ZIP")) + (PHONE , data.Get("PHONE")) + (FAX , data.Get("FAX")) + (CELL , data.Get("CELL")) + (LICENSES , data.Get("LICENSES")) + (EXPIRATION , data.Get("EXPIRATION")) + (ALLOWEDVERSION , data.Get("ALLOWEDVERSION")) + (ACTIVATIONKEY , data.Get("ACTIVATIONKEY")) + (REGISTRATIONDATE , data.Get("REGISTRATIONDATE")) + (ACTIVATED , data.Get("ACTIVATED")) + (ACTIVATIONDATE , data.Get("ACTIVATIONDATE")) + (LASTCONNECTIONDATE , data.Get("LASTCONNECTIONDATE")) + (TOTALCONNECTIONS , data.Get("TOTALCONNECTIONS")) + (TOTALCONNECTIONTIME , data.Get("TOTALCONNECTIONTIME")) + ; + } + return true; +} + +// get default record +VectorMap ProtectDB::Default(VectorMap const &base) +{ + VectorMap res(base, 1); + res.FindAdd("EMAIL", ""); + res.FindAdd("NAME", ""); + res.FindAdd("ADDRESS", ""); + res.FindAdd("COUNTRY", ""); + res.FindAdd("ZIP", ""); + res.FindAdd("PHONE", ""); + res.FindAdd("FAX", ""); + res.FindAdd("CELL", ""); + res.FindAdd("LICENSES", 1); + res.FindAdd("EXPIRATION", GetSysTime() + 24*60*60*30); + res.FindAdd("ALLOWEDVERSION", "9999.9999.9999"); + res.FindAdd("ACTIVATIONKEY", ""); + res.FindAdd("REGISTRATIONDATE", GetSysTime()); + res.FindAdd("ACTIVATED", false); + res.FindAdd("ACTIVATIONDATE", GetSysTime()); + res.FindAdd("LASTCONNECTIONDATE", GetSysTime()); + res.FindAdd("TOTALCONNECTIONS", 0); + res.FindAdd("TOTALCONNECTIONTIME", Time()); + + return res; +} + +/* + MySqlSession session; + // substitute your 'username' and 'password' here: + if(!session.Connect("username", "password", "mysql", "localhost")) { + printf("Can't connect with MySql\n"); + return; + } + Sql sql(session); + sql.Execute("use mysql"); + sql.Execute("show tables"); + while(sql.Fetch()) + Cout() << (String)sql[0] << '\n'; +*/ + +END_UPP_NAMESPACE