20#include "roweditbuffer.h"
28RowEditBuffer::RowEditBuffer( bool dbAwareBuffer)
29: m_simpleBuffer(dbAwareBuffer ? 0 : new SimpleMap())
30, m_simpleBufferIt(dbAwareBuffer ? 0 : new SimpleMap::ConstIterator())
31, m_dbBuffer(dbAwareBuffer ? new DBMap() : 0)
32, m_dbBufferIt(dbAwareBuffer ? new DBMap::Iterator() : 0)
33, m_defaultValuesDbBuffer(dbAwareBuffer ? new TQMap< QueryColumnInfo*,bool>() : 0)
34, m_defaultValuesDbBufferIt(dbAwareBuffer ? new TQMap< QueryColumnInfo*,bool>::ConstIterator() : 0)
38RowEditBuffer::~RowEditBuffer()
40 delete m_simpleBuffer;
41 delete m_simpleBufferIt;
43 delete m_defaultValuesDbBuffer;
50 KexiDBWarn << "RowEditBuffer::at(QueryColumnInfo&): not db-aware buffer!" << endl;
53 *m_dbBufferIt = m_dbBuffer->find( &ci );
54 TQVariant* result = 0;
55 if (*m_dbBufferIt!=m_dbBuffer->end())
56 result = &(*m_dbBufferIt).data();
57 if ( useDefaultValueIfPossible
58 && (!result || result->isNull())
65 result = &(*m_dbBuffer)[ &ci ];
66 m_defaultValuesDbBuffer->insert(&ci, true);
68 return ( const TQVariant*)result;
73 if (!m_simpleBuffer) {
74 KexiDBWarn << "RowEditBuffer::at(Field&): this is db-aware buffer!" << endl;
77 *m_simpleBufferIt = m_simpleBuffer->find( f.name() );
78 if (*m_simpleBufferIt==m_simpleBuffer->constEnd())
80 return &(*m_simpleBufferIt).data();
85 if (!m_simpleBuffer) {
86 KexiDBWarn << "RowEditBuffer::at(Field&): this is db-aware buffer!" << endl;
89 *m_simpleBufferIt = m_simpleBuffer->find( fname );
90 if (*m_simpleBufferIt==m_simpleBuffer->constEnd())
92 return &(*m_simpleBufferIt).data();
95void RowEditBuffer::clear() {
98 m_defaultValuesDbBuffer->clear();
101 m_simpleBuffer->clear();
104bool RowEditBuffer::isEmpty() const
107 return m_dbBuffer->isEmpty();
109 return m_simpleBuffer->isEmpty();
116 KexiDBDbg << "RowEditBuffer type=DB-AWARE, " << m_dbBuffer->count() << " items"<< endl;
117 for (DBMap::ConstIterator it = m_dbBuffer->constBegin(); it!=m_dbBuffer->constEnd(); ++it) {
118 KexiDBDbg << "* field name=" <<it.key()->field->name()<< " val="
119 << (it.data().isNull() ? TQString( "<NULL>") : it.data().toString())
124 KexiDBDbg << "RowEditBuffer type=SIMPLE, " << m_simpleBuffer->count() << " items"<< endl;
125 for (SimpleMap::ConstIterator it = m_simpleBuffer->constBegin(); it!=m_simpleBuffer->constEnd(); ++it) {
126 KexiDBDbg << "* field name=" <<it.key()<< " val="
127 << (it.data().isNull() ? TQString( "<NULL>") : it.data().toString()) <<endl;
TQVariant defaultValue() const
Helper class that assigns additional information for the column in a query.
const TQVariant * at(QueryColumnInfo &ci, bool useDefaultValueIfPossible=true) const
bool hasDefaultValueAt(QueryColumnInfo &ci) const Useful only for db-aware buffer:
void debug() For debugging purposes.
High-level database connectivity library with database backend drivers.
KEXI_DB_EXPORT bool isDefaultValueAllowed(Field *field)
|