QSqlQuery cPersistentBroker::query( const QString& query ) { if ( !d->connection.isValid() ) throw wpException( QString( "PersistentBroker not connected to database." ) ); return d->connection.exec( query ); }
bool PersistentBroker::openDriver( const QString& driver ) { if( d->connection != 0 ) { d->connection->close(); delete d->connection; d->connection = 0; } if( driver == "sqlite" ) { d->connection = new cSQLiteDriver(); d->sqlite = true; } else if( driver == "mysql" ) { #ifdef MYSQL_DRIVER d->connection = new cMySQLDriver; d->sqlite = false; #else throw wpException( "Sorry, you have to define MYSQL_DRIVER to make wolfpack work with MySQL.\n" ); #endif } if ( !d->connection ) return false; return true; }
bool cPersistentBroker::tableExists( const QString& table ) { if ( !d->connection.isOpen() ) { throw wpException( QString( "Trying to query an existing table without a database connection." ) ); } return d->connection.tables().contains( table, Qt::CaseInsensitive ); }
bool cPersistentBroker::executeQuery( const QString& query ) { if ( !d->connection.isValid() ) throw wpException( tr( "PersistentBroker not connected to database." ) ); QSqlQuery q; if ( !q.exec( query ) ) { Console::instance()->log( LOG_ERROR, q.lastError().text() ); return false; } return true; }
void cSectorMaps::addMap( unsigned char map, unsigned int width, unsigned int height ) { // Create a map in the Char and in the Item map cSectorMap* itemmap = new cSectorMap; if ( !itemmap->init( width, height ) ) { delete itemmap; throw wpException( QString( itemmap->error() ) ); } cSectorMap* charmap = new cSectorMap; if ( !charmap->init( width, height ) ) { delete charmap; delete itemmap; throw wpException( QString( charmap->error() ) ); } charmaps.insert( std::make_pair( map, charmap ) ); itemmaps.insert( std::make_pair( map, itemmap ) ); }
void cAccounts::load() { ISerialization* archive = cPluginFactory::serializationArchiver( SrvParams->accountsArchiver()); archive->prepareReading("accounts"); for (uint i = 0; i < archive->size(); ++i) { QString objectID; archive->readObjectID( objectID ); if ( objectID == "ACCOUNT" ) { AccountRecord* d = new AccountRecord; archive->readObject( d ); accounts.insert( d->login(), d ); } else throw wpException( "Error parsing account records." ); } archive->close(); delete archive; }
/*! Parses and loads multi definitions */ void cMultiCache::load( const QString &basePath ) { QFile indexFile( basePath + "multi.idx" ); if( !indexFile.open( IO_ReadOnly ) ) throw wpException( QString( "Error opening file %1 for reading." ).arg( basePath + "multi.idx" ) ); QDataStream indexStream( &indexFile ); indexStream.setByteOrder( QDataStream::LittleEndian ); QFile multiFile( basePath + "multi.mul" ); if ( !multiFile.open( IO_ReadOnly ) ) throw wpException( QString( "Error opening file %1 for reading." ).arg( basePath + "multi.mul" ) ); struct { Q_INT32 start; Q_INT32 length; Q_INT32 unknown; } indexData; ushort currentID = 0; while ( !indexStream.atEnd() ) { indexFile.at( currentID * 12 ); indexStream >> indexData.start; indexStream >> indexData.length; indexStream >> indexData.unknown; if ( indexData.start == -1 ) // empty record? { ++currentID; continue; } QValueVector<multiItem_st> items; items.reserve( indexData.length / 12 ); uint i = 0; multiFile.at( indexData.start ); QDataStream multiStream( &multiFile ); multiStream.setByteOrder( QDataStream::LittleEndian ); for (; i < indexData.length / 12; ++i ) { multiItem_st item; multiStream >> item.tile; multiStream >> item.x; multiStream >> item.y; multiStream >> item.z; Q_UINT8 empty; multiStream >> empty; // ???? Q_UINT32 isVisible = 0; multiStream >> isVisible; item.visible = isVisible > 0 ? true : false; if ( item.visible ) // we ignore invisible items (?) items.push_back(item); } MultiDefinition* multi = new MultiDefinition; multi->setItems( items ); multis.insert( currentID++, multi ); } }