bool KexiMigrate::isSourceAndDestinationDataSourceTheSame() const { KexiDB::ConnectionData* sourcedata = m_migrateData->source; KexiDB::ConnectionData* destinationdata = m_migrateData->destination->connectionData(); return ( sourcedata && destinationdata && m_migrateData->sourceName == m_migrateData->destination->databaseName() && // same database name sourcedata->driverName == destinationdata->driverName && // same driver sourcedata->hostName == destinationdata->hostName && // same host sourcedata->fileName() == destinationdata->fileName() && // same filename sourcedata->dbPath() == destinationdata->dbPath() && // same database path sourcedata->dbFileName() == destinationdata->dbFileName() // same database filename ); }
/*! Connect to the db backend */ bool xBaseMigrate::drv_connect() { // Get the xbase directory path Data* migrationData = data(); KexiDB::ConnectionData* dataSource = migrationData->source; QString dbPath = dataSource->dbPath(); QDir xBaseDirectory( dbPath ); // set filters QStringList dbfFilters; //! @todo use application/x-dbase mime type as soon as share mime db provides info on file extensions dbfFilters<<"*.dbf"<<"*.DBF"; xBaseDirectory.setNameFilters( dbfFilters ); QStringList dbfFiles = xBaseDirectory.entryList(); // set a readable files filter here ? foreach( const QString& fileName, dbfFiles ) { xbDbf* table = new xbDbf( this ); // Calling OpenDatabase, will automatically add the pointer `table` // to the dbfList of xbXBase class ( if there is no error ) QString absoluteFileName = xBaseDirectory.filePath( fileName ); // remove the letters '.dbf'. Hence the -4 QString choppedFileName = fileName.left( fileName.length() - 4 ).toLower(); m_tableNamePathMap[choppedFileName] = absoluteFileName; kDebug()<<choppedFileName<<" Path:"<<absoluteFileName; int returnCode; QByteArray ba = absoluteFileName.toUtf8(); if ( ( returnCode = table->OpenDatabase( ba.constData() ) ) != XB_NO_ERROR ) { switch( returnCode ) { case XB_OPEN_ERROR: kDebug()<<"Couldn't open "<<absoluteFileName<<".Skipping it."; break; case XB_NO_MEMORY: kDebug()<<"Memory allocation error in XBase library"; return false; case XB_NOT_XBASE: kDebug()<<absoluteFileName<<" is not a DBF file.Skipping it."; break; default: kDebug()<<"Error code "<<returnCode; return false; } } }
bool SQLiteAdminTools::vacuum(const KexiDB::ConnectionData& data, const QString& databaseName) { clearError(); KexiDB::DriverManager manager; KexiDB::Driver *drv = manager.driver(data.driverName); QString title(i18n("Could not compact database \"%1\".", QDir::toNativeSeparators(databaseName))); if (!drv) { setError(&manager, title); return false; } SQLiteVacuum vacuum(data.dbPath() + QDir::separator() + databaseName); tristate result = vacuum.run(); if (!result) { setError(title); return false; } else //success or cancelled return true; }