//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ WorkbenchAttributeDataMap::pFutureWorkbenchAttributeDataCollection_type WorkbenchAttributeDataMap::getAll() { pFutureWorkbenchAttributeDataCollection_type pFutureCollection(new FutureWorkbenchAttributeDataCollection_type); pWorkbenchAttributeDataCollection_type pCollection(new WorkbenchAttributeDataCollection, &destroyCollection); // Start a transaction Zen::Database::I_DatabaseConnection::pDatabaseTransaction_type pTransaction = getDatabaseConnection()->beginTransaction(); // Create a query Zen::Database::I_DatabaseTransaction::pStaticQuery_type pQuery = pTransaction->createStaticQuery(); // Get all of the records from the WorkbenchAttribute. pQuery->setQuery("SELECT * FROM WorkbenchAttribute"); // Create a result handler to handle the execution results Zen::Database::I_DatabaseTransaction::pQueryResultHandler_type pResultHandler(new CollectionResultHandler(pTransaction, pFutureCollection, pCollection)); // Execute the query. pTransaction->executeQuery(pQuery, pResultHandler); return pFutureCollection; }
//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ void WorkbenchAttributeDataMap::deleteByKey(boost::uint64_t _primaryKeyValue) { // Don't do anything if the key value is 0. But should this be an error? if (_primaryKeyValue == 0) { // TODO Throw an exception or return an error? return; } // Start a transaction Zen::Database::I_DatabaseConnection::pDatabaseTransaction_type pTransaction = getDatabaseConnection()->beginTransaction(); // Create a query Zen::Database::I_DatabaseTransaction::pStaticQuery_type pQuery = pTransaction->createStaticQuery(); const boost::uint64_t primaryKeyValue(_primaryKeyValue); // Delete a record in the WorkbenchAttribute. std::stringstream query; query << "DELETE FROM WorkbenchAttribute WHERE workBenchAttributeId = " << primaryKeyValue; pQuery->setQuery(query.str()); // Execute the query. pTransaction->executeQuery(pQuery); }
//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ WorkbenchAttributeDataMap::pFutureWorkbenchAttributeDomainObject_type WorkbenchAttributeDataMap::getByKey(boost::uint64_t _primaryKeyValue) { // Start a transaction Zen::Database::I_DatabaseConnection::pDatabaseTransaction_type pTransaction = getDatabaseConnection()->beginTransaction(); // Create a query Zen::Database::I_DatabaseTransaction::pStaticQuery_type pQuery = pTransaction->createStaticQuery(); const boost::uint64_t primaryKeyValue(_primaryKeyValue); // Get a record from the WorkbenchAttribute. std::stringstream query; query << "SELECT * FROM WorkbenchAttribute WHERE workBenchAttributeId = " << primaryKeyValue; pQuery->setQuery(query.str()); pFutureWorkbenchAttributeDomainObject_type pReturnValue(new FutureWorkbenchAttributeDomainObject_type); pWorkbenchAttributeDomainObject_type pValue(new WorkbenchAttributeDomainObject, &destroyObject); // Create a result handler to handle the execution results Zen::Database::I_DatabaseTransaction::pQueryResultHandler_type pResultHandler(new ResultHandler(pTransaction, pReturnValue, pValue)); // Execute the query. pTransaction->executeQuery(pQuery, pResultHandler); return pReturnValue; }
bool BaseRepository::createConnection() { db = getDatabaseConnection(); if(!db.isOpen()){ throw std::runtime_error("Failed to open database"); } return true; }
/** * * Kills the query being executed by the given connection * * @param uuid the UUID of the connection to kill * @return the result of the kill query */ QueryResult DatabaseConnection::killQuery(std::string uuid) { DatabaseConnection *connection; connection = dynamic_cast<DatabaseConnection *>( getDatabaseConnection(uuid)); return execute(VariantVector() << "KILL QUERY " + Variant(connection->connection_id).toString()); }
//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ void WorkbenchService::loadProjects() { // Get the explorer node data map. I_ExplorerNodeDataMap::pExplorerNodeDataMap_type pExplorerNodeDM = I_ExplorerNodeDataMap::create(getDatabaseConnection()); // Loop through all of the projects. for(ProjectsToLoad_type::iterator iter = m_projectsToLoad.begin(); iter != m_projectsToLoad.end(); iter++) { // Get the data node associated with this project const boost::int64_t explorerNodeId = (*iter)->getExplorerNodeId(); I_ExplorerNodeDataMap::pExplorerNodeDomainObject_type pExplorerNode = pExplorerNodeDM->getByKey(explorerNodeId)->getValue(); // Find the correct extension point for this project type and load it Plugins::I_ExtensionRegistry::pExtensionPoint_type pExtensionPoint = Plugins::I_ExtensionRegistry::getSingleton().getExtensionPoint("Zen::Studio::Workbench", "ExplorerNode"); if (pExtensionPoint.get() != NULL) { const std::string extension(pExplorerNode->getNodeType().getStringValue()); Plugins::I_Extension::extension_ptr_type pExtension = pExtensionPoint->getExtension(extension); if (pExtension) { // TODO Cache this factory / extension? I_ExplorerNodeFactory* pFactory = dynamic_cast<I_ExplorerNodeFactory*>(&pExtension->getClassFactory()); // Create the project. pProject_type pProject = pFactory->createProject(*(m_pProjectExplorerController.get()), (*iter), pExplorerNode); pProject->setProjectId((*iter)->getProjectId()); pProject->setName((*iter)->getName()); m_pProjectExplorerController->loadExistingProject(pProject, pExplorerNode); } } } }
std::string GroupMemberDataMap::escapeString(const std::string& _value) const { return getDatabaseConnection()->escapeString(_value); }
//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ Zen::Database::I_DatabaseTransaction::pFutureKey_type GroupMemberDataMap::update(pGroupMemberDomainObject_type _pGroupMemberDomainObject) { // Start a transaction Zen::Database::I_DatabaseConnection::pDatabaseTransaction_type pTransaction = getDatabaseConnection()->beginTransaction(); // Create a query Zen::Database::I_DatabaseTransaction::pStaticQuery_type pQuery = pTransaction->createStaticQuery(); std::stringstream query; if (_pGroupMemberDomainObject->getMemberId().isNull()) { // Construct the query to insert a record into the GroupMember table. query << "INSERT into GroupMember ( " << getNonPKFieldNames() << " ) VALUES ( "; // Append all of the values std::string escapedStringValue; escapedStringValue = escapeString(_pGroupMemberDomainObject->getGroupId().getStringValue()); query << "\'" << escapedStringValue << "\'"; escapedStringValue = escapeString(_pGroupMemberDomainObject->getAccountId().getStringValue()); query << ", \'" << escapedStringValue << "\'"; // Final closing parenthesis query << ")"; pQuery->setQuery(query.str()); // Execute the query. Zen::Database::I_DatabaseTransaction::pFutureKey_type pKey(pTransaction->executeInsert(pQuery)); _pGroupMemberDomainObject->getMemberId() = pKey->getValue(); // Done, so commit the transaction. pTransaction->commit(); return pKey; } else { // Construct the query to update a record into the GroupMember table. // Count the number of dirty fields. int dirtyFields = 0; query << "UPDATE GroupMember SET "; std::string separator(""); // Append all of the field names and values std::string escapedStringValue; if (_pGroupMemberDomainObject->getGroupId().isDirty()) { escapedStringValue = escapeString(_pGroupMemberDomainObject->getGroupId().getStringValue()); query << separator << "groupId = \'" << escapedStringValue << "\'"; separator = ", "; dirtyFields++; } if (_pGroupMemberDomainObject->getAccountId().isDirty()) { escapedStringValue = escapeString(_pGroupMemberDomainObject->getAccountId().getStringValue()); query << separator << "accountId = \'" << escapedStringValue << "\'"; separator = ", "; dirtyFields++; } // No need to proceed if none of the fields were dirty. if (dirtyFields > 0) { // WHERE clause to update the record query << " WHERE memberId = " << _pGroupMemberDomainObject->getMemberId().getInt64Value(); pQuery->setQuery(query.str()); // Execute the query. pTransaction->executeQuery(pQuery); // Done, so commit the transaction. pTransaction->commit(); } Zen::Database::I_DatabaseTransaction::pFutureKey_type pKey(new Zen::Database::I_DatabaseTransaction::FutureKey_type); pKey->setValue(_pGroupMemberDomainObject->getMemberId().getInt64Value()); return pKey; } }
std::string SpreadSheetRowDataMap::escapeString(const std::string& _value) const { return getDatabaseConnection()->escapeString(_value); }
std::string ChatChannelDataMap::escapeString(const std::string& _value) const { return getDatabaseConnection()->escapeString(_value); }
std::string PropertiesDataMap::escapeString(const std::string& _value) const { return getDatabaseConnection()->escapeString(_value); }
std::string ExplorerNodeDataMap::escapeString(const std::string& _value) const { return getDatabaseConnection()->escapeString(_value); }
std::string WorkbenchAttributeDataMap::escapeString(const std::string& _value) const { return getDatabaseConnection()->escapeString(_value); }