[KLF Application][KLF Tools][KLF Backend][KLF Home]
KLatexFormula Project
Public Slots | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
KLFLibDBEngine Class Reference

#include <klflibdbengine.h>

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

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 Slots inherited from KLFLibResourceEngine
virtual bool setTitle (const QString &title)
 set a new resource title for this library resource More...
 
virtual bool setLocked (bool locked)
 Set the resource to be locked. More...
 
virtual bool setViewType (const QString &viewType)
 
virtual bool setReadOnly (bool readonly)
 Set the resource to be read-only or not. More...
 
virtual void setDefaultSubResource (const QString &subResource)
 Set the default sub-resource. More...
 
virtual bool createSubResource (const QString &subResource, const QString &subResourceTitle)
 Create a new sub-resource. More...
 
virtual bool createSubResource (const QString &subResource)
 Create a new sub-resource. More...
 
virtual bool renameSubResource (const QString &oldSubResourceName, const QString &newSubResourceName)
 
virtual bool deleteSubResource (const QString &subResource)
 
virtual bool setSubResourceProperty (const QString &subResource, int propId, const QVariant &value)
 
virtual entryId insertEntry (const QString &subResource, const KLFLibEntry &entry)
 Insert an entry into this resource. More...
 
virtual entryId insertEntry (const KLFLibEntry &entry)
 Insert an entry into this resource. More...
 
virtual QList< entryIdinsertEntries (const QString &subResource, const KLFLibEntryList &entrylist)=0
 Insert new entries in this resource. More...
 
virtual QList< entryIdinsertEntries (const KLFLibEntryList &entrylist)
 Insert new entries in this resource. More...
 
virtual bool changeEntries (const QString &subResource, const QList< entryId > &idlist, const QList< int > &properties, const QList< QVariant > &values)=0
 Change some entries in this resource. More...
 
virtual bool changeEntries (const QList< entryId > &idlist, const QList< int > &properties, const QList< QVariant > &values)
 Change some entries in this resource. More...
 
virtual bool deleteEntries (const QString &subResource, const QList< entryId > &idlist)=0
 Delete some entries in this resource. More...
 
virtual bool deleteEntries (const QList< entryId > &idList)
 Delete some entries in this resource. More...
 
virtual bool saveTo (const QUrl &newPath)
 
virtual bool setResourceProperty (int propId, const QVariant &value)
 Set a resource property to the given value. More...
 
virtual bool loadResourceProperty (const QString &propName, const QVariant &value)
 Set the given property to the given value. More...
 

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
 
- Public Member Functions inherited from KLFLibResourceEngine
 KLFLibResourceEngine (const QUrl &url, uint supportedfeatureflags, QObject *parent=NULL)
 
virtual ~KLFLibResourceEngine ()
 
virtual uint supportedFeatureFlags () const
 List of features supported by this resource engine. More...
 
virtual QUrl url (uint flags=0x0) const
 query URL More...
 
virtual bool isReadOnly () const
 query read-only state More...
 
virtual QString title () const
 The human-set title of this resource. More...
 
virtual bool locked () const
 Is this resource is locked? More...
 
virtual QString viewType () const
 The (last) View Type used to display this resource. More...
 
virtual bool accessShared () const
 If the resource is accessed by many clients. More...
 
virtual QVariant resourceProperty (const QString &name) const
 Get the value of a resource property. More...
 
virtual bool canModifyData (ModifyType modifytype) const
 
virtual QString suggestedViewTypeIdentifier () const
 
virtual QString defaultSubResource () const
 
virtual bool canRenameSubResource (const QString &subResource) const
 
virtual QString subResourcePropertyName (int propId) const
 
virtual bool canModifySubResourceProperty (const QString &subResource, int propId) const
 
virtual KLFLibEntry entry (entryId id)
 query an entry in this resource More...
 
virtual bool hasEntry (entryId id)
 query the existence of an entry in this resource More...
 
virtual QList< KLFLibEntryWithIdentries (const QList< KLFLib::entryId > &idList, const QList< int > &wantedEntryProperties=QList< int >())
 query multiple entries in this resource More...
 
virtual QList< KLFLib::entryIdallIds ()
 Returns all IDs in this resource (and the default sub-resource) More...
 
virtual QList< KLFLibEntryWithIdallEntries (const QList< int > &wantedEntryProperties=QList< int >())
 query all entries in this resource More...
 
void blockProgressReportingForNextOperation ()
 Specifies that the next operation (only) should not report progress. More...
 
void blockProgressReporting (bool block)
 (Un)Blocks generally progress reporting More...
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent=0)
 
 blockSignals (bool block)
 
 childEvent (QChildEvent *event)
 
 children ()
 
 connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type=Qt::AutoCompatConnection)
 
 connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type=Qt::AutoCompatConnection)
 
 connectNotify (const char *signal)
 
 customEvent (QEvent *event)
 
 deleteLater ()
 
 destroyed (QObject *obj=0)
 
 disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
 disconnect (const char *signal=0, const QObject *receiver=0, const char *method=0)
 
 disconnect (const QObject *receiver, const char *method=0)
 
 disconnectNotify (const char *signal)
 
 dumpObjectInfo ()
 
 dumpObjectTree ()
 
 dynamicPropertyNames ()
 
 event (QEvent *e)
 
 eventFilter (QObject *watched, QEvent *event)
 
 findChild (const QString &name=QString()
 
 findChildren (const QString &name=QString()
 
 findChildren (const QRegExp &regExp)
 
 inherits (const char *className)
 
 installEventFilter (QObject *filterObj)
 
 isWidgetType ()
 
 killTimer (int id)
 
 metaObject ()
 
 moveToThread (QThread *targetThread)
 
 parent ()
 
 property (const char *name)
 
 receivers (const char *signal)
 
 removeEventFilter (QObject *obj)
 
 sender ()
 
 setParent (QObject *parent)
 
 setProperty (const char *name, const QVariant &value)
 
 signalsBlocked ()
 
 startTimer (int interval)
 
 thread ()
 
 timerEvent (QTimerEvent *event)
 
 tr (const char *sourceText, const char *comment=0, int n=-1)
 
 trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
 staticMetaObject
 
 QObject (QObject *parent, const char *name)
 
 checkConnectArgs (const char *signal, const QObject *object, const char *method)
 
 child (const char *objName, const char *inheritsClass=0, bool recursiveSearch=true)
 
 className ()
 
 insertChild (QObject *object)
 
 isA (const char *className)
 
 name ()
 
 name (const char *defaultName)
 
 normalizeSignalSlot (const char *signalSlot)
 
 removeChild (QObject *object)
 
 setName (const char *name)
 
- Public Member Functions inherited from KLFPropertizedObject
 KLFPropertizedObject (const QString &propertyNameSpace)
 
virtual ~KLFPropertizedObject ()
 
virtual QVariant property (const QString &propName) const
 
virtual QVariant property (int propId) const
 
QList< int > propertyIdList () const
 
QStringList propertyNameList () const
 
QMap< QString, QVariantallProperties () const
 
void setAllProperties (const QMap< QString, QVariant > &propValues)
 
QByteArray allPropertiesToByteArray () const
 
void setAllPropertiesFromByteArray (const QByteArray &data)
 
virtual QString toString (uint toStringFlags=0) const
 
int propertyMaxId () const
 
bool propertyIdRegistered (int propId) const
 
bool propertyNameRegistered (const QString &propertyName) const
 
int propertyIdForName (const QString &propertyName) const
 
QString propertyNameForId (int propId) const
 
QList< int > registeredPropertyIdList () const
 
QStringList registeredPropertyNameList () const
 
QMap< QString, int > registeredProperties () 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)
 
- Protected Member Functions inherited from KLFLibResourceEngine
virtual ModifyStatus baseCanModifyStatus (bool inSubResource, const QString &subResource=QString()) const
 can modify data in resource (base common tests only) More...
 
bool thisOperationProgressBlocked () const
 
- Protected Member Functions inherited from KLFPropertizedObject
virtual void propertyValueChanged (int propId, const QVariant &oldValue, const QVariant &newValue)
 
virtual void setProperty (const QString &propname, const QVariant &value)
 
virtual void setProperty (int propId, const QVariant &value)
 
virtual int loadProperty (const QString &propname, const QVariant &value)
 
void registerBuiltInProperty (int propId, const QString &propName) const
 
int registerProperty (const QString &propertyName) const
 
QString propertyNameSpace () const
 
QVector< QVariantpropertyVector () const
 

Additional Inherited Members

- Public Types inherited from KLFLibResourceEngine
enum  ResourceProperty { PropTitle = 0, PropLocked, PropViewType, PropAccessShared }
 
enum  SubResourceProperty { SubResPropTitle = 0, SubResPropLocked = 1, SubResPropViewType = 2 }
 
enum  ResourceFeature {
  FeatureReadOnly = 0x0001, FeatureLocked = 0x0002, FeatureSaveTo = 0x0004, FeatureSubResources = 0x0008,
  FeatureSubResourceProps = 0x0010
}
 Features that may or may not be implemented by subclasses. More...
 
enum  WantUrlFormatFlag { WantUrlDefaultSubResource = 0x01, WantUrlReadOnly = 0x02 }
 Format options one can give to url() More...
 
enum  ModifyType {
  AllActionsData = 0, UnknownModification = 0, InsertData, ChangeData,
  DeleteData
}
 
typedef KLFLib::entryId entryId
 
- Public Types inherited from KLFPropertizedObject
enum  ToStringFlag
 
- Signals inherited from KLFLibResourceEngine
void dataChanged (const QString &subResource, int modificationType, const QList< KLFLib::entryId > &entryIdList)
 Emitted when data has changed. More...
 
void defaultSubResourceChanged (const QString &newDefaultSubResource)
 Emitted when the default sub-resource changes. More...
 
void resourcePropertyChanged (int propId)
 Emitted when a resource property changes. More...
 
void subResourcePropertyChanged (const QString &subResource, int propId)
 Emitted when a sub-resource property changes. More...
 
void subResourceCreated (const QString &newSubResource)
 Emitted when a sub-resource is created. More...
 
void subResourceRenamed (const QString &oldSubResourceName, const QString &newSubResourceName)
 Emitted when a sub-resource is renamed. More...
 
void subResourceDeleted (const QString &subResource)
 Emitted when a sub-resource is deleted. More...
 
void operationStartReportingProgress (KLFProgressReporter *progressReporter, const QString &descriptiveText)
 
- Public Attributes inherited from KLFPropertizedObject
 ToStringUseHtml
 
 ToStringUseHtmlDiv
 
 ToStringQuoteValues
 
 ToStringAllProperties
 
- Protected Types inherited from KLFLibResourceEngine
enum  ModifyStatus { MS_CanModify = 0, MS_IsLocked = 1, MS_SubResLocked = 2, MS_NotModifiable = 3 }
 
- Static Protected Member Functions inherited from KLFPropertizedObject
static void registerBuiltInProperty (const QString &propNameSpace, int propId, const QString &name)
 
static int registerProperty (const QString &propNameSpace, const QString &propertyName)
 
static int propertyMaxId (const QString &propNameSpace)
 
static bool propertyIdRegistered (const QString &propNameSpace, int propId)
 
static bool propertyNameRegistered (const QString &propNameSpace, const QString &propertyName)
 
static int propertyIdForName (const QString &propNameSpace, const QString &propertyName)
 
static QString propertyNameForId (const QString &propNameSpace, int propId)
 
static QList< int > registeredPropertyIdList (const QString &propNameSpace)
 
static QStringList registeredPropertyNameList (const QString &propNameSpace)
 
static QMap< QString, int > registeredProperties (const QString &propNameSpace)
 

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 KLFLibDBEnginePropertyChangeNotifier::deRef(), KLFLibDBConnectionClassUser::pAutoDisconnectDB, KLFLibDBConnectionClassUser::pDBConnectionName, QString::replace(), and QString::toLower().

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

Reimplemented from KLFLibResourceEngine.

Definition at line 1025 of file klflibdbengine.cpp.

bool KLFLibDBEngine::canDeleteSubResource ( const QString subResource) const
virtual

Reimplemented from KLFLibResourceEngine.

Definition at line 1030 of file klflibdbengine.cpp.

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().

bool KLFLibDBEngine::canModifyProp ( int  propid) const
virtual

Reimplemented from KLFLibResourceEngine.

Definition at line 348 of file klflibdbengine.cpp.

References KLFLibResourceEngine::canModifyProp().

bool KLFLibDBEngine::canRegisterProperty ( const QString propName) const
virtual

Reimplemented from KLFLibResourceEngine.

Definition at line 352 of file klflibdbengine.cpp.

virtual bool KLFLibDBEngine::canRenameSubResource ( ) const
inlinevirtual
bool KLFLibDBEngine::changeEntries ( const QString subRes,
const QList< entryId > &  idlist,
const QList< int > &  properties,
const QList< QVariant > &  values 
)
virtualslot
bool KLFLibDBEngine::compareDefaultSubResourceEquals ( const QString subResourceName) const
virtual

Reimplemented from KLFLibResourceEngine.

Definition at line 1019 of file klflibdbengine.cpp.

References QString::compare().

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(), KLFLibDBConnectionClassUser::pAutoDisconnectDB, KLFLibDBEnginePropertyChangeNotifier::ref(), QSqlDatabase::setDatabaseName(), KLFPropertizedObject::setProperty(), QUrl::setScheme(), setSubResourceProperty(), and QUrl::toString().

Referenced by KLFLibDBEngineFactory::createResource().

bool KLFLibDBEngine::createSubResource ( const QString subResource,
const QString subResourceTitle 
)
virtualslot

Definition at line 1379 of file klflibdbengine.cpp.

References QString::isEmpty(), and KLF_ASSERT_CONDITION.

bool KLFLibDBEngine::deleteEntries ( const QString subRes,
const QList< entryId > &  idlist 
)
virtualslot
bool KLFLibDBEngine::deleteSubResource ( const QString subResource)
virtualslot
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.

QList< KLFLibResourceEngine::entryId > KLFLibDBEngine::insertEntries ( const QString subRes,
const KLFLibEntryList entries 
)
virtualslot
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(), and QUrl::toString().

Referenced by KLFLibDBEngineFactory::openResource().

int KLFLibDBEngine::query ( const QString subResource,
const Query query,
QueryResult result 
)
virtual
QList< QVariant > KLFLibDBEngine::queryValues ( const QString subResource,
int  entryPropId 
)
virtual
bool KLFLibDBEngine::saveResourceProperty ( int  propId,
const QVariant value 
)
protectedvirtual
bool KLFLibDBEngine::saveTo ( const QUrl newPath)
virtualslot
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 
)
virtualslot
QStringList KLFLibDBEngine::subResourceList ( ) const
virtual

Reimplemented from KLFLibResourceEngine.

Definition at line 1076 of file klflibdbengine.cpp.

References KLF_ASSERT_CONDITION.

QVariant KLFLibDBEngine::subResourceProperty ( const QString subResource,
int  propId 
) const
virtual
virtual QList<int> KLFLibDBEngine::subResourcePropertyIdList ( ) const
inlinevirtual
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.


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

Generated by doxygen 1.8.11