summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/dlg/DriverSettings.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/ui/dlg/DriverSettings.cxx')
-rw-r--r--dbaccess/source/ui/dlg/DriverSettings.cxx101
1 files changed, 33 insertions, 68 deletions
diff --git a/dbaccess/source/ui/dlg/DriverSettings.cxx b/dbaccess/source/ui/dlg/DriverSettings.cxx
index 15c40b3e40c5..4c66109d50e2 100644
--- a/dbaccess/source/ui/dlg/DriverSettings.cxx
+++ b/dbaccess/source/ui/dlg/DriverSettings.cxx
@@ -34,14 +34,15 @@
#include "DriverSettings.hxx"
#include "dsitems.hxx"
#include "datasourceui.hxx"
-
+#include <connectivity/DriversConfig.hxx>
using namespace dbaui;
-void ODriversSettings::getSupportedIndirectSettings( ::dbaccess::DATASOURCE_TYPE _eType, ::std::vector< sal_Int32>& _out_rDetailsIds )
+void ODriversSettings::getSupportedIndirectSettings( const ::rtl::OUString& _sURLPrefix,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xFactory, ::std::vector< sal_Int32>& _out_rDetailsIds )
{
// for a number of settings, we do not need to use hard-coded here, but can ask a
// central DataSourceUI instance.
- DataSourceUI aDSUI( _eType );
+ DataSourceMetaData aMeta(_sURLPrefix);
+ DataSourceUI aDSUI( aMeta );
const USHORT nGenericKnownSettings[] =
{
DSID_SQL92CHECK,
@@ -67,71 +68,35 @@ void ODriversSettings::getSupportedIndirectSettings( ::dbaccess::DATASOURCE_TYPE
_out_rDetailsIds.push_back( *pGenericKnowSetting );
// the rest is hard-coded. On the long run, all of this should be done via DataSourceUI::hasSetting
- switch ( _eType )
+ ::connectivity::DriversConfig aDriverConfig(_xFactory);
+ const ::comphelper::NamedValueCollection& aProperties = aDriverConfig.getProperties(_sURLPrefix);
+ typedef ::std::pair<USHORT, ::rtl::OUString> TProperties;
+ TProperties aProps[] = { TProperties(DSID_SHOWDELETEDROWS,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowDeleted")))
+ ,TProperties(DSID_CHARSET,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CharSet")))
+ ,TProperties(DSID_FIELDDELIMITER,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FieldDelimiter")))
+ ,TProperties(DSID_TEXTDELIMITER,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StringDelimiter")))
+ ,TProperties(DSID_DECIMALDELIMITER,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DecimalDelimiter")))
+ ,TProperties(DSID_THOUSANDSDELIMITER,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ThousandDelimiter")))
+ ,TProperties(DSID_TEXTFILEEXTENSION,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Extension")))
+ ,TProperties(DSID_TEXTFILEHEADER,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("HeaderLine")))
+ ,TProperties(DSID_ADDITIONALOPTIONS,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SystemDriverSettings")))
+ ,TProperties(DSID_CONN_SHUTSERVICE,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShutdownDatabase")))
+ ,TProperties(DSID_CONN_DATAINC,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataCacheSizeIncrement")))
+ ,TProperties(DSID_CONN_CACHESIZE,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataCacheSize")))
+ ,TProperties(DSID_CONN_CTRLUSER,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ControlUser")))
+ ,TProperties(DSID_CONN_CTRLPWD,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ControlPassword")))
+ ,TProperties(DSID_USECATALOG,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UseCatalog")))
+ ,TProperties(DSID_CONN_SOCKET,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("LocalSocket")))
+ ,TProperties(DSID_JDBCDRIVERCLASS,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("JavaDriverClass")))
+ ,TProperties(DSID_CONN_LDAP_BASEDN,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BaseDN")))
+ ,TProperties(DSID_CONN_LDAP_ROWCOUNT,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MaxRowCount")))
+ ,TProperties(DSID_CONN_LDAP_USESSL,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UseSSL")))
+ ,TProperties(DSID_IGNORECURRENCY,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IgnoreCurrency")))
+ ,TProperties(0,::rtl::OUString())
+ };
+ for ( TProperties* pProps = aProps; pProps->first; ++pProps )
{
- case ::dbaccess::DST_DBASE:
- _out_rDetailsIds.push_back(DSID_SHOWDELETEDROWS);
- _out_rDetailsIds.push_back(DSID_CHARSET);
- break;
-
- case ::dbaccess::DST_FLAT:
- _out_rDetailsIds.push_back(DSID_FIELDDELIMITER);
- _out_rDetailsIds.push_back(DSID_TEXTDELIMITER);
- _out_rDetailsIds.push_back(DSID_DECIMALDELIMITER);
- _out_rDetailsIds.push_back(DSID_THOUSANDSDELIMITER);
- _out_rDetailsIds.push_back(DSID_TEXTFILEEXTENSION);
- _out_rDetailsIds.push_back(DSID_TEXTFILEHEADER);
- _out_rDetailsIds.push_back(DSID_CHARSET);
- break;
-
- case ::dbaccess::DST_ADABAS:
- _out_rDetailsIds.push_back(DSID_CHARSET);
- _out_rDetailsIds.push_back(DSID_CONN_SHUTSERVICE);
- _out_rDetailsIds.push_back(DSID_CONN_DATAINC);
- _out_rDetailsIds.push_back(DSID_CONN_CACHESIZE);
- _out_rDetailsIds.push_back(DSID_CONN_CTRLUSER);
- _out_rDetailsIds.push_back(DSID_CONN_CTRLPWD);
- break;
-
- case ::dbaccess::DST_ADO:
- _out_rDetailsIds.push_back(DSID_CHARSET);
- break;
-
- case ::dbaccess::DST_ODBC:
- _out_rDetailsIds.push_back(DSID_ADDITIONALOPTIONS);
- _out_rDetailsIds.push_back(DSID_CHARSET);
- _out_rDetailsIds.push_back(DSID_USECATALOG);
- break;
-
- case ::dbaccess::DST_MYSQL_NATIVE:
- _out_rDetailsIds.push_back(DSID_CHARSET);
- _out_rDetailsIds.push_back(DSID_CONN_SOCKET);
- break;
- case ::dbaccess::DST_MYSQL_JDBC:
- _out_rDetailsIds.push_back(DSID_CHARSET);
- _out_rDetailsIds.push_back(DSID_JDBCDRIVERCLASS);
- break;
-
- case ::dbaccess::DST_MYSQL_ODBC:
- _out_rDetailsIds.push_back(DSID_CHARSET);
- break;
-
- case ::dbaccess::DST_LDAP:
- _out_rDetailsIds.push_back(DSID_CONN_LDAP_BASEDN);
- _out_rDetailsIds.push_back(DSID_CONN_LDAP_ROWCOUNT);
- _out_rDetailsIds.push_back(DSID_CONN_LDAP_USESSL);
- break;
-
- case ::dbaccess::DST_JDBC:
- _out_rDetailsIds.push_back(DSID_JDBCDRIVERCLASS);
- break;
-
- case ::dbaccess::DST_ORACLE_JDBC:
- _out_rDetailsIds.push_back(DSID_JDBCDRIVERCLASS);
- _out_rDetailsIds.push_back(DSID_IGNORECURRENCY);
- break;
-
- default:
- break;
+ if ( aProperties.has(pProps->second) )
+ _out_rDetailsIds.push_back(pProps->first);
}
}