Update of /cvsroot/wpdev/wolfpack
In directory sc8-pr-cvs1:/tmp/cvs-serv8708/src
Modified Files:
books.cpp customtags.cpp pagesystem.h persistentbroker.cpp
persistentbroker.h res.rc world.cpp
Log Message:
Implemented SQLite support.
driver=sqlite
database name is the filename
Index: books.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/books.cpp,v
retrieving revision 1.42
retrieving revision 1.43
diff -C2 -d -r1.42 -r1.43
*** books.cpp 26 Aug 2003 15:01:05 -0000 1.42
--- books.cpp 26 Aug 2003 15:36:44 -0000 1.43
***************
*** 142,146 ****
for ( QStringList::iterator it = content_.begin(); it != content_.end(); ++it )
{
! persistentBroker->executeQuery( QString( "INSERT INTO bookpages SET serial = '%1', page = '%2', text = '%3'" ).arg( serial() ).arg( i ).arg( __escapeReservedCharacters( *it ) ) );
++i;
}
--- 142,146 ----
for ( QStringList::iterator it = content_.begin(); it != content_.end(); ++it )
{
! persistentBroker->executeQuery( QString( "INSERT INTO bookpages SET serial = '%1', page = '%2', text = '%3'" ).arg( serial() ).arg( i ).arg( persistentBroker->quoteString( *it ) ) );
++i;
}
Index: customtags.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/customtags.cpp,v
retrieving revision 1.23
retrieving revision 1.24
diff -C2 -d -r1.23 -r1.24
*** customtags.cpp 20 Jul 2003 00:04:51 -0000 1.23
--- customtags.cpp 26 Aug 2003 15:36:44 -0000 1.24
***************
*** 696,700 ****
QString name = it.key();
! persistentBroker->executeQuery( QString( "INSERT INTO tags SET serial = '%1', type = '%2', value = '%3', name = '%4'" ).arg( key ).arg( type ).arg( __escapeReservedCharacters( value ) ).arg( __escapeReservedCharacters( name ) ) );
}
if ( tags_.count() > 6 )
--- 696,700 ----
QString name = it.key();
! persistentBroker->executeQuery( QString( "INSERT INTO tags SET serial = '%1', type = '%2', value = '%3', name = '%4'" ).arg( key ).arg( type ).arg( persistentBroker->quoteString( value ) ).arg( persistentBroker->quoteString( name ) ) );
}
if ( tags_.count() > 6 )
Index: pagesystem.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/pagesystem.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** pagesystem.h 19 Jan 2003 16:09:00 -0000 1.9
--- pagesystem.h 26 Aug 2003 15:36:44 -0000 1.10
***************
*** 103,107 ****
QString sql( "INSERT INTO pages SET charserial = '%1', pagetype = '%2', pagetime = '%3', pagepos = '%4', content = '%5', category = '%6', pageorder = '%7'" );
! sql = sql.arg( page->charSerial() ).arg( page->pageType() ).arg( __escapeReservedCharacters( page->pageTime() ) ).arg( QString( "%1,%2,%3,%4" ).arg( page->pagePos().x ).arg( page->pagePos().y ).arg( page->pagePos().z ).arg( page->pagePos().map ) ).arg( __escapeReservedCharacters( page->content() ) ).arg( page->pageCategory() ).arg( i++ );
persistentBroker->executeQuery( sql );
--- 103,107 ----
QString sql( "INSERT INTO pages SET charserial = '%1', pagetype = '%2', pagetime = '%3', pagepos = '%4', content = '%5', category = '%6', pageorder = '%7'" );
! sql = sql.arg( page->charSerial() ).arg( page->pageType() ).arg( persistentBroker->quoteString( page->pageTime() ) ).arg( QString( "%1,%2,%3,%4" ).arg( page->pagePos().x ).arg( page->pagePos().y ).arg( page->pagePos().z ).arg( page->pagePos().map ) ).arg( persistentBroker->quoteString( page->content() ) ).arg( page->pageCategory() ).arg( i++ );
persistentBroker->executeQuery( sql );
Index: persistentbroker.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/persistentbroker.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** persistentbroker.cpp 26 Aug 2003 15:01:05 -0000 1.14
--- persistentbroker.cpp 26 Aug 2003 15:36:44 -0000 1.15
***************
*** 60,69 ****
--- 60,76 ----
if( driver == "sqlite" )
+ {
connection = new cSQLiteDriver();
+ sqlite = true;
+ }
else
+ {
connection = new cDBDriver;
+ sqlite = false;
+ }
if ( !connection )
return false;
+
return true;
}
***************
*** 83,86 ****
--- 90,97 ----
return false;
+ // Disable fsynch for sqlite
+ if( sqlite )
+ connection->exec( "PRAGMA synchronous = OFF;" );
+
return true;
}
***************
*** 94,104 ****
bool PersistentBroker::saveObject( PersistentObject* object )
{
! /* static const bool hasTransaction = connection->driver()->hasFeature(QSqlDriver::Transactions);
! if ( hasTransaction )
! connection->transaction();*/
! object->save();
! /* if ( hasTransaction )
! connection->commit();*/
return true;
--- 105,127 ----
bool PersistentBroker::saveObject( PersistentObject* object )
{
! // Start Transaction
! if( sqlite )
! connection->exec( "BEGIN TRANSACTION;" );
! try
! {
! object->save();
! }
! catch( ... )
! {
! // Rollback
! if( sqlite )
! connection->exec( "ROLLBACK TRANSACTION;" );
! throw;
! }
!
! // Commit
! if( sqlite )
! connection->exec( "COMMIT TRANSACTION;" );
return true;
Index: persistentbroker.h
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/persistentbroker.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** persistentbroker.h 26 Aug 2003 15:01:05 -0000 1.17
--- persistentbroker.h 26 Aug 2003 15:36:44 -0000 1.18
***************
*** 51,54 ****
--- 51,55 ----
{
cDBDriver* connection;
+ bool sqlite;
std::vector< stDeleteItem > deleteQueue;
***************
*** 66,69 ****
--- 67,77 ----
void clearDeleteQueue();
void addToDeleteQueue( const QString &tables, const QString &conditions );
+ QString quoteString( const QString &d )
+ {
+ if( sqlite )
+ return QString(d).replace( QRegExp("'"), "''" );
+ else
+ return QString(d).replace( QRegExp("'"), "\\'" );
+ }
void lockTable( const QString& table ) const;
***************
*** 76,88 ****
};
- // Pseudo helper functions.
- // We should consider inline templates in future.
-
- inline QString __escapeReservedCharacters( const QString& d )
- {
- //return QString(d).replace( QRegExp("'"), "\\'" );
- return QString(d).replace( QRegExp("'"), "''" );
- }
-
#define savePersistentIntValue(field, value) \
SqlStatement += QString("%1='%2',").arg(field).arg(value)
--- 84,87 ----
***************
*** 90,94 ****
#define savePersistentStrValue(field, value) \
if ( !value.isNull() ) \
! SqlStatement += QString("%1='%2',").arg(field).arg(__escapeReservedCharacters(value))
#define startSaveSqlStatement(table) \
--- 89,93 ----
#define savePersistentStrValue(field, value) \
if ( !value.isNull() ) \
! SqlStatement += QString("%1='%2',").arg(field).arg(persistentBroker->quoteString(value))
#define startSaveSqlStatement(table) \
***************
*** 152,163 ****
// for inserting we use the faster VALUES() method
! #define addField( name, value ) fields.push_back( name ); values.push_back( QString::number( value ) );
! #define addStrField( name, value ) fields.push_back( name ); values.push_back( "'" + ( value.isNull() ? QString( "" ) : __escapeReservedCharacters( value ) ) + "'" );
! #define addCondition( name, value ) conditions.push_back( QString( "`%1` = '%2'" ).arg( name ).arg( value ) );
#define saveFields \
if( isPersistent ) \
! persistentBroker->executeQuery( QString( "UPDATE %1 (%2) VALUES(%3) WHERE %4" ).arg( table ).arg( fields.join( "," ) ).arg( values.join( "," ) ).arg( conditions.join( " AND " ) ) ); \
else \
! persistentBroker->executeQuery( QString( "INSERT INTO %1 (%2) VALUES(%3)" ).arg( table ).arg( fields.join( "," ) ).arg( values.join( "," ) ) );
#endif // __PERSISTENTBROKER_H__
--- 151,183 ----
// for inserting we use the faster VALUES() method
! #define addField( name, value ) \
! if( isPersistent ) \
! fields.push_back( QString( "%1='%2'" ).arg( name ).arg( QString::number( value ) ) ); \
! else \
! { \
! fields.push_back( name ); \
! values.push_back( QString::number( value ) ); \
! }
!
! #define addStrField( name, value ) \
! if( isPersistent ) \
! fields.push_back( QString( "%1='%2'" ).arg( name ).arg( persistentBroker->quoteString( value ) ) ); \
! else \
! { \
! fields.push_back( name ); \
! values.push_back( "'" + ( value.isNull() ? QString( "" ) : persistentBroker->quoteString( value ) ) + "'" ); \
! }
!
! #define addCondition( name, value ) conditions.push_back( QString( "%1 = '%2'" ).arg( name ).arg( value ) );
!
#define saveFields \
if( isPersistent ) \
! { \
! persistentBroker->executeQuery( QString( "UPDATE %1 SET %2 WHERE %3" ).arg( table ).arg( fields.join( "," ) ).arg( conditions.join( " AND " ) ) ); \
! } \
else \
! { \
! persistentBroker->executeQuery( QString( "INSERT INTO %1 (%2) VALUES(%3)" ).arg( table ).arg( fields.join( "," ) ).arg( values.join( "," ) ) ); \
! }
#endif // __PERSISTENTBROKER_H__
Index: res.rc
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/res.rc,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** res.rc 5 May 2003 11:59:13 -0000 1.12
--- res.rc 26 Aug 2003 15:36:44 -0000 1.13
***************
*** 1,6 ****
//Microsoft Developer Studio generated resource script.
//
! #include "resource.h"
VS_VERSION_INFO VERSIONINFO
--- 1,16 ----
//Microsoft Developer Studio generated resource script.
//
! #include "resrc1.h"
+ #define APSTUDIO_READONLY_SYMBOLS
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // Generated from the TEXTINCLUDE 2 resource.
+ //
+ #include "resource.h"
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // Version
+ //
VS_VERSION_INFO VERSIONINFO
***************
*** 41,43 ****
--- 51,60 ----
END
+ /////////////////////////////////////////////////////////////////////////////
+ //
+ // Icon
+ //
+
+ // Icon with lowest ID value placed first to ensure application icon
+ // remains consistent on all systems.
IDI_ICON2 ICON DISCARDABLE "icon2.ico"
Index: world.cpp
===================================================================
RCS file: /cvsroot/wpdev/wolfpack/world.cpp,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** world.cpp 26 Aug 2003 15:05:38 -0000 1.28
--- world.cpp 26 Aug 2003 15:36:44 -0000 1.29
***************
*** 453,457 ****
catch( QString &e )
{
! clConsole.log( LOG_FATAL, QString( "An error occured while connecting to the database: %1\n" ).arg( e ) );
return;
}
--- 453,457 ----
catch( QString &e )
{
! clConsole.log( LOG_FATAL, QString( "Couldn't open the database: %1\n" ).arg( e ) );
return;
}
***************
*** 467,472 ****
p->purgePendingObjects();
! // try
! // {
cItemIterator iItems;
for( P_ITEM pItem = iItems.first(); pItem; pItem = iItems.next() )
--- 467,472 ----
p->purgePendingObjects();
! try
! {
cItemIterator iItems;
for( P_ITEM pItem = iItems.first(); pItem; pItem = iItems.next() )
***************
*** 476,492 ****
for( P_CHAR pChar = iChars.first(); pChar; pChar = iChars.next() )
persistentBroker->saveObject( pChar );
- /* }
- catch( QString& error )
- {
- clConsole.log( LOG_ERROR, error );
}
! catch( ... )
{
clConsole.ChangeColor( WPC_RED );
! clConsole.send( "\nERROR" );
clConsole.ChangeColor( WPC_NORMAL );
! clConsole.send( ": Unhandled Exception\n" );
}
! */
ISerialization *archive = cPluginFactory::serializationArchiver( "xml" );
archive->prepareWritting( "effects" );
--- 476,490 ----
for( P_CHAR pChar = iChars.first(); pChar; pChar = iChars.next() )
persistentBroker->saveObject( pChar );
}
! catch( QString &e )
{
clConsole.ChangeColor( WPC_RED );
! clConsole.send( " Failed" );
clConsole.ChangeColor( WPC_NORMAL );
!
! clConsole.log( LOG_ERROR, "Saving failed: " + e );
! return;
}
!
ISerialization *archive = cPluginFactory::serializationArchiver( "xml" );
archive->prepareWritting( "effects" );
***************
*** 495,501 ****
delete archive;
- // Save The pages
- // cPagesManager::getInstance()->save();
-
// Save the accounts
Accounts::instance()->save();
--- 493,496 ----
***************
*** 510,513 ****
--- 505,509 ----
clConsole.send( QString( " [%1ms]\n" ).arg( getNormalizedTime() - startTime ) );
+
}
|