kexi

KexiDB::RowEditBuffer Class Reference

#include <roweditbuffer.h>

List of all members.


Detailed Description

provides data for single edited database row KexiDB::RowEditBuffer provides data for single edited row, needed to perform update at the database backend. Its advantage over pasing e.g. KexiDB::FieldList object is that EditBuffer contains only changed values.

EditBuffer offers two modes: db-aware and not-db-aware. Db-aware buffer addresses a field using references to QueryColumnInfo object, while not-db-aware buffer addresses a field using its name.

Example usage of not-db-aware buffer: QuerySchema *query = ..... EditBuffer buf; buf.insert("name", "Joe"); buf.insert("surname", "Black"); buf.at("name"); //returns "Joe" buf.at("surname"); //returns "Black" buf.at(query->field("surname")); //returns "Black" too Now you can use buf to add or edit records using KexiDB::Connection::updateRow(), KexiDB::Connection::insertRow()

Example usage of db-aware buffer: QuerySchema *query = ..... QueryColumnInfo *ci1 = ....... //e.g. can be obtained from QueryScehma::fieldsExpanded() QueryColumnInfo *ci2 = ....... EditBuffer buf; buf.insert(*ci1, "Joe"); buf.insert(*ci2, "Black"); buf.at(*ci1); //returns "Joe" buf.at(*ci2); //returns "Black" Now you can use buf to add or edit records using KexiDB::Connection::updateRow(), KexiDB::Connection::insertRow()

You can use QMap::clear() to clear buffer contents, QMap::isEmpty() to see if buffer is empty. For more, see QMap documentation.

Notes: added fields should come from the same (common) QuerySchema object. However, this isn't checked at QValue& EditBuffer::operator[]( const Field& f ) level.

Definition at line 74 of file roweditbuffer.h.


Public Types

typedef QMap< QString, QVariant > SimpleMap
typedef QMap< QueryColumnInfo
*, QVariant > 
DBMap

Public Member Functions

 RowEditBuffer (bool dbAwareBuffer)
bool isDBAware () const
void clear ()
bool isEmpty () const
void insert (QueryColumnInfo &ci, QVariant &val)
void insert (const QString &fname, QVariant &val)
const QVariant * at (QueryColumnInfo &ci, bool useDefaultValueIfPossible=true) const
const QVariant * at (Field &f) const
const QVariant * at (const QString &fname) const
bool hasDefaultValueAt (QueryColumnInfo &ci) const
const SimpleMap simpleBuffer ()
const DBMap dbBuffer ()
void debug ()

Protected Attributes

SimpleMap * m_simpleBuffer
SimpleMap::ConstIterator * m_simpleBufferIt
DBMap * m_dbBuffer
DBMap::Iterator * m_dbBufferIt
QMap< QueryColumnInfo *, bool > * m_defaultValuesDbBuffer
QMap< QueryColumnInfo *, bool >
::ConstIterator * 
m_defaultValuesDbBufferIt

Member Function Documentation

void KexiDB::RowEditBuffer::insert ( QueryColumnInfo ci,
QVariant &  val 
) [inline]

Inserts value val for db-aware buffer's column ci.

Definition at line 89 of file roweditbuffer.h.

void KexiDB::RowEditBuffer::insert ( const QString &  fname,
QVariant &  val 
) [inline]

Inserts value val for not-db-aware buffer's column fname.

Definition at line 97 of file roweditbuffer.h.

const QVariant * RowEditBuffer::at ( QueryColumnInfo ci,
bool  useDefaultValueIfPossible = true 
) const

Useful only for db-aware buffer.

Returns:
value for column ci If there is no value assigned for the buffer, this method tries to remember and return default value obtained from ci if useDefaultValueIfPossible is true. Note that if the column is declared as unique (especially: primary key), default value will not be used.

Definition at line 47 of file roweditbuffer.cpp.

const QVariant * RowEditBuffer::at ( Field f  )  const

Useful only for not-db-aware buffer.

Returns:
value for field f

Definition at line 71 of file roweditbuffer.cpp.

const QVariant * RowEditBuffer::at ( const QString &  fname  )  const

Useful only for not-db-aware buffer.

Returns:
value for field fname

Definition at line 83 of file roweditbuffer.cpp.

bool KexiDB::RowEditBuffer::hasDefaultValueAt ( QueryColumnInfo ci  )  const [inline]

Useful only for db-aware buffer:.

Returns:
true if the value available as at( ci ) is obtained from column's default value

Definition at line 115 of file roweditbuffer.h.

void RowEditBuffer::debug (  ) 

For debugging purposes.

Definition at line 113 of file roweditbuffer.cpp.


The documentation for this class was generated from the following files:
KDE Home | KDE Accessibility Home | Description of Access Keys