#include <klflibdbengine.h>
Public Slots | |
virtual bool | createSubResource (const QString &subResource, const QString &subResourceTitle) |
virtual bool | deleteSubResource (const QString &subResource) |
virtual QList< entryId > | insertEntries (const QString &subRes, const KLFLibEntryList &entries) |
virtual bool | changeEntries (const QString &subRes, const QList< entryId > &idlist, const QList< int > &properties, const QList< QVariant > &values) |
virtual bool | deleteEntries (const QString &subRes, const QList< entryId > &idlist) |
virtual bool | saveTo (const QUrl &newPath) |
virtual bool | setSubResourceProperty (const QString &subResource, int propId, const QVariant &value) |
Public Member Functions | |
virtual | ~KLFLibDBEngine () |
virtual uint | compareUrlTo (const QUrl &other, uint interestFlags=0xfffffff) const |
virtual bool | compareDefaultSubResourceEquals (const QString &subResourceName) const |
virtual bool | canModifyData (const QString &subRes, ModifyType modifytype) const |
virtual bool | canModifyProp (int propid) const |
virtual bool | canRegisterProperty (const QString &propName) const |
virtual bool | validDatabase () const |
virtual void | setDatabase (const QSqlDatabase &db_connection) |
virtual QList< KLFLib::entryId > | allIds (const QString &subResource) |
virtual bool | hasEntry (const QString &, entryId id) |
virtual QList< KLFLibEntryWithId > | entries (const QString &, const QList< KLFLib::entryId > &idList, const QList< int > &wantedEntryProperties=QList< int >()) |
virtual int | query (const QString &subResource, const Query &query, QueryResult *result) |
virtual QList< QVariant > | queryValues (const QString &subResource, int entryPropId) |
virtual KLFLibEntry | entry (const QString &subRes, entryId id) |
virtual QList< KLFLibEntryWithId > | allEntries (const QString &subRes, const QList< int > &wantedEntryProperties=QList< int >()) |
virtual bool | canCreateSubResource () const |
virtual bool | canRenameSubResource () const |
virtual bool | canDeleteSubResource (const QString &subResource) const |
virtual QVariant | subResourceProperty (const QString &subResource, int propId) const |
virtual QList< int > | subResourcePropertyIdList () const |
virtual bool | hasSubResource (const QString &subRes) const |
virtual QStringList | subResourceList () const |
Static Public Member Functions | |
static KLFLibDBEngine * | openUrl (const QUrl &url, QObject *parent=NULL) |
static KLFLibDBEngine * | createSqlite (const QString &fileName, const QString &subresourcename, const QString &subresourcetitle, QObject *parent=NULL) |
Protected Member Functions | |
virtual bool | saveResourceProperty (int propId, const QVariant &value) |
Library Resource engine implementation for an (abstract) database (using Qt SQL interfaces)
For now, only SQLITE is supported. However, the class is designed to be easily adaptable to add support for eg. MySQL, PostgreSQL, etc.
Sub-resources are supported and translated to different SQLite table names, which are prefixed with "t_". Sub-resources themselves must have machine-friendly names (no special characters, especially the SQLite escape double-quote "
character); however the sub-resource titles may be fantasy.
Sub-resource properties are also supported in a limited way (only built-in properties Title and ViewType are supported).
Definition at line 72 of file klflibdbengine.h.
KLFLibDBEngine::~KLFLibDBEngine | ( | ) | [virtual] |
Simple destructor. Disconnects the database if autoDisconnectDB was requested in the constructor.
Definition at line 294 of file klflibdbengine.cpp.
References QSqlDatabase::close(), KLFLibDBEnginePropertyChangeNotifier::deRef(), KLFLibDBConnectionClassUser::pAutoDisconnectDB, and KLFLibDBConnectionClassUser::pDBConnectionName.
QList< KLFLibResourceEngine::KLFLibEntryWithId > KLFLibDBEngine::allEntries | ( | const QString & | subRes, |
const QList< int > & | wantedEntryProperties = QList<int>() |
||
) | [virtual] |
Implements KLFLibResourceEngine.
Definition at line 976 of file klflibdbengine.cpp.
References QSqlQuery::boundValues(), KLFProgressReporter::doReportProgress(), KLFLibResourceEngine::KLFLibEntryWithId::entry, QSqlQuery::exec(), KLFLibResourceEngine::KLFLibEntryWithId::id, QStringList::join(), KLF_ASSERT_CONDITION, KLF_FUNC_NAME, QSqlQuery::lastError(), QSqlQuery::lastQuery(), QSqlQuery::next(), KLFLibResourceEngine::operationStartReportingProgress(), QSqlQuery::prepare(), QSqlQuery::setForwardOnly(), QSqlQuery::size(), KLFLibResourceEngine::thisOperationProgressBlocked(), QObject::tr(), validDatabase(), and QSqlQuery::value().
QList< KLFLib::entryId > KLFLibDBEngine::allIds | ( | const QString & | subResource | ) | [virtual] |
Implements KLFLibResourceEngine.
Definition at line 555 of file klflibdbengine.cpp.
References QSqlQuery::exec(), KLF_ASSERT_CONDITION, QSqlQuery::lastError(), QSqlQuery::next(), QSqlQuery::prepare(), QSqlQuery::setForwardOnly(), validDatabase(), and QSqlQuery::value().
bool KLFLibDBEngine::canCreateSubResource | ( | ) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1025 of file klflibdbengine.cpp.
References KLFLibResourceEngine::baseCanModifyStatus(), and KLFLibResourceEngine::MS_CanModify.
bool KLFLibDBEngine::canDeleteSubResource | ( | const QString & | subResource | ) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1030 of file klflibdbengine.cpp.
References KLFLibResourceEngine::baseCanModifyStatus(), KLFLibResourceEngine::MS_CanModify, and subResourceList().
Referenced by deleteSubResource().
bool KLFLibDBEngine::canModifyData | ( | const QString & | subRes, |
ModifyType | modifytype | ||
) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 336 of file klflibdbengine.cpp.
References KLFLibResourceEngine::canModifyData(), and validDatabase().
Referenced by changeEntries(), deleteEntries(), and insertEntries().
bool KLFLibDBEngine::canModifyProp | ( | int | propid | ) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 348 of file klflibdbengine.cpp.
Referenced by canRegisterProperty(), and setSubResourceProperty().
bool KLFLibDBEngine::canRegisterProperty | ( | const QString & | propName | ) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 352 of file klflibdbengine.cpp.
References canModifyProp().
virtual bool KLFLibDBEngine::canRenameSubResource | ( | ) | const [inline, virtual] |
Definition at line 132 of file klflibdbengine.h.
bool KLFLibDBEngine::changeEntries | ( | const QString & | subRes, |
const QList< entryId > & | idlist, | ||
const QList< int > & | properties, | ||
const QList< QVariant > & | values | ||
) | [virtual, slot] |
Implements KLFLibResourceEngine.
Definition at line 1489 of file klflibdbengine.cpp.
References QSqlQuery::bindValue(), QSqlQuery::boundValues(), canModifyData(), KLFLibResourceEngine::ChangeData, KLFLibResourceEngine::dataChanged(), QSqlQuery::exec(), QStringList::join(), KLF_FUNC_NAME, klfDbg, QSqlQuery::lastError(), QSqlQuery::lastQuery(), KLFLibResourceEngine::operationStartReportingProgress(), QSqlQuery::prepare(), KLFPropertizedObject::propertyNameForId(), QList::size(), KLFLibResourceEngine::thisOperationProgressBlocked(), QObject::tr(), and validDatabase().
bool KLFLibDBEngine::compareDefaultSubResourceEquals | ( | const QString & | subResourceName | ) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1019 of file klflibdbengine.cpp.
References QString::compare(), and KLFLibResourceEngine::defaultSubResource().
uint KLFLibDBEngine::compareUrlTo | ( | const QUrl & | other, |
uint | interestFlags = 0xfffffff |
||
) | const [virtual] |
Implements KLFLibResourceEngine.
Definition at line 326 of file klflibdbengine.cpp.
References klfUrlCompare(), KlfUrlCompareBaseEqual, klfUrlCompareFlagIgnoreQueryItemValueCase, and KLFLibResourceEngine::url().
KLFLibDBEngine * KLFLibDBEngine::createSqlite | ( | const QString & | fileName, |
const QString & | subresourcename, | ||
const QString & | subresourcetitle, | ||
QObject * | parent = NULL |
||
) | [static] |
Use this function as a constructor. Creates a KLFLibDBEngine object, with QObject parent parent
, creating a fresh, empty SQLITE database stored in file fileName
.
subresourcename
is the name to give the default sub-resource. subresourcetitle
is the human title to attribute to it.
Returns NULL if opening the database failed.
A non-NULL returned object was successfully connected to database.
Definition at line 191 of file klflibdbengine.cpp.
References QSqlDatabase::addDatabase(), QUrl::addQueryItem(), QString::contains(), QMessageBox::critical(), QSqlDatabase::database(), QFile::exists(), QUrl::fromLocalFile(), QString::isEmpty(), QSqlDatabase::isValid(), KLF_DEBUG_BLOCK, KLF_FUNC_NAME, klfDbgSt, klfUrlLocalFilePath(), QSqlDatabase::lastError(), QSqlDatabase::open(), QUrl::path(), QSqlDatabase::setDatabaseName(), QUrl::setScheme(), setSubResourceProperty(), KLFLibResourceEngine::SubResPropTitle, QUrl::toString(), QObject::tr(), and KLFLibResourceEngine::url().
Referenced by KLFLibDBEngineFactory::createResource().
bool KLFLibDBEngine::createSubResource | ( | const QString & | subResource, |
const QString & | subResourceTitle | ||
) | [virtual, slot] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1379 of file klflibdbengine.cpp.
References QStringList::contains(), QString::isEmpty(), KLF_ASSERT_CONDITION, setSubResourceProperty(), KLFLibResourceEngine::subResourceCreated(), subResourceList(), KLFLibResourceEngine::SubResPropTitle, KLFLibResourceEngine::title(), and validDatabase().
bool KLFLibDBEngine::deleteEntries | ( | const QString & | subRes, |
const QList< entryId > & | idlist | ||
) | [virtual, slot] |
Implements KLFLibResourceEngine.
Definition at line 1555 of file klflibdbengine.cpp.
References QString::arg(), QSqlQuery::bindValue(), canModifyData(), KLFLibResourceEngine::dataChanged(), KLFLibResourceEngine::DeleteData, QSqlQuery::exec(), KLF_FUNC_NAME, klfDbg, QSqlQuery::lastError(), KLFLibResourceEngine::operationStartReportingProgress(), QSqlQuery::prepare(), QList::size(), KLFLibResourceEngine::thisOperationProgressBlocked(), QObject::tr(), and validDatabase().
bool KLFLibDBEngine::deleteSubResource | ( | const QString & | subResource | ) | [virtual, slot] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1346 of file klflibdbengine.cpp.
References canDeleteSubResource(), KLFLibResourceEngine::defaultSubResource(), KLFLibResourceEngine::defaultSubResourceChanged(), QSqlQuery::exec(), KLF_ASSERT_CONDITION, KLF_FUNC_NAME, QSqlQuery::lastError(), QSqlQuery::lastQuery(), QSqlQuery::prepare(), KLFLibResourceEngine::setDefaultSubResource(), KLFLibResourceEngine::subResourceDeleted(), subResourceList(), and validDatabase().
QList< KLFLibResourceEngine::KLFLibEntryWithId > KLFLibDBEngine::entries | ( | const QString & | subResource, |
const QList< KLFLib::entryId > & | idList, | ||
const QList< int > & | wantedEntryProperties = QList<int>() |
||
) | [virtual] |
Implements KLFLibResourceEngine.
Definition at line 594 of file klflibdbengine.cpp.
References QSqlQuery::bindValue(), QSqlQuery::boundValues(), QStringList::contains(), KLFLibResourceEngine::KLFLibEntryWithId::entry, QSqlQuery::exec(), KLFLibResourceEngine::KLFLibEntryWithId::id, QList::isEmpty(), QStringList::join(), KLF_ASSERT_CONDITION, KLF_DEBUG_BLOCK, KLF_FUNC_NAME, klfDbg, QSqlQuery::lastError(), QSqlQuery::lastQuery(), QSqlQuery::next(), KLFLibResourceEngine::operationStartReportingProgress(), QSqlQuery::prepare(), QList::size(), KLFLibResourceEngine::thisOperationProgressBlocked(), QObject::tr(), validDatabase(), and QSqlQuery::value().
KLFLibEntry KLFLibDBEngine::entry | ( | const QString & | subRes, |
entryId | id | ||
) | [virtual] |
Implements KLFLibResourceEngine.
Definition at line 943 of file klflibdbengine.cpp.
References QSqlQuery::addBindValue(), QSqlQuery::exec(), KLF_ASSERT_CONDITION, QSqlQuery::lastError(), QSqlQuery::lastQuery(), QSqlQuery::next(), QSqlQuery::prepare(), QSqlQuery::size(), and validDatabase().
Implements KLFLibResourceEngine.
Definition at line 575 of file klflibdbengine.cpp.
References QSqlQuery::addBindValue(), QSqlQuery::exec(), KLF_ASSERT_CONDITION, QSqlQuery::lastError(), QSqlQuery::next(), QSqlQuery::prepare(), and validDatabase().
bool KLFLibDBEngine::hasSubResource | ( | const QString & | subRes | ) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1071 of file klflibdbengine.cpp.
Referenced by queryValues().
QList< KLFLibResourceEngine::entryId > KLFLibDBEngine::insertEntries | ( | const QString & | subRes, |
const KLFLibEntryList & | entries | ||
) | [virtual, slot] |
Implements KLFLibResourceEngine.
Definition at line 1410 of file klflibdbengine.cpp.
References QSqlQuery::bindValue(), canModifyData(), KLFLibResourceEngine::dataChanged(), QSqlQuery::exec(), KLFLibResourceEngine::InsertData, QVariant::isValid(), QStringList::join(), KLF_ASSERT_CONDITION, KLF_FUNC_NAME, klfDbg, QSqlQuery::lastError(), QSqlQuery::lastInsertId(), QSqlQuery::lastQuery(), KLFLibResourceEngine::operationStartReportingProgress(), QSqlQuery::prepare(), QObject::property(), KLFPropertizedObject::propertyNameForId(), KLFPropertizedObject::registeredPropertyIdList(), QList::size(), KLFLibResourceEngine::thisOperationProgressBlocked(), QVariant::toInt(), QObject::tr(), and validDatabase().
KLFLibDBEngine * KLFLibDBEngine::openUrl | ( | const QUrl & | url, |
QObject * | parent = NULL |
||
) | [static] |
Use this function as a constructor. Creates a KLFLibDBEngine object, with QObject parent parent
, opening the database at location url
. Returns NULL if opening the database failed.
A non-NULL returned object was successfully connected to database.
Definition at line 143 of file klflibdbengine.cpp.
References QSqlDatabase::addDatabase(), QUrl::addQueryItem(), QMessageBox::critical(), QSqlDatabase::database(), QSqlDatabase::driverName(), QFile::exists(), QUrl::hasQueryItem(), QString::isEmpty(), QSqlDatabase::isValid(), klfUrlLocalFilePath(), QSqlDatabase::lastError(), QSqlDatabase::open(), QUrl::queryItemValue(), QUrl::removeAllQueryItems(), QUrl::scheme(), QSqlDatabase::setDatabaseName(), QString::toLower(), QUrl::toString(), QObject::tr(), and KLFLibResourceEngine::url().
Referenced by KLFLibDBEngineFactory::openResource().
int KLFLibDBEngine::query | ( | const QString & | subResource, |
const Query & | query, | ||
QueryResult * | result | ||
) | [virtual] |
Implements KLFLibResourceEngine.
Definition at line 794 of file klflibdbengine.cpp.
References QString::arg(), QSqlQuery::bindValue(), QSqlQuery::boundValues(), KLFProgressReporter::doReportProgress(), KLFLibResourceEngine::KLFLibEntryWithId::entry, KLFLibResourceEngine::QueryResult::entryIdList, KLFLibResourceEngine::QueryResult::entryWithIdList, QSqlQuery::exec(), KLFLibResourceEngine::QueryResult::FillEntryIdList, KLFLibResourceEngine::QueryResult::FillEntryWithIdList, KLFLibResourceEngine::QueryResult::fillFlags, KLFLibResourceEngine::QueryResult::FillRawEntryList, KLFLibResourceEngine::KLFLibEntryWithId::id, QStringList::join(), KLF_ASSERT_CONDITION, KLF_DEBUG_BLOCK, KLF_FUNC_NAME, klfDbg, QSqlQuery::lastError(), KLFLibResourceEngine::Query::limit, make_sql_condition(), KLFLibResourceEngine::Query::matchCondition, KLFLib::EntryMatchCondition::mkMatchAll(), QSqlQuery::next(), QString::number(), KLFLibResourceEngine::operationStartReportingProgress(), KLFLibResourceEngine::Query::orderDirection, KLFLibResourceEngine::Query::orderPropId, QSqlQuery::prepare(), KLFPropertizedObject::propertyNameForId(), KLFLibResourceSimpleEngine::queryImpl(), KLFLibResourceEngine::QueryResult::rawEntryList, QSqlQuery::setForwardOnly(), QSqlQuery::size(), KLFLibResourceEngine::Query::skip, KLFLibResourceEngine::thisOperationProgressBlocked(), QObject::tr(), validDatabase(), QSqlQuery::value(), and KLFLibResourceEngine::Query::wantedEntryProperties.
QList< QVariant > KLFLibDBEngine::queryValues | ( | const QString & | subResource, |
int | entryPropId | ||
) | [virtual] |
Implements KLFLibResourceEngine.
Definition at line 894 of file klflibdbengine.cpp.
References QMap::contains(), QSqlQuery::exec(), hasSubResource(), KLF_ASSERT_CONDITION, KLF_DEBUG_BLOCK, KLF_FUNC_NAME, klfDbg, QSqlQuery::lastError(), QSqlQuery::next(), QSqlQuery::prepare(), KLFPropertizedObject::propertyIdRegistered(), KLFPropertizedObject::propertyNameForId(), QSqlQuery::setForwardOnly(), validDatabase(), and QSqlQuery::value().
bool KLFLibDBEngine::saveResourceProperty | ( | int | propId, |
const QVariant & | value | ||
) | [protected, virtual] |
Implements KLFLibResourceEngine.
Definition at line 369 of file klflibdbengine.cpp.
References QSqlQuery::addBindValue(), QSqlQuery::bindValue(), QSqlQuery::exec(), KLF_ASSERT_CONDITION, KLF_DEBUG_TIME_BLOCK, KLF_FUNC_NAME, QSqlQuery::lastError(), QSqlQuery::lastQuery(), QSqlQuery::prepare(), KLFPropertizedObject::property(), KLFPropertizedObject::propertyNameForId(), QObject::setProperty(), and validDatabase().
bool KLFLibDBEngine::saveTo | ( | const QUrl & | newPath | ) | [virtual, slot] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1603 of file klflibdbengine.cpp.
References QFile::copy(), QUrl::host(), klfUrlLocalFilePath(), QUrl::scheme(), and KLFLibResourceEngine::url().
void KLFLibDBEngine::setDatabase | ( | const QSqlDatabase & | db_connection | ) | [virtual] |
supply an open database.
Definition at line 363 of file klflibdbengine.cpp.
bool KLFLibDBEngine::setSubResourceProperty | ( | const QString & | subResource, |
int | propId, | ||
const QVariant & | value | ||
) | [virtual, slot] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1092 of file klflibdbengine.cpp.
References QSqlQuery::bindValue(), QSqlQuery::boundValues(), canModifyProp(), QSqlQuery::exec(), KLF_ASSERT_CONDITION, KLF_DEBUG_TIME_BLOCK, KLF_FUNC_NAME, klfDbg, QSqlQuery::lastError(), QSqlQuery::prepare(), subResourceProperty(), KLFLibResourceEngine::SubResPropLocked, and validDatabase().
Referenced by createSqlite(), and createSubResource().
QStringList KLFLibDBEngine::subResourceList | ( | ) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1076 of file klflibdbengine.cpp.
References KLF_ASSERT_CONDITION, QSqlDatabase::tables(), and validDatabase().
Referenced by canDeleteSubResource(), createSubResource(), and deleteSubResource().
QVariant KLFLibDBEngine::subResourceProperty | ( | const QString & | subResource, |
int | propId | ||
) | const [virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 1039 of file klflibdbengine.cpp.
References QSqlQuery::addBindValue(), QSqlQuery::boundValues(), QSqlQuery::exec(), KLF_ASSERT_CONDITION, klfDbg, QSqlQuery::lastError(), QSqlQuery::lastQuery(), QSqlQuery::next(), QSqlQuery::prepare(), KLFLibResourceEngine::SubResPropLocked, KLFLibResourceEngine::SubResPropTitle, KLFLibResourceEngine::SubResPropViewType, validDatabase(), and QSqlQuery::value().
Referenced by setSubResourceProperty().
virtual QList<int> KLFLibDBEngine::subResourcePropertyIdList | ( | ) | const [inline, virtual] |
Reimplemented from KLFLibResourceEngine.
Definition at line 137 of file klflibdbengine.h.
bool KLFLibDBEngine::validDatabase | ( | ) | const [virtual] |
True if one has supplied a valid database in the constructor or with a setDatabase() call.
Definition at line 358 of file klflibdbengine.cpp.
References QSqlDatabase::isOpen().
Referenced by allEntries(), allIds(), canModifyData(), changeEntries(), createSubResource(), deleteEntries(), deleteSubResource(), entries(), entry(), hasEntry(), insertEntries(), query(), queryValues(), saveResourceProperty(), setSubResourceProperty(), subResourceList(), and subResourceProperty().