diff options
Diffstat (limited to 'cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp')
-rw-r--r-- | cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp | 228 |
1 files changed, 0 insertions, 228 deletions
diff --git a/cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp b/cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp deleted file mode 100644 index ce11f221560..00000000000 --- a/cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp +++ /dev/null @@ -1,228 +0,0 @@ -// ********************************************************************** -// -// Copyright (c) 2003-2009 ZeroC, Inc. All rights reserved. -// -// This copy of Ice is licensed to you under the terms described in the -// ICE_LICENSE file included in this distribution. -// -// ********************************************************************** - -#include <Ice/Communicator.h> -#include <IceGrid/SqlStringAdapterInfoDict.h> -#include <IceSQL/SqlTypes.h> -#include <QtSql/QSqlQuery> -#include <QtCore/QVariant> -#include <QtCore/QStringList> - -using namespace IceSQL; -using namespace IceGrid; -using namespace std; - -SqlStringAdapterInfoDict::SqlStringAdapterInfoDict(const DatabaseConnectionPtr& connection, - const string& table, - const Ice::CommunicatorPtr& communicator) : - _communicator(communicator), - _table(table) - -{ - QStringList tables = connection->connection.tables(QSql::Tables); - if(!tables.contains(_table.c_str(), Qt::CaseInsensitive)) - { - QSqlQuery query(connection->connection); - string queryString = "CREATE TABLE "; - queryString += _table; - queryString += " (id "; - if(connection->connection.driverName() == "QODBC") - { - queryString += "N"; - } - queryString += "VARCHAR(255) PRIMARY KEY, proxy TEXT, replicaGroupId "; - if(connection->connection.driverName() == "QODBC") - { - queryString += "N"; - } - queryString += "VARCHAR(255));"; - - if(!query.exec(queryString.c_str())) - { - throwDatabaseException(__FILE__, __LINE__, query.lastError()); - } - - QSqlQuery idxQuery(connection->connection); - queryString = "CREATE INDEX IDX_"; - queryString += _table; - queryString += "_REPLICA_GROUP_ID ON "; - queryString += _table; - queryString += " (replicaGroupId);"; - - if(!idxQuery.exec(queryString.c_str())) - { - throwDatabaseException(__FILE__, __LINE__, idxQuery.lastError()); - } - } -} - -void -SqlStringAdapterInfoDict::put(const DatabaseConnectionPtr& connection, - const AdapterInfo& info) -{ - QSqlQuery query(connection->connection); - string queryString = "UPDATE "; - queryString += _table; - queryString += " SET proxy = ?, replicaGroupId = ? WHERE id = ?;"; - - query.prepare(queryString.c_str()); - query.bindValue(0, _communicator->proxyToString(info.proxy).c_str()); - query.bindValue(1, info.replicaGroupId.c_str()); - query.bindValue(2, info.id.c_str()); - - if(!query.exec()) - { - throwDatabaseException(__FILE__, __LINE__, query.lastError()); - } - - if(query.numRowsAffected() == 0) - { - // - // We do a find since some databases (MySQL) return 0 for number of rows affected - // if row exists but data was not changed from previous values. - // - try - { - find(connection, info.id); - } - catch(const NotFoundException&) - { - QSqlQuery insertQuery(connection->connection); - queryString = "INSERT INTO "; - queryString += _table; - queryString += " VALUES(?, ?, ?);"; - - insertQuery.prepare(queryString.c_str()); - insertQuery.bindValue(0, info.id.c_str()); - insertQuery.bindValue(1, _communicator->proxyToString(info.proxy).c_str()); - insertQuery.bindValue(2, info.replicaGroupId.c_str()); - - if(!insertQuery.exec()) - { - throwDatabaseException(__FILE__, __LINE__, insertQuery.lastError()); - } - } - } -} - -IceGrid::AdapterInfo -SqlStringAdapterInfoDict::find(const DatabaseConnectionPtr& connection, - const string& id) -{ - QSqlQuery query(connection->connection); - string queryString = "SELECT * FROM "; - queryString += _table; - queryString += " WHERE id = ?;"; - - query.prepare(queryString.c_str()); - query.bindValue(0, id.c_str()); - - if(!query.exec()) - { - throwDatabaseException(__FILE__, __LINE__, query.lastError()); - } - - if(query.next()) - { - IceGrid::AdapterInfo info; - info.id = query.value(0).toString().toStdString(); - info.proxy = _communicator->stringToProxy(query.value(1).toString().toStdString()); - info.replicaGroupId = query.value(2).toString().toStdString(); - return info; - } - else - { - throw NotFoundException(__FILE__, __LINE__); - } -} - -vector<IceGrid::AdapterInfo> -SqlStringAdapterInfoDict::findByReplicaGroupId(const DatabaseConnectionPtr& connection, - const string& id) -{ - QSqlQuery query(connection->connection); - string queryString = "SELECT * FROM "; - queryString += _table; - queryString += " WHERE replicaGroupId = ?;"; - - query.prepare(queryString.c_str()); - query.bindValue(0, id.c_str()); - - if(!query.exec()) - { - throwDatabaseException(__FILE__, __LINE__, query.lastError()); - } - - vector<IceGrid::AdapterInfo> infos; - while(query.next()) - { - IceGrid::AdapterInfo info; - info.id = query.value(0).toString().toStdString(); - info.proxy = _communicator->stringToProxy(query.value(1).toString().toStdString()); - info.replicaGroupId = query.value(2).toString().toStdString(); - infos.push_back(info); - } - return infos; -} - -void -SqlStringAdapterInfoDict::getMap(const DatabaseConnectionPtr& connection, - StringAdapterInfoDict& adapterMap) -{ - QSqlQuery query(connection->connection); - string queryString = "SELECT * FROM "; - queryString += _table; - queryString += ";"; - - if(!query.exec(queryString.c_str())) - { - throwDatabaseException(__FILE__, __LINE__, query.lastError()); - } - - while(query.next()) - { - IceGrid::AdapterInfo info; - info.id = query.value(0).toString().toStdString(); - info.proxy = _communicator->stringToProxy(query.value(1).toString().toStdString()); - info.replicaGroupId = query.value(2).toString().toStdString(); - adapterMap[info.id] = info; - } -} - -void -SqlStringAdapterInfoDict::erase(const DatabaseConnectionPtr& connection, - const string& id) -{ - QSqlQuery query(connection->connection); - string queryString = "DELETE FROM "; - queryString += _table; - queryString += " WHERE id = ?;"; - - query.prepare(queryString.c_str()); - query.bindValue(0, id.c_str()); - - if(!query.exec()) - { - throwDatabaseException(__FILE__, __LINE__, query.lastError()); - } -} - -void -SqlStringAdapterInfoDict::clear(const DatabaseConnectionPtr& connection) -{ - QSqlQuery query(connection->connection); - string queryString = "DELETE FROM "; - queryString += _table; - queryString += ";"; - - if(!query.exec(queryString.c_str())) - { - throwDatabaseException(__FILE__, __LINE__, query.lastError()); - } -} |