summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2009-10-07 18:18:37 +0200
committerBenoit Foucher <benoit@zeroc.com>2009-10-07 18:18:37 +0200
commit5fc2dc27228263e4c56ba3a49852ab3f8c724299 (patch)
treea1340491094705a1e604a3df22ec4dad0c8d1a8e /cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp
parentBug 4251 - add IceUtil::Time double initializers (diff)
downloadice-5fc2dc27228263e4c56ba3a49852ab3f8c724299.tar.bz2
ice-5fc2dc27228263e4c56ba3a49852ab3f8c724299.tar.xz
ice-5fc2dc27228263e4c56ba3a49852ab3f8c724299.zip
- Bug 4286: added support for IceStorm/IceGrid database plugins
- Fixed IceGrid database code to first save to the database and then do state changes.
Diffstat (limited to 'cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp')
-rw-r--r--cpp/src/IceGrid/SqlStringAdapterInfoDict.cpp228
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());
- }
-}