void PertyDuplicatePoiOp::setConfiguration(const Settings& conf) { setDuplicateSigma(conf.getDouble(duplicateSigmaKey(), defaultDuplicateSigma())); setProbability(conf.getDouble(pKey(), defaultProbability())); setMoveMultiplier(conf.getDouble(moveMultiplierKey(), defaultMoveMultiplier())); ConfigOptions configOptions(conf); const int seed = configOptions.getPertySeed(); LOG_VARD(seed); if (seed == -1) { _rng->seed(RandomNumberUtils::generateSeed()); } else { _rng->seed(seed); } }
void PertyRemoveTagVisitor::setConfiguration(const Settings& conf) { setProbability(conf.getDouble(pKey(), 0.05)); ConfigOptions configOptions(conf); const int seed = configOptions.getPertySeed(); LOG_VARD(seed); if (seed == -1) { _rng->seed(RandomNumberUtils::generateSeed()); } else { _rng->seed(seed); } _exemptTagKeys = configOptions.getPertyRemoveTagVisitorExemptTagKeys(); _replacementTagKeys = configOptions.getPertyRemoveTagVisitorSubstitutionKeys(); _replacementTagValues = configOptions.getPertyRemoveTagVisitorSubstitutionValues(); }
QgsProviderRegistry::QgsProviderRegistry( QString pluginPath ) { // At startup, examine the libs in the qgis/lib dir and store those that // are a provider shared lib // check all libs in the current plugin directory and get name and descriptions //TODO figure out how to register and identify data source plugin for a specific //TODO layer type #if 0 char **argv = qApp->argv(); QString appDir = argv[0]; int bin = appDir.findRev( "/bin", -1, false ); QString baseDir = appDir.left( bin ); QString mLibraryDirectory = baseDir + "/lib"; #endif mLibraryDirectory = pluginPath; mLibraryDirectory.setSorting( QDir::Name | QDir::IgnoreCase ); mLibraryDirectory.setFilter( QDir::Files | QDir::NoSymLinks ); #if defined(WIN32) || defined(__CYGWIN__) mLibraryDirectory.setNameFilters( QStringList( "*.dll" ) ); #elif ANDROID mLibraryDirectory.setNameFilters( QStringList( "*provider.so" ) ); #else mLibraryDirectory.setNameFilters( QStringList( "*.so" ) ); #endif QgsDebugMsg( QString( "Checking %1 for provider plugins" ).arg( mLibraryDirectory.path() ) ); if ( mLibraryDirectory.count() == 0 ) { QString msg = QObject::tr( "No QGIS data provider plugins found in:\n%1\n" ).arg( mLibraryDirectory.path() ); msg += QObject::tr( "No vector layers can be loaded. Check your QGIS installation" ); QgsMessageOutput* output = QgsMessageOutput::createMessageOutput(); output->setTitle( QObject::tr( "No Data Providers" ) ); output->setMessage( msg, QgsMessageOutput::MessageText ); output->showMessage(); return; } QListIterator<QFileInfo> it( mLibraryDirectory.entryInfoList() ); while ( it.hasNext() ) { QFileInfo fi( it.next() ); QLibrary myLib( fi.filePath() ); if ( !myLib.load() ) { QgsDebugMsg( QString( "Checking %1: ...invalid (lib not loadable): %2" ).arg( myLib.fileName() ).arg( myLib.errorString() ) ); continue; } //MH: Added a further test to detect non-provider plugins linked to provider plugins. //Only pure provider plugins have 'type' not defined isprovider_t *hasType = ( isprovider_t * ) cast_to_fptr( myLib.resolve( "type" ) ); if ( hasType ) { QgsDebugMsg( QString( "Checking %1: ...invalid (has type method)" ).arg( myLib.fileName() ) ); continue; } // get the description and the key for the provider plugin isprovider_t *isProvider = ( isprovider_t * ) cast_to_fptr( myLib.resolve( "isProvider" ) ); if ( !isProvider ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no isProvider method)" ).arg( myLib.fileName() ) ); continue; } // check to see if this is a provider plugin if ( !isProvider() ) { QgsDebugMsg( QString( "Checking %1: ...invalid (not a provider)" ).arg( myLib.fileName() ) ); continue; } // looks like a provider. get the key and description description_t *pDesc = ( description_t * ) cast_to_fptr( myLib.resolve( "description" ) ); if ( !pDesc ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no description method)" ).arg( myLib.fileName() ) ); continue; } providerkey_t *pKey = ( providerkey_t * ) cast_to_fptr( myLib.resolve( "providerKey" ) ); if ( !pKey ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no providerKey method)" ).arg( myLib.fileName() ) ); continue; } // add this provider to the provider map mProviders[pKey()] = new QgsProviderMetadata( pKey(), pDesc(), myLib.fileName() ); // load database drivers databaseDrivers_t *pDatabaseDrivers = ( databaseDrivers_t * ) cast_to_fptr( myLib.resolve( "databaseDrivers" ) ); if ( pDatabaseDrivers ) { mDatabaseDrivers = pDatabaseDrivers(); } // load directory drivers directoryDrivers_t *pDirectoryDrivers = ( directoryDrivers_t * ) cast_to_fptr( myLib.resolve( "directoryDrivers" ) ); if ( pDirectoryDrivers ) { mDirectoryDrivers = pDirectoryDrivers(); } // load protocol drivers protocolDrivers_t *pProtocolDrivers = ( protocolDrivers_t * ) cast_to_fptr( myLib.resolve( "protocolDrivers" ) ); if ( pProtocolDrivers ) { mProtocolDrivers = pProtocolDrivers(); } // now get vector file filters, if any fileVectorFilters_t *pFileVectorFilters = ( fileVectorFilters_t * ) cast_to_fptr( myLib.resolve( "fileVectorFilters" ) ); if ( pFileVectorFilters ) { QString fileVectorFilters = pFileVectorFilters(); if ( !fileVectorFilters.isEmpty() ) mVectorFileFilters += fileVectorFilters; QgsDebugMsg( QString( "Checking %1: ...loaded ok (%2 file filters)" ).arg( myLib.fileName() ).arg( fileVectorFilters.split( ";;" ).count() ) ); } // now get raster file filters, if any // this replaces deprecated QgsRasterLayer::buildSupportedRasterFileFilter buildsupportedrasterfilefilter_t *pBuild = ( buildsupportedrasterfilefilter_t * ) cast_to_fptr( myLib.resolve( "buildSupportedRasterFileFilter" ) ); if ( pBuild ) { QString fileRasterFilters; pBuild( fileRasterFilters ); QgsDebugMsg( "raster filters: " + fileRasterFilters ); if ( !fileRasterFilters.isEmpty() ) mRasterFileFilters += fileRasterFilters; QgsDebugMsg( QString( "Checking %1: ...loaded ok (%2 file filters)" ).arg( myLib.fileName() ).arg( fileRasterFilters.split( ";;" ).count() ) ); } } } // QgsProviderRegistry ctor
QgsAuthMethodRegistry::QgsAuthMethodRegistry( const QString& pluginPath ) { // At startup, examine the libs in the qgis/lib dir and store those that // are an auth method shared lib // check all libs in the current plugin directory and get name and descriptions #if 0 char **argv = qApp->argv(); QString appDir = argv[0]; int bin = appDir.findRev( "/bin", -1, false ); QString baseDir = appDir.left( bin ); QString mLibraryDirectory = baseDir + "/lib"; #endif mLibraryDirectory = pluginPath; mLibraryDirectory.setSorting( QDir::Name | QDir::IgnoreCase ); mLibraryDirectory.setFilter( QDir::Files | QDir::NoSymLinks ); #if defined(Q_OS_WIN) || defined(__CYGWIN__) mLibraryDirectory.setNameFilters( QStringList( "*authmethod.dll" ) ); #else mLibraryDirectory.setNameFilters( QStringList( "*authmethod.so" ) ); #endif QgsDebugMsg( QString( "Checking for auth method plugins in: %1" ).arg( mLibraryDirectory.path() ) ); if ( mLibraryDirectory.count() == 0 ) { QString msg = QObject::tr( "No QGIS auth method plugins found in:\n%1\n" ).arg( mLibraryDirectory.path() ); msg += QObject::tr( "No authentication methods can be used. Check your QGIS installation" ); QgsMessageOutput* output = QgsMessageOutput::createMessageOutput(); output->setTitle( QObject::tr( "No Authentication Methods" ) ); output->setMessage( msg, QgsMessageOutput::MessageText ); output->showMessage(); return; } // auth method file regex pattern, only files matching the pattern are loaded if the variable is defined QString filePattern = getenv( "QGIS_AUTHMETHOD_FILE" ); QRegExp fileRegexp; if ( !filePattern.isEmpty() ) { fileRegexp.setPattern( filePattern ); } QListIterator<QFileInfo> it( mLibraryDirectory.entryInfoList() ); while ( it.hasNext() ) { QFileInfo fi( it.next() ); if ( !fileRegexp.isEmpty() ) { if ( fileRegexp.indexIn( fi.fileName() ) == -1 ) { QgsDebugMsg( "auth method " + fi.fileName() + " skipped because doesn't match pattern " + filePattern ); continue; } } QLibrary myLib( fi.filePath() ); if ( !myLib.load() ) { QgsDebugMsg( QString( "Checking %1: ...invalid (lib not loadable): %2" ).arg( myLib.fileName(), myLib.errorString() ) ); continue; } // get the description and the key for the auth method plugin isauthmethod_t *isAuthMethod = ( isauthmethod_t * ) cast_to_fptr( myLib.resolve( "isAuthMethod" ) ); if ( !isAuthMethod ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no isAuthMethod method)" ).arg( myLib.fileName() ) ); continue; } // check to see if this is an auth method plugin if ( !isAuthMethod() ) { QgsDebugMsg( QString( "Checking %1: ...invalid (not an auth method)" ).arg( myLib.fileName() ) ); continue; } // looks like an auth method plugin. get the key and description description_t *pDesc = ( description_t * ) cast_to_fptr( myLib.resolve( "description" ) ); if ( !pDesc ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no description method)" ).arg( myLib.fileName() ) ); continue; } methodkey_t *pKey = ( methodkey_t * ) cast_to_fptr( myLib.resolve( "authMethodKey" ) ); if ( !pKey ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no authMethodKey method)" ).arg( myLib.fileName() ) ); continue; } // add this auth method to the method map mAuthMethods[pKey()] = new QgsAuthMethodMetadata( pKey(), pDesc(), myLib.fileName() ); } }
//-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~ Zen::Database::I_DatabaseTransaction::pFutureKey_type GroupMemberDataMap::update(pGroupMemberDomainObject_type _pGroupMemberDomainObject) { // Start a transaction Zen::Database::I_DatabaseConnection::pDatabaseTransaction_type pTransaction = getDatabaseConnection()->beginTransaction(); // Create a query Zen::Database::I_DatabaseTransaction::pStaticQuery_type pQuery = pTransaction->createStaticQuery(); std::stringstream query; if (_pGroupMemberDomainObject->getMemberId().isNull()) { // Construct the query to insert a record into the GroupMember table. query << "INSERT into GroupMember ( " << getNonPKFieldNames() << " ) VALUES ( "; // Append all of the values std::string escapedStringValue; escapedStringValue = escapeString(_pGroupMemberDomainObject->getGroupId().getStringValue()); query << "\'" << escapedStringValue << "\'"; escapedStringValue = escapeString(_pGroupMemberDomainObject->getAccountId().getStringValue()); query << ", \'" << escapedStringValue << "\'"; // Final closing parenthesis query << ")"; pQuery->setQuery(query.str()); // Execute the query. Zen::Database::I_DatabaseTransaction::pFutureKey_type pKey(pTransaction->executeInsert(pQuery)); _pGroupMemberDomainObject->getMemberId() = pKey->getValue(); // Done, so commit the transaction. pTransaction->commit(); return pKey; } else { // Construct the query to update a record into the GroupMember table. // Count the number of dirty fields. int dirtyFields = 0; query << "UPDATE GroupMember SET "; std::string separator(""); // Append all of the field names and values std::string escapedStringValue; if (_pGroupMemberDomainObject->getGroupId().isDirty()) { escapedStringValue = escapeString(_pGroupMemberDomainObject->getGroupId().getStringValue()); query << separator << "groupId = \'" << escapedStringValue << "\'"; separator = ", "; dirtyFields++; } if (_pGroupMemberDomainObject->getAccountId().isDirty()) { escapedStringValue = escapeString(_pGroupMemberDomainObject->getAccountId().getStringValue()); query << separator << "accountId = \'" << escapedStringValue << "\'"; separator = ", "; dirtyFields++; } // No need to proceed if none of the fields were dirty. if (dirtyFields > 0) { // WHERE clause to update the record query << " WHERE memberId = " << _pGroupMemberDomainObject->getMemberId().getInt64Value(); pQuery->setQuery(query.str()); // Execute the query. pTransaction->executeQuery(pQuery); // Done, so commit the transaction. pTransaction->commit(); } Zen::Database::I_DatabaseTransaction::pFutureKey_type pKey(new Zen::Database::I_DatabaseTransaction::FutureKey_type); pKey->setValue(_pGroupMemberDomainObject->getMemberId().getInt64Value()); return pKey; } }
void QgsProviderRegistry::init() { // add standard providers mProviders[ QgsMemoryProvider::providerKey() ] = new QgsProviderMetadata( QgsMemoryProvider::providerKey(), QgsMemoryProvider::providerDescription(), &QgsMemoryProvider::createProvider ); mLibraryDirectory.setSorting( QDir::Name | QDir::IgnoreCase ); mLibraryDirectory.setFilter( QDir::Files | QDir::NoSymLinks ); #if defined(Q_OS_WIN) || defined(__CYGWIN__) mLibraryDirectory.setNameFilters( QStringList( "*.dll" ) ); #elif defined(ANDROID) mLibraryDirectory.setNameFilters( QStringList( "*provider.so" ) ); #else mLibraryDirectory.setNameFilters( QStringList( QStringLiteral( "*.so" ) ) ); #endif QgsDebugMsg( QString( "Checking %1 for provider plugins" ).arg( mLibraryDirectory.path() ) ); if ( mLibraryDirectory.count() == 0 ) { QString msg = QObject::tr( "No QGIS data provider plugins found in:\n%1\n" ).arg( mLibraryDirectory.path() ); msg += QObject::tr( "No vector layers can be loaded. Check your QGIS installation" ); QgsMessageOutput *output = QgsMessageOutput::createMessageOutput(); output->setTitle( QObject::tr( "No Data Providers" ) ); output->setMessage( msg, QgsMessageOutput::MessageText ); output->showMessage(); return; } // provider file regex pattern, only files matching the pattern are loaded if the variable is defined QString filePattern = getenv( "QGIS_PROVIDER_FILE" ); QRegExp fileRegexp; if ( !filePattern.isEmpty() ) { fileRegexp.setPattern( filePattern ); } Q_FOREACH ( const QFileInfo &fi, mLibraryDirectory.entryInfoList() ) { if ( !fileRegexp.isEmpty() ) { if ( fileRegexp.indexIn( fi.fileName() ) == -1 ) { QgsDebugMsg( "provider " + fi.fileName() + " skipped because doesn't match pattern " + filePattern ); continue; } } QLibrary myLib( fi.filePath() ); if ( !myLib.load() ) { QgsDebugMsg( QString( "Checking %1: ...invalid (lib not loadable): %2" ).arg( myLib.fileName(), myLib.errorString() ) ); continue; } //MH: Added a further test to detect non-provider plugins linked to provider plugins. //Only pure provider plugins have 'type' not defined isprovider_t *hasType = reinterpret_cast< isprovider_t * >( cast_to_fptr( myLib.resolve( "type" ) ) ); if ( hasType ) { QgsDebugMsg( QString( "Checking %1: ...invalid (has type method)" ).arg( myLib.fileName() ) ); continue; } // get the description and the key for the provider plugin isprovider_t *isProvider = reinterpret_cast< isprovider_t * >( cast_to_fptr( myLib.resolve( "isProvider" ) ) ); if ( !isProvider ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no isProvider method)" ).arg( myLib.fileName() ) ); continue; } // check to see if this is a provider plugin if ( !isProvider() ) { QgsDebugMsg( QString( "Checking %1: ...invalid (not a provider)" ).arg( myLib.fileName() ) ); continue; } // looks like a provider. get the key and description description_t *pDesc = reinterpret_cast< description_t * >( cast_to_fptr( myLib.resolve( "description" ) ) ); if ( !pDesc ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no description method)" ).arg( myLib.fileName() ) ); continue; } providerkey_t *pKey = reinterpret_cast< providerkey_t * >( cast_to_fptr( myLib.resolve( "providerKey" ) ) ); if ( !pKey ) { QgsDebugMsg( QString( "Checking %1: ...invalid (no providerKey method)" ).arg( myLib.fileName() ) ); continue; } // add this provider to the provider map mProviders[pKey()] = new QgsProviderMetadata( pKey(), pDesc(), myLib.fileName() ); // load database drivers databaseDrivers_t *pDatabaseDrivers = reinterpret_cast< databaseDrivers_t * >( cast_to_fptr( myLib.resolve( "databaseDrivers" ) ) ); if ( pDatabaseDrivers ) { mDatabaseDrivers = pDatabaseDrivers(); } // load directory drivers directoryDrivers_t *pDirectoryDrivers = reinterpret_cast< directoryDrivers_t * >( cast_to_fptr( myLib.resolve( "directoryDrivers" ) ) ); if ( pDirectoryDrivers ) { mDirectoryDrivers = pDirectoryDrivers(); } // load protocol drivers protocolDrivers_t *pProtocolDrivers = reinterpret_cast< protocolDrivers_t * >( cast_to_fptr( myLib.resolve( "protocolDrivers" ) ) ); if ( pProtocolDrivers ) { mProtocolDrivers = pProtocolDrivers(); } // now get vector file filters, if any fileVectorFilters_t *pFileVectorFilters = reinterpret_cast< fileVectorFilters_t * >( cast_to_fptr( myLib.resolve( "fileVectorFilters" ) ) ); if ( pFileVectorFilters ) { QString fileVectorFilters = pFileVectorFilters(); if ( !fileVectorFilters.isEmpty() ) mVectorFileFilters += fileVectorFilters; QgsDebugMsg( QString( "Checking %1: ...loaded OK (%2 file filters)" ).arg( myLib.fileName() ).arg( fileVectorFilters.split( ";;" ).count() ) ); } // now get raster file filters, if any // this replaces deprecated QgsRasterLayer::buildSupportedRasterFileFilter buildsupportedrasterfilefilter_t *pBuild = reinterpret_cast< buildsupportedrasterfilefilter_t * >( cast_to_fptr( myLib.resolve( "buildSupportedRasterFileFilter" ) ) ); if ( pBuild ) { QString fileRasterFilters; pBuild( fileRasterFilters ); QgsDebugMsg( "raster filters: " + fileRasterFilters ); if ( !fileRasterFilters.isEmpty() ) mRasterFileFilters += fileRasterFilters; QgsDebugMsg( QString( "Checking %1: ...loaded OK (%2 file filters)" ).arg( myLib.fileName() ).arg( fileRasterFilters.split( ";;" ).count() ) ); } } } // QgsProviderRegistry ctor