23 #include <QStringList>
34 while ( i < uri.length() )
47 while ( i < uri.length() && uri[i] !=
'=' && !uri[i].isSpace() )
50 QString pname = uri.mid( start, i - start );
73 if ( pname ==
"table" )
94 while ( i < uri.length() && uri[i] !=
')' )
97 if ( i == uri.length() )
111 else if ( pname ==
"key" )
115 else if ( pname ==
"estimatedmetadata" )
119 else if ( pname ==
"service" )
123 else if ( pname ==
"user" )
127 else if ( pname ==
"password" )
131 else if ( pname ==
"connect_timeout" )
135 else if ( pname ==
"dbname" )
139 else if ( pname ==
"host" )
143 else if ( pname ==
"hostaddr" )
147 else if ( pname ==
"port" )
151 else if ( pname ==
"tty" )
155 else if ( pname ==
"options" )
159 else if ( pname ==
"sslmode" )
161 if ( pval ==
"disable" )
163 else if ( pval ==
"allow" )
165 else if ( pval ==
"prefer" )
167 else if ( pval ==
"require" )
170 else if ( pname ==
"requiressl" )
177 else if ( pname ==
"krbsrvname" )
181 else if ( pname ==
"gsslib" )
187 QgsDebugMsg(
"invalid connection option \"" + pname +
"\" ignored" );
196 regexp.setMinimal(
true );
197 QString safeName( aUri );
198 if ( aUri.contains(
" password=" ) )
200 regexp.setPattern(
" password=.* " );
201 safeName.replace( regexp,
" " );
203 else if ( aUri.contains(
",password=" ) )
205 regexp.setPattern(
",password=.*," );
206 safeName.replace( regexp,
"," );
208 else if ( aUri.contains(
"IDB:" ) )
210 regexp.setPattern(
" pass=.* " );
211 safeName.replace( regexp,
" " );
213 else if (( aUri.contains(
"OCI:" ) )
214 || ( aUri.contains(
"ODBC:" ) ) )
216 regexp.setPattern(
"/.*@" );
217 safeName.replace( regexp,
"/@" );
219 else if ( aUri.contains(
"SDE:" ) )
221 QStringList strlist = aUri.split(
"," );
222 safeName = strlist[0] +
"," + strlist[1] +
"," + strlist[2] +
"," + strlist[3];
325 QString val = theVal;
327 val.replace(
"\\",
"\\\\" );
328 val.replace( delim, QString(
"\\%1" ).arg( delim ) );
336 while ( i < uri.length() && uri[i].isSpace() )
346 if ( uri[i] ==
'\'' || uri[i] ==
'"' )
348 QChar delim = uri[i];
355 if ( i == uri.length() )
357 QgsDebugMsg(
"unterminated quoted string in connection info string" );
361 if ( uri[i] ==
'\\' )
364 if ( i == uri.length() )
366 if ( uri[i] != delim && uri[i] !=
'\\' )
369 else if ( uri[i] == delim )
381 while ( i < uri.length() )
383 if ( uri[i].isSpace() )
389 if ( uri[i] ==
'\\' )
392 if ( i == uri.length() )
394 if ( uri[i] !=
'\\' && uri[i] !=
'\'' )
409 QStringList connectionItems;
420 else if (
mHost !=
"" )
422 connectionItems <<
"host=" +
mHost;
424 connectionItems <<
"port=" +
mPort;
438 connectionItems <<
"sslmode=disable";
440 connectionItems <<
"sslmode=allow";
442 connectionItems <<
"sslmode=require";
445 connectionItems <<
"sslmode=prefer";
448 return connectionItems.join(
" " );
462 theUri += QString(
" estimatedmetadata=true" );
465 theUri += QString(
" table=%1%2 sql=%3" )
476 return QString(
"\"%1\".\"%2\"" )
480 return QString(
"\"%1\"" )
486 const QString &database,
487 const QString &username,
488 const QString &password,
500 const QString &database,
501 const QString &username,
502 const QString &password,
513 const QString &table,
514 const QString &geometryColumn,
516 const QString &keyColumn )