2004-08-02 09:40:50 -05:00
/*************************************************************************
*
2008-04-10 08:32:33 -05:00
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER .
2004-08-02 09:40:50 -05:00
*
2010-02-12 08:01:35 -06:00
* Copyright 2000 , 2010 Oracle and / or its affiliates .
2004-08-02 09:40:50 -05:00
*
2008-04-10 08:32:33 -05:00
* OpenOffice . org - a multi - platform office productivity suite
2004-08-02 09:40:50 -05:00
*
2008-04-10 08:32:33 -05:00
* This file is part of OpenOffice . org .
2004-08-02 09:40:50 -05:00
*
2008-04-10 08:32:33 -05:00
* OpenOffice . org is free software : you can redistribute it and / or modify
* it under the terms of the GNU Lesser General Public License version 3
* only , as published by the Free Software Foundation .
2004-08-02 09:40:50 -05:00
*
2008-04-10 08:32:33 -05:00
* OpenOffice . org is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU Lesser General Public License version 3 for more details
* ( a copy is included in the LICENSE file that accompanied this code ) .
2004-08-02 09:40:50 -05:00
*
2008-04-10 08:32:33 -05:00
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice . org . If not , see
* < http : //www.openoffice.org/license.html>
* for a copy of the LGPLv3 License .
2004-08-02 09:40:50 -05:00
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2006-09-17 01:05:30 -05:00
// MARKER(update_precomp.py): autogen include statement, do not remove
# include "precompiled_dbaccess.hxx"
2004-08-02 09:40:50 -05:00
# include "DbAdminImpl.hxx"
2007-11-01 09:06:03 -05:00
# include "dsmeta.hxx"
2009-10-15 17:05:16 -05:00
# include <svl/poolitem.hxx>
# include <svl/itempool.hxx>
# include <svl/stritem.hxx>
# include <svl/intitem.hxx>
# include <svl/eitem.hxx>
2004-08-02 09:40:50 -05:00
# include "DriverSettings.hxx"
# include "IItemSetHelper.hxx"
2009-10-16 07:16:52 -05:00
# include "UITools.hxx"
2004-08-02 09:40:50 -05:00
# include "dbu_dlg.hrc"
# include "dbustrings.hrc"
2009-10-16 07:16:52 -05:00
# include "dsitems.hxx"
# include "dsnItem.hxx"
2007-07-06 02:11:06 -05:00
# include "moduledbu.hxx"
2009-10-16 07:16:52 -05:00
# include "optionalboolitem.hxx"
# include "propertysetitem.hxx"
# include "stringlistitem.hxx"
2010-03-16 04:59:46 -05:00
# include "OAuthenticationContinuation.hxx"
2009-10-16 07:16:52 -05:00
/** === begin UNO includes === **/
# include <com/sun/star/beans/PropertyAttribute.hpp>
2004-08-02 09:40:50 -05:00
# include <com/sun/star/frame/XStorable.hpp>
2009-10-16 07:16:52 -05:00
# include <com/sun/star/sdb/SQLContext.hpp>
# include <com/sun/star/sdbc/XDriver.hpp>
# include <com/sun/star/sdbc/XDriverAccess.hpp>
2010-03-16 04:59:46 -05:00
# include <com/sun/star/task/XInteractionHandler.hpp>
# include <com/sun/star/task/XInteractionRequest.hpp>
# include <com/sun/star/ucb/XInteractionSupplyAuthentication2.hpp>
# include <com/sun/star/ucb/AuthenticationRequest.hpp>
2009-10-16 07:16:52 -05:00
/** === end UNO includes === **/
2010-03-16 04:59:46 -05:00
# include <comphelper/interaction.hxx>
2009-10-16 07:16:52 -05:00
# include <comphelper/property.hxx>
# include <comphelper/sequence.hxx>
2010-03-16 04:59:46 -05:00
# include <comphelper/guarding.hxx>
2009-10-16 07:16:52 -05:00
# include <connectivity/DriversConfig.hxx>
# include <connectivity/dbexception.hxx>
# include <osl/file.hxx>
2010-01-15 02:16:51 -06:00
# include <svl/eitem.hxx>
# include <svl/intitem.hxx>
# include <svl/itempool.hxx>
# include <svl/poolitem.hxx>
# include <svl/stritem.hxx>
2010-03-16 04:59:46 -05:00
# include <tools/urlobj.hxx>
# include <tools/diagnose_ex.h>
2009-10-16 07:16:52 -05:00
# include <typelib/typedescription.hxx>
2010-03-16 04:59:46 -05:00
# include <vcl/svapp.hxx>
2009-10-16 07:16:52 -05:00
# include <vcl/msgbox.hxx>
# include <vcl/stdtext.hxx>
# include <vcl/waitobj.hxx>
2010-03-16 04:59:46 -05:00
# include <vos/mutex.hxx>
2004-08-02 09:40:50 -05:00
# include <algorithm>
# include <functional>
//.........................................................................
namespace dbaui
{
//.........................................................................
using namespace : : dbtools ;
using namespace com : : sun : : star : : uno ;
2008-01-30 01:43:26 -06:00
using namespace com : : sun : : star ;
2010-03-16 04:59:46 -05:00
using namespace com : : sun : : star : : ucb ;
using namespace com : : sun : : star : : task ;
2004-08-02 09:40:50 -05:00
using namespace com : : sun : : star : : sdbc ;
using namespace com : : sun : : star : : sdb ;
using namespace com : : sun : : star : : lang ;
using namespace com : : sun : : star : : beans ;
using namespace com : : sun : : star : : util ;
using namespace com : : sun : : star : : container ;
using namespace com : : sun : : star : : frame ;
//-------------------------------------------------------------------------
namespace
{
sal_Bool implCheckItemType ( SfxItemSet & _rSet , const USHORT _nId , const TypeId _nExpectedItemType )
{
sal_Bool bCorrectType = sal_False ;
SfxItemPool * pPool = _rSet . GetPool ( ) ;
DBG_ASSERT ( pPool , " implCheckItemType: invalid item pool! " ) ;
if ( pPool )
{
const SfxPoolItem & rDefItem = pPool - > GetDefaultItem ( _nId ) ;
bCorrectType = rDefItem . IsA ( _nExpectedItemType ) ;
}
return bCorrectType ;
}
void lcl_putProperty ( const Reference < XPropertySet > & _rxSet , const : : rtl : : OUString & _rName , const Any & _rValue )
{
try
{
if ( _rxSet . is ( ) )
_rxSet - > setPropertyValue ( _rName , _rValue ) ;
}
catch ( Exception & )
{
# ifdef DBG_UTIL
: : rtl : : OString sMessage ( " ODbAdminDialog::implTranslateProperty: could not set the property " ) ;
sMessage + = : : rtl : : OString ( _rName . getStr ( ) , _rName . getLength ( ) , RTL_TEXTENCODING_ASCII_US ) ;
sMessage + = : : rtl : : OString ( " ! " ) ;
DBG_ERROR ( sMessage . getStr ( ) ) ;
# endif
}
}
String lcl_createHostWithPort ( const SfxStringItem * _pHostName , const SfxInt32Item * _pPortNumber )
{
String sNewUrl ;
if ( _pHostName & & _pHostName - > GetValue ( ) . Len ( ) )
sNewUrl = _pHostName - > GetValue ( ) ;
if ( _pPortNumber )
{
sNewUrl + = String : : CreateFromAscii ( " : " ) ;
sNewUrl + = String : : CreateFromInt32 ( _pPortNumber - > GetValue ( ) ) ;
}
return sNewUrl ;
}
}
//========================================================================
//= ODbDataSourceAdministrationHelper
//========================================================================
ODbDataSourceAdministrationHelper : : ODbDataSourceAdministrationHelper ( const Reference < XMultiServiceFactory > & _xORB , Window * _pParent , IItemSetHelper * _pItemSetHelper )
: m_xORB ( _xORB )
, m_pParent ( _pParent )
2006-06-19 21:03:42 -05:00
, m_pItemSetHelper ( _pItemSetHelper )
2004-08-02 09:40:50 -05:00
{
/// initialize the property translation map
// direct properties of a data source
m_aDirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONNECTURL , PROPERTY_URL ) ) ;
m_aDirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_NAME , PROPERTY_NAME ) ) ;
m_aDirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_USER , PROPERTY_USER ) ) ;
m_aDirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_PASSWORD , PROPERTY_PASSWORD ) ) ;
m_aDirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_PASSWORDREQUIRED , PROPERTY_ISPASSWORDREQUIRED ) ) ;
m_aDirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_TABLEFILTER , PROPERTY_TABLEFILTER ) ) ;
m_aDirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_READONLY , PROPERTY_ISREADONLY ) ) ;
m_aDirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_SUPPRESSVERSIONCL , PROPERTY_SUPPRESSVERSIONCL ) ) ;
// implicit properties, to be found in the direct property "Info"
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_JDBCDRIVERCLASS , INFO_JDBCDRIVERCLASS ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_TEXTFILEEXTENSION , INFO_TEXTFILEEXTENSION ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CHARSET , INFO_CHARSET ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_TEXTFILEHEADER , INFO_TEXTFILEHEADER ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_FIELDDELIMITER , INFO_FIELDDELIMITER ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_TEXTDELIMITER , INFO_TEXTDELIMITER ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_DECIMALDELIMITER , INFO_DECIMALDELIMITER ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_THOUSANDSDELIMITER , INFO_THOUSANDSDELIMITER ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_SHOWDELETEDROWS , INFO_SHOWDELETEDROWS ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_ALLOWLONGTABLENAMES , INFO_ALLOWLONGTABLENAMES ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_ADDITIONALOPTIONS , INFO_ADDITIONALOPTIONS ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_SQL92CHECK , PROPERTY_ENABLESQL92CHECK ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_AUTOINCREMENTVALUE , PROPERTY_AUTOINCREMENTCREATION ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_AUTORETRIEVEVALUE , INFO_AUTORETRIEVEVALUE ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_AUTORETRIEVEENABLED , INFO_AUTORETRIEVEENABLED ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_APPEND_TABLE_ALIAS , INFO_APPEND_TABLE_ALIAS ) ) ;
2006-12-13 09:48:20 -06:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_AS_BEFORE_CORRNAME , INFO_AS_BEFORE_CORRELATION_NAME ) ) ;
2007-11-01 09:06:03 -05:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CHECK_REQUIRED_FIELDS , INFO_FORMS_CHECK_REQUIRED_FIELDS ) ) ;
CWS-TOOLING: integrate CWS dba32a
2009-04-16 13:08:19 +0200 oj r270882 : #i14538# set property at control
2009-04-16 13:04:28 +0200 oj r270881 : #i98557# remove binary string for SRB
2009-04-15 13:19:10 +0200 oj r270838 : #i96782# use type set at view
2009-04-14 14:53:20 +0200 oj r270778 : #i96782# set initialize size for custom shape
2009-04-06 14:19:14 +0200 oj r270546 : #i88432# correct pos when < 0 while resizing
2009-04-06 13:36:13 +0200 oj r270541 : #i96782# handle toolbar and menubar differently
2009-04-06 13:33:54 +0200 oj r270540 : #i96782# handle toolbar and menubar differently
2009-04-06 12:28:23 +0200 oj r270534 : #i96782# handle toolbar and menubar differently
2009-04-06 12:27:44 +0200 oj r270533 : #i96782# handle toolbar and menubar differently
2009-04-06 12:24:32 +0200 oj r270532 : #i96782# handle toolbar and menubar differently
2009-04-06 12:15:15 +0200 oj r270531 : do not initialze when field is empty
2009-04-06 10:06:08 +0200 oj r270528 : #i96782# clean up of menubar and remove duplicates
2009-04-06 09:47:49 +0200 oj r270527 : #i96519# adjust help text dynamic
2009-04-03 13:43:20 +0200 oj r270482 : do not need to remove section from observer they are already disposed
2009-04-03 13:27:28 +0200 fs r270479 : #i97356#
2009-04-02 11:30:39 +0200 fs r270386 : UNX line ends
2009-04-02 10:54:51 +0200 fs r270379 : UNX line ends
2009-04-02 10:39:57 +0200 fs r270378 : UNX line ends
2009-04-02 10:37:24 +0200 fs r270377 : why did this survive the rebase? was removed on trunk ...
2009-03-31 13:31:12 +0200 fs r270277 : component_foo should be public
2009-03-28 00:21:01 +0100 fs r270176 : manuallly merged the changes which happened in CWS before resync to m45, where the directory had been moved from reportdesign/registry to reportbuilder/registry
2009-03-27 23:01:20 +0100 fs r270174 : CWS-TOOLING: rebase CWS dba32a to trunk@270033 (milestone: DEV300:m45)
2009-03-11 12:23:35 +0100 fs r269310 : #i99958# ensure the ControlModelLock doesn't release twice
2009-03-06 09:07:32 +0100 fs r268970 : ignore output paths in SVN's status
2009-03-06 09:07:08 +0100 fs r268969 : ignore output paths in SVN's status
2009-03-04 11:28:02 +0100 oj r268800 : copy and paste error, check correct end now
2009-03-03 15:49:11 +0100 fs r268736 : #i10000# those merges were lost during the rebase (m38->m42)
2009-03-03 13:25:27 +0100 lla r268720 : #i99652# fix wrong refactoring
2009-02-27 11:12:56 +0100 fs r268566 : beautified
2009-02-27 10:53:47 +0100 fs r268561 : doFormListening(false) only when actually isFormListening() (found during complex test case XMLFormSettings with assertions)
2009-02-26 20:55:31 +0100 fs r268546 : #i96530# set the Label property of the bound control, if we didn't create a dedicated label control
2009-02-26 11:53:09 +0100 fs r268494 : #i10000#
2009-02-26 11:27:50 +0100 fs r268493 : #i10000#
2009-02-26 11:17:08 +0100 fs r268490 : reportdesign depends on REPORTBUILDER, not REPORTDESIGN
2009-02-25 11:39:48 +0100 fs r268422 : #i10000# post-resync: INFO_ESCAPE_DATETIME got lost during rebase
2009-02-24 23:24:10 +0100 fs r268411 : CWS-TOOLING: rebase CWS dba32a to trunk@268395 (milestone: DEV300:m42)
2009-02-20 15:09:48 +0100 fs r268324 : respect ImplicitCatalog/SchemaRestriction in all necessary places
2009-02-20 13:48:10 +0100 oj r268318 : order of initialize corrected
2009-02-14 15:07:52 +0100 fs r267759 : #i98975# when an image does not have a bitmap, but a text, draw this (as placeholder)
2009-02-14 15:02:40 +0100 fs r267758 : consolidated and removed some duplicate code
2009-02-14 13:52:23 +0100 fs r267756 : #i10000#
2009-02-13 22:08:34 +0100 fs r267750 : #i100000#
2009-02-13 22:07:25 +0100 fs r267749 : #i10000#
2009-02-13 21:55:36 +0100 fs r267747 : #i10000#
2009-02-13 21:54:27 +0100 fs r267746 : use const_cast
2009-02-13 21:29:10 +0100 fs r267745 : #i10000#
2009-02-13 21:27:39 +0100 fs r267744 : #i10000#
2009-02-13 20:59:13 +0100 fs r267742 : #i10000#
2009-02-13 13:21:30 +0100 fs r267717 : better diagnostics
2009-02-13 13:17:24 +0100 fs r267715 : #i58313# support Catalog/SchemaRestriction settings, which are applied in getTables when 'all catalogs/schemas' are to be retrieved
2009-02-13 13:16:14 +0100 fs r267714 : filter out some more known global settings
2009-02-13 12:39:43 +0100 fs r267713 : #i58313# ImplicitCatalog/SchemaRestriction
2009-02-13 12:36:50 +0100 fs r267712 : when exporting data source settings, allow for properties which have a VOID default value, but are currently not VOID
2009-02-13 12:35:57 +0100 fs r267711 : implement XSet, to allow inserting properties which have a default value of VOID
2009-02-13 12:35:03 +0100 fs r267710 : +addVoidProperty
2009-02-13 10:20:08 +0100 fs r267697 : removed unused variable
2009-02-13 09:46:46 +0100 fs r267695 : refactored the table filtering code, to have a better base for introducing additional low level filters
2009-02-10 09:23:07 +0100 lla r267537 : #i10000# wrong line feed, double named variable
2009-02-09 12:13:08 +0100 oj r267508 : #i98605# notify hanlder
2009-02-09 11:50:34 +0100 oj r267507 : #i98926# solve refcount problem
2009-02-09 11:50:05 +0100 oj r267506 : #i98971# fix for simple html
2009-02-09 11:49:24 +0100 oj r267505 : #i98971# fix for simple html
2009-02-09 11:47:27 +0100 oj r267504 : invoke on copy
2009-02-09 09:51:00 +0100 fs r267500 : #i98316#
2009-02-09 09:46:10 +0100 fs r267499 : setCurrentSelection: don't reset the current form when we de-select everything
2009-02-09 09:43:45 +0100 fs r267498 : #i98316#
2009-02-08 21:25:18 +0100 fs r267496 : #i98272# introduce late ctor for cloning
2009-02-07 21:08:39 +0100 fs r267485 : #i98272# when copy-constructing a FmFormPageImpl, use the XCloneable of the forms collection, instead of XPersistObject (which is incompletely implemented)
2009-02-07 21:07:26 +0100 fs r267484 : removed obsolete include guards
2009-02-07 21:05:22 +0100 fs r267483 : #i98272# implement XCloneable
2009-02-06 15:02:48 +0100 lla r267467 : #i96523# add XImageControl
2009-02-06 14:41:38 +0100 oj r267463 : #i98926# late init when connection disposed but only when asked for
2009-02-06 13:49:57 +0100 lla r267457 : #i92860# bigint in forms doesn't allow input of values > 1, fixed
2009-02-06 13:03:55 +0100 oj r267455 : ImageScaleMode
2009-02-05 14:48:19 +0100 lla r267424 : #i89335# dropdown listboxes are 14 instead of 7 lines high
2009-02-05 13:40:00 +0100 oj r267423 : #i96945# insert new prop Opaque
2009-02-05 13:39:19 +0100 oj r267422 : #i96945# insert layer handling for hell and heaven
2009-02-05 13:29:32 +0100 lla r267420 : #i89335# add is null, is not null, is not like filter condition
2009-02-04 12:23:02 +0100 oj r267364 : #i98821# load table font settings
2009-02-04 10:05:27 +0100 oj r267351 : #i98821# load table font settings
2009-02-04 09:23:22 +0100 fs r267350 : checking persistency of UI settings in database documents - for the moment, capture table formattings (which is issue 98821)
2009-02-04 09:22:15 +0100 fs r267349 : moved some methods which are of wider interest from DatabaseDocument to FileHelper resp. TestCase
2009-02-04 08:56:27 +0100 oj r267347 : #i97586# UcbStreamHelper::CreateStream doesn't check all streamModes use different method
2009-02-04 08:23:26 +0100 oj r267346 : #i98701# check key size is >= 3 and some redesign
2009-02-03 23:29:24 +0100 fs r267345 : return the component (controller), not the frame
2009-02-03 23:28:53 +0100 fs r267344 : openExisting returns a controller now, not the frame (this was a bug)
2009-02-03 23:28:25 +0100 fs r267343 : openElement: properly return the component in the table/query case
2009-02-02 12:48:17 +0100 oj r267261 : #i96013# fix for relative path
2009-02-02 10:33:28 +0100 lla r267253 : #i98557# cleanups and consolidation
2009-02-02 09:37:23 +0100 lla r267250 : #i88432# resize will no longer move components to other sections
2009-02-02 09:08:24 +0100 oj r267245 : #i97475# write 0x1A at the end of the file
2009-01-30 19:39:20 +0100 lla r267230 : #i10000# unused parameters
2009-01-30 09:51:09 +0100 fs r267181 : onsolete
2009-01-30 09:49:27 +0100 fs r267180 : onsolete
2009-01-29 14:28:22 +0100 oj r267139 : #i96825# import cell style
2009-01-29 14:23:12 +0100 oj r267137 : #i98601# export imagescalehandler
2009-01-29 14:19:57 +0100 lla r267135 : #i98601# add ImageScaleMode
2009-01-29 13:21:08 +0100 oj r267124 : #i98601# impl ScaleMode
2009-01-29 13:20:56 +0100 oj r267123 : #i98601# impl ScaleMode
2009-01-29 08:46:40 +0100 oj r267095 : new property: ScaleMode
2009-01-29 08:45:23 +0100 oj r267094 : new ScaleMode from UnControlImageModel
2009-01-29 08:28:12 +0100 oj r267093 : #i87930# close all sub forms/reports when the desktop is going to be terminated and no db frame exists
2009-01-28 19:54:34 +0100 lla r267082 : #i98557# pictures in report wizard
2009-01-28 15:06:25 +0100 oj r267060 : #i87930# close all sub forms/reports when the desktop is going to be terminated and no db frame exists
2009-01-28 11:38:41 +0100 lla r267046 : #i76783# handle binary fields in forms
2009-01-28 09:24:43 +0100 lla r267025 : #i10000#
2009-01-28 08:40:04 +0100 fs r267024 : #i10000#
2009-01-28 08:04:43 +0100 oj r267023 : #i93456# use resource strings for function names
2009-01-27 13:26:05 +0100 oj r266988 : check data field is type field or expression
2009-01-27 13:07:17 +0100 oj r266985 : check data field length
2009-01-27 11:48:19 +0100 oj r266974 : #i96823# return dll string as column name when no alias exists
2009-01-27 09:53:11 +0100 fs r266958 : display the message of a caught exception
2009-01-27 09:44:13 +0100 fs r266957 : #i58313# when retrieving all tables, just set an empty table type filter - the connection will care for translating this, by respecting the TableTypeFilterMode setting
2009-01-27 09:36:09 +0100 fs r266956 : #i58313# getTables: per JDBC spec, is not a valid table type filter. Translate it to 'null'.
2009-01-26 11:24:49 +0100 lla r266912 : #i97865# cleanups (AddField viewable in remote mode)
2009-01-26 07:49:27 +0100 lla r266897 : #i97865# AddField opens in remote case
2009-01-26 07:48:58 +0100 lla r266896 : #i97865# AddField opens in remote case
2009-01-26 07:48:42 +0100 lla r266895 : #i97865# AddField opens in remote case
2009-01-23 15:04:40 +0100 fs r266825 : consolidate the usage of OSQLMessageBox with MessageType==Warning into OSQLWarningBox
2009-01-23 10:47:33 +0100 fs r266787 : +supportsUserAdministration
2009-01-23 10:47:11 +0100 fs r266784 : use DatabaseMetaData.supportsUserAdministration
2009-01-23 07:55:59 +0100 lla r266767 : #i10000# fix gcc compiler failures
2009-01-21 15:08:55 +0100 lla r266673 : #i97265# Labels in HC (IsDark) with other color (viewable)
2009-01-19 14:58:54 +0100 lla r266504 : #i96523# last problems with FormatKey and '0' values fixed
2009-01-19 14:58:00 +0100 lla r266503 : #i96519# AddField help text
2009-01-19 11:59:02 +0100 fs r266485 : #i96523# for formatted field models, init them with TreatAsNumber = false
2009-01-16 10:31:49 +0100 lla r266405 : #i96793# add shrink to popup menu
2009-01-16 09:21:44 +0100 lla r266401 : #i96519# AddField contains a help text
2009-01-15 11:21:49 +0100 lla r266357 : #i96523# problem with XVclWindowPeer not fixed now
2009-01-15 09:19:20 +0100 lla r266335 : #i96523# more crashes fixed.
2009-01-14 13:08:34 +0100 lla r266291 : #i96523# problems with crashes fixed
2009-01-13 10:54:24 +0100 lla r266199 : #i96523# show datasource in formattedfields new files
2009-01-13 10:52:39 +0100 lla r266198 : #i96523# show datasource in formattedfields
2009-01-13 09:41:50 +0100 lla r266197 : #i96526# handling none existance default.otr
2009-01-12 12:55:49 +0100 fs r266151 : don't expect the control model to be a BoundComponent before adding as modify listener
2009-01-12 12:51:33 +0100 fs r266149 : #i88458# let the ImageControl be an XModifyBroadcaster, so the forms runtime can notice when the user changes the control content while it does not have the focus
2009-01-09 13:41:22 +0100 fs r266080 : doc
2009-01-09 13:14:14 +0100 fs r266077 : #i97377# SetModified when order is changed via DnD
2009-01-07 09:55:40 +0100 oj r265951 : merge from master
2009-01-07 09:55:24 +0100 oj r265950 : removed observer
2009-01-07 09:55:06 +0100 oj r265949 : merge from master
2009-01-07 07:29:11 +0100 oj r265945 : shadow var changed
2009-01-06 07:25:57 +0100 oj r265893 : CWS-TOOLING: rebase CWS dba32a to trunk@265758 (milestone: DEV300:m38)
2009-01-05 13:18:22 +0100 oj r265865 : convert to unix le
2009-01-05 09:13:52 +0100 lla r265857 : #i79423# lc_ sc_ permutation fix
2009-01-02 19:40:59 +0100 lla r265847 : #i79423# section shrink icons
2008-12-22 11:37:57 +0100 lla r265749 : #i97484# move component to negative Y-position
2008-12-22 11:37:05 +0100 lla r265748 : #i97484# move component to negative Y-position
2008-12-22 11:35:33 +0100 lla r265747 : #i97484# move component to negative Y-position
2008-12-22 11:25:07 +0100 lla r265745 : #i96757# changes via property browser was not undoable
2008-12-18 15:10:38 +0100 fs r265694 : corrected an condition in doFormListening, which otherwise leads to uncommitable grid columns in documents which are loaded from disc (not in documents which are newly created)
2008-12-18 14:54:39 +0100 fs r265692 : Hide Columns text slightly changed
2008-12-18 13:44:15 +0100 fs r265683 : #i94068# properly display erros happening during a form operation - at least once, and at most once
2008-12-18 11:28:29 +0100 fs r265677 : document the new InputRequired property
2008-12-18 11:04:15 +0100 fs r265676 : #i96530# createControlLabelPair: don't actually create a label for a checkbox
2008-12-18 10:35:53 +0100 fs r265674 : #i95226# when a column is replaced, and it's the selected column, update the selection
2008-12-18 10:34:42 +0100 fs r265673 : #i95226# refactoring of the implReplaced method
2008-12-18 10:34:28 +0100 fs r265672 : #i95226# when replacing a grid column, update the property browser
2008-12-18 10:33:17 +0100 fs r265671 : when an element is removed, remove it from m_aCurrentSelection, too (if necessary)
2008-12-18 10:31:57 +0100 fs r265670 : Hide Columns text slightly changed
2008-12-18 10:15:56 +0100 lla r265669 : #i14538# do not allow to press finish button twice
2008-12-18 08:56:33 +0100 lla r265665 : #i10000# build depend=t problem hacked.
2008-12-17 20:59:10 +0100 fs r265656 : #i89821# don't let a MultiLineEdit select all text when it receives the focus
2008-12-17 12:10:54 +0100 fs r265594 : #i97356#
2008-12-17 12:06:29 +0100 fs r265593 : #i97355# Print -> Printable
2008-12-17 11:59:31 +0100 fs r265591 : #i97350# combo boxes comment on list selection (as list boxes already do)
2008-12-16 09:53:57 +0100 lla r265527 : #i96526# handling none existance default.otr
2008-12-15 14:48:39 +0100 lla r265500 : #i79423# reparing, was wrong implemented
2008-12-12 15:08:33 +0100 lla r265424 : #i10000# remove wrong carridge returns
2008-12-12 15:07:55 +0100 lla r265423 : #i10000# remove wrong carridge returns
2008-12-12 15:06:41 +0100 lla r265422 : #i10000# remove wrong carridge returns
2008-12-12 10:23:13 +0100 lla r265395 : #i95234# reset DragDelta
2008-12-12 10:11:02 +0100 lla r265393 : #i79423# pre versions of shrink buttons
2008-12-11 15:32:13 +0100 fs r265318 : prevent a deadlock during complex.dbaccess.DatabaseDocument test
2008-12-11 15:30:06 +0100 fs r265316 : prevent a deadlock during complex.dbaccess.DatabaseDocument test
2008-12-11 15:07:05 +0100 fs r265307 : removed superfluous text
2008-12-11 12:29:54 +0100 lla r265282 : #i96757# cleanup second try
2008-12-11 12:09:15 +0100 lla r265278 : #i96757# cleanup
2008-12-11 12:07:56 +0100 lla r265277 : #i95234#
2008-12-10 14:04:39 +0100 lla r265183 : #i93472# D&D fixes
2008-12-10 12:29:33 +0100 lla r265168 : #i94067# add (APP|SYS)FONT to XUnitConversion
2008-12-10 12:15:02 +0100 lla r265166 : #i94067# add APPFONT, SYSFONT to MeasureUnit
2008-12-10 11:52:10 +0100 lla r265163 : #i94067# add comments
2008-12-06 20:33:05 +0100 fs r264935 : #i10000# precompiled header
2008-12-05 09:29:26 +0100 fs r264889 : #i10000#
2008-12-05 09:07:31 +0100 fs r264888 : #i10000#
2008-12-04 13:25:46 +0100 fs r264838 : CWS-TOOLING: rebase CWS dba32a to trunk@264807 (milestone: DEV300:m37)
2008-12-03 23:49:13 +0100 fs r264808 : merge changes from trunk, to be able to do a rebase
2008-12-03 17:13:09 +0100 lla r264801 : #i91041# update documentation
2008-12-03 16:57:04 +0100 lla r264799 : #i94067# allow convert(Point|Size)ToLogic as pixel also
2008-12-02 12:36:32 +0100 lla r264687 : #i96782# bring toolbar objects to menu structure
2008-12-02 10:32:44 +0100 lla r264667 : #i86255# make property work
2008-12-02 09:22:47 +0100 lla r264659 : #i79423# add section shrink toolbar
2008-12-02 07:41:22 +0100 lla r264657 : #i86255# add check box for Escape DateTime property
2008-12-02 07:37:17 +0100 lla r264656 : #i79423# new shrink buttons
2008-11-26 11:55:28 +0100 fs r264362 : #i96541#
FillPropertySet: do not only catch UnknownPropertyException when setting the Char/ParaAutoStyleName,
but also care for the other exceptions which can be thrown by XPropertySet::setPropertyValue.
This is actually not the real fix for #i96541#, but only a follow-up. The root cause of the issue
was fixed in CWS dba301b, but this here was another (potential) bug which popped up during investigations.
2008-11-25 09:04:40 +0100 lla r264273 : #i82083# new toolbox in GroupsSorting dialog
2008-11-25 08:56:08 +0100 lla r264272 : #i94729# change token strings into string list, move class out of function
2008-11-24 15:52:22 +0100 fs r264251 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:51:45 +0100 fs r264249 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:45:21 +0100 fs r264244 : #i96532# the API default for ParamNameSubst is false
2008-11-24 15:45:04 +0100 fs r264243 : #i96532# do not set AppendTableAlias, NameLengthLimit, etc., if the OXMLDataSourceInstance is used for elements at which those attributes never appear
2008-11-24 15:44:14 +0100 fs r264241 : #i96532# slight refactoring of exporting properties which have a XML default different from the API default
2008-11-24 10:50:01 +0100 lla r264216 : #i82083# icons for new toolbox
2008-11-24 09:38:45 +0100 lla r264205 : #i82083# new toolbox in GroupsSorting dialog
2008-11-24 09:32:20 +0100 lla r264201 : #i96501# cleanup assertions
2008-11-24 09:12:55 +0100 lla r264198 : #i83082# enhancement for toolboxes, better HC comfort
2008-11-24 08:46:43 +0100 lla r264197 : #i96501# fix problem with negative positions
2008-11-21 11:44:47 +0100 fs r264118 : #i57042# introduce a counter for suspending change notifications of a given property, so recursive calls are possible
2008-11-21 11:02:17 +0100 fs r264116 : #i96388# don't call ExecuteContextMenuAction when no action was chosen by the user
2008-11-21 10:36:53 +0100 fs r264114 : #i47384# assertion was wrong
2008-11-14 12:33:15 +0100 fs r263673 : #i47318# XRowSetChangeBroadcaster/Listener, to be able to listen for changes in an XRowSetSupplier's RowSet
2008-11-14 12:30:29 +0100 fs r263672 : #i47318# more refactoring
- BoundControlModels now listen at the XRowSetSupplier for changes in the supplied
RowSet, to properly revoke/register old/new listeners at the RowSet
- replaced ::osl::Mutex in various places with a ControlModelLock
2008-11-14 12:20:55 +0100 fs r263671 : when BUILD_TYPE includes QADEVOOO, the BUILD_QADEVOOO needs to bet set, too
2008-11-14 12:19:21 +0100 fs r263670 : oops, this was not intended to be committed
2008-11-12 11:08:10 +0100 fs r263579 : #i96096# new ctors taking UNO_QUERY_THROW
2008-11-12 09:15:54 +0100 fs r263576 : no need to load the complete dialog just to get a string which the dialog itself loads from resource
2008-11-10 17:55:45 +0100 fs r263535 : spelling in comment
2008-11-10 15:51:14 +0100 fs r263523 : #i47318# various refactorings
1. don't forward syntetic XLoadListener events from the grid control to
the grid columns. Instead, forward GridColumn::XChild::setParent to
the base class, which then can add itself as load listener
2. removed various occurances of XMultiServiceFactory, instead use the
::comphelper::ComponentContext
3. in O(Bound)ControlModel, have a mechanism to lock the instance (using
ControlModelLock) and fire property changes when the last lock dies.
2008-11-10 12:49:24 +0100 oj r263513 : #i94729# change token strings into string list
2008-11-10 12:13:15 +0100 oj r263512 : #i95222# export chart:title style as well
2008-11-10 08:55:25 +0100 oj r263507 : #i93471# show the correct tabpage when selecting a different object
2008-11-07 23:38:29 +0100 fs r263490 : #i95977# for the event input controls, add a component extending their functionality so they're reset when the users presses DEL
2008-11-07 23:35:39 +0100 fs r263489 : during #i95977#: When a VCL Window is deleted from within VCL code, the respective WindowPeer was never disposed. Corrected this.
2008-11-07 14:57:07 +0100 fs r263420 : #i95963# human-readable display names for event bindings
2008-11-06 10:34:52 +0100 fs r263366 : #i95865# don't use library names containing InvalidZipEntryFileNames - workaround until i95409 is fixed
2008-11-06 10:33:28 +0100 fs r263365 : #i95865#
copied the following change from CWS odfmetadata2 (not yet integrated) into CWS dba31d
- comphelper/inc/comphelper/storagehelper.hxx,
comphelper/source/misc/storagehelper.cxx:
+ add function IsValidZipEntryFileName (moved from module package)
2009-04-22 06:01:27 -05:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_ESCAPE_DATETIME , INFO_ESCAPE_DATETIME ) ) ;
2009-10-16 07:16:52 -05:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_PRIMARY_KEY_SUPPORT , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " PrimaryKeySupport " ) ) ) ) ;
2004-08-02 09:40:50 -05:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_PARAMETERNAMESUBST , INFO_PARAMETERNAMESUBST ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_IGNOREDRIVER_PRIV , INFO_IGNOREDRIVER_PRIV ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_BOOLEANCOMPARISON , PROPERTY_BOOLEANCOMPARISONMODE ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_ENABLEOUTERJOIN , PROPERTY_ENABLEOUTERJOIN ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CATALOG , PROPERTY_USECATALOGINSELECT ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_SCHEMA , PROPERTY_USESCHEMAINSELECT ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_INDEXAPPENDIX , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " AddIndexAppendix " ) ) ) ) ;
2004-10-22 06:04:52 -05:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_DOSLINEENDS , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " PreferDosLikeLineEnds " ) ) ) ) ;
2008-06-30 09:11:22 -05:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_SOCKET , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " LocalSocket " ) ) ) ) ;
CWS-TOOLING: integrate CWS dba32g
2009-09-09 07:53:55 +0200 oj r275964 : replace strlen with rtl_str_getLength
2009-09-07 20:59:10 +0200 fs r275913 : disable the CopyTableWizard test until issue 104869 is fixed
2009-09-07 12:17:31 +0200 oj r275885 : #i104810# remove de as lang
2009-09-05 22:26:21 +0200 fs r275857 : protect StateChanged against re-entrance
2009-09-05 22:25:52 +0200 fs r275856 : don't attempt to classify the parent of a form as control
2009-09-05 22:25:29 +0200 fs r275855 : protect against re-entrance
2009-09-05 00:11:40 +0200 fs r275835 : #i10000#
2009-09-04 23:25:50 +0200 fs r275834 : #i10000#
2009-09-04 23:23:47 +0200 fs r275833 : #i10000#
2009-09-04 21:49:37 +0200 fs r275830 : #i10000# correct wrong conflict resolution
2009-09-04 20:59:51 +0200 fs r275829 : CWS-TOOLING: rebase CWS dba32g to trunk@275801 (milestone: DEV300:m57)
2009-09-04 11:08:32 +0200 oj r275791 : #i104780# new version 1.2.0
2009-09-03 22:29:21 +0200 fs r275775 : OSL_TRACE doesn't need \n anymore
2009-09-03 08:33:21 +0200 fs r275743 : CWS-TOOLING: rebase CWS dba32g to trunk@275331 (milestone: DEV300:m56)
2009-09-02 13:48:12 +0200 fs r275708 : removed useless include
2009-09-02 13:45:43 +0200 fs r275707 : more since tags, which are used across offapi/udkapi
2009-09-02 13:23:04 +0200 fs r275705 : should *not* have the dtor, copy ctor, and assignment operator compiler-generated, else we run into trouble as soon as the compiler creates different versions of our singleton member's static data in different libraries
2009-09-02 12:32:45 +0200 fs r275704 : AutoIncrementIsPrimaryKey is a driver setting, not a data source setting
2009-09-02 11:42:49 +0200 fs r275701 : URL meta data are meta data which are valid for all connections of this type, not per-data-source properties. Settings them as data source properties is a hack.
2009-09-02 08:43:34 +0200 fs r275696 : 3.x.x is not a valid 'since' tag
2009-09-01 16:05:24 +0200 fs r275665 : #i104686# don't treat controls bound to read-only columns as required
2009-09-01 13:10:22 +0200 fs r275657 : #i104574# use PageUp/Down to scroll through the complete page
2009-09-01 07:04:48 +0200 oj r275641 : #i104104# correct line ends
2009-08-31 15:52:34 +0200 fs r275612 : #i104410#
2009-08-31 12:29:05 +0200 fs r275596 : #i104364#
2009-08-31 12:28:56 +0200 fs r275595 : #i104364#
2009-08-31 11:43:09 +0200 fs r275593 : #i104649# JavaDriverClassPath is also a known JDBC-bridge setting
2009-08-31 11:41:37 +0200 fs r275592 : #i104649#
2009-08-28 21:48:27 +0200 fs r275552 : during #i96862#: renamed the configuration data which controls availability of certain DBA-related UI
2009-08-28 21:48:17 +0200 fs r275551 : #i96862# do not show the 'Create a new database' option when a) no embedded/dBase driver is installed or b) the configuration requests to hide the option
2009-08-28 21:47:19 +0200 fs r275550 : during #i96862#: renamed the configuration data which controls availability of certain DBA-related UI
2009-08-28 21:46:41 +0200 fs r275549 : #i96862# renamed and extended the configuration data which controls availability of certain DBA-related UI
2009-08-28 15:10:19 +0200 fs r275535 : #i96862# if no embedded driver is installed, use dBase for creating new DBs. If no dBase driver is installed, too, do not offer the 'Create new database' option
2009-08-28 14:03:04 +0200 fs r275532 : #i104454# allow multiple fields to display the same column
2009-08-28 13:14:00 +0200 fs r275528 : #i104584# driver meta data do not belong into a data source's settings
2009-08-28 13:09:57 +0200 fs r275527 : properly chech the MySQL type buttons (else next/back in the wizard leads to state with two buttons checked)
2009-08-28 13:09:17 +0200 fs r275526 : #i104584# driver meta data do not belong into a data source's settings
2009-08-28 13:07:18 +0200 fs r275525 : BooleanComparisonMode is a property, or a feature - but not a driver meta data
2009-08-28 11:00:31 +0200 fs r275521 : #i104580#
2009-08-28 10:40:05 +0200 fs r275519 : #i104577# correct assertion: If the template node type is ANY, then any value type is allowed
2009-08-28 10:09:30 +0200 fs r275518 : #i104575# implement Named Pipe UI
2009-08-28 10:09:07 +0200 fs r275517 : pass the trigger-event to IWindowOperator::operateOn / work with VclWindowEvents, not VclSimpleEvents
2009-08-27 14:27:36 +0200 fs r275484 : ImplPosTabPage: respect mbEmptyViewMargin for WINDOWALIGN_LEFT
2009-08-27 13:43:56 +0200 fs r275480 : merging latest changes from CWS dba32f herein
2009-08-27 13:23:07 +0200 fs r275475 : #i103882#
2009-08-27 11:56:55 +0200 fs r275466 : #i104544# SetState: Do not call Update at the window which we just set text for. It should (sic\!) not be needed, but causes trouble
2009-08-27 11:55:34 +0200 fs r275465 : #i104544#
do not allow re-entrance for impl_ensureControl_nothrow
Actually, this is part of the fix only. I also removed the code which triggered this re-entrance (from
the grid control implementation), but to ensure it won't happen, again, I added some safety herein.
2009-08-27 10:14:11 +0200 fs r275459 : preparations for supporting a 'NamedPipe' parameter for the MySQL Connector/OOo
2009-08-27 10:13:21 +0200 fs r275458 : preparations for supporting a 'NamedPipe' setting for the MySQL Connector/OOo
2009-08-27 10:11:14 +0200 fs r275456 : outsourced the MySQLNative settings into a dedicated class, to not duplicate all the code in two tab page implementations
2009-08-26 14:18:13 +0200 fs r275422 : #i10000#
2009-08-26 13:26:36 +0200 fs r275419 : ignore output paths
2009-08-26 13:23:38 +0200 fs r275417 : support the LocalSocket property for the MySQL native driver
2009-08-26 13:17:05 +0200 fs r275416 : some re-factoring, to outsource the tab page for setting up the MySQLNative connection, into a dedicated class (needed later)
2009-08-26 13:15:15 +0200 fs r275415 : support a NoThousandSep property for NumericFormatters - I'm tired of correcting this at runtime, instead of controlling it in the resource
2009-08-26 11:45:08 +0200 fs r275410 : oops, 'flat' shouldn't have got lost
2009-08-26 09:38:57 +0200 fs r275398 : #i102631# when saving the document fails, ensure that the interaction handler really can handle/display the error
2009-08-26 09:37:05 +0200 fs r275397 : #i102631# don't let non-IO/RuntimeExceptions escape from DatabaseDocument::store*, wrap them into an IOException
2009-08-26 09:35:39 +0200 fs r275395 : let the default interaction handler implement XInteractionHandler2
2009-08-25 13:51:34 +0200 fs r275352 : #i102631# createTempFile: pass URL through FileHelper.getOOoCompatibleFileURL
2009-08-25 13:49:23 +0200 fs r275351 : #i102631# createTempFileURL: immediately delete the file implicitly created by createTempFile, we really only need the URL
2009-08-24 14:49:07 +0200 fs r275318 : #i10000#
2009-08-24 14:36:03 +0200 fs r275315 : properly terminate message with 0 character
2009-08-24 14:35:45 +0200 fs r275314 : trace method concepts in non-pro, if special flag is enabled
2009-08-24 14:24:17 +0200 fs r275312 : #i98973# filter some more events for grid control columns
2009-08-24 14:15:23 +0200 fs r275311 : #i98973# implement XComboBox for combo box cells
2009-08-24 13:39:24 +0200 fs r275308 : #i98973# do not display the 'actionPerformed' event for grid combo box columns
2009-08-24 12:52:03 +0200 fs r275303 : #i98973# implement XCheckBox and XButton for check box cells
2009-08-24 11:56:05 +0200 oj r275300 : #i104447# wrong default for orientation
2009-08-24 10:51:21 +0200 fs r275296 : in the script selector dialog, interpret a double click onto a function as OK
2009-08-24 10:50:56 +0200 fs r275295 : localize some to-be-displayed names, consolidate some code regarding form/control naming
2009-08-21 14:28:05 +0200 fs r275255 : #i98973# implement KeyListeners
2009-08-21 14:27:20 +0200 fs r275254 : #i98973# move the conversion VCL[Mouse|Key]Event->Awt[Mouse|Key]Event from vclxwindow.cxx to VCLUnoHelper
2009-08-21 14:08:50 +0200 fs r275248 : #i98973# implement Mouse- and MouseMotion-broadcasting
2009-08-21 13:31:08 +0200 fs r275244 : #i98973# implement text and change listeners at text cells
2009-08-21 12:47:38 +0200 fs r275234 : #i104399# some refactoring:
If the MySQL Connector/OOo is installed, it registers for the sdbc:mysqlc: protocol (now known as DST_MYSQL_NATIVE_DIRECT).
However, we do not want to display this in the UI, instead we display "MySQL" only, which collects DST_MYSQL_ODBC, DST_MYSQL_JDBC, and DST_MYSQL_NATIVE.
2009-08-21 12:45:18 +0200 fs r275232 : #i104399# also register for the sdbc:mysql:mysqlc protocol, decide at runtime (depending on the availability of sdbc:mysqlc:), whether it is really accepted. This prevents that the C/OOo extension needs to register *our* implementation name for the sdbc:mysql:mysqlc: protocol, which would be somewhat weird
2009-08-20 16:18:48 +0200 fs r275190 : merging the latest changes from CWS dba32f (which this CWS was created from)
2009-08-19 20:19:59 +0200 fs r275160 : add some spacing between the radios
2009-08-19 14:50:15 +0200 fs r275150 : #i98973# slightly refactoring the grid cell implementations, to prepare for proper events being fired. Implement focus events for the moment, more to come.
2009-08-19 10:53:38 +0200 fs r275142 : #i99936# initialize newly created models
2009-08-18 23:03:48 +0200 fs r275132 : merging latest changes from CWS dba32f
2009-08-18 15:14:08 +0200 fs r275110 : #i102819# SetColumnPos: SCROLL_CLIP is deadly here
2009-09-14 06:18:01 -05:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_NAMED_PIPE , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " NamedPipe " ) ) ) ) ;
2011-01-26 05:26:48 -06:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_RESPECTRESULTSETTYPE , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " RespectDriverResultSetType " ) ) ) ) ;
2004-08-02 09:40:50 -05:00
// special settings for adabas
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_SHUTSERVICE , : : rtl : : OUString : : createFromAscii ( " ShutdownDatabase " ) ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_DATAINC , : : rtl : : OUString : : createFromAscii ( " DataCacheSizeIncrement " ) ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_CACHESIZE , : : rtl : : OUString : : createFromAscii ( " DataCacheSize " ) ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_CTRLUSER , : : rtl : : OUString : : createFromAscii ( " ControlUser " ) ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_CTRLPWD , : : rtl : : OUString : : createFromAscii ( " ControlPassword " ) ) ) ;
// extra settings for odbc
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_USECATALOG , INFO_USECATALOG ) ) ;
// extra settings for a ldap address book
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_LDAP_BASEDN , INFO_CONN_LDAP_BASEDN ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_LDAP_ROWCOUNT , INFO_CONN_LDAP_ROWCOUNT ) ) ;
2004-10-27 06:59:37 -05:00
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_CONN_LDAP_USESSL , : : rtl : : OUString : : createFromAscii ( " UseSSL " ) ) ) ;
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_DOCUMENT_URL , PROPERTY_URL ) ) ;
2004-08-02 09:40:50 -05:00
2007-11-27 05:09:10 -06:00
// oracle
m_aIndirectPropTranslator . insert ( MapInt2String : : value_type ( DSID_IGNORECURRENCY , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " IgnoreCurrency " ) ) ) ) ;
2004-08-02 09:40:50 -05:00
try
{
m_xDatabaseContext = Reference < XNameAccess > ( m_xORB - > createInstance ( SERVICE_SDB_DATABASECONTEXT ) , UNO_QUERY ) ;
m_xDynamicContext . set ( m_xDatabaseContext , UNO_QUERY ) ;
}
catch ( Exception & )
{
}
if ( ! m_xDatabaseContext . is ( ) )
{
ShowServiceNotAvailableError ( _pParent - > GetParent ( ) , String ( SERVICE_SDB_DATABASECONTEXT ) , sal_True ) ;
}
DBG_ASSERT ( m_xDynamicContext . is ( ) , " ODbAdminDialog::ODbAdminDialog : no XNamingService interface ! " ) ;
}
//-------------------------------------------------------------------------
sal_Bool ODbDataSourceAdministrationHelper : : getCurrentSettings ( Sequence < PropertyValue > & _rDriverParam )
{
DBG_ASSERT ( m_pItemSetHelper - > getOutputSet ( ) , " ODbDataSourceAdministrationHelper::getCurrentSettings : not to be called without an example set! " ) ;
if ( ! m_pItemSetHelper - > getOutputSet ( ) )
return sal_False ;
: : std : : vector < PropertyValue > aReturn ;
// collecting this in a vector because it has a push_back, in opposite to sequences
// user: DSID_USER -> "user"
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pUser , SfxStringItem , DSID_USER , sal_True ) ;
if ( pUser & & pUser - > GetValue ( ) . Len ( ) )
aReturn . push_back (
PropertyValue ( : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " user " ) ) , 0 ,
makeAny ( : : rtl : : OUString ( pUser - > GetValue ( ) ) ) , PropertyState_DIRECT_VALUE ) ) ;
// check if the connection type requires a password
if ( hasAuthentication ( * m_pItemSetHelper - > getOutputSet ( ) ) )
{
// password: DSID_PASSWORD -> "password"
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pPassword , SfxStringItem , DSID_PASSWORD , sal_True ) ;
String sPassword = pPassword ? pPassword - > GetValue ( ) : String ( ) ;
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pPasswordRequired , SfxBoolItem , DSID_PASSWORDREQUIRED , sal_True ) ;
// if the set does not contain a password, but the item set says it requires one, ask the user
if ( ( ! pPassword | | ! pPassword - > GetValue ( ) . Len ( ) ) & & ( pPasswordRequired & & pPasswordRequired - > GetValue ( ) ) )
{
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pName , SfxStringItem , DSID_NAME , sal_True ) ;
2010-03-16 04:59:46 -05:00
Reference < XModel > xModel ( getDataSourceOrModel ( m_xDatasource ) , UNO_QUERY_THROW ) ;
: : comphelper : : NamedValueCollection aArgs ( xModel - > getArgs ( ) ) ;
Reference < XInteractionHandler > xHandler ( aArgs . getOrDefault ( " InteractionHandler " , Reference < XInteractionHandler > ( ) ) ) ;
2004-08-02 09:40:50 -05:00
2010-03-16 04:59:46 -05:00
if ( ! xHandler . is ( ) )
{
// instantiate the default SDB interaction handler
2010-04-29 06:02:24 -05:00
xHandler = Reference < XInteractionHandler > ( m_xORB - > createInstance ( SERVICE_TASK_INTERACTION_HANDLER ) , UNO_QUERY ) ;
2010-03-16 04:59:46 -05:00
if ( ! xHandler . is ( ) )
2010-04-29 06:02:24 -05:00
ShowServiceNotAvailableError ( m_pParent - > GetParent ( ) , String ( SERVICE_TASK_INTERACTION_HANDLER ) , sal_True ) ;
2010-03-16 04:59:46 -05:00
}
2004-08-02 09:40:50 -05:00
2005-03-10 09:48:20 -06:00
String sName = pName ? pName - > GetValue ( ) : String ( ) ;
2004-08-02 09:40:50 -05:00
String sLoginRequest ( ModuleRes ( STR_ENTER_CONNECTION_PASSWORD ) ) ;
2005-03-10 09:48:20 -06:00
: : rtl : : OUString sTemp = sName ;
sName = : : dbaui : : getStrippedDatabaseName ( NULL , sTemp ) ;
if ( sName . Len ( ) )
2010-03-16 04:59:46 -05:00
sLoginRequest . SearchAndReplaceAscii ( " $name$ " , sName ) ;
2005-03-10 09:48:20 -06:00
else
{
sLoginRequest . SearchAndReplaceAscii ( " \" $name$ \" " , String ( ) ) ;
sLoginRequest . SearchAndReplaceAscii ( " $name$ " , String ( ) ) ; // just to be sure that in other languages the string will be deleted
}
2010-03-16 04:59:46 -05:00
// the request
AuthenticationRequest aRequest ;
aRequest . ServerName = sName ;
aRequest . Diagnostic = sLoginRequest ;
aRequest . HasRealm = aRequest . HasAccount = sal_False ;
// aRequest.Realm
aRequest . HasUserName = pUser ! = 0 ;
2010-04-29 06:02:24 -05:00
aRequest . UserName = pUser ? rtl : : OUString ( pUser - > GetValue ( ) ) : : : rtl : : OUString ( ) ;
2010-03-16 04:59:46 -05:00
aRequest . HasPassword = sal_True ;
//aRequest.Password
aRequest . HasAccount = sal_False ;
// aRequest.Account
comphelper : : OInteractionRequest * pRequest = new comphelper : : OInteractionRequest ( makeAny ( aRequest ) ) ;
uno : : Reference < XInteractionRequest > xRequest ( pRequest ) ;
// build an interaction request
// two continuations (Ok and Cancel)
: : rtl : : Reference < comphelper : : OInteractionAbort > pAbort = new comphelper : : OInteractionAbort ;
: : rtl : : Reference < dbaccess : : OAuthenticationContinuation > pAuthenticate = new dbaccess : : OAuthenticationContinuation ;
pAuthenticate - > setCanChangeUserName ( sal_False ) ;
pAuthenticate - > setRememberPassword ( RememberAuthentication_SESSION ) ;
// some knittings
pRequest - > addContinuation ( pAbort . get ( ) ) ;
pRequest - > addContinuation ( pAuthenticate . get ( ) ) ;
// handle the request
try
{
: : vos : : OGuard aSolarGuard ( Application : : GetSolarMutex ( ) ) ;
// release the mutex when calling the handler, it may need to lock the SolarMutex
xHandler - > handle ( xRequest ) ;
}
catch ( Exception & )
{
DBG_UNHANDLED_EXCEPTION ( ) ;
}
if ( ! pAuthenticate - > wasSelected ( ) )
2004-08-02 09:40:50 -05:00
return sal_False ;
2010-03-16 04:59:46 -05:00
sPassword = pAuthenticate - > getPassword ( ) ;
if ( pAuthenticate - > getRememberPassword ( ) )
2004-08-02 09:40:50 -05:00
m_pItemSetHelper - > getWriteOutputSet ( ) - > Put ( SfxStringItem ( DSID_PASSWORD , sPassword ) ) ;
}
if ( sPassword . Len ( ) )
aReturn . push_back (
PropertyValue ( : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " password " ) ) , 0 ,
makeAny ( : : rtl : : OUString ( sPassword ) ) , PropertyState_DIRECT_VALUE ) ) ;
}
2006-04-19 07:20:20 -05:00
if ( ! aReturn . empty ( ) )
_rDriverParam = Sequence < PropertyValue > ( & ( * aReturn . begin ( ) ) , aReturn . size ( ) ) ;
2004-08-02 09:40:50 -05:00
// append all the other stuff (charset etc.)
fillDatasourceInfo ( * m_pItemSetHelper - > getOutputSet ( ) , _rDriverParam ) ;
return sal_True ;
}
//-------------------------------------------------------------------------
void ODbDataSourceAdministrationHelper : : successfullyConnected ( )
{
DBG_ASSERT ( m_pItemSetHelper - > getOutputSet ( ) , " ODbDataSourceAdministrationHelper::successfullyConnected: not to be called without an example set! " ) ;
if ( ! m_pItemSetHelper - > getOutputSet ( ) )
return ;
if ( hasAuthentication ( * m_pItemSetHelper - > getOutputSet ( ) ) )
{
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pPassword , SfxStringItem , DSID_PASSWORD , sal_True ) ;
if ( pPassword & & ( 0 ! = pPassword - > GetValue ( ) . Len ( ) ) )
{
: : rtl : : OUString sPassword = pPassword - > GetValue ( ) ;
Reference < XPropertySet > xCurrentDatasource = getCurrentDataSource ( ) ;
lcl_putProperty ( xCurrentDatasource , m_aDirectPropTranslator [ DSID_PASSWORD ] , makeAny ( sPassword ) ) ;
}
}
}
//-------------------------------------------------------------------------
void ODbDataSourceAdministrationHelper : : clearPassword ( )
{
if ( m_pItemSetHelper - > getWriteOutputSet ( ) )
m_pItemSetHelper - > getWriteOutputSet ( ) - > ClearItem ( DSID_PASSWORD ) ;
}
// -----------------------------------------------------------------------------
2005-01-21 10:12:45 -06:00
: : std : : pair < Reference < XConnection > , sal_Bool > ODbDataSourceAdministrationHelper : : createConnection ( )
2004-08-02 09:40:50 -05:00
{
2005-01-21 10:12:45 -06:00
: : std : : pair < Reference < XConnection > , sal_Bool > aRet ;
aRet . second = sal_False ;
Sequence < PropertyValue > aConnectionParams ;
if ( getCurrentSettings ( aConnectionParams ) )
{
// the current DSN
// fill the table list with this connection information
SQLExceptionInfo aErrorInfo ;
try
2004-08-02 09:40:50 -05:00
{
2005-01-21 10:12:45 -06:00
WaitObject aWaitCursor ( m_pParent ) ;
aRet . first = getDriver ( ) - > connect ( getConnectionURL ( ) , aConnectionParams ) ;
aRet . second = sal_True ;
2004-08-02 09:40:50 -05:00
}
2005-01-21 10:12:45 -06:00
catch ( SQLContext & e ) { aErrorInfo = SQLExceptionInfo ( e ) ; }
catch ( SQLWarning & e ) { aErrorInfo = SQLExceptionInfo ( e ) ; }
catch ( SQLException & e ) { aErrorInfo = SQLExceptionInfo ( e ) ; }
showError ( aErrorInfo , m_pParent , getORB ( ) ) ;
2004-08-02 09:40:50 -05:00
}
2005-01-21 10:12:45 -06:00
if ( aRet . first . is ( ) )
2004-08-02 09:40:50 -05:00
successfullyConnected ( ) ; // notify the admindlg to save the password
2005-01-21 10:12:45 -06:00
return aRet ;
2004-08-02 09:40:50 -05:00
}
// -----------------------------------------------------------------------------
Reference < XDriver > ODbDataSourceAdministrationHelper : : getDriver ( )
2010-01-08 04:02:32 -06:00
{
return getDriver ( getConnectionURL ( ) ) ;
}
// -----------------------------------------------------------------------------
Reference < XDriver > ODbDataSourceAdministrationHelper : : getDriver ( const : : rtl : : OUString & _sURL )
2004-08-02 09:40:50 -05:00
{
// get the global DriverManager
Reference < XDriverAccess > xDriverManager ;
String sCurrentActionError = String ( ModuleRes ( STR_COULDNOTCREATE_DRIVERMANAGER ) ) ;
// in case an error occures
sCurrentActionError . SearchAndReplaceAscii ( " #servicename# " , ( : : rtl : : OUString ) SERVICE_SDBC_CONNECTIONPOOL ) ;
try
{
xDriverManager = Reference < XDriverAccess > ( getORB ( ) - > createInstance ( SERVICE_SDBC_CONNECTIONPOOL ) , UNO_QUERY ) ;
DBG_ASSERT ( xDriverManager . is ( ) , " ODbDataSourceAdministrationHelper::getDriver: could not instantiate the driver manager, or it does not provide the necessary interface! " ) ;
}
catch ( Exception & e )
{
// wrap the exception into an SQLException
SQLException aSQLWrapper ( e . Message , getORB ( ) , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " S1000 " ) ) , 0 , Any ( ) ) ;
throw SQLException ( sCurrentActionError , getORB ( ) , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " S1000 " ) ) , 0 , makeAny ( aSQLWrapper ) ) ;
}
if ( ! xDriverManager . is ( ) )
throw SQLException ( sCurrentActionError , getORB ( ) , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " S1000 " ) ) , 0 , Any ( ) ) ;
2010-01-08 04:02:32 -06:00
Reference < XDriver > xDriver = xDriverManager - > getDriverByURL ( _sURL ) ;
2004-08-02 09:40:50 -05:00
if ( ! xDriver . is ( ) )
{
sCurrentActionError = String ( ModuleRes ( STR_NOREGISTEREDDRIVER ) ) ;
2010-01-08 04:02:32 -06:00
sCurrentActionError . SearchAndReplaceAscii ( " #connurl# " , _sURL ) ;
2004-08-02 09:40:50 -05:00
// will be caught and translated into an SQLContext exception
throw SQLException ( sCurrentActionError , getORB ( ) , : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " S1000 " ) ) , 0 , Any ( ) ) ;
}
return xDriver ;
}
2005-06-30 10:30:42 -05:00
// -----------------------------------------------------------------------------
2004-08-02 09:40:50 -05:00
Reference < XPropertySet > ODbDataSourceAdministrationHelper : : getCurrentDataSource ( )
{
if ( ! m_xDatasource . is ( ) )
{
2005-06-30 10:30:42 -05:00
Reference < XInterface > xIn ( m_aDataSourceOrName , UNO_QUERY ) ;
2005-03-10 09:48:20 -06:00
if ( ! xIn . is ( ) )
2004-08-02 09:40:50 -05:00
{
: : rtl : : OUString sCurrentDatasource ;
2005-06-30 10:30:42 -05:00
m_aDataSourceOrName > > = sCurrentDatasource ;
2004-08-02 09:40:50 -05:00
OSL_ENSURE ( sCurrentDatasource . getLength ( ) , " No datasource name given! " ) ;
try
{
if ( m_xDatabaseContext . is ( ) )
m_xDatasource . set ( m_xDatabaseContext - > getByName ( sCurrentDatasource ) , UNO_QUERY ) ;
2005-03-10 09:48:20 -06:00
xIn = m_xDatasource ;
2004-08-02 09:40:50 -05:00
}
catch ( const Exception & )
{
}
}
2005-03-10 09:48:20 -06:00
m_xModel . set ( getDataSourceOrModel ( xIn ) , UNO_QUERY ) ;
if ( m_xModel . is ( ) )
m_xDatasource . set ( xIn , UNO_QUERY ) ;
else
{
m_xDatasource . set ( getDataSourceOrModel ( xIn ) , UNO_QUERY ) ;
m_xModel . set ( xIn , UNO_QUERY ) ;
}
2004-08-02 09:40:50 -05:00
}
2005-03-10 09:48:20 -06:00
2004-08-02 09:40:50 -05:00
DBG_ASSERT ( m_xDatasource . is ( ) , " ODbDataSourceAdministrationHelper::getCurrentDataSource: no data source! " ) ;
return m_xDatasource ;
}
//-------------------------------------------------------------------------
2009-07-03 07:24:35 -05:00
: : rtl : : OUString ODbDataSourceAdministrationHelper : : getDatasourceType ( const SfxItemSet & _rSet )
2004-08-02 09:40:50 -05:00
{
2007-11-01 09:06:03 -05:00
SFX_ITEMSET_GET ( _rSet , pConnectURL , SfxStringItem , DSID_CONNECTURL , sal_True ) ;
2009-07-03 07:24:35 -05:00
DBG_ASSERT ( pConnectURL , " ODbDataSourceAdministrationHelper::getDatasourceType: invalid items in the source set! " ) ;
SFX_ITEMSET_GET ( _rSet , pTypeCollection , DbuTypeCollectionItem , DSID_TYPECOLLECTION , sal_True ) ;
DBG_ASSERT ( pTypeCollection , " ODbDataSourceAdministrationHelper::getDatasourceType: invalid items in the source set! " ) ;
2008-10-01 07:28:29 -05:00
: : dbaccess : : ODsnTypeCollection * pCollection = pTypeCollection - > getCollection ( ) ;
2009-07-03 07:24:35 -05:00
return pCollection - > getType ( pConnectURL - > GetValue ( ) ) ;
2004-08-02 09:40:50 -05:00
}
//-------------------------------------------------------------------------
sal_Bool ODbDataSourceAdministrationHelper : : hasAuthentication ( const SfxItemSet & _rSet ) const
{
2007-11-01 09:06:03 -05:00
return DataSourceMetaData : : getAuthentication ( getDatasourceType ( _rSet ) ) ! = AuthNone ;
2004-08-02 09:40:50 -05:00
}
// -----------------------------------------------------------------------------
String ODbDataSourceAdministrationHelper : : getConnectionURL ( ) const
{
String sNewUrl ;
2009-07-03 07:24:35 -05:00
: : rtl : : OUString eType = getDatasourceType ( * m_pItemSetHelper - > getOutputSet ( ) ) ;
2004-08-02 09:40:50 -05:00
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pUrlItem , SfxStringItem , DSID_CONNECTURL , sal_True ) ;
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pTypeCollection , DbuTypeCollectionItem , DSID_TYPECOLLECTION , sal_True ) ;
OSL_ENSURE ( pUrlItem , " Connection URL is NULL. -> GPF! " ) ;
DBG_ASSERT ( pTypeCollection , " ODbDataSourceAdministrationHelper::getDatasourceType: invalid items in the source set! " ) ;
2008-10-01 07:28:29 -05:00
: : dbaccess : : ODsnTypeCollection * pCollection = pTypeCollection - > getCollection ( ) ;
2004-08-02 09:40:50 -05:00
DBG_ASSERT ( pCollection , " ODbDataSourceAdministrationHelper::getDatasourceType: invalid type collection! " ) ;
2009-07-03 07:24:35 -05:00
switch ( pCollection - > determineType ( eType ) )
2004-08-02 09:40:50 -05:00
{
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_DBASE :
case : : dbaccess : : DST_FLAT :
case : : dbaccess : : DST_CALC :
2004-08-02 09:40:50 -05:00
break ;
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_ADABAS :
2004-08-02 09:40:50 -05:00
{
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pHostName , SfxStringItem , DSID_CONN_HOSTNAME , sal_True ) ;
sNewUrl = lcl_createHostWithPort ( pHostName , NULL ) ;
String sUrl = pCollection - > cutPrefix ( pUrlItem - > GetValue ( ) ) ;
if ( sUrl . GetTokenCount ( ' : ' ) = = 1 )
sNewUrl + = String : : CreateFromAscii ( " : " ) ;
sNewUrl + = sUrl ;
}
break ;
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_MSACCESS :
case : : dbaccess : : DST_MSACCESS_2007 :
2004-08-02 09:40:50 -05:00
{
: : rtl : : OUString sFileName = pCollection - > cutPrefix ( pUrlItem - > GetValue ( ) ) ;
: : rtl : : OUString sNewFileName ;
if ( : : osl : : FileBase : : getSystemPathFromFileURL ( sFileName , sNewFileName ) = = : : osl : : FileBase : : E_None )
{
sNewUrl + = String ( sNewFileName ) ;
}
}
break ;
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_MYSQL_NATIVE :
case : : dbaccess : : DST_MYSQL_JDBC :
2004-08-02 09:40:50 -05:00
{
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pHostName , SfxStringItem , DSID_CONN_HOSTNAME , sal_True ) ;
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pPortNumber , SfxInt32Item , DSID_MYSQL_PORTNUMBER , sal_True ) ;
2004-10-27 06:59:37 -05:00
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pDatabaseName , SfxStringItem , DSID_DATABASENAME , sal_True ) ;
2004-08-02 09:40:50 -05:00
sNewUrl = lcl_createHostWithPort ( pHostName , pPortNumber ) ;
2004-10-27 06:59:37 -05:00
String sDatabaseName = pDatabaseName ? pDatabaseName - > GetValue ( ) : String ( ) ;
if ( ! sDatabaseName . Len ( ) & & pUrlItem )
sDatabaseName = pCollection - > cutPrefix ( pUrlItem - > GetValue ( ) ) ;
// TODO: what's that? Why is the database name transported via the URL Item?
// Huh? Anybody there?
2005-01-21 10:12:45 -06:00
// OJ: It is needed when the connection properties are changed. There the URL is used for every type.
2004-10-27 06:59:37 -05:00
if ( sDatabaseName . Len ( ) )
2004-08-02 09:40:50 -05:00
{
sNewUrl + = String : : CreateFromAscii ( " / " ) ;
2004-10-27 06:59:37 -05:00
sNewUrl + = sDatabaseName ;
2004-08-02 09:40:50 -05:00
}
}
break ;
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_ORACLE_JDBC :
2004-08-02 09:40:50 -05:00
{
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pHostName , SfxStringItem , DSID_CONN_HOSTNAME , sal_True ) ;
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pPortNumber , SfxInt32Item , DSID_ORACLE_PORTNUMBER , sal_True ) ;
2005-01-21 10:12:45 -06:00
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pDatabaseName , SfxStringItem , DSID_DATABASENAME , sal_True ) ;
2005-03-10 09:48:20 -06:00
if ( pHostName & & pHostName - > GetValue ( ) . Len ( ) )
2004-08-02 09:40:50 -05:00
{
2005-03-10 09:48:20 -06:00
sNewUrl = : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " @ " ) ) ;
sNewUrl + = lcl_createHostWithPort ( pHostName , pPortNumber ) ;
String sDatabaseName = pDatabaseName ? pDatabaseName - > GetValue ( ) : String ( ) ;
if ( ! sDatabaseName . Len ( ) & & pUrlItem )
sDatabaseName = pCollection - > cutPrefix ( pUrlItem - > GetValue ( ) ) ;
if ( sDatabaseName . Len ( ) )
{
sNewUrl + = String : : CreateFromAscii ( " : " ) ;
sNewUrl + = sDatabaseName ;
}
}
else
{ // here someone entered a JDBC url which looks like oracle, so we have to use the url property
2004-08-02 09:40:50 -05:00
}
}
break ;
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_LDAP :
2004-08-02 09:40:50 -05:00
{
// SFX_ITEMSET_GET(*m_pItemSetHelper->getOutputSet(), pHostName, SfxStringItem, DSID_CONN_HOSTNAME, sal_True);
SFX_ITEMSET_GET ( * m_pItemSetHelper - > getOutputSet ( ) , pPortNumber , SfxInt32Item , DSID_CONN_LDAP_PORTNUMBER , sal_True ) ;
sNewUrl = pCollection - > cutPrefix ( pUrlItem - > GetValue ( ) ) ;
sNewUrl + = lcl_createHostWithPort ( NULL , pPortNumber ) ;
}
break ;
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_JDBC :
2004-08-02 09:40:50 -05:00
// run through
default :
break ;
}
if ( sNewUrl . Len ( ) )
{
2009-07-03 07:24:35 -05:00
String sUrl = pCollection - > getPrefix ( eType ) ;
2004-08-02 09:40:50 -05:00
sUrl + = sNewUrl ;
sNewUrl = sUrl ;
}
else
sNewUrl = pUrlItem - > GetValue ( ) ;
return sNewUrl ;
}
//-------------------------------------------------------------------------
struct PropertyValueLess
{
bool operator ( ) ( const PropertyValue & x , const PropertyValue & y ) const
{ return x . Name < y . Name ? true : false ; } // construct prevents a MSVC6 warning
} ;
DECLARE_STL_SET ( PropertyValue , PropertyValueLess , PropertyValueSet ) ;
//........................................................................
void ODbDataSourceAdministrationHelper : : translateProperties ( const Reference < XPropertySet > & _rxSource , SfxItemSet & _rDest )
{
: : rtl : : OUString sNewConnectURL , sName , sUid , sPwd ;
Sequence < : : rtl : : OUString > aTableFitler ;
if ( _rxSource . is ( ) )
{
for ( ConstMapInt2StringIterator aDirect = m_aDirectPropTranslator . begin ( ) ;
aDirect ! = m_aDirectPropTranslator . end ( ) ;
+ + aDirect
)
{
// get the property value
Any aValue ;
try
{
aValue = _rxSource - > getPropertyValue ( aDirect - > second ) ;
}
catch ( Exception & )
{
2006-10-12 07:36:37 -05:00
# ifdef DBG_UTIL
2004-08-02 09:40:50 -05:00
: : rtl : : OString aMessage ( " ODbDataSourceAdministrationHelper::translateProperties: could not extract the property " ) ;
aMessage + = : : rtl : : OString ( aDirect - > second . getStr ( ) , aDirect - > second . getLength ( ) , RTL_TEXTENCODING_ASCII_US ) ;
aMessage + = : : rtl : : OString ( " ! " ) ;
DBG_ERROR ( aMessage . getStr ( ) ) ;
# endif
}
// transfer it into an item
implTranslateProperty ( _rDest , aDirect - > first , aValue ) ;
}
// get the additional informations
Sequence < PropertyValue > aAdditionalInfo ;
try
{
_rxSource - > getPropertyValue ( PROPERTY_INFO ) > > = aAdditionalInfo ;
}
catch ( Exception & ) { }
// collect the names of the additional settings
const PropertyValue * pAdditionalInfo = aAdditionalInfo . getConstArray ( ) ;
PropertyValueSet aInfos ;
for ( sal_Int32 i = 0 ; i < aAdditionalInfo . getLength ( ) ; + + i , + + pAdditionalInfo )
{
if ( 0 = = pAdditionalInfo - > Name . compareToAscii ( " JDBCDRV " ) )
{ // compatibility
PropertyValue aCompatibility ( * pAdditionalInfo ) ;
aCompatibility . Name = : : rtl : : OUString : : createFromAscii ( " JavaDriverClass " ) ;
aInfos . insert ( aCompatibility ) ;
}
else
aInfos . insert ( * pAdditionalInfo ) ;
}
// go through all known translations and check if we have such a setting
2009-07-03 07:24:35 -05:00
if ( ! aInfos . empty ( ) )
2004-08-02 09:40:50 -05:00
{
2009-07-03 07:24:35 -05:00
PropertyValue aSearchFor ;
ConstMapInt2StringIterator aEnd = m_aIndirectPropTranslator . end ( ) ;
for ( ConstMapInt2StringIterator aIndirect = m_aIndirectPropTranslator . begin ( ) ;
aIndirect ! = aEnd ;
+ + aIndirect )
{
aSearchFor . Name = aIndirect - > second ;
ConstPropertyValueSetIterator aInfoPos = aInfos . find ( aSearchFor ) ;
if ( aInfos . end ( ) ! = aInfoPos )
// the property is contained in the info sequence
// -> transfer it into an item
implTranslateProperty ( _rDest , aIndirect - > first , aInfoPos - > Value ) ;
}
2004-08-02 09:40:50 -05:00
}
convertUrl ( _rDest ) ;
}
try
{
_rDest . Put ( OPropertySetItem ( DSID_DATASOURCE_UNO , _rxSource ) ) ;
2005-03-10 09:48:20 -06:00
Reference < XStorable > xStore ( getDataSourceOrModel ( _rxSource ) , UNO_QUERY ) ;
2004-08-02 09:40:50 -05:00
_rDest . Put ( SfxBoolItem ( DSID_READONLY , ! xStore . is ( ) | | xStore - > isReadonly ( ) ) ) ;
}
catch ( Exception & )
{
OSL_ENSURE ( 0 , " IsReadOnly throws an exception! " ) ;
}
}
//-------------------------------------------------------------------------
void ODbDataSourceAdministrationHelper : : translateProperties ( const SfxItemSet & _rSource , const Reference < XPropertySet > & _rxDest )
{
DBG_ASSERT ( _rxDest . is ( ) , " ODbDataSourceAdministrationHelper::translateProperties: invalid property set! " ) ;
if ( ! _rxDest . is ( ) )
return ;
// the property set info
Reference < XPropertySetInfo > xInfo ;
try { xInfo = _rxDest - > getPropertySetInfo ( ) ; }
catch ( Exception & ) { }
const : : rtl : : OUString sUrlProp ( RTL_CONSTASCII_USTRINGPARAM ( " URL " ) ) ;
// -----------------------------
// transfer the direct properties
for ( ConstMapInt2StringIterator aDirect = m_aDirectPropTranslator . begin ( ) ;
aDirect ! = m_aDirectPropTranslator . end ( ) ;
+ + aDirect
)
{
const SfxPoolItem * pCurrentItem = _rSource . GetItem ( ( USHORT ) aDirect - > first ) ;
if ( pCurrentItem )
{
sal_Int16 nAttributes = PropertyAttribute : : READONLY ;
if ( xInfo . is ( ) )
{
try { nAttributes = xInfo - > getPropertyByName ( aDirect - > second ) . Attributes ; }
catch ( Exception & ) { }
}
if ( ( nAttributes & PropertyAttribute : : READONLY ) = = 0 )
{
if ( sUrlProp = = aDirect - > second )
{
Any aValue ( makeAny ( : : rtl : : OUString ( getConnectionURL ( ) ) ) ) ;
// aValue <<= ::rtl::OUString();
lcl_putProperty ( _rxDest , aDirect - > second , aValue ) ;
}
else
implTranslateProperty ( _rxDest , aDirect - > second , pCurrentItem ) ;
}
}
}
// -------------------------------
// now for the indirect properties
Sequence < PropertyValue > aInfo ;
// the original properties
try
{
_rxDest - > getPropertyValue ( PROPERTY_INFO ) > > = aInfo ;
}
catch ( Exception & ) { }
// overwrite and extend them
fillDatasourceInfo ( _rSource , aInfo ) ;
// and propagate the (newly composed) sequence to the set
lcl_putProperty ( _rxDest , PROPERTY_INFO , makeAny ( aInfo ) ) ;
}
//-------------------------------------------------------------------------
2008-01-30 01:43:26 -06:00
void ODbDataSourceAdministrationHelper : : fillDatasourceInfo ( const SfxItemSet & _rSource , Sequence < : : com : : sun : : star : : beans : : PropertyValue > & _rInfo )
2004-08-02 09:40:50 -05:00
{
// within the current "Info" sequence, replace the ones we can examine from the item set
// (we don't just fill a completely new sequence with our own items, but we preserve any properties unknown to
// us)
// first determine which of all the items are relevant for the data source (depends on the connection url)
2009-07-03 07:24:35 -05:00
: : rtl : : OUString eType = getDatasourceType ( _rSource ) ;
2004-08-02 09:40:50 -05:00
: : std : : vector < sal_Int32 > aDetailIds ;
2009-07-03 07:24:35 -05:00
ODriversSettings : : getSupportedIndirectSettings ( eType , getORB ( ) , aDetailIds ) ;
2004-08-02 09:40:50 -05:00
// collect the translated property values for the relevant items
PropertyValueSet aRelevantSettings ;
ConstMapInt2StringIterator aTranslation ;
: : std : : vector < sal_Int32 > : : iterator aDetailsEnd = aDetailIds . end ( ) ;
for ( : : std : : vector < sal_Int32 > : : iterator aIter = aDetailIds . begin ( ) ; aIter ! = aDetailsEnd ; + + aIter )
{
const SfxPoolItem * pCurrent = _rSource . GetItem ( ( USHORT ) * aIter ) ;
aTranslation = m_aIndirectPropTranslator . find ( * aIter ) ;
if ( pCurrent & & ( m_aIndirectPropTranslator . end ( ) ! = aTranslation ) )
{
if ( aTranslation - > second = = INFO_CHARSET )
{
: : rtl : : OUString sCharSet ;
implTranslateProperty ( pCurrent ) > > = sCharSet ;
if ( sCharSet . getLength ( ) )
aRelevantSettings . insert ( PropertyValue ( aTranslation - > second , 0 , makeAny ( sCharSet ) , PropertyState_DIRECT_VALUE ) ) ;
}
else
aRelevantSettings . insert ( PropertyValue ( aTranslation - > second , 0 , implTranslateProperty ( pCurrent ) , PropertyState_DIRECT_VALUE ) ) ;
}
}
// settings to preserve
MapInt2String aPreservedSettings ;
// now aRelevantSettings contains all the property values relevant for the current data source type,
// check the original sequence if it already contains any of these values (which have to be overwritten, then)
PropertyValue * pInfo = _rInfo . getArray ( ) ;
PropertyValue aSearchFor ;
sal_Int32 nObsoleteSetting = - 1 ;
sal_Int32 nCount = _rInfo . getLength ( ) ;
for ( sal_Int32 i = 0 ; i < nCount ; + + i , + + pInfo )
{
aSearchFor . Name = pInfo - > Name ;
PropertyValueSetIterator aOverwrittenSetting = aRelevantSettings . find ( aSearchFor ) ;
if ( aRelevantSettings . end ( ) ! = aOverwrittenSetting )
{ // the setting was present in the original sequence, and it is to be overwritten -> replace it
if ( ! : : comphelper : : compare ( pInfo - > Value , aOverwrittenSetting - > Value ) )
* pInfo = * aOverwrittenSetting ;
aRelevantSettings . erase ( aOverwrittenSetting ) ;
}
else if ( 0 = = pInfo - > Name . compareToAscii ( " JDBCDRV " ) )
{ // this is a compatibility setting, remove it from the sequence (it's replaced by JavaDriverClass)
nObsoleteSetting = i ;
}
else
aPreservedSettings [ i ] = pInfo - > Name ;
}
if ( - 1 ! = nObsoleteSetting )
: : comphelper : : removeElementAt ( _rInfo , nObsoleteSetting ) ;
if ( ! aPreservedSettings . empty ( ) )
{ // check if there are settings which
// * are known as indirect properties
// * but not relevant for the current data source type
// These settings have to be removed: If they're not relevant, we have no UI for changing them.
// 25.06.2001 - 88004/87182 - frank.schoenheit@sun.com
// for this, we need a string-controlled quick access to m_aIndirectPropTranslator
StringSet aIndirectProps ;
: : std : : transform ( m_aIndirectPropTranslator . begin ( ) ,
m_aIndirectPropTranslator . end ( ) ,
: : std : : insert_iterator < StringSet > ( aIndirectProps , aIndirectProps . begin ( ) ) ,
: : std : : select2nd < MapInt2String : : value_type > ( ) ) ;
// now check the to-be-preserved props
: : std : : vector < sal_Int32 > aRemoveIndexes ;
sal_Int32 nPositionCorrector = 0 ;
ConstMapInt2StringIterator aPreservedEnd = aPreservedSettings . end ( ) ;
for ( ConstMapInt2StringIterator aPreserved = aPreservedSettings . begin ( ) ;
aPreserved ! = aPreservedEnd ;
+ + aPreserved
)
{
if ( aIndirectProps . end ( ) ! = aIndirectProps . find ( aPreserved - > second ) )
{
# ifdef DBG_UTIL
const : : rtl : : OUString sName = aPreserved - > second ;
# endif
aRemoveIndexes . push_back ( aPreserved - > first - nPositionCorrector ) ;
+ + nPositionCorrector ;
}
}
// now finally remove all such props
: : std : : vector < sal_Int32 > : : const_iterator aRemoveEnd = aRemoveIndexes . end ( ) ;
for ( : : std : : vector < sal_Int32 > : : const_iterator aRemoveIndex = aRemoveIndexes . begin ( ) ;
aRemoveIndex ! = aRemoveEnd ;
+ + aRemoveIndex
)
: : comphelper : : removeElementAt ( _rInfo , * aRemoveIndex ) ;
# ifdef DBG_UTIL
const PropertyValue * pWhatsLeft = _rInfo . getConstArray ( ) ;
const PropertyValue * pWhatsLeftEnd = pWhatsLeft + _rInfo . getLength ( ) ;
for ( ; pWhatsLeft ! = pWhatsLeftEnd ; + + pWhatsLeft )
{
: : rtl : : OUString sLookAtIt = pWhatsLeft - > Name ;
}
# endif
}
2009-07-03 07:24:35 -05:00
: : connectivity : : DriversConfig aDriverConfig ( getORB ( ) ) ;
const : : comphelper : : NamedValueCollection & aProperties = aDriverConfig . getProperties ( eType ) ;
Sequence < Any > aTypeSettings ;
aTypeSettings = aProperties . getOrDefault ( " TypeInfoSettings " , aTypeSettings ) ;
2008-01-30 01:43:26 -06:00
// here we have a special entry for types from oracle
2009-07-03 07:24:35 -05:00
if ( aTypeSettings . getLength ( ) )
2008-01-30 01:43:26 -06:00
{
aRelevantSettings . insert ( PropertyValue ( : : rtl : : OUString ( RTL_CONSTASCII_USTRINGPARAM ( " TypeInfoSettings " ) ) , 0 , makeAny ( aTypeSettings ) , PropertyState_DIRECT_VALUE ) ) ;
}
2004-08-02 09:40:50 -05:00
// check which values are still left ('cause they were not present in the original sequence, but are to be set)
if ( ! aRelevantSettings . empty ( ) )
{
sal_Int32 nOldLength = _rInfo . getLength ( ) ;
_rInfo . realloc ( nOldLength + aRelevantSettings . size ( ) ) ;
PropertyValue * pAppendValues = _rInfo . getArray ( ) + nOldLength ;
ConstPropertyValueSetIterator aRelevantEnd = aRelevantSettings . end ( ) ;
for ( ConstPropertyValueSetIterator aLoop = aRelevantSettings . begin ( ) ;
aLoop ! = aRelevantEnd ;
+ + aLoop , + + pAppendValues
)
{
if ( aLoop - > Name = = INFO_CHARSET )
{
: : rtl : : OUString sCharSet ;
aLoop - > Value > > = sCharSet ;
if ( sCharSet . getLength ( ) )
* pAppendValues = * aLoop ;
}
else
* pAppendValues = * aLoop ;
}
}
}
//-------------------------------------------------------------------------
Any ODbDataSourceAdministrationHelper : : implTranslateProperty ( const SfxPoolItem * _pItem )
{
// translate the SfxPoolItem
Any aValue ;
2009-10-16 07:16:52 -05:00
const SfxStringItem * pStringItem = PTR_CAST ( SfxStringItem , _pItem ) ;
const SfxBoolItem * pBoolItem = PTR_CAST ( SfxBoolItem , _pItem ) ;
const OptionalBoolItem * pOptBoolItem = PTR_CAST ( OptionalBoolItem , _pItem ) ;
const SfxInt32Item * pInt32Item = PTR_CAST ( SfxInt32Item , _pItem ) ;
const OStringListItem * pStringListItem = PTR_CAST ( OStringListItem , _pItem ) ;
if ( pStringItem )
{
aValue < < = : : rtl : : OUString ( pStringItem - > GetValue ( ) . GetBuffer ( ) ) ;
}
else if ( pBoolItem )
{
aValue < < = pBoolItem - > GetValue ( ) ;
}
else if ( pOptBoolItem )
{
if ( ! pOptBoolItem - > HasValue ( ) )
aValue . clear ( ) ;
else
aValue < < = ( sal_Bool ) pOptBoolItem - > GetValue ( ) ;
}
else if ( pInt32Item )
{
aValue < < = pInt32Item - > GetValue ( ) ;
}
else if ( pStringListItem )
{
aValue < < = pStringListItem - > getList ( ) ;
}
2004-08-02 09:40:50 -05:00
else
{
DBG_ERROR ( " ODbDataSourceAdministrationHelper::implTranslateProperty: unsupported item type! " ) ;
return aValue ;
}
return aValue ;
}
//-------------------------------------------------------------------------
void ODbDataSourceAdministrationHelper : : implTranslateProperty ( const Reference < XPropertySet > & _rxSet , const : : rtl : : OUString & _rName , const SfxPoolItem * _pItem )
{
Any aValue = implTranslateProperty ( _pItem ) ;
lcl_putProperty ( _rxSet , _rName , aValue ) ;
}
# ifdef DBG_UTIL
//-------------------------------------------------------------------------
: : rtl : : OString ODbDataSourceAdministrationHelper : : translatePropertyId ( sal_Int32 _nId )
{
: : rtl : : OUString aString ;
MapInt2String : : const_iterator aPos = m_aDirectPropTranslator . find ( _nId ) ;
if ( m_aDirectPropTranslator . end ( ) ! = aPos )
{
aString = aPos - > second ;
}
else
{
2006-06-19 21:03:42 -05:00
MapInt2String : : const_iterator indirectPos = m_aIndirectPropTranslator . find ( _nId ) ;
if ( m_aIndirectPropTranslator . end ( ) ! = indirectPos )
aString = indirectPos - > second ;
2004-08-02 09:40:50 -05:00
}
: : rtl : : OString aReturn ( aString . getStr ( ) , aString . getLength ( ) , RTL_TEXTENCODING_ASCII_US ) ;
return aReturn ;
}
# endif
//-------------------------------------------------------------------------
void ODbDataSourceAdministrationHelper : : implTranslateProperty ( SfxItemSet & _rSet , sal_Int32 _nId , const Any & _rValue )
{
2009-10-16 07:16:52 -05:00
switch ( _rValue . getValueType ( ) . getTypeClass ( ) )
2004-08-02 09:40:50 -05:00
{
case TypeClass_STRING :
2009-10-16 07:16:52 -05:00
if ( implCheckItemType ( _rSet , _nId , SfxStringItem : : StaticType ( ) ) )
2004-08-02 09:40:50 -05:00
{
: : rtl : : OUString sValue ;
_rValue > > = sValue ;
2009-10-16 07:16:52 -05:00
_rSet . Put ( SfxStringItem ( _nId , sValue . getStr ( ) ) ) ;
2004-08-02 09:40:50 -05:00
}
2008-04-22 09:20:18 -05:00
else {
2004-08-02 09:40:50 -05:00
DBG_ERROR (
( : : rtl : : OString ( " ODbDataSourceAdministrationHelper::implTranslateProperty: invalid property value ( " )
+ = : : rtl : : OString ( translatePropertyId ( _nId ) )
+ = : : rtl : : OString ( " should be no string)! " )
) . getStr ( )
) ;
2008-04-22 09:20:18 -05:00
}
2004-08-02 09:40:50 -05:00
break ;
case TypeClass_BOOLEAN :
2009-10-16 07:16:52 -05:00
if ( implCheckItemType ( _rSet , _nId , SfxBoolItem : : StaticType ( ) ) )
2004-08-02 09:40:50 -05:00
{
sal_Bool bVal = sal_False ;
_rValue > > = bVal ;
2009-10-16 07:16:52 -05:00
_rSet . Put ( SfxBoolItem ( _nId , bVal ) ) ;
}
else if ( implCheckItemType ( _rSet , _nId , OptionalBoolItem : : StaticType ( ) ) )
{
OptionalBoolItem aItem ( _nId ) ;
if ( _rValue . hasValue ( ) )
{
sal_Bool bValue = sal_False ;
_rValue > > = bValue ;
aItem . SetValue ( bValue ) ;
}
else
aItem . ClearValue ( ) ;
_rSet . Put ( aItem ) ;
2004-08-02 09:40:50 -05:00
}
2008-04-22 09:20:18 -05:00
else {
2004-08-02 09:40:50 -05:00
DBG_ERROR (
( : : rtl : : OString ( " ODbDataSourceAdministrationHelper::implTranslateProperty: invalid property value ( " )
+ = : : rtl : : OString ( translatePropertyId ( _nId ) )
+ = : : rtl : : OString ( " should be no boolean)! " )
) . getStr ( )
) ;
2008-04-22 09:20:18 -05:00
}
2004-08-02 09:40:50 -05:00
break ;
case TypeClass_LONG :
2009-10-16 07:16:52 -05:00
if ( implCheckItemType ( _rSet , _nId , SfxInt32Item : : StaticType ( ) ) )
2004-08-02 09:40:50 -05:00
{
sal_Int32 nValue = 0 ;
_rValue > > = nValue ;
2009-10-16 07:16:52 -05:00
_rSet . Put ( SfxInt32Item ( _nId , nValue ) ) ;
2004-08-02 09:40:50 -05:00
}
2008-04-22 09:20:18 -05:00
else {
2004-08-02 09:40:50 -05:00
DBG_ERROR (
( : : rtl : : OString ( " ODbDataSourceAdministrationHelper::implTranslateProperty: invalid property value ( " )
+ = : : rtl : : OString ( translatePropertyId ( _nId ) )
+ = : : rtl : : OString ( " should be no int)! " )
) . getStr ( )
) ;
2008-04-22 09:20:18 -05:00
}
2004-08-02 09:40:50 -05:00
break ;
case TypeClass_SEQUENCE :
2009-10-16 07:16:52 -05:00
if ( implCheckItemType ( _rSet , _nId , OStringListItem : : StaticType ( ) ) )
2004-08-02 09:40:50 -05:00
{
// determine the element type
TypeDescription aTD ( _rValue . getValueType ( ) ) ;
typelib_IndirectTypeDescription * pSequenceTD =
reinterpret_cast < typelib_IndirectTypeDescription * > ( aTD . get ( ) ) ;
DBG_ASSERT ( pSequenceTD & & pSequenceTD - > pType , " ODbDataSourceAdministrationHelper::implTranslateProperty: invalid sequence type! " ) ;
Type aElementType ( pSequenceTD - > pType ) ;
switch ( aElementType . getTypeClass ( ) )
{
case TypeClass_STRING :
{
Sequence < : : rtl : : OUString > aStringList ;
_rValue > > = aStringList ;
2009-10-16 07:16:52 -05:00
_rSet . Put ( OStringListItem ( _nId , aStringList ) ) ;
2004-08-02 09:40:50 -05:00
}
break ;
default :
DBG_ERROR ( " ODbDataSourceAdministrationHelper::implTranslateProperty: unsupported property value type! " ) ;
}
}
2008-04-22 09:20:18 -05:00
else {
2004-08-02 09:40:50 -05:00
DBG_ERROR (
( : : rtl : : OString ( " ODbDataSourceAdministrationHelper::implTranslateProperty: invalid property value ( " )
+ = : : rtl : : OString ( translatePropertyId ( _nId ) )
+ = : : rtl : : OString ( " should be no string sequence)! " )
) . getStr ( )
) ;
2008-04-22 09:20:18 -05:00
}
2004-08-02 09:40:50 -05:00
break ;
case TypeClass_VOID :
2009-10-16 07:16:52 -05:00
_rSet . ClearItem ( _nId ) ;
2004-08-02 09:40:50 -05:00
break ;
default :
DBG_ERROR ( " ODbDataSourceAdministrationHelper::implTranslateProperty: unsupported property value type! " ) ;
}
}
2004-10-27 06:59:37 -05:00
String ODbDataSourceAdministrationHelper : : getDocumentUrl ( SfxItemSet & _rDest )
{
SFX_ITEMSET_GET ( _rDest , pUrlItem , SfxStringItem , DSID_DOCUMENT_URL , sal_True ) ;
OSL_ENSURE ( pUrlItem , " Document URL is NULL. -> GPF! " ) ;
return pUrlItem - > GetValue ( ) ;
}
2004-08-02 09:40:50 -05:00
// -----------------------------------------------------------------------------
void ODbDataSourceAdministrationHelper : : convertUrl ( SfxItemSet & _rDest )
{
2009-07-03 07:24:35 -05:00
: : rtl : : OUString eType = getDatasourceType ( _rDest ) ;
2004-08-02 09:40:50 -05:00
SFX_ITEMSET_GET ( _rDest , pUrlItem , SfxStringItem , DSID_CONNECTURL , sal_True ) ;
SFX_ITEMSET_GET ( _rDest , pTypeCollection , DbuTypeCollectionItem , DSID_TYPECOLLECTION , sal_True ) ;
OSL_ENSURE ( pUrlItem , " Connection URL is NULL. -> GPF! " ) ;
DBG_ASSERT ( pTypeCollection , " ODbAdminDialog::getDatasourceType: invalid items in the source set! " ) ;
2008-10-01 07:28:29 -05:00
: : dbaccess : : ODsnTypeCollection * pCollection = pTypeCollection - > getCollection ( ) ;
2004-08-02 09:40:50 -05:00
DBG_ASSERT ( pCollection , " ODbAdminDialog::getDatasourceType: invalid type collection! " ) ;
USHORT nPortNumberId = 0 ;
sal_Int32 nPortNumber = - 1 ;
String sNewHostName ;
2009-07-03 07:24:35 -05:00
//String sUrl = pCollection->cutPrefix(pUrlItem->GetValue());
2004-08-02 09:40:50 -05:00
String sUrlPart ;
2004-11-22 08:05:55 -06:00
pCollection - > extractHostNamePort ( pUrlItem - > GetValue ( ) , sUrlPart , sNewHostName , nPortNumber ) ;
2009-07-03 07:24:35 -05:00
const : : dbaccess : : DATASOURCE_TYPE eTy = pCollection - > determineType ( eType ) ;
2004-08-02 09:40:50 -05:00
2009-07-03 07:24:35 -05:00
switch ( eTy )
2004-08-02 09:40:50 -05:00
{
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_MYSQL_NATIVE :
case : : dbaccess : : DST_MYSQL_JDBC :
2004-08-02 09:40:50 -05:00
nPortNumberId = DSID_MYSQL_PORTNUMBER ;
break ;
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_ORACLE_JDBC :
2004-08-02 09:40:50 -05:00
nPortNumberId = DSID_ORACLE_PORTNUMBER ;
break ;
2008-10-01 07:28:29 -05:00
case : : dbaccess : : DST_LDAP :
2004-08-02 09:40:50 -05:00
nPortNumberId = DSID_CONN_LDAP_PORTNUMBER ;
break ;
2006-06-19 21:03:42 -05:00
default :
break ;
2004-08-02 09:40:50 -05:00
}
if ( sUrlPart . Len ( ) )
{
2009-07-03 07:24:35 -05:00
if ( eTy = = : : dbaccess : : DST_MYSQL_NATIVE )
2009-02-16 01:31:09 -06:00
{
_rDest . Put ( SfxStringItem ( DSID_DATABASENAME , sUrlPart ) ) ;
}
else
{
2009-07-03 07:24:35 -05:00
String sNewUrl = pCollection - > getPrefix ( eType ) ;
2009-02-16 01:31:09 -06:00
sNewUrl + = sUrlPart ;
_rDest . Put ( SfxStringItem ( DSID_CONNECTURL , sNewUrl ) ) ;
}
2004-08-02 09:40:50 -05:00
}
if ( sNewHostName . Len ( ) )
_rDest . Put ( SfxStringItem ( DSID_CONN_HOSTNAME , sNewHostName ) ) ;
if ( nPortNumber ! = - 1 & & nPortNumberId ! = 0 )
_rDest . Put ( SfxInt32Item ( nPortNumberId , nPortNumber ) ) ;
}
// -----------------------------------------------------------------------------
sal_Bool ODbDataSourceAdministrationHelper : : saveChanges ( const SfxItemSet & _rSource )
{
// put the remembered settings into the property set
Reference < XPropertySet > xDatasource = getCurrentDataSource ( ) ;
if ( ! xDatasource . is ( ) )
return sal_False ;
translateProperties ( _rSource , xDatasource ) ;
return sal_True ;
}
// -----------------------------------------------------------------------------
2005-06-30 10:30:42 -05:00
void ODbDataSourceAdministrationHelper : : setDataSourceOrName ( const Any & _rDataSourceOrName )
2004-08-02 09:40:50 -05:00
{
2005-06-30 10:30:42 -05:00
DBG_ASSERT ( ! m_aDataSourceOrName . hasValue ( ) , " ODbDataSourceAdministrationHelper::setDataSourceOrName: already have one! " ) ;
// hmm. We could reset m_xDatasource/m_xModel, probably, and continue working
m_aDataSourceOrName = _rDataSourceOrName ;
2004-08-02 09:40:50 -05:00
}
2008-10-01 07:28:29 -05:00
//=========================================================================
//= DbuTypeCollectionItem
//=========================================================================
TYPEINIT1 ( DbuTypeCollectionItem , SfxPoolItem ) ;
//-------------------------------------------------------------------------
DbuTypeCollectionItem : : DbuTypeCollectionItem ( sal_Int16 _nWhich , : : dbaccess : : ODsnTypeCollection * _pCollection )
: SfxPoolItem ( _nWhich )
, m_pCollection ( _pCollection )
{
}
//-------------------------------------------------------------------------
DbuTypeCollectionItem : : DbuTypeCollectionItem ( const DbuTypeCollectionItem & _rSource )
: SfxPoolItem ( _rSource )
, m_pCollection ( _rSource . getCollection ( ) )
{
}
//-------------------------------------------------------------------------
int DbuTypeCollectionItem : : operator = = ( const SfxPoolItem & _rItem ) const
{
DbuTypeCollectionItem * pCompare = PTR_CAST ( DbuTypeCollectionItem , & _rItem ) ;
return pCompare & & ( pCompare - > getCollection ( ) = = getCollection ( ) ) ;
}
//-------------------------------------------------------------------------
SfxPoolItem * DbuTypeCollectionItem : : Clone ( SfxItemPool * /*_pPool*/ ) const
{
return new DbuTypeCollectionItem ( * this ) ;
}
2004-08-02 09:40:50 -05:00
//.........................................................................
} // namespace dbaui
//.........................................................................