Files
libreoffice/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx

1220 lines
39 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2012-06-12 22:04:38 +01:00
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
2000-09-18 15:18:56 +00:00
2001-04-12 11:33:30 +00:00
#include <comphelper/sequence.hxx>
2000-09-18 15:18:56 +00:00
#include "ado/ADatabaseMetaDataResultSet.hxx"
#include "ado/ADatabaseMetaDataResultSetMetaData.hxx"
#include <com/sun/star/sdbc/DataType.hpp>
#include <com/sun/star/sdbc/ColumnValue.hpp>
2000-09-18 15:18:56 +00:00
#include <com/sun/star/sdbc/KeyRule.hpp>
#include <com/sun/star/sdbc/ProcedureResult.hpp>
#include <com/sun/star/sdbc/IndexType.hpp>
2000-10-11 09:48:50 +00:00
#include <comphelper/property.hxx>
2000-09-18 15:18:56 +00:00
#include <com/sun/star/lang/DisposedException.hpp>
#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
#include <com/sun/star/sdbc/ResultSetType.hpp>
#include <com/sun/star/sdbc/FetchDirection.hpp>
#include <cppuhelper/typeprovider.hxx>
2001-04-12 11:33:30 +00:00
#include <comphelper/seqstream.hxx>
#include <connectivity/dbexception.hxx>
2000-09-18 15:18:56 +00:00
2001-04-12 11:33:30 +00:00
2000-09-18 15:18:56 +00:00
#include <oledb.h>
2001-05-17 08:15:34 +00:00
using namespace dbtools;
2000-09-18 15:18:56 +00:00
using namespace connectivity::ado;
using namespace cppu;
2001-04-12 11:33:30 +00:00
using namespace ::comphelper;
2000-09-18 15:18:56 +00:00
using namespace ::com::sun::star::lang;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::beans;
using namespace com::sun::star::sdbc;
2001-08-30 12:20:59 +00:00
ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet(ADORecordset* _pRecordSet)
:ODatabaseMetaDataResultSet_BASE(m_aMutex)
,OPropertySetHelper(ODatabaseMetaDataResultSet_BASE::rBHelper)
2012-03-10 18:34:00 +01:00
,m_pRecordSet(_pRecordSet)
2001-08-30 12:20:59 +00:00
,m_aStatement(NULL)
,m_xMetaData(NULL)
2012-03-10 18:38:14 +01:00
,m_nRowPos(0)
,m_bWasNull(sal_False)
2001-08-30 12:20:59 +00:00
,m_bEOF(sal_False)
2012-03-10 18:38:14 +01:00
,m_bOnFirstAfterOpen(sal_False)
2000-09-18 15:18:56 +00:00
{
osl_atomic_increment( &m_refCount );
2000-09-18 15:18:56 +00:00
m_aColMapping.push_back(-1);
if(_pRecordSet)
{
m_pRecordSet->AddRef();
VARIANT_BOOL bIsAtBOF;
m_pRecordSet->get_BOF(&bIsAtBOF);
2001-04-12 11:33:30 +00:00
m_bOnFirstAfterOpen = bIsAtBOF != VARIANT_TRUE;
2000-09-18 15:18:56 +00:00
}
else
m_bOnFirstAfterOpen = sal_False;
osl_atomic_decrement( &m_refCount );
2000-09-18 15:18:56 +00:00
// allocBuffer();
}
2000-09-18 15:18:56 +00:00
ODatabaseMetaDataResultSet::~ODatabaseMetaDataResultSet()
{
if(m_pRecordSet)
m_pRecordSet->Release();
}
void ODatabaseMetaDataResultSet::disposing()
2000-09-18 15:18:56 +00:00
{
OPropertySetHelper::disposing();
::osl::MutexGuard aGuard(m_aMutex);
if(m_pRecordSet)
m_pRecordSet->Close();
m_aStatement = NULL;
m_xMetaData.clear();
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
Any SAL_CALL ODatabaseMetaDataResultSet::queryInterface( const Type & rType ) throw(RuntimeException)
{
Any aRet = OPropertySetHelper::queryInterface(rType);
return aRet.hasValue() ? aRet : ODatabaseMetaDataResultSet_BASE::queryInterface(rType);
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL ODatabaseMetaDataResultSet::getTypes( ) throw(::com::sun::star::uno::RuntimeException)
{
::cppu::OTypeCollection aTypes( cppu::UnoType<com::sun::star::beans::XMultiPropertySet>::get(),
cppu::UnoType<com::sun::star::beans::XFastPropertySet>::get(),
cppu::UnoType<com::sun::star::beans::XPropertySet>::get());
2000-09-18 15:18:56 +00:00
2000-10-11 09:48:50 +00:00
return ::comphelper::concatSequences(aTypes.getTypes(),ODatabaseMetaDataResultSet_BASE::getTypes());
2000-09-18 15:18:56 +00:00
}
void ODatabaseMetaDataResultSet::checkRecordSet() throw(SQLException)
{
if(!m_pRecordSet)
throwFunctionSequenceException(*this);
}
2000-09-18 15:18:56 +00:00
sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::findColumn( const OUString& columnName ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed );
2000-09-18 15:18:56 +00:00
Reference< XResultSetMetaData > xMeta = getMetaData();
sal_Int32 nLen = xMeta->getColumnCount();
sal_Int32 i = 1;
for(;i<=nLen;++i)
{
2001-05-17 08:15:34 +00:00
if(xMeta->isCaseSensitive(i) ? columnName == xMeta->getColumnName(i) :
columnName.equalsIgnoreAsciiCase(xMeta->getColumnName(i)))
return i;
}
::dbtools::throwInvalidColumnException( columnName, *this );
assert(false);
return 0; // Never reached
2000-09-18 15:18:56 +00:00
}
2001-04-12 11:33:30 +00:00
#define BLOCK_SIZE 256
2000-09-18 15:18:56 +00:00
Reference< ::com::sun::star::io::XInputStream > SAL_CALL ODatabaseMetaDataResultSet::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
columnIndex = mapColumn(columnIndex);
2001-07-30 08:11:53 +00:00
WpADOField aField = ADOS::getField(m_pRecordSet,columnIndex);
2001-04-12 11:33:30 +00:00
if((aField.GetAttributes() & adFldLong) == adFldLong)
{
Many spelling fixes: directories a* - g*. Attempt to clean up most but certainly not all the spelling mistakes that found home in OpenOffice through decades. We could probably blame the international nature of the code but it is somewhat shameful that this wasn't done before. (cherry picked from commit a6efc99d19d533fcf53106b6667bafba4d364370) Conflicts: accessibility/bridge/org/openoffice/java/accessibility/AccessibleTextImpl.java accessibility/bridge/org/openoffice/java/accessibility/Component.java accessibility/bridge/org/openoffice/java/accessibility/Container.java accessibility/bridge/org/openoffice/java/accessibility/DescendantManager.java accessibility/bridge/org/openoffice/java/accessibility/Dialog.java accessibility/bridge/org/openoffice/java/accessibility/Frame.java accessibility/bridge/org/openoffice/java/accessibility/List.java accessibility/bridge/org/openoffice/java/accessibility/Menu.java accessibility/bridge/org/openoffice/java/accessibility/Table.java accessibility/bridge/org/openoffice/java/accessibility/Tree.java accessibility/bridge/org/openoffice/java/accessibility/Window.java accessibility/bridge/source/java/WindowsAccessBridgeAdapter.cxx accessibility/inc/accessibility/extended/AccessibleBrowseBoxBase.hxx accessibility/inc/accessibility/extended/AccessibleGridControlBase.hxx accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx accessibility/source/extended/accessibleiconchoicectrlentry.cxx accessibility/source/extended/accessiblelistboxentry.cxx accessibility/source/extended/accessibletablistbox.cxx accessibility/source/extended/accessibletablistboxtable.cxx accessibility/workben/org/openoffice/accessibility/awb/canvas/Canvas.java accessibility/workben/org/openoffice/accessibility/misc/OfficeConnection.java apple_remote/AppleRemote.m autodoc/inc/ary/cpp/c_gate.hxx autodoc/inc/ary/cpp/cp_ce.hxx autodoc/inc/ary/cpp/cp_def.hxx autodoc/inc/ary/cpp/cp_type.hxx autodoc/inc/ary/doc/d_parametrized.hxx autodoc/inc/ary/idl/i_type.hxx autodoc/source/ary/inc/cross_refs.hxx autodoc/source/ary/inc/sorted_idset.hxx autodoc/source/display/html/outfile.hxx autodoc/source/display/html/pagemake.cxx autodoc/source/display/idl/hi_env.hxx autodoc/source/parser/inc/tokens/tokproct.hxx autodoc/source/parser_i/inc/s2_luidl/tokproct.hxx autodoc/source/parser_i/inc/tokens/tkp2.hxx automation/inc/automation/commtypes.hxx automation/inc/automation/simplecm.hxx automation/source/server/recorder.cxx automation/source/server/recorder.hxx automation/source/server/statemnt.cxx automation/source/simplecm/packethandler.hxx automation/source/simplecm/simplecm.cxx avmedia/source/framework/soundhandler.cxx basegfx/inc/basegfx/range/rangeexpander.hxx basic/inc/basic/sbxdef.hxx basic/source/classes/sbunoobj.cxx basic/source/classes/sbxmod.cxx basic/source/comp/dim.cxx basic/source/comp/exprgen.cxx basic/source/runtime/step1.cxx basic/source/runtime/step2.cxx basic/source/sbx/sbxint.cxx basic/source/uno/namecont.cxx basic/workben/mgrtest.cxx bean/com/sun/star/beans/LocalOfficeConnection.java bean/com/sun/star/beans/LocalOfficeWindow.java bean/com/sun/star/comp/beans/LocalOfficeConnection.java bean/com/sun/star/comp/beans/LocalOfficeWindow.java bean/com/sun/star/comp/beans/OOoBean.java bridges/inc/bridges/cpp_uno/bridge.hxx bridges/source/cpp_uno/cc50_solaris_intel/cpp2uno.cxx bridges/source/cpp_uno/cc50_solaris_intel/except.cxx bridges/source/cpp_uno/cc50_solaris_intel/uno2cpp.cxx bridges/source/cpp_uno/cc50_solaris_sparc/cpp2uno.cxx bridges/source/cpp_uno/cc50_solaris_sparc/except.cxx bridges/source/cpp_uno/cc50_solaris_sparc/uno2cpp.cxx bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx bridges/source/cpp_uno/gcc3_macosx_x86-64/uno2cpp.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/cpp2uno.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/except.cxx bridges/source/cpp_uno/gcc3_netbsd_intel/uno2cpp.cxx bridges/source/cpp_uno/gcc3_os2_intel/cpp2uno.cxx bridges/source/cpp_uno/gcc3_os2_intel/except.cxx bridges/source/cpp_uno/gcc3_os2_intel/uno2cpp.cxx bridges/source/cpp_uno/mingw_x86-64/uno2cpp.cxx bridges/source/cpp_uno/msvc_win32_intel/except.cxx bridges/source/cpp_uno/s5abi_macosx_x86-64/except.cxx bridges/source/cpp_uno/shared/component.cxx bridges/source/jni_uno/jni_base.h bridges/source/jni_uno/jni_bridge.cxx bridges/source/jni_uno/jni_java2uno.cxx bridges/source/jni_uno/jni_uno2java.cxx canvas/inc/canvas/base/doublebitmapbase.hxx canvas/inc/canvas/base/floatbitmapbase.hxx canvas/inc/canvas/base/integerbitmapbase.hxx canvas/source/cairo/cairo_canvasbitmap.cxx canvas/source/cairo/cairo_textlayout.cxx chart2/source/controller/dialogs/ObjectNameProvider.cxx chart2/source/view/diagram/VDiagram.cxx chart2/source/view/main/ChartView.cxx cli_ure/source/native/makefile.mk cli_ure/source/uno_bridge/cli_data.cxx codemaker/source/javamaker/javatype.cxx comphelper/inc/comphelper/componentcontext.hxx comphelper/inc/comphelper/interaction.hxx comphelper/inc/comphelper/locale.hxx comphelper/inc/comphelper/string.hxx comphelper/source/container/embeddedobjectcontainer.cxx comphelper/source/misc/accessiblecontexthelper.cxx comphelper/source/misc/asyncnotification.cxx comphelper/source/misc/locale.cxx comphelper/source/misc/mediadescriptor.cxx comphelper/source/misc/numberedcollection.cxx comphelper/source/misc/proxyaggregation.cxx comphelper/source/misc/scopeguard.cxx comphelper/source/misc/sequenceashashmap.cxx configure.in connectivity/source/commontools/parameters.cxx connectivity/source/drivers/dbase/DTable.cxx connectivity/source/drivers/evoab2/NStatement.cxx connectivity/source/drivers/file/FPreparedStatement.cxx connectivity/source/drivers/jdbc/DatabaseMetaData.cxx connectivity/source/inc/flat/ETable.hxx connectivity/source/parse/sqlnode.cxx cosv/inc/cosv/persist.hxx cosv/inc/cosv/ploc_dir.hxx cosv/inc/cosv/tpl/dyn.hxx cppu/source/LogBridge/LogBridge.cxx cppu/source/uno/data.cxx cppuhelper/source/bootstrap.cxx cppuhelper/source/component_context.cxx cppuhelper/source/propshlp.cxx cppuhelper/source/servicefactory.cxx cpputools/source/registercomponent/registercomponent.cxx cui/source/customize/acccfg.cxx cui/source/dialogs/about.cxx cui/source/dialogs/commonlingui.hxx cui/source/dialogs/showcols.cxx cui/source/inc/cuihyperdlg.hxx cui/source/inc/cuitabline.hxx cui/source/options/optsave.src cui/source/tabpages/tpline.cxx cui/source/tabpages/transfrm.cxx dbaccess/source/core/api/CacheSet.cxx dbaccess/source/core/api/KeySet.cxx dbaccess/source/core/api/RowSet.cxx dbaccess/source/core/api/RowSet.hxx dbaccess/source/core/api/RowSetBase.cxx dbaccess/source/core/api/RowSetBase.hxx dbaccess/source/core/api/RowSetCache.cxx dbaccess/source/core/api/querycomposer.cxx dbaccess/source/ext/adabas/Acomponentmodule.hxx dbaccess/source/ui/app/AppControllerDnD.cxx dbaccess/source/ui/app/AppDetailView.cxx dbaccess/source/ui/browser/brwctrlr.cxx dbaccess/source/ui/browser/sbagrid.cxx dbaccess/source/ui/browser/unodatbr.cxx dbaccess/source/ui/dlg/AdabasStat.hxx dbaccess/source/ui/dlg/UserAdmin.cxx dbaccess/source/ui/dlg/directsql.cxx dbaccess/source/ui/dlg/generalpage.hxx dbaccess/source/ui/dlg/tablespage.cxx dbaccess/source/ui/inc/JoinTableView.hxx dbaccess/source/ui/inc/TableController.hxx dbaccess/source/ui/inc/UITools.hxx dbaccess/source/ui/inc/brwctrlr.hxx dbaccess/source/ui/inc/datasourcemap.hxx dbaccess/source/ui/querydesign/JoinTableView.cxx dbaccess/source/ui/querydesign/QueryDesignView.cxx dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx dbaccess/source/ui/querydesign/TableWindow.cxx dbaccess/source/ui/querydesign/querycontroller.cxx dbaccess/source/ui/relationdesign/RelationTableView.cxx dbaccess/source/ui/tabledesign/TableController.cxx desktop/source/app/app.cxx desktop/source/app/appinit.cxx desktop/source/app/langselect.cxx desktop/source/app/officeipcthread.cxx desktop/source/deployment/manager/dp_extensionmanager.cxx desktop/source/deployment/misc/dp_misc.cxx desktop/source/deployment/misc/dp_resource.cxx desktop/source/deployment/registry/dp_backend.cxx desktop/source/deployment/registry/package/dp_package.cxx desktop/source/migration/cfgfilter.cxx desktop/source/migration/migration.cxx desktop/source/splash/splash.cxx desktop/win32/source/QuickStart/QuickStart.cpp desktop/win32/source/setup/setup.cpp drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx dtrans/source/win32/clipb/MtaOleClipb.hxx dtrans/source/win32/clipb/WinClipbImpl.cxx editeng/source/editeng/editview.cxx editeng/source/editeng/impedit2.cxx editeng/source/editeng/impedit3.cxx editeng/source/editeng/impedit4.cxx editeng/source/editeng/textconv.hxx editeng/source/misc/unolingu.cxx embeddedobj/source/commonembedding/persistence.cxx embeddedobj/source/general/dummyobject.cxx embeddedobj/source/msole/olecomponent.cxx embeddedobj/source/msole/olepersist.cxx embeddedobj/test/Container1/NativeView.java extensions/source/bibliography/framectr.cxx extensions/source/macosx/spotlight/OOoContentDataParser.m extensions/source/macosx/spotlight/unzip.h extensions/source/macosx/spotlight/unzip.m extensions/source/oooimprovement/myconfigurationhelper.hxx extensions/source/propctrlr/eventhandler.cxx extensions/source/propctrlr/formcomponenthandler.cxx extensions/source/propctrlr/pcrcomponentcontext.hxx extensions/source/scanner/twain.cxx extensions/source/update/check/updatecheckconfig.hxx external/mingwheaders/mingw_atl_headers.patch extras/source/misc_config/wizard/web/layouts/source.xml.xsl fileaccess/source/FileAccess.cxx filter/inc/filter/msfilter/msocximex.hxx filter/inc/filter/msfilter/svxmsbas.hxx filter/qa/complex/filter/detection/typeDetection/Helper.java filter/source/config/cache/basecontainer.cxx filter/source/config/cache/cacheitem.hxx filter/source/config/cache/contenthandlerfactory.cxx filter/source/config/cache/filtercache.cxx filter/source/config/cache/filtercache.hxx filter/source/config/cache/filterfactory.cxx filter/source/config/cache/frameloaderfactory.cxx filter/source/config/cache/querytokenizer.hxx filter/source/config/cache/typedetection.cxx filter/source/config/cache/typedetection.hxx filter/source/config/cache/versions.hxx filter/source/config/fragments/makefile.mk filter/source/config/tools/merge/pyAltFCFGMerge filter/source/flash/swfwriter.cxx filter/source/flash/swfwriter1.cxx filter/source/msfilter/msdffimp.cxx filter/source/msfilter/msocximex.cxx filter/source/msfilter/msvbahelper.cxx filter/source/msfilter/svxmsbas.cxx filter/source/xmlfilterdetect/filterdetect.cxx filter/source/xslt/import/uof2/uof2odf.xsl filter/source/xslt/odf2xhtml/export/xhtml/body.xsl filter/source/xsltfilter/com/sun/star/comp/xsltfilter/Base64.java forms/source/xforms/convert.hxx forms/source/xforms/model.cxx fpicker/source/aqua/SalAquaFilePicker.mm fpicker/source/office/fpinteraction.cxx fpicker/source/unx/gnome/SalGtkFolderPicker.cxx fpicker/source/unx/kde4/KDE4FilePicker.cxx fpicker/source/win32/filepicker/PreviewCtrl.cxx fpicker/source/win32/filepicker/PreviewCtrl.hxx fpicker/source/win32/filepicker/VistaFilePicker.cxx fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx fpicker/source/win32/filepicker/helppopupwindow.hxx fpicker/source/win32/folderpicker/MtaFop.hxx framework/inc/classes/droptargetlistener.hxx framework/inc/classes/filtercache.hxx framework/inc/classes/filtercachedata.hxx framework/inc/classes/protocolhandlercache.hxx framework/inc/classes/servicemanager.hxx framework/inc/commands.h framework/inc/dispatch/basedispatcher.hxx framework/inc/dispatch/blankdispatcher.hxx framework/inc/dispatch/closedispatcher.hxx framework/inc/dispatch/createdispatcher.hxx framework/inc/dispatch/dispatchprovider.hxx framework/inc/dispatch/helpagentdispatcher.hxx framework/inc/dispatch/mailtodispatcher.hxx framework/inc/dispatch/menudispatcher.hxx framework/inc/dispatch/oxt_handler.hxx framework/inc/dispatch/popupmenudispatcher.hxx framework/inc/dispatch/selfdispatcher.hxx framework/inc/dispatch/servicehandler.hxx framework/inc/dispatch/startmoduledispatcher.hxx framework/inc/dispatch/systemexec.hxx framework/inc/helper/fixeddocumentproperties.hxx framework/inc/helper/ocomponentaccess.hxx framework/inc/helper/oframes.hxx framework/inc/helper/otasksenumeration.hxx framework/inc/helper/persistentwindowstate.hxx framework/inc/helper/statusindicator.hxx framework/inc/helper/statusindicatorfactory.hxx framework/inc/helper/tagwindowasmodified.hxx framework/inc/helper/titlebarupdate.hxx framework/inc/helper/vclstatusindicator.hxx framework/inc/interaction/quietinteraction.hxx framework/inc/jobs/helponstartup.hxx framework/inc/jobs/job.hxx framework/inc/jobs/jobdata.hxx framework/inc/jobs/jobexecutor.hxx framework/inc/loadstate.h framework/inc/macros/debug/assertion.hxx framework/inc/macros/debug/event.hxx framework/inc/macros/debug/filterdbg.hxx framework/inc/macros/debug/memorymeasure.hxx framework/inc/macros/debug/timemeasure.hxx framework/inc/macros/xserviceinfo.hxx framework/inc/queries.h framework/inc/recording/dispatchrecordersupplier.hxx framework/inc/services/autorecovery.hxx framework/inc/services/backingcomp.hxx framework/inc/services/contenthandlerfactory.hxx framework/inc/services/desktop.hxx framework/inc/services/detectorfactory.hxx framework/inc/services/frame.hxx framework/inc/services/frameloaderfactory.hxx framework/inc/services/layoutmanager.hxx framework/inc/services/license.hxx framework/inc/services/logindialog.hxx framework/inc/services/modulemanager.hxx framework/inc/services/pathsettings.hxx framework/inc/services/pluginframe.hxx framework/inc/services/substitutepathvars.hxx framework/inc/services/task.hxx framework/inc/services/taskcreatorsrv.hxx framework/inc/stdtypes.h framework/inc/threadhelp/fairrwlock.hxx framework/inc/threadhelp/inoncopyable.h framework/inc/threadhelp/itransactionmanager.h framework/inc/threadhelp/lockhelper.hxx framework/inc/threadhelp/readguard.hxx framework/inc/threadhelp/resetableguard.hxx framework/inc/threadhelp/transactionguard.hxx framework/inc/threadhelp/writeguard.hxx framework/inc/uifactory/uielementfactorymanager.hxx framework/inc/xml/acceleratorconfigurationreader.hxx framework/qa/complex/dispatches/checkdispatchapi.java framework/qa/complex/framework/autosave/AutoSave.java framework/qa/complex/framework/autosave/Protocol.java framework/qa/complex/framework/recovery/RecoveryTest.java framework/qa/complex/loadAllDocuments/StreamSimulator.java framework/source/accelerators/acceleratorconfiguration.cxx framework/source/accelerators/acceleratorexecute.cxx framework/source/accelerators/acceleratorexecute.hxx framework/source/accelerators/keymapping.cxx framework/source/accelerators/presethandler.cxx framework/source/application/framework.cxx framework/source/application/login.cxx framework/source/classes/framecontainer.cxx framework/source/classes/menumanager.cxx framework/source/classes/taskcreator.cxx framework/source/dispatch/closedispatcher.cxx framework/source/dispatch/dispatchprovider.cxx framework/source/dispatch/helpagentdispatcher.cxx framework/source/dispatch/interceptionhelper.cxx framework/source/dispatch/mailtodispatcher.cxx framework/source/dispatch/menudispatcher.cxx framework/source/dispatch/oxt_handler.cxx framework/source/dispatch/servicehandler.cxx framework/source/fwe/classes/framelistanalyzer.cxx framework/source/fwe/dispatch/interaction.cxx framework/source/fwe/helper/titlehelper.cxx framework/source/fwe/helper/undomanagerhelper.cxx framework/source/fwe/xml/eventsdocumenthandler.cxx framework/source/fwe/xml/statusbardocumenthandler.cxx framework/source/fwe/xml/toolboxdocumenthandler.cxx framework/source/fwi/classes/protocolhandlercache.cxx framework/source/fwi/threadhelp/lockhelper.cxx framework/source/fwi/threadhelp/transactionmanager.cxx framework/source/helper/persistentwindowstate.cxx framework/source/helper/statusindicatorfactory.cxx framework/source/helper/vclstatusindicator.cxx framework/source/inc/accelerators/acceleratorcache.hxx framework/source/inc/accelerators/acceleratorconfiguration.hxx framework/source/inc/accelerators/presethandler.hxx framework/source/inc/accelerators/storageholder.hxx framework/source/inc/loadenv/actionlockguard.hxx framework/source/inc/loadenv/loadenv.hxx framework/source/inc/loadenv/loadenvexception.hxx framework/source/inc/pattern/frame.hxx framework/source/inc/pattern/storages.hxx framework/source/inc/pattern/window.hxx framework/source/jobs/helponstartup.cxx framework/source/jobs/job.cxx framework/source/jobs/jobdata.cxx framework/source/jobs/jobdispatch.cxx framework/source/jobs/jobresult.cxx framework/source/jobs/joburl.cxx framework/source/jobs/shelljob.cxx framework/source/loadenv/loadenv.cxx framework/source/services/autorecovery.cxx framework/source/services/backingwindow.cxx framework/source/services/desktop.cxx framework/source/services/frame.cxx framework/source/services/modulemanager.cxx framework/source/services/pathsettings.cxx framework/source/services/substitutepathvars.cxx framework/source/uiconfiguration/moduleuicfgsupplier.cxx framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx framework/source/uiconfiguration/uicategorydescription.cxx framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx framework/source/uiconfiguration/windowstateconfiguration.cxx framework/source/uielement/uicommanddescription.cxx framework/source/unotypes/fwk.xml framework/source/xml/imagesdocumenthandler.cxx framework/test/test.cxx framework/test/test_componentenumeration.bas framework/test/test_statusindicatorfactory.bas framework/test/threadtest.cxx framework/test/threadtest/threadtest.cxx framework/test/typecfg/cfgview.cxx framework/test/typecfg/xml2xcd.cxx include/basegfx/polygon/b2dpolygon.hxx include/canvas/base/graphicdevicebase.hxx include/canvas/canvastools.hxx include/comphelper/configurationhelper.hxx include/comphelper/embeddedobjectcontainer.hxx include/comphelper/propagg.hxx include/comphelper/sequenceashashmap.hxx include/connectivity/sqlerror.hxx include/connectivity/sqlnode.hxx include/cppuhelper/propshlp.hxx include/editeng/AccessibleContextBase.hxx include/framework/framelistanalyzer.hxx sfx2/source/dialog/backingcomp.cxx vcl/unx/gtk/fpicker/SalGtkFilePicker.cxx Change-Id: I2618bf83c0e30f68f23ff25f6eb466df04d34c6d
2014-04-29 19:05:05 +00:00
//Copy the data only up to the Actual Size of Field.
2001-04-12 11:33:30 +00:00
sal_Int32 nSize = aField.GetActualSize();
Sequence<sal_Int8> aData(nSize);
long index = 0;
while(index < nSize)
{
m_aValue = aField.GetChunk(BLOCK_SIZE);
if(m_aValue.isNull())
break;
UCHAR chData;
for(long index2 = 0;index2 < BLOCK_SIZE;++index2)
{
HRESULT hr = ::SafeArrayGetElement(m_aValue.parray,&index2,&chData);
if(SUCCEEDED(hr))
{
//Take BYTE by BYTE and advance Memory Location
aData.getArray()[index++] = chData;
}
else
break;
}
}
return index ? Reference< ::com::sun::star::io::XInputStream >(new SequenceInputStream(aData)) : Reference< ::com::sun::star::io::XInputStream >();
}
// else we ask for a bytesequence
aField.get_Value(m_aValue);
if(m_aValue.isNull())
return NULL;
return new SequenceInputStream(m_aValue);
2000-09-18 15:18:56 +00:00
}
Reference< ::com::sun::star::io::XInputStream > SAL_CALL ODatabaseMetaDataResultSet::getCharacterStream( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::dbtools::throwFeatureNotImplementedSQLException( "XRow::getCharacterStream", *this );
2000-09-18 15:18:56 +00:00
return NULL;
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
if ( !m_aValueRange.empty() && columnIndex == 11 && (m_aValueRangeIter = m_aValueRange.find(columnIndex)) != m_aValueRange.end() )
{
getValue(2);
if ( static_cast<sal_Int16>(m_aValue) != adCurrency )
return sal_False;
}
2001-07-30 08:11:53 +00:00
return getValue(columnIndex);
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
sal_Int8 SAL_CALL ODatabaseMetaDataResultSet::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-07-30 08:11:53 +00:00
getValue(columnIndex);
2000-09-18 15:18:56 +00:00
columnIndex = mapColumn(columnIndex);
2001-07-30 08:11:53 +00:00
2001-04-12 11:33:30 +00:00
if(m_aValue.isNull())
return 0;
if ( !m_aValueRange.empty() && (m_aValueRangeIter = m_aValueRange.find(columnIndex)) != m_aValueRange.end())
2001-04-12 11:33:30 +00:00
return (sal_Int8)(*m_aValueRangeIter).second[(sal_Int32)m_aValue];
2000-09-18 15:18:56 +00:00
else if(m_aStrValueRange.size() && (m_aStrValueRangeIter = m_aStrValueRange.find(columnIndex)) != m_aStrValueRange.end())
2001-04-12 11:33:30 +00:00
return (sal_Int8)(*m_aStrValueRangeIter).second[m_aValue];
2000-09-18 15:18:56 +00:00
return m_aValue;
}
2000-09-18 15:18:56 +00:00
Sequence< sal_Int8 > SAL_CALL ODatabaseMetaDataResultSet::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
2001-07-30 08:11:53 +00:00
return getValue(columnIndex);
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
::com::sun::star::util::Date SAL_CALL ODatabaseMetaDataResultSet::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
2001-07-30 08:11:53 +00:00
return getValue(columnIndex);
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
double SAL_CALL ODatabaseMetaDataResultSet::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
2001-07-30 08:11:53 +00:00
return getValue(columnIndex);
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
float SAL_CALL ODatabaseMetaDataResultSet::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
2001-07-30 08:11:53 +00:00
return getValue(columnIndex);
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
2001-07-30 08:11:53 +00:00
getValue(columnIndex);
2000-09-18 15:18:56 +00:00
columnIndex = mapColumn(columnIndex);
2001-04-12 11:33:30 +00:00
if(m_aValue.isNull())
return 0;
2000-09-18 15:18:56 +00:00
if(m_aValueRange.size() && (m_aValueRangeIter = m_aValueRange.find(columnIndex)) != m_aValueRange.end())
return (*m_aValueRangeIter).second[(sal_Int32)m_aValue];
else if(m_aStrValueRange.size() && (m_aStrValueRangeIter = m_aStrValueRange.find(columnIndex)) != m_aStrValueRange.end())
return (*m_aStrValueRangeIter).second[m_aValue];
2001-04-12 11:33:30 +00:00
2000-09-18 15:18:56 +00:00
return m_aValue;
}
2000-09-18 15:18:56 +00:00
sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getRow( ) throw(SQLException, RuntimeException)
{
::dbtools::throwFeatureNotImplementedSQLException( "XResultSet::getRow", *this );
2000-09-18 15:18:56 +00:00
return 0;
}
2000-09-18 15:18:56 +00:00
sal_Int64 SAL_CALL ODatabaseMetaDataResultSet::getLong( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::dbtools::throwFeatureNotImplementedSQLException( "XRow::getLong", *this );
2000-09-18 15:18:56 +00:00
return sal_Int64(0);
}
2000-09-18 15:18:56 +00:00
Reference< XResultSetMetaData > SAL_CALL ODatabaseMetaDataResultSet::getMetaData( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
if(!m_xMetaData.is())
m_xMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
return m_xMetaData;
}
Reference< XArray > SAL_CALL ODatabaseMetaDataResultSet::getArray( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::dbtools::throwFeatureNotImplementedSQLException( "XRow::getRow", *this );
2000-09-18 15:18:56 +00:00
return NULL;
}
2000-09-18 15:18:56 +00:00
Reference< XClob > SAL_CALL ODatabaseMetaDataResultSet::getClob( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::dbtools::throwFeatureNotImplementedSQLException( "XRow::getRow", *this );
2000-09-18 15:18:56 +00:00
return NULL;
}
Reference< XBlob > SAL_CALL ODatabaseMetaDataResultSet::getBlob( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::dbtools::throwFeatureNotImplementedSQLException( "XRow::getRow", *this );
2000-09-18 15:18:56 +00:00
return NULL;
}
2000-09-18 15:18:56 +00:00
Reference< XRef > SAL_CALL ODatabaseMetaDataResultSet::getRef( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::dbtools::throwFeatureNotImplementedSQLException( "XRow::getRow", *this );
2000-09-18 15:18:56 +00:00
return NULL;
}
2000-09-18 15:18:56 +00:00
Any SAL_CALL ODatabaseMetaDataResultSet::getObject( sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& /*typeMap*/ ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
columnIndex = mapColumn(columnIndex);
return Any();
}
2000-09-18 15:18:56 +00:00
sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-07-30 08:11:53 +00:00
getValue(columnIndex);
2000-09-18 15:18:56 +00:00
columnIndex = mapColumn(columnIndex);
2001-04-12 11:33:30 +00:00
if(m_aValue.isNull())
return 0;
2000-09-18 15:18:56 +00:00
if(m_aValueRange.size() && (m_aValueRangeIter = m_aValueRange.find(columnIndex)) != m_aValueRange.end())
2001-04-12 11:33:30 +00:00
return (sal_Int16)(*m_aValueRangeIter).second[(sal_Int32)m_aValue];
2000-09-18 15:18:56 +00:00
else if(m_aStrValueRange.size() && (m_aStrValueRangeIter = m_aStrValueRange.find(columnIndex)) != m_aStrValueRange.end())
2001-04-12 11:33:30 +00:00
return (sal_Int16)(*m_aStrValueRangeIter).second[m_aValue];
2000-09-18 15:18:56 +00:00
return m_aValue;
}
2000-09-18 15:18:56 +00:00
OUString SAL_CALL ODatabaseMetaDataResultSet::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
2000-09-18 15:18:56 +00:00
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
2001-07-30 08:11:53 +00:00
getValue(columnIndex);
2000-09-18 15:18:56 +00:00
columnIndex = mapColumn(columnIndex);
2001-04-12 11:33:30 +00:00
if(m_aValue.isNull())
return OUString();
2000-09-18 15:18:56 +00:00
if(m_aIntValueRange.size() && (m_aIntValueRangeIter = m_aIntValueRange.find(columnIndex)) != m_aIntValueRange.end())
return (*m_aIntValueRangeIter).second[m_aValue];
2001-04-12 11:33:30 +00:00
2000-09-18 15:18:56 +00:00
return m_aValue;
}
2000-09-18 15:18:56 +00:00
::com::sun::star::util::Time SAL_CALL ODatabaseMetaDataResultSet::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
2001-07-30 08:11:53 +00:00
return getValue(columnIndex);
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
::com::sun::star::util::DateTime SAL_CALL ODatabaseMetaDataResultSet::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
2001-07-30 08:11:53 +00:00
return getValue(columnIndex);
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isAfterLast( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
2001-04-12 11:33:30 +00:00
VARIANT_BOOL bIsAtEOF;
2000-09-18 15:18:56 +00:00
m_pRecordSet->get_EOF(&bIsAtEOF);
2001-04-12 11:33:30 +00:00
return bIsAtEOF == VARIANT_TRUE;
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isFirst( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
return m_nRowPos == 1;
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isLast( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
return sal_True;
}
2000-09-18 15:18:56 +00:00
void SAL_CALL ODatabaseMetaDataResultSet::beforeFirst( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
if(first())
previous();
}
2000-09-18 15:18:56 +00:00
void SAL_CALL ODatabaseMetaDataResultSet::afterLast( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
if(last())
next();
m_bEOF = sal_True;
}
2000-09-18 15:18:56 +00:00
void SAL_CALL ODatabaseMetaDataResultSet::close( ) throw(SQLException, RuntimeException)
{
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
2000-09-18 15:18:56 +00:00
}
dispose();
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::first( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
2000-09-18 15:18:56 +00:00
if(!m_pRecordSet)
return sal_False;
sal_Bool bRet = SUCCEEDED(m_pRecordSet->MoveFirst());
if ( bRet )
2000-09-18 15:18:56 +00:00
m_nRowPos = 1;
return bRet;
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::last( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed );
2000-09-18 15:18:56 +00:00
return m_pRecordSet && SUCCEEDED(m_pRecordSet->MoveLast()) ? sal_True : sal_False;
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::absolute( sal_Int32 row ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
2000-09-18 15:18:56 +00:00
if(first())
{
OLEVariant aEmpty;
aEmpty.setNoArg();
sal_Bool bRet = SUCCEEDED(m_pRecordSet->Move(row,aEmpty));
if(bRet)
m_nRowPos = row;
return bRet;
}
return sal_False;
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::relative( sal_Int32 row ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
2000-09-18 15:18:56 +00:00
if(!m_pRecordSet)
return sal_False;
OLEVariant aEmpty;
aEmpty.setNoArg();
sal_Bool bRet = SUCCEEDED(m_pRecordSet->Move(row,aEmpty));
if(bRet)
m_nRowPos += row;
return bRet;
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::previous( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
2000-09-18 15:18:56 +00:00
if(!m_pRecordSet)
return sal_False;
sal_Bool bRet = SUCCEEDED(m_pRecordSet->MovePrevious());
if(bRet)
--m_nRowPos;
return bRet;
}
2000-09-18 15:18:56 +00:00
Reference< XInterface > SAL_CALL ODatabaseMetaDataResultSet::getStatement( ) throw(SQLException, RuntimeException)
{
return m_aStatement.get();
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowDeleted( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
RecordStatusEnum eRec;
m_pRecordSet->get_Status((sal_Int32*)&eRec);
return (eRec & adRecDeleted) == adRecDeleted;
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowInserted( ) throw(SQLException, RuntimeException)
{ ::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
RecordStatusEnum eRec;
m_pRecordSet->get_Status((sal_Int32*)&eRec);
return (eRec & adRecNew) == adRecNew;
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowUpdated( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
RecordStatusEnum eRec;
m_pRecordSet->get_Status((sal_Int32*)&eRec);
return (eRec & adRecModified) == adRecModified;
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isBeforeFirst( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
2000-09-18 15:18:56 +00:00
if(!m_pRecordSet)
return sal_True;
2001-04-12 11:33:30 +00:00
VARIANT_BOOL bIsAtBOF;
2000-09-18 15:18:56 +00:00
m_pRecordSet->get_BOF(&bIsAtBOF);
2001-04-12 11:33:30 +00:00
return bIsAtBOF == VARIANT_TRUE;
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::next( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
2000-09-18 15:18:56 +00:00
if(!m_pRecordSet)
return sal_False;
if(m_bOnFirstAfterOpen)
{
m_bOnFirstAfterOpen = sal_False;
return sal_True;
}
else
return SUCCEEDED(m_pRecordSet->MoveNext());
}
2000-09-18 15:18:56 +00:00
sal_Bool SAL_CALL ODatabaseMetaDataResultSet::wasNull( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
return m_aValue.isNull();
}
2000-09-18 15:18:56 +00:00
void SAL_CALL ODatabaseMetaDataResultSet::refreshRow( ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
m_pRecordSet->Resync(adAffectCurrent,adResyncAllValues);
}
2000-09-18 15:18:56 +00:00
void SAL_CALL ODatabaseMetaDataResultSet::cancel( ) throw(RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
2001-05-17 06:30:42 +00:00
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
2000-09-18 15:18:56 +00:00
m_pRecordSet->Cancel();
}
2000-09-18 15:18:56 +00:00
void SAL_CALL ODatabaseMetaDataResultSet::clearWarnings( ) throw(SQLException, RuntimeException)
{
}
2000-09-18 15:18:56 +00:00
Any SAL_CALL ODatabaseMetaDataResultSet::getWarnings( ) throw(SQLException, RuntimeException)
{
return Any();
}
2000-09-18 15:18:56 +00:00
sal_Int32 ODatabaseMetaDataResultSet::getResultSetConcurrency() const
throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
2000-09-18 15:18:56 +00:00
{
return ResultSetConcurrency::READ_ONLY;
}
2000-09-18 15:18:56 +00:00
sal_Int32 ODatabaseMetaDataResultSet::getResultSetType() const
throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
2000-09-18 15:18:56 +00:00
{
return ResultSetType::FORWARD_ONLY;
}
2000-09-18 15:18:56 +00:00
sal_Int32 ODatabaseMetaDataResultSet::getFetchDirection() const
throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
2000-09-18 15:18:56 +00:00
{
return FetchDirection::FORWARD;
}
2000-09-18 15:18:56 +00:00
sal_Int32 ODatabaseMetaDataResultSet::getFetchSize() const
throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
2000-09-18 15:18:56 +00:00
{
sal_Int32 nValue=-1;
if(m_pRecordSet)
m_pRecordSet->get_CacheSize(&nValue);
return nValue;
}
OUString ODatabaseMetaDataResultSet::getCursorName() const
throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
2000-09-18 15:18:56 +00:00
{
return OUString();
2000-09-18 15:18:56 +00:00
}
void ODatabaseMetaDataResultSet::setFetchDirection(sal_Int32 /*_par0*/)
throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
2000-09-18 15:18:56 +00:00
{
::dbtools::throwFeatureNotImplementedSQLException( "ResultSet::FetchDirection", *this );
2000-09-18 15:18:56 +00:00
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setFetchSize(sal_Int32 _par0)
throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
2000-09-18 15:18:56 +00:00
{
if(m_pRecordSet)
m_pRecordSet->put_CacheSize(_par0);
}
2000-09-18 15:18:56 +00:00
::cppu::IPropertyArrayHelper* ODatabaseMetaDataResultSet::createArrayHelper( ) const
{
Sequence< com::sun::star::beans::Property > aProps(5);
com::sun::star::beans::Property* pProperties = aProps.getArray();
sal_Int32 nPos = 0;
pProperties[nPos++] = ::com::sun::star::beans::Property(::connectivity::OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_CURSORNAME),
PROPERTY_ID_CURSORNAME, cppu::UnoType<OUString>::get(), 0);
pProperties[nPos++] = ::com::sun::star::beans::Property(::connectivity::OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FETCHDIRECTION),
PROPERTY_ID_FETCHDIRECTION, cppu::UnoType<sal_Int32>::get(), 0);
pProperties[nPos++] = ::com::sun::star::beans::Property(::connectivity::OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FETCHSIZE),
PROPERTY_ID_FETCHSIZE, cppu::UnoType<sal_Int32>::get(), 0);
pProperties[nPos++] = ::com::sun::star::beans::Property(::connectivity::OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_RESULTSETCONCURRENCY),
PROPERTY_ID_RESULTSETCONCURRENCY, cppu::UnoType<sal_Int32>::get(), 0);
pProperties[nPos++] = ::com::sun::star::beans::Property(::connectivity::OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_RESULTSETTYPE),
PROPERTY_ID_RESULTSETTYPE, cppu::UnoType<sal_Int32>::get(), 0);
2000-09-18 15:18:56 +00:00
return new ::cppu::OPropertyArrayHelper(aProps);
}
2000-09-18 15:18:56 +00:00
::cppu::IPropertyArrayHelper & ODatabaseMetaDataResultSet::getInfoHelper()
{
return *const_cast<ODatabaseMetaDataResultSet*>(this)->getArrayHelper();
}
2000-09-18 15:18:56 +00:00
sal_Bool ODatabaseMetaDataResultSet::convertFastPropertyValue(
Any & rConvertedValue,
Any & rOldValue,
sal_Int32 nHandle,
const Any& rValue )
throw (::com::sun::star::lang::IllegalArgumentException)
{
switch(nHandle)
{
case PROPERTY_ID_CURSORNAME:
case PROPERTY_ID_RESULTSETCONCURRENCY:
case PROPERTY_ID_RESULTSETTYPE:
throw ::com::sun::star::lang::IllegalArgumentException();
case PROPERTY_ID_FETCHDIRECTION:
2000-10-11 09:48:50 +00:00
return ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, getFetchDirection());
2000-09-18 15:18:56 +00:00
case PROPERTY_ID_FETCHSIZE:
2000-10-11 09:48:50 +00:00
return ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, getFetchSize());
2000-09-18 15:18:56 +00:00
default:
;
}
return sal_False;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setFastPropertyValue_NoBroadcast(
sal_Int32 nHandle,
const Any& /*rValue*/
2000-09-18 15:18:56 +00:00
)
throw (Exception)
{
switch(nHandle)
{
case PROPERTY_ID_CURSORNAME:
case PROPERTY_ID_RESULTSETCONCURRENCY:
case PROPERTY_ID_RESULTSETTYPE:
case PROPERTY_ID_FETCHDIRECTION:
case PROPERTY_ID_FETCHSIZE:
throw Exception();
default:
OSL_FAIL("setFastPropertyValue_NoBroadcast: Illegal handle value!");
2000-09-18 15:18:56 +00:00
}
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::getFastPropertyValue(
Any& rValue,
sal_Int32 nHandle
) const
{
switch(nHandle)
{
case PROPERTY_ID_CURSORNAME:
rValue <<= getCursorName();
break;
case PROPERTY_ID_RESULTSETCONCURRENCY:
rValue <<= getResultSetConcurrency();
break;
case PROPERTY_ID_RESULTSETTYPE:
rValue <<= getResultSetType();
break;
case PROPERTY_ID_FETCHDIRECTION:
rValue <<= getFetchDirection();
break;
case PROPERTY_ID_FETCHSIZE:
rValue <<= getFetchSize();
break;
}
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setProceduresMap()
{
for(sal_Int32 i=1;i<4;i++)
m_aColMapping.push_back(i);
m_aColMapping.push_back(5);
m_aColMapping.push_back(7);
m_aColMapping.push_back(8);
m_aColMapping.push_back(6);
m_aColMapping.push_back(4);
TInt2IntMap aMap;
2000-09-18 15:18:56 +00:00
aMap[DB_PT_UNKNOWN] = ProcedureResult::UNKNOWN;
aMap[DB_PT_PROCEDURE] = ProcedureResult::NONE;
aMap[DB_PT_FUNCTION] = ProcedureResult::RETURN;
m_aValueRange[4] = aMap;
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setProceduresMap();
m_xMetaData = pMetaData;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setCatalogsMap()
{
m_aColMapping.push_back(1);
m_xMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setSchemasMap()
{
m_aColMapping.push_back(2);
m_xMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setColumnPrivilegesMap()
{
m_aColMapping.push_back(3);
m_aColMapping.push_back(4);
m_aColMapping.push_back(5);
m_aColMapping.push_back(6);
m_aColMapping.push_back(2);
m_aColMapping.push_back(9);
m_aColMapping.push_back(10);
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setColumnPrivilegesMap();
m_xMetaData = pMetaData;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setColumnsMap()
{
for(sal_Int32 i=1;i<5;++i)
m_aColMapping.push_back(i);
m_aColMapping.push_back(12);
m_aColMapping.push_back(12); // is used as TYPE_NAME
m_aColMapping.push_back(14);
m_aColMapping.push_back(6);
m_aColMapping.push_back(17);
m_aColMapping.push_back(18);
m_aColMapping.push_back(11);
m_aColMapping.push_back(29);
m_aColMapping.push_back(9);
m_aColMapping.push_back(18);
m_aColMapping.push_back(18);
m_aColMapping.push_back(15);
m_aColMapping.push_back(7);
m_aColMapping.push_back(11);
TInt2IntMap aMap;
2001-04-12 11:33:30 +00:00
aMap[adEmpty] = ADOS::MapADOType2Jdbc(adEmpty);
aMap[adTinyInt] = ADOS::MapADOType2Jdbc(adTinyInt);
aMap[adSmallInt] = ADOS::MapADOType2Jdbc(adSmallInt);
aMap[adInteger] = ADOS::MapADOType2Jdbc(adInteger);
aMap[adBigInt] = ADOS::MapADOType2Jdbc(adBigInt);
aMap[adUnsignedTinyInt] = ADOS::MapADOType2Jdbc(adUnsignedTinyInt);
aMap[adUnsignedSmallInt]= ADOS::MapADOType2Jdbc(adUnsignedSmallInt);
aMap[adUnsignedInt] = ADOS::MapADOType2Jdbc(adUnsignedInt);
aMap[adUnsignedBigInt] = ADOS::MapADOType2Jdbc(adUnsignedBigInt);
aMap[adSingle] = ADOS::MapADOType2Jdbc(adSingle);
aMap[adDouble] = ADOS::MapADOType2Jdbc(adDouble);
aMap[adCurrency] = ADOS::MapADOType2Jdbc(adCurrency);
aMap[adDecimal] = ADOS::MapADOType2Jdbc(adDecimal);
aMap[adNumeric] = ADOS::MapADOType2Jdbc(adNumeric);
aMap[adBoolean] = ADOS::MapADOType2Jdbc(adBoolean);
aMap[adError] = ADOS::MapADOType2Jdbc(adError);
aMap[adUserDefined] = ADOS::MapADOType2Jdbc(adUserDefined);
aMap[adVariant] = ADOS::MapADOType2Jdbc(adVariant);
aMap[adIDispatch] = ADOS::MapADOType2Jdbc(adIDispatch);
aMap[adIUnknown] = ADOS::MapADOType2Jdbc(adIUnknown);
aMap[adGUID] = ADOS::MapADOType2Jdbc(adGUID);
aMap[adDate] = ADOS::MapADOType2Jdbc(adDate);
aMap[adDBDate] = ADOS::MapADOType2Jdbc(adDBDate);
aMap[adDBTime] = ADOS::MapADOType2Jdbc(adDBTime);
aMap[adDBTimeStamp] = ADOS::MapADOType2Jdbc(adDBTimeStamp);
aMap[adBSTR] = ADOS::MapADOType2Jdbc(adBSTR);
aMap[adChar] = ADOS::MapADOType2Jdbc(adChar);
aMap[adVarChar] = ADOS::MapADOType2Jdbc(adVarChar);
aMap[adLongVarChar] = ADOS::MapADOType2Jdbc(adLongVarChar);
aMap[adWChar] = ADOS::MapADOType2Jdbc(adWChar);
aMap[adVarWChar] = ADOS::MapADOType2Jdbc(adVarWChar);
aMap[adLongVarWChar] = ADOS::MapADOType2Jdbc(adLongVarWChar);
aMap[adBinary] = ADOS::MapADOType2Jdbc(adBinary);
aMap[adVarBinary] = ADOS::MapADOType2Jdbc(adVarBinary);
aMap[adLongVarBinary] = ADOS::MapADOType2Jdbc(adLongVarBinary);
aMap[adChapter] = ADOS::MapADOType2Jdbc(adChapter);
aMap[adFileTime] = ADOS::MapADOType2Jdbc(adFileTime);
aMap[adPropVariant] = ADOS::MapADOType2Jdbc(adPropVariant);
aMap[adVarNumeric] = ADOS::MapADOType2Jdbc(adVarNumeric);
2000-09-18 15:18:56 +00:00
m_aValueRange[12] = aMap;
::std::map< sal_Int32,OUString> aMap2;
aMap2[0] = "YES";
aMap2[1] = "NO";
2000-09-18 15:18:56 +00:00
m_aIntValueRange[18] = aMap2;
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setColumnsMap();
m_xMetaData = pMetaData;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setTablesMap()
{
for(sal_Int32 i=1;i<5;i++)
m_aColMapping.push_back(i);
m_aColMapping.push_back(6);
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setTablesMap();
m_xMetaData = pMetaData;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setProcedureColumnsMap()
{
for(sal_Int32 i=1;i<5;i++)
m_aColMapping.push_back(i);
m_aColMapping.push_back(6);
m_aColMapping.push_back(10);
m_aColMapping.push_back(16);
m_aColMapping.push_back(13);
m_aColMapping.push_back(11);
m_aColMapping.push_back(12);
m_aColMapping.push_back(9);
m_aColMapping.push_back(14);
TInt2IntMap aMap;
2000-09-18 15:18:56 +00:00
aMap[DBTYPE_EMPTY] = DataType::SQLNULL;
aMap[DBTYPE_NULL] = DataType::SQLNULL;
aMap[DBTYPE_I2] = DataType::SMALLINT;
aMap[DBTYPE_I4] = DataType::INTEGER;
aMap[DBTYPE_R4] = DataType::FLOAT;
aMap[DBTYPE_R8] = DataType::DOUBLE;
aMap[DBTYPE_CY] = DataType::BIGINT;
aMap[DBTYPE_DATE] = DataType::DATE;
aMap[DBTYPE_BSTR] = DataType::VARCHAR;
aMap[DBTYPE_IDISPATCH] = DataType::OBJECT;
aMap[DBTYPE_ERROR] = DataType::OTHER;
aMap[DBTYPE_BOOL] = DataType::BIT;
aMap[DBTYPE_VARIANT] = DataType::STRUCT;
aMap[DBTYPE_IUNKNOWN] = DataType::OTHER;
aMap[DBTYPE_DECIMAL] = DataType::DECIMAL;
aMap[DBTYPE_UI1] = DataType::TINYINT;
aMap[DBTYPE_ARRAY] = DataType::ARRAY;
aMap[DBTYPE_BYREF] = DataType::REF;
aMap[DBTYPE_I1] = DataType::CHAR;
aMap[DBTYPE_UI2] = DataType::SMALLINT;
aMap[DBTYPE_UI4] = DataType::INTEGER;
// aMap[The] = ;
// aMap[in] = ;
aMap[DBTYPE_I8] = DataType::BIGINT;
aMap[DBTYPE_UI8] = DataType::BIGINT;
aMap[DBTYPE_GUID] = DataType::OTHER;
aMap[DBTYPE_VECTOR] = DataType::OTHER;
aMap[DBTYPE_FILETIME] = DataType::OTHER;
aMap[DBTYPE_RESERVED] = DataType::OTHER;
// aMap[The] = ;
aMap[DBTYPE_BYTES] = DataType::VARBINARY;
aMap[DBTYPE_STR] = DataType::LONGVARCHAR;
aMap[DBTYPE_WSTR] = DataType::LONGVARCHAR;
aMap[DBTYPE_NUMERIC] = DataType::NUMERIC;
aMap[DBTYPE_UDT] = DataType::OTHER;
aMap[DBTYPE_DBDATE] = DataType::DATE;
aMap[DBTYPE_DBTIME] = DataType::TIME;
aMap[DBTYPE_DBTIMESTAMP] = DataType::TIMESTAMP;
aMap[DBTYPE_HCHAPTER] = DataType::OTHER;
aMap[DBTYPE_PROPVARIANT] = DataType::OTHER;
aMap[DBTYPE_VARNUMERIC] = DataType::NUMERIC;
m_aValueRange[10] = aMap;
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setProcedureColumnsMap();
m_xMetaData = pMetaData;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setPrimaryKeysMap()
{
sal_Int32 i=1;
for(;i<5;i++)
m_aColMapping.push_back(i);
m_aColMapping.push_back(7);
m_aColMapping.push_back(8);
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setProcedureColumnsMap();
m_xMetaData = pMetaData;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setIndexInfoMap()
{
sal_Int32 i=1;
for(;i<4;i++)
m_aColMapping.push_back(i);
m_aColMapping.push_back(8);
m_aColMapping.push_back(4);
m_aColMapping.push_back(6);
m_aColMapping.push_back(10);
m_aColMapping.push_back(17);
m_aColMapping.push_back(18);
m_aColMapping.push_back(21);
m_aColMapping.push_back(22);
m_aColMapping.push_back(23);
m_aColMapping.push_back(24);
TInt2IntMap aMap;
2000-09-18 15:18:56 +00:00
aMap[DBPROPVAL_IT_HASH] = IndexType::HASHED;
aMap[DBPROPVAL_IT_CONTENT] = IndexType::OTHER;
aMap[DBPROPVAL_IT_OTHER] = IndexType::OTHER;
aMap[DBPROPVAL_IT_BTREE] = IndexType::OTHER;
m_aValueRange[10] = aMap;
TInt2IntMap aMap2;
2000-09-18 15:18:56 +00:00
aMap[0] = 1;
aMap[1] = 0;
m_aValueRange[8] = aMap2;
::std::map< sal_Int32,OUString> aMap3;
aMap3[0] = "";
aMap3[DB_COLLATION_ASC] = "A";
aMap3[DB_COLLATION_DESC] = "D";
2000-09-18 15:18:56 +00:00
m_aIntValueRange[21] = aMap3;
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setIndexInfoMap();
m_xMetaData = pMetaData;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setTablePrivilegesMap()
{
sal_Int32 i=3;
for(;i<6;i++)
m_aColMapping.push_back(i);
m_aColMapping.push_back(1);
m_aColMapping.push_back(2);
m_aColMapping.push_back(6);
m_aColMapping.push_back(7);
::std::map< sal_Int32,OUString> aMap;
aMap[0] = "YES";
aMap[1] = "NO";
2000-09-18 15:18:56 +00:00
m_aIntValueRange[7] = aMap;
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setTablePrivilegesMap();
m_xMetaData = pMetaData;
}
2000-09-18 15:18:56 +00:00
void ODatabaseMetaDataResultSet::setCrossReferenceMap()
{
sal_Int32 i=1;
for(;i<5;i++)
m_aColMapping.push_back(i);
for(i=7;i<11;i++)
m_aColMapping.push_back(i);
m_aColMapping.push_back(13);
m_aColMapping.push_back(14);
m_aColMapping.push_back(15);
m_aColMapping.push_back(17);
m_aColMapping.push_back(16);
m_aColMapping.push_back(18);
::std::map< OUString,sal_Int32> aMap;
aMap[ OUString("CASCADE")] = KeyRule::CASCADE;
aMap[ OUString("RESTRICT")] = KeyRule::RESTRICT;
aMap[ OUString("SET NULL")] = KeyRule::SET_NULL;
aMap[ OUString("SET DEFAULT")] = KeyRule::SET_DEFAULT;
aMap[ OUString("NO ACTION")] = KeyRule::NO_ACTION;
2000-09-18 15:18:56 +00:00
m_aStrValueRange[14] = aMap;
m_aStrValueRange[15] = aMap;
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setCrossReferenceMap();
m_xMetaData = pMetaData;
}
2001-08-30 12:20:59 +00:00
void ODatabaseMetaDataResultSet::setTypeInfoMap(sal_Bool _bJetEngine)
2000-09-18 15:18:56 +00:00
{
sal_Int32 i=1;
for(;i<19;i++)
m_aColMapping.push_back(i);
::std::map< OUString,sal_Int32> aMap1;
aMap1[ OUString()] = 10;
2000-09-18 15:18:56 +00:00
m_aStrValueRange[18] = aMap1;
TInt2IntMap aMap;
2001-04-12 11:33:30 +00:00
aMap[adEmpty] = ADOS::MapADOType2Jdbc(adEmpty);
aMap[adTinyInt] = ADOS::MapADOType2Jdbc(adTinyInt);
aMap[adSmallInt] = ADOS::MapADOType2Jdbc(adSmallInt);
aMap[adInteger] = ADOS::MapADOType2Jdbc(adInteger);
aMap[adBigInt] = ADOS::MapADOType2Jdbc(adBigInt);
aMap[adUnsignedTinyInt] = ADOS::MapADOType2Jdbc(adUnsignedTinyInt);
aMap[adUnsignedSmallInt]= ADOS::MapADOType2Jdbc(adUnsignedSmallInt);
aMap[adUnsignedInt] = ADOS::MapADOType2Jdbc(adUnsignedInt);
aMap[adUnsignedBigInt] = ADOS::MapADOType2Jdbc(adUnsignedBigInt);
aMap[adSingle] = ADOS::MapADOType2Jdbc(adSingle);
aMap[adDouble] = ADOS::MapADOType2Jdbc(adDouble);
aMap[adCurrency] = ADOS::MapADOType2Jdbc(adCurrency);
aMap[adDecimal] = ADOS::MapADOType2Jdbc(adDecimal);
aMap[adNumeric] = ADOS::MapADOType2Jdbc(adNumeric);
aMap[adBoolean] = ADOS::MapADOType2Jdbc(adBoolean);
aMap[adError] = ADOS::MapADOType2Jdbc(adError);
aMap[adUserDefined] = ADOS::MapADOType2Jdbc(adUserDefined);
aMap[adVariant] = ADOS::MapADOType2Jdbc(adVariant);
aMap[adIDispatch] = ADOS::MapADOType2Jdbc(adIDispatch);
aMap[adIUnknown] = ADOS::MapADOType2Jdbc(adIUnknown);
aMap[adGUID] = ADOS::MapADOType2Jdbc(adGUID);
2001-08-30 12:20:59 +00:00
aMap[adDate] = _bJetEngine ? ADOS::MapADOType2Jdbc(adDBTimeStamp) : ADOS::MapADOType2Jdbc(adDate);
2001-04-12 11:33:30 +00:00
aMap[adDBDate] = ADOS::MapADOType2Jdbc(adDBDate);
aMap[adDBTime] = ADOS::MapADOType2Jdbc(adDBTime);
aMap[adDBTimeStamp] = ADOS::MapADOType2Jdbc(adDBTimeStamp);
aMap[adBSTR] = ADOS::MapADOType2Jdbc(adBSTR);
aMap[adChar] = ADOS::MapADOType2Jdbc(adChar);
aMap[adVarChar] = ADOS::MapADOType2Jdbc(adVarChar);
aMap[adLongVarChar] = ADOS::MapADOType2Jdbc(adLongVarChar);
aMap[adWChar] = ADOS::MapADOType2Jdbc(adWChar);
aMap[adVarWChar] = ADOS::MapADOType2Jdbc(adVarWChar);
aMap[adLongVarWChar] = ADOS::MapADOType2Jdbc(adLongVarWChar);
aMap[adBinary] = ADOS::MapADOType2Jdbc(adBinary);
aMap[adVarBinary] = ADOS::MapADOType2Jdbc(adVarBinary);
aMap[adLongVarBinary] = ADOS::MapADOType2Jdbc(adLongVarBinary);
aMap[adChapter] = ADOS::MapADOType2Jdbc(adChapter);
aMap[adFileTime] = ADOS::MapADOType2Jdbc(adFileTime);
aMap[adPropVariant] = ADOS::MapADOType2Jdbc(adPropVariant);
aMap[adVarNumeric] = ADOS::MapADOType2Jdbc(adVarNumeric);
2001-04-19 13:59:28 +00:00
// aMap[adArray] = ADOS::MapADOType2Jdbc(adArray);
2000-09-18 15:18:56 +00:00
m_aValueRange[2] = aMap;
TInt2IntMap aColumnValueMapping;
aColumnValueMapping[VARIANT_FALSE] = ColumnValue::NO_NULLS;
aColumnValueMapping[VARIANT_TRUE] = ColumnValue::NULLABLE;
m_aValueRange[7] = aColumnValueMapping;
// now adjust the column mapping
// OJ 24.01.2002 96860
TInt2IntMap aSerachMapping;
aSerachMapping[DB_UNSEARCHABLE] = ColumnSearch::NONE;
aSerachMapping[DB_LIKE_ONLY] = ColumnSearch::CHAR;
aSerachMapping[DB_ALL_EXCEPT_LIKE] = ColumnSearch::BASIC;
aSerachMapping[DB_SEARCHABLE] = ColumnSearch::FULL;
m_aValueRange[9] = aSerachMapping;
TInt2IntMap aCurrencyMapping;
m_aValueRange[11] = aCurrencyMapping;
2000-09-18 15:18:56 +00:00
ODatabaseMetaDataResultSetMetaData* pMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
pMetaData->setTypeInfoMap();
m_xMetaData = pMetaData;
}
void SAL_CALL ODatabaseMetaDataResultSet::acquire() throw()
2001-04-30 09:16:19 +00:00
{
ODatabaseMetaDataResultSet_BASE::acquire();
}
void SAL_CALL ODatabaseMetaDataResultSet::release() throw()
2001-04-30 09:16:19 +00:00
{
ODatabaseMetaDataResultSet_BASE::release();
}
2001-04-30 09:16:19 +00:00
::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL ODatabaseMetaDataResultSet::getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException)
{
return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
}
2001-07-30 08:11:53 +00:00
OLEVariant ODatabaseMetaDataResultSet::getValue(sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
checkRecordSet();
WpADOField aField = ADOS::getField(m_pRecordSet,columnIndex);
aField.get_Value(m_aValue);
return m_aValue;
}
2001-07-30 08:11:53 +00:00
2000-09-18 15:18:56 +00:00
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */