[KLF Application][KLF Tools][KLF Backend][KLF Home]
KLatexFormula Project
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions

KLFLibDBEngine Class Reference

#include <klflibdbengine.h>

Inheritance diagram for KLFLibDBEngine:
Inheritance graph
[legend]
Collaboration diagram for KLFLibDBEngine:
Collaboration graph
[legend]

List of all members.

Public Slots

virtual bool createSubResource (const QString &subResource, const QString &subResourceTitle)
virtual bool deleteSubResource (const QString &subResource)
virtual QList< entryIdinsertEntries (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::entryIdallIds (const QString &subResource)
virtual bool hasEntry (const QString &, entryId id)
virtual QList< KLFLibEntryWithIdentries (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< QVariantqueryValues (const QString &subResource, int entryPropId)
virtual KLFLibEntry entry (const QString &subRes, entryId id)
virtual QList< KLFLibEntryWithIdallEntries (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 KLFLibDBEngineopenUrl (const QUrl &url, QObject *parent=NULL)
static KLFLibDBEnginecreateSqlite (const QString &fileName, const QString &subresourcename, const QString &subresourcetitle, QObject *parent=NULL)

Protected Member Functions

virtual bool saveResourceProperty (int propId, const QVariant &value)

Detailed Description

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.


Constructor & Destructor Documentation

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.


Member Function Documentation

QList< KLFLibResourceEngine::KLFLibEntryWithId > KLFLibDBEngine::allEntries ( const QString subRes,
const QList< int > &  wantedEntryProperties = QList<int>() 
) [virtual]
QList< KLFLib::entryId > KLFLibDBEngine::allIds ( const QString subResource) [virtual]
bool KLFLibDBEngine::canCreateSubResource ( ) const [virtual]
bool KLFLibDBEngine::canDeleteSubResource ( const QString subResource) const [virtual]
bool KLFLibDBEngine::canModifyData ( const QString subRes,
ModifyType  modifytype 
) const [virtual]

Todo:
TODO: check if file is writable (SQLITE3), if permissions on the database are granted (MySQL, PgSQL, etc.)

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]
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]
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]
bool KLFLibDBEngine::deleteEntries ( const QString subRes,
const QList< entryId > &  idlist 
) [virtual, slot]
bool KLFLibDBEngine::deleteSubResource ( const QString subResource) [virtual, slot]
QList< KLFLibResourceEngine::KLFLibEntryWithId > KLFLibDBEngine::entries ( const QString subResource,
const QList< KLFLib::entryId > &  idList,
const QList< int > &  wantedEntryProperties = QList<int>() 
) [virtual]
KLFLibEntry KLFLibDBEngine::entry ( const QString subRes,
entryId  id 
) [virtual]
bool KLFLibDBEngine::hasEntry ( const QString subResource,
entryId  id 
) [virtual]
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]
KLFLibDBEngine * KLFLibDBEngine::openUrl ( const QUrl url,
QObject parent = NULL 
) [static]
int KLFLibDBEngine::query ( const QString subResource,
const Query query,
QueryResult result 
) [virtual]

Bug:
. ................ postsqlcondition is NOT implemented .............

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]
bool KLFLibDBEngine::saveResourceProperty ( int  propId,
const QVariant value 
) [protected, virtual]
bool KLFLibDBEngine::saveTo ( const QUrl newPath) [virtual, slot]
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]
QStringList KLFLibDBEngine::subResourceList ( ) const [virtual]
QVariant KLFLibDBEngine::subResourceProperty ( const QString subResource,
int  propId 
) const [virtual]
virtual QList<int> KLFLibDBEngine::subResourcePropertyIdList ( ) const [inline, virtual]

Reimplemented from KLFLibResourceEngine.

Definition at line 137 of file klflibdbengine.h.

bool KLFLibDBEngine::validDatabase ( ) const [virtual]

The documentation for this class was generated from the following files:

Generated by doxygen 1.7.3