File: | ucbhelper/source/provider/resultset.cxx |
Location: | line 721, column 9 |
Description: | Called C++ object pointer is null |
1 | /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ | |||
2 | /* | |||
3 | * This file is part of the LibreOffice project. | |||
4 | * | |||
5 | * This Source Code Form is subject to the terms of the Mozilla Public | |||
6 | * License, v. 2.0. If a copy of the MPL was not distributed with this | |||
7 | * file, You can obtain one at http://mozilla.org/MPL/2.0/. | |||
8 | * | |||
9 | * This file incorporates work covered by the following license notice: | |||
10 | * | |||
11 | * Licensed to the Apache Software Foundation (ASF) under one or more | |||
12 | * contributor license agreements. See the NOTICE file distributed | |||
13 | * with this work for additional information regarding copyright | |||
14 | * ownership. The ASF licenses this file to you under the Apache | |||
15 | * License, Version 2.0 (the "License"); you may not use this file | |||
16 | * except in compliance with the License. You may obtain a copy of | |||
17 | * the License at http://www.apache.org/licenses/LICENSE-2.0 . | |||
18 | */ | |||
19 | ||||
20 | ||||
21 | /************************************************************************** | |||
22 | TODO | |||
23 | ************************************************************************** | |||
24 | ||||
25 | *************************************************************************/ | |||
26 | #include <cppuhelper/interfacecontainer.hxx> | |||
27 | #include <com/sun/star/beans/PropertyAttribute.hpp> | |||
28 | #include <ucbhelper/resultset.hxx> | |||
29 | #include <ucbhelper/resultsetmetadata.hxx> | |||
30 | ||||
31 | using namespace com::sun::star; | |||
32 | ||||
33 | //========================================================================= | |||
34 | ||||
35 | namespace ucbhelper_impl | |||
36 | { | |||
37 | ||||
38 | struct PropertyInfo | |||
39 | { | |||
40 | const char* pName; | |||
41 | sal_Int32 nHandle; | |||
42 | sal_Int16 nAttributes; | |||
43 | const uno::Type& (*pGetCppuType)(); | |||
44 | }; | |||
45 | ||||
46 | static const uno::Type& sal_Int32_getCppuType() | |||
47 | { | |||
48 | return getCppuType( static_cast< const sal_Int32 * >( 0 ) ); | |||
49 | } | |||
50 | ||||
51 | static const uno::Type& sal_Bool_getCppuType() | |||
52 | { | |||
53 | return getCppuBooleanType(); | |||
54 | } | |||
55 | ||||
56 | static const PropertyInfo aPropertyTable[] = | |||
57 | { | |||
58 | { "IsRowCountFinal", | |||
59 | 1000, | |||
60 | beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY, | |||
61 | &sal_Bool_getCppuType | |||
62 | }, | |||
63 | { "RowCount", | |||
64 | 1001, | |||
65 | beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY, | |||
66 | &sal_Int32_getCppuType | |||
67 | }, | |||
68 | { 0, | |||
69 | 0, | |||
70 | 0, | |||
71 | 0 | |||
72 | } | |||
73 | }; | |||
74 | ||||
75 | #define RESULTSET_PROPERTY_COUNT2 2 | |||
76 | ||||
77 | //========================================================================= | |||
78 | // | |||
79 | // class PropertySetInfo | |||
80 | // | |||
81 | //========================================================================= | |||
82 | ||||
83 | class PropertySetInfo : | |||
84 | public cppu::OWeakObject, | |||
85 | public lang::XTypeProvider, | |||
86 | public beans::XPropertySetInfo | |||
87 | { | |||
88 | uno::Reference< lang::XMultiServiceFactory > m_xSMgr; | |||
89 | uno::Sequence< beans::Property >* m_pProps; | |||
90 | ||||
91 | private: | |||
92 | sal_Bool queryProperty( | |||
93 | const rtl::OUString& aName, beans::Property& rProp ); | |||
94 | ||||
95 | public: | |||
96 | PropertySetInfo( | |||
97 | const uno::Reference< lang::XMultiServiceFactory >& rxSMgr, | |||
98 | const PropertyInfo* pProps, | |||
99 | sal_Int32 nProps ); | |||
100 | virtual ~PropertySetInfo(); | |||
101 | ||||
102 | // XInterface | |||
103 | XINTERFACE_DECL()virtual com::sun::star::uno::Any queryInterface( const com::sun ::star::uno::Type & rType ) throw( com::sun::star::uno::RuntimeException ); virtual void acquire() throw(); virtual void release() throw (); | |||
104 | ||||
105 | // XTypeProvider | |||
106 | XTYPEPROVIDER_DECL()virtual com::sun::star::uno::Sequence< sal_Int8 > getImplementationId () throw( com::sun::star::uno::RuntimeException ); virtual com ::sun::star::uno::Sequence< com::sun::star::uno::Type > getTypes() throw( com::sun::star::uno::RuntimeException ); | |||
107 | ||||
108 | // XPropertySetInfo | |||
109 | virtual uno::Sequence< beans::Property > SAL_CALL getProperties() | |||
110 | throw( uno::RuntimeException ); | |||
111 | virtual beans::Property SAL_CALL getPropertyByName( | |||
112 | const rtl::OUString& aName ) | |||
113 | throw( beans::UnknownPropertyException, uno::RuntimeException ); | |||
114 | virtual sal_Bool SAL_CALL hasPropertyByName( const rtl::OUString& Name ) | |||
115 | throw( uno::RuntimeException ); | |||
116 | }; | |||
117 | ||||
118 | //========================================================================= | |||
119 | // | |||
120 | // PropertyChangeListenerContainer. | |||
121 | // | |||
122 | //========================================================================= | |||
123 | ||||
124 | struct equalStr_Impl | |||
125 | { | |||
126 | bool operator()( const rtl::OUString& s1, const rtl::OUString& s2 ) const | |||
127 | { | |||
128 | return !!( s1 == s2 ); | |||
129 | } | |||
130 | }; | |||
131 | ||||
132 | struct hashStr_Impl | |||
133 | { | |||
134 | size_t operator()( const rtl::OUString& rName ) const | |||
135 | { | |||
136 | return rName.hashCode(); | |||
137 | } | |||
138 | }; | |||
139 | ||||
140 | typedef cppu::OMultiTypeInterfaceContainerHelperVar | |||
141 | < | |||
142 | rtl::OUString, | |||
143 | hashStr_Impl, | |||
144 | equalStr_Impl | |||
145 | > PropertyChangeListenerContainer; | |||
146 | ||||
147 | //========================================================================= | |||
148 | // | |||
149 | // class PropertyChangeListeners. | |||
150 | // | |||
151 | //========================================================================= | |||
152 | ||||
153 | class PropertyChangeListeners : public PropertyChangeListenerContainer | |||
154 | { | |||
155 | public: | |||
156 | PropertyChangeListeners( osl::Mutex& rMtx ) | |||
157 | : PropertyChangeListenerContainer( rMtx ) {} | |||
158 | }; | |||
159 | ||||
160 | } // namespace ucbhelper_impl | |||
161 | ||||
162 | using namespace ucbhelper_impl; | |||
163 | ||||
164 | namespace ucbhelper | |||
165 | { | |||
166 | ||||
167 | //========================================================================= | |||
168 | // | |||
169 | // struct ResultSet_Impl. | |||
170 | // | |||
171 | //========================================================================= | |||
172 | ||||
173 | struct ResultSet_Impl | |||
174 | { | |||
175 | uno::Reference< lang::XMultiServiceFactory > m_xSMgr; | |||
176 | uno::Reference< com::sun::star::ucb::XCommandEnvironment > m_xEnv; | |||
177 | uno::Reference< beans::XPropertySetInfo > m_xPropSetInfo; | |||
178 | uno::Reference< sdbc::XResultSetMetaData > m_xMetaData; | |||
179 | uno::Sequence< beans::Property > m_aProperties; | |||
180 | rtl::Reference< ResultSetDataSupplier > m_xDataSupplier; | |||
181 | osl::Mutex m_aMutex; | |||
182 | cppu::OInterfaceContainerHelper* m_pDisposeEventListeners; | |||
183 | PropertyChangeListeners* m_pPropertyChangeListeners; | |||
184 | sal_Int32 m_nPos; | |||
185 | sal_Bool m_bWasNull; | |||
186 | sal_Bool m_bAfterLast; | |||
187 | ||||
188 | inline ResultSet_Impl( | |||
189 | const uno::Reference< lang::XMultiServiceFactory >& rxSMgr, | |||
190 | const uno::Sequence< beans::Property >& rProperties, | |||
191 | const rtl::Reference< ResultSetDataSupplier >& rDataSupplier, | |||
192 | const uno::Reference< com::sun::star::ucb::XCommandEnvironment >& | |||
193 | rxEnv ); | |||
194 | inline ~ResultSet_Impl(); | |||
195 | }; | |||
196 | ||||
197 | inline ResultSet_Impl::ResultSet_Impl( | |||
198 | const uno::Reference< lang::XMultiServiceFactory >& rxSMgr, | |||
199 | const uno::Sequence< beans::Property >& rProperties, | |||
200 | const rtl::Reference< ResultSetDataSupplier >& rDataSupplier, | |||
201 | const uno::Reference< com::sun::star::ucb::XCommandEnvironment >& rxEnv ) | |||
202 | : m_xSMgr( rxSMgr ), | |||
203 | m_xEnv( rxEnv ), | |||
204 | m_aProperties( rProperties ), | |||
205 | m_xDataSupplier( rDataSupplier ), | |||
206 | m_pDisposeEventListeners( 0 ), | |||
207 | m_pPropertyChangeListeners( 0 ), | |||
208 | m_nPos( 0 ), // Position is one-based. Zero means: before first element. | |||
209 | m_bWasNull( sal_False((sal_Bool)0) ), | |||
210 | m_bAfterLast( sal_False((sal_Bool)0) ) | |||
211 | { | |||
212 | } | |||
213 | ||||
214 | //========================================================================= | |||
215 | inline ResultSet_Impl::~ResultSet_Impl() | |||
216 | { | |||
217 | delete m_pDisposeEventListeners; | |||
218 | delete m_pPropertyChangeListeners; | |||
219 | } | |||
220 | ||||
221 | //========================================================================= | |||
222 | //========================================================================= | |||
223 | // | |||
224 | // ResultSet Implementation. | |||
225 | // | |||
226 | //========================================================================= | |||
227 | //========================================================================= | |||
228 | ||||
229 | ResultSet::ResultSet( | |||
230 | const uno::Reference< lang::XMultiServiceFactory >& rxSMgr, | |||
231 | const uno::Sequence< beans::Property >& rProperties, | |||
232 | const rtl::Reference< ResultSetDataSupplier >& rDataSupplier ) | |||
233 | : m_pImpl( new ResultSet_Impl( | |||
234 | rxSMgr, | |||
235 | rProperties, | |||
236 | rDataSupplier, | |||
237 | uno::Reference< com::sun::star::ucb::XCommandEnvironment >() ) ) | |||
238 | { | |||
239 | rDataSupplier->m_pResultSet = this; | |||
240 | } | |||
241 | ||||
242 | //========================================================================= | |||
243 | ResultSet::ResultSet( | |||
244 | const uno::Reference< lang::XMultiServiceFactory >& rxSMgr, | |||
245 | const uno::Sequence< beans::Property >& rProperties, | |||
246 | const rtl::Reference< ResultSetDataSupplier >& rDataSupplier, | |||
247 | const uno::Reference< com::sun::star::ucb::XCommandEnvironment >& rxEnv ) | |||
248 | : m_pImpl( new ResultSet_Impl( rxSMgr, rProperties, rDataSupplier, rxEnv ) ) | |||
249 | { | |||
250 | rDataSupplier->m_pResultSet = this; | |||
251 | } | |||
252 | ||||
253 | //========================================================================= | |||
254 | // virtual | |||
255 | ResultSet::~ResultSet() | |||
256 | { | |||
257 | delete m_pImpl; | |||
258 | } | |||
259 | ||||
260 | //========================================================================= | |||
261 | // | |||
262 | // XInterface methods. | |||
263 | // | |||
264 | //========================================================================= | |||
265 | ||||
266 | XINTERFACE_IMPL_9( ResultSet,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
267 | lang::XTypeProvider,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
268 | lang::XServiceInfo,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
269 | lang::XComponent,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
270 | com::sun::star::ucb::XContentAccess,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
271 | sdbc::XResultSet,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
272 | sdbc::XResultSetMetaDataSupplier,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
273 | sdbc::XRow,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
274 | sdbc::XCloseable,void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); } | |||
275 | beans::XPropertySet )void ResultSet::acquire() throw() { OWeakObject::acquire(); } void ResultSet::release() throw() { OWeakObject::release(); } com::sun::star::uno::Any ResultSet::queryInterface( const com ::sun::star::uno::Type & rType ) throw( com::sun::star::uno ::RuntimeException ) { com::sun::star::uno::Any aRet = cppu:: queryInterface( rType, (static_cast< lang::XTypeProvider* > (this)), (static_cast< lang::XServiceInfo* >(this)), (static_cast < lang::XComponent* >(this)), (static_cast< com::sun ::star::ucb::XContentAccess* >(this)), (static_cast< sdbc ::XResultSet* >(this)), (static_cast< sdbc::XResultSetMetaDataSupplier * >(this)), (static_cast< sdbc::XRow* >(this)), (static_cast < sdbc::XCloseable* >(this)), (static_cast< beans::XPropertySet * >(this)) ); return aRet.hasValue() ? aRet : OWeakObject:: queryInterface( rType ); }; | |||
276 | ||||
277 | //========================================================================= | |||
278 | // | |||
279 | // XTypeProvider methods. | |||
280 | // | |||
281 | //========================================================================= | |||
282 | ||||
283 | XTYPEPROVIDER_IMPL_9( ResultSet,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
284 | lang::XTypeProvider,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
285 | lang::XServiceInfo,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
286 | lang::XComponent,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
287 | com::sun::star::ucb::XContentAccess,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
288 | sdbc::XResultSet,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
289 | sdbc::XResultSetMetaDataSupplier,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
290 | sdbc::XRow,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
291 | sdbc::XCloseable,com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); } | |||
292 | beans::XPropertySet )com::sun::star::uno::Sequence< sal_Int8 > ResultSet::getImplementationId () throw( com::sun::star::uno::RuntimeException ) { static cppu ::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool)0) ); pId = &id; } } return (*pId).getImplementationId(); } com ::sun::star::uno::Sequence< com::sun::star::uno::Type > ResultSet::getTypes() throw( com::sun::star::uno::RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl:: Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu:: OTypeCollection collection( getCppuType( static_cast< com:: sun::star::uno::Reference< lang::XTypeProvider > * > ( 0 ) ), getCppuType( static_cast< com::sun::star::uno::Reference < lang::XServiceInfo > * >( 0 ) ), getCppuType( static_cast < com::sun::star::uno::Reference< lang::XComponent > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< com::sun::star::ucb::XContentAccess > * >( 0 ) ), getCppuType( static_cast< com::sun::star::uno ::Reference< sdbc::XResultSet > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XResultSetMetaDataSupplier > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< sdbc::XRow > * >( 0 ) ), getCppuType ( static_cast< com::sun::star::uno::Reference< sdbc::XCloseable > * >( 0 ) ), getCppuType( static_cast< com::sun::star ::uno::Reference< beans::XPropertySet > * >( 0 ) ) ) ; pCollection = &collection; } } return (*pCollection).getTypes (); }; | |||
293 | ||||
294 | //========================================================================= | |||
295 | // | |||
296 | // XServiceInfo methods. | |||
297 | // | |||
298 | //========================================================================= | |||
299 | ||||
300 | XSERVICEINFO_NOFACTORY_IMPL_1( ResultSet,rtl::OUString ResultSet::getImplementationName() throw( com:: sun::star::uno::RuntimeException ) { return getImplementationName_Static (); } rtl::OUString ResultSet::getImplementationName_Static() { return rtl::OUString("ResultSet"); } sal_Bool ResultSet::supportsService ( const rtl::OUString& ServiceName ) throw( com::sun::star ::uno::RuntimeException ) { com::sun::star::uno::Sequence< rtl::OUString > aSNL = getSupportedServiceNames(); const rtl ::OUString* pArray = aSNL.getArray(); for( sal_Int32 i = 0; i < aSNL.getLength(); i++ ) { if( pArray[ i ] == ServiceName ) return ((sal_Bool)1); } return ((sal_Bool)0); } com::sun:: star::uno::Sequence< rtl::OUString > ResultSet::getSupportedServiceNames () throw( com::sun::star::uno::RuntimeException ) { return getSupportedServiceNames_Static (); } com::sun::star::uno::Sequence< rtl::OUString > ResultSet ::getSupportedServiceNames_Static() { com::sun::star::uno::Sequence < rtl::OUString > aSNS( 1 ); aSNS.getArray()[ 0 ] = rtl ::OUString("com.sun.star.ucb.ContentResultSet" ); return aSNS ; } | |||
301 | rtl::OUString("ResultSet"),rtl::OUString ResultSet::getImplementationName() throw( com:: sun::star::uno::RuntimeException ) { return getImplementationName_Static (); } rtl::OUString ResultSet::getImplementationName_Static() { return rtl::OUString("ResultSet"); } sal_Bool ResultSet::supportsService ( const rtl::OUString& ServiceName ) throw( com::sun::star ::uno::RuntimeException ) { com::sun::star::uno::Sequence< rtl::OUString > aSNL = getSupportedServiceNames(); const rtl ::OUString* pArray = aSNL.getArray(); for( sal_Int32 i = 0; i < aSNL.getLength(); i++ ) { if( pArray[ i ] == ServiceName ) return ((sal_Bool)1); } return ((sal_Bool)0); } com::sun:: star::uno::Sequence< rtl::OUString > ResultSet::getSupportedServiceNames () throw( com::sun::star::uno::RuntimeException ) { return getSupportedServiceNames_Static (); } com::sun::star::uno::Sequence< rtl::OUString > ResultSet ::getSupportedServiceNames_Static() { com::sun::star::uno::Sequence < rtl::OUString > aSNS( 1 ); aSNS.getArray()[ 0 ] = rtl ::OUString("com.sun.star.ucb.ContentResultSet" ); return aSNS ; } | |||
302 | rtl::OUString(RESULTSET_SERVICE_NAME ) )rtl::OUString ResultSet::getImplementationName() throw( com:: sun::star::uno::RuntimeException ) { return getImplementationName_Static (); } rtl::OUString ResultSet::getImplementationName_Static() { return rtl::OUString("ResultSet"); } sal_Bool ResultSet::supportsService ( const rtl::OUString& ServiceName ) throw( com::sun::star ::uno::RuntimeException ) { com::sun::star::uno::Sequence< rtl::OUString > aSNL = getSupportedServiceNames(); const rtl ::OUString* pArray = aSNL.getArray(); for( sal_Int32 i = 0; i < aSNL.getLength(); i++ ) { if( pArray[ i ] == ServiceName ) return ((sal_Bool)1); } return ((sal_Bool)0); } com::sun:: star::uno::Sequence< rtl::OUString > ResultSet::getSupportedServiceNames () throw( com::sun::star::uno::RuntimeException ) { return getSupportedServiceNames_Static (); } com::sun::star::uno::Sequence< rtl::OUString > ResultSet ::getSupportedServiceNames_Static() { com::sun::star::uno::Sequence < rtl::OUString > aSNS( 1 ); aSNS.getArray()[ 0 ] = rtl ::OUString("com.sun.star.ucb.ContentResultSet" ); return aSNS ; }; | |||
303 | ||||
304 | //========================================================================= | |||
305 | // | |||
306 | // XComponent methods. | |||
307 | // | |||
308 | //========================================================================= | |||
309 | ||||
310 | // virtual | |||
311 | void SAL_CALL ResultSet::dispose() | |||
312 | throw( uno::RuntimeException ) | |||
313 | { | |||
314 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
315 | ||||
316 | if ( m_pImpl->m_pDisposeEventListeners && | |||
317 | m_pImpl->m_pDisposeEventListeners->getLength() ) | |||
318 | { | |||
319 | lang::EventObject aEvt; | |||
320 | aEvt.Source = static_cast< lang::XComponent * >( this ); | |||
321 | m_pImpl->m_pDisposeEventListeners->disposeAndClear( aEvt ); | |||
322 | } | |||
323 | ||||
324 | if ( m_pImpl->m_pPropertyChangeListeners ) | |||
325 | { | |||
326 | lang::EventObject aEvt; | |||
327 | aEvt.Source = static_cast< beans::XPropertySet * >( this ); | |||
328 | m_pImpl->m_pPropertyChangeListeners->disposeAndClear( aEvt ); | |||
329 | } | |||
330 | ||||
331 | m_pImpl->m_xDataSupplier->close(); | |||
332 | } | |||
333 | ||||
334 | //========================================================================= | |||
335 | // virtual | |||
336 | void SAL_CALL ResultSet::addEventListener( | |||
337 | const uno::Reference< lang::XEventListener >& Listener ) | |||
338 | throw( uno::RuntimeException ) | |||
339 | { | |||
340 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
341 | ||||
342 | if ( !m_pImpl->m_pDisposeEventListeners ) | |||
343 | m_pImpl->m_pDisposeEventListeners = | |||
344 | new cppu::OInterfaceContainerHelper( m_pImpl->m_aMutex ); | |||
345 | ||||
346 | m_pImpl->m_pDisposeEventListeners->addInterface( Listener ); | |||
347 | } | |||
348 | ||||
349 | //========================================================================= | |||
350 | // virtual | |||
351 | void SAL_CALL ResultSet::removeEventListener( | |||
352 | const uno::Reference< lang::XEventListener >& Listener ) | |||
353 | throw( uno::RuntimeException ) | |||
354 | { | |||
355 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
356 | ||||
357 | if ( m_pImpl->m_pDisposeEventListeners ) | |||
358 | m_pImpl->m_pDisposeEventListeners->removeInterface( Listener ); | |||
359 | } | |||
360 | ||||
361 | //========================================================================= | |||
362 | // | |||
363 | // XResultSetMetaDataSupplier methods. | |||
364 | // | |||
365 | //========================================================================= | |||
366 | ||||
367 | // virtual | |||
368 | uno::Reference< sdbc::XResultSetMetaData > SAL_CALL ResultSet::getMetaData() | |||
369 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
370 | { | |||
371 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
372 | ||||
373 | if ( !m_pImpl->m_xMetaData.is() ) | |||
374 | m_pImpl->m_xMetaData = new ResultSetMetaData( m_pImpl->m_xSMgr, | |||
375 | m_pImpl->m_aProperties ); | |||
376 | ||||
377 | return m_pImpl->m_xMetaData; | |||
378 | } | |||
379 | ||||
380 | //========================================================================= | |||
381 | // | |||
382 | // XResultSet methods. | |||
383 | // | |||
384 | //========================================================================= | |||
385 | ||||
386 | // virtual | |||
387 | sal_Bool SAL_CALL ResultSet::next() | |||
388 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
389 | { | |||
390 | // Note: Cursor is initially positioned before the first row. | |||
391 | // First call to 'next()' moves it to first row. | |||
392 | ||||
393 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
394 | ||||
395 | if ( m_pImpl->m_bAfterLast ) | |||
396 | { | |||
397 | m_pImpl->m_xDataSupplier->validate(); | |||
398 | return sal_False((sal_Bool)0); | |||
399 | } | |||
400 | ||||
401 | // getResult works zero-based! | |||
402 | if ( !m_pImpl->m_xDataSupplier->getResult( m_pImpl->m_nPos ) ) | |||
403 | { | |||
404 | m_pImpl->m_bAfterLast = sal_True((sal_Bool)1); | |||
405 | m_pImpl->m_xDataSupplier->validate(); | |||
406 | return sal_False((sal_Bool)0); | |||
407 | } | |||
408 | ||||
409 | m_pImpl->m_nPos++; | |||
410 | m_pImpl->m_xDataSupplier->validate(); | |||
411 | return sal_True((sal_Bool)1); | |||
412 | } | |||
413 | ||||
414 | //========================================================================= | |||
415 | // virtual | |||
416 | sal_Bool SAL_CALL ResultSet::isBeforeFirst() | |||
417 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
418 | { | |||
419 | if ( m_pImpl->m_bAfterLast ) | |||
420 | { | |||
421 | m_pImpl->m_xDataSupplier->validate(); | |||
422 | return sal_False((sal_Bool)0); | |||
423 | } | |||
424 | ||||
425 | // getResult works zero-based! | |||
426 | if ( !m_pImpl->m_xDataSupplier->getResult( 0 ) ) | |||
427 | { | |||
428 | m_pImpl->m_xDataSupplier->validate(); | |||
429 | return sal_False((sal_Bool)0); | |||
430 | } | |||
431 | ||||
432 | m_pImpl->m_xDataSupplier->validate(); | |||
433 | return ( m_pImpl->m_nPos == 0 ); | |||
434 | } | |||
435 | ||||
436 | //========================================================================= | |||
437 | // virtual | |||
438 | sal_Bool SAL_CALL ResultSet::isAfterLast() | |||
439 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
440 | { | |||
441 | m_pImpl->m_xDataSupplier->validate(); | |||
442 | return m_pImpl->m_bAfterLast; | |||
443 | } | |||
444 | ||||
445 | //========================================================================= | |||
446 | // virtual | |||
447 | sal_Bool SAL_CALL ResultSet::isFirst() | |||
448 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
449 | { | |||
450 | if ( m_pImpl->m_bAfterLast ) | |||
451 | { | |||
452 | m_pImpl->m_xDataSupplier->validate(); | |||
453 | return sal_False((sal_Bool)0); | |||
454 | } | |||
455 | ||||
456 | m_pImpl->m_xDataSupplier->validate(); | |||
457 | return ( m_pImpl->m_nPos == 1 ); | |||
458 | } | |||
459 | ||||
460 | //========================================================================= | |||
461 | // virtual | |||
462 | sal_Bool SAL_CALL ResultSet::isLast() | |||
463 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
464 | { | |||
465 | if ( m_pImpl->m_bAfterLast ) | |||
466 | { | |||
467 | m_pImpl->m_xDataSupplier->validate(); | |||
468 | return sal_False((sal_Bool)0); | |||
469 | } | |||
470 | ||||
471 | sal_Int32 nCount = m_pImpl->m_xDataSupplier->totalCount(); | |||
472 | if ( !nCount ) | |||
473 | { | |||
474 | m_pImpl->m_xDataSupplier->validate(); | |||
475 | return sal_False((sal_Bool)0); | |||
476 | } | |||
477 | ||||
478 | m_pImpl->m_xDataSupplier->validate(); | |||
479 | return ( m_pImpl->m_nPos == nCount ); | |||
480 | } | |||
481 | ||||
482 | //========================================================================= | |||
483 | // virtual | |||
484 | void SAL_CALL ResultSet::beforeFirst() | |||
485 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
486 | { | |||
487 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
488 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
489 | m_pImpl->m_nPos = 0; | |||
490 | m_pImpl->m_xDataSupplier->validate(); | |||
491 | } | |||
492 | ||||
493 | //========================================================================= | |||
494 | // virtual | |||
495 | void SAL_CALL ResultSet::afterLast() | |||
496 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
497 | { | |||
498 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
499 | m_pImpl->m_bAfterLast = sal_True((sal_Bool)1); | |||
500 | m_pImpl->m_xDataSupplier->validate(); | |||
501 | } | |||
502 | ||||
503 | //========================================================================= | |||
504 | // virtual | |||
505 | sal_Bool SAL_CALL ResultSet::first() | |||
506 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
507 | { | |||
508 | // getResult works zero-based! | |||
509 | if ( m_pImpl->m_xDataSupplier->getResult( 0 ) ) | |||
510 | { | |||
511 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
512 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
513 | m_pImpl->m_nPos = 1; | |||
514 | m_pImpl->m_xDataSupplier->validate(); | |||
515 | return sal_True((sal_Bool)1); | |||
516 | } | |||
517 | ||||
518 | m_pImpl->m_xDataSupplier->validate(); | |||
519 | return sal_False((sal_Bool)0); | |||
520 | } | |||
521 | ||||
522 | //========================================================================= | |||
523 | // virtual | |||
524 | sal_Bool SAL_CALL ResultSet::last() | |||
525 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
526 | { | |||
527 | sal_Int32 nCount = m_pImpl->m_xDataSupplier->totalCount(); | |||
528 | if ( nCount ) | |||
529 | { | |||
530 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
531 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
532 | m_pImpl->m_nPos = nCount; | |||
533 | m_pImpl->m_xDataSupplier->validate(); | |||
534 | return sal_True((sal_Bool)1); | |||
535 | } | |||
536 | ||||
537 | m_pImpl->m_xDataSupplier->validate(); | |||
538 | return sal_False((sal_Bool)0); | |||
539 | } | |||
540 | ||||
541 | //========================================================================= | |||
542 | // virtual | |||
543 | sal_Int32 SAL_CALL ResultSet::getRow() | |||
544 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
545 | { | |||
546 | if ( m_pImpl->m_bAfterLast ) | |||
547 | { | |||
548 | m_pImpl->m_xDataSupplier->validate(); | |||
549 | return 0; | |||
550 | } | |||
551 | ||||
552 | m_pImpl->m_xDataSupplier->validate(); | |||
553 | return m_pImpl->m_nPos; | |||
554 | } | |||
555 | ||||
556 | //========================================================================= | |||
557 | // virtual | |||
558 | sal_Bool SAL_CALL ResultSet::absolute( sal_Int32 row ) | |||
559 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
560 | { | |||
561 | /* | |||
562 | If the row number is positive, the cursor moves to the given row number | |||
563 | with respect to the beginning of the result set. The first row is row 1, | |||
564 | the second is row 2, and so on. | |||
565 | ||||
566 | If the given row number is negative, the cursor moves to an absolute row | |||
567 | position with respect to the end of the result set. For example, calling | |||
568 | absolaute( -1 ) positions the cursor on the last row, absolaute( -2 ) | |||
569 | indicates the next-to-last row, and so on. | |||
570 | ||||
571 | An attempt to position the cursor beyond the first/last row in the result | |||
572 | set leaves the cursor before/after the first/last row, respectively. | |||
573 | ||||
574 | Calling absolute( 1 ) is the same as calling first(). | |||
575 | ||||
576 | Calling absolute( -1 ) is the same as calling last(). | |||
577 | */ | |||
578 | if ( row < 0 ) | |||
579 | { | |||
580 | sal_Int32 nCount = m_pImpl->m_xDataSupplier->totalCount(); | |||
581 | ||||
582 | if ( ( row * -1 ) > nCount ) | |||
583 | { | |||
584 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
585 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
586 | m_pImpl->m_nPos = 0; | |||
587 | m_pImpl->m_xDataSupplier->validate(); | |||
588 | return sal_False((sal_Bool)0); | |||
589 | } | |||
590 | else // |row| <= nCount | |||
591 | { | |||
592 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
593 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
594 | m_pImpl->m_nPos = ( nCount + row + 1 ); | |||
595 | m_pImpl->m_xDataSupplier->validate(); | |||
596 | return sal_True((sal_Bool)1); | |||
597 | } | |||
598 | } | |||
599 | else if ( row == 0 ) | |||
600 | { | |||
601 | // @throws SQLException | |||
602 | // ... if row is 0 ... | |||
603 | throw sdbc::SQLException(); | |||
604 | } | |||
605 | else // row > 0 | |||
606 | { | |||
607 | sal_Int32 nCount = m_pImpl->m_xDataSupplier->totalCount(); | |||
608 | ||||
609 | if ( row <= nCount ) | |||
610 | { | |||
611 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
612 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
613 | m_pImpl->m_nPos = row; | |||
614 | m_pImpl->m_xDataSupplier->validate(); | |||
615 | return sal_True((sal_Bool)1); | |||
616 | } | |||
617 | else // row > nCount | |||
618 | { | |||
619 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
620 | m_pImpl->m_bAfterLast = sal_True((sal_Bool)1); | |||
621 | m_pImpl->m_xDataSupplier->validate(); | |||
622 | return sal_False((sal_Bool)0); | |||
623 | } | |||
624 | } | |||
625 | ||||
626 | // unreachable... | |||
627 | } | |||
628 | ||||
629 | //========================================================================= | |||
630 | // virtual | |||
631 | sal_Bool SAL_CALL ResultSet::relative( sal_Int32 rows ) | |||
632 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
633 | { | |||
634 | /* | |||
635 | Attempting to move beyond the first/last row in the result set | |||
636 | positions the cursor before/after the the first/last row. | |||
637 | ||||
638 | Calling relative( 0 ) is valid, but does not change the cursor position. | |||
639 | ||||
640 | Calling relative( 1 ) is different from calling next() because it makes | |||
641 | sense to call next() when there is no current row, for example, when | |||
642 | the cursor is positioned before the first row or after the last row of | |||
643 | the result set. | |||
644 | */ | |||
645 | if ( m_pImpl->m_bAfterLast || ( m_pImpl->m_nPos == 0 ) ) | |||
646 | { | |||
647 | // "No current row". | |||
648 | throw sdbc::SQLException(); | |||
649 | } | |||
650 | ||||
651 | if ( rows < 0 ) | |||
652 | { | |||
653 | if ( ( m_pImpl->m_nPos + rows ) > 0 ) | |||
654 | { | |||
655 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
656 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
657 | m_pImpl->m_nPos = ( m_pImpl->m_nPos + rows ); | |||
658 | m_pImpl->m_xDataSupplier->validate(); | |||
659 | return sal_True((sal_Bool)1); | |||
660 | } | |||
661 | else | |||
662 | { | |||
663 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
664 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
665 | m_pImpl->m_nPos = 0; | |||
666 | m_pImpl->m_xDataSupplier->validate(); | |||
667 | return sal_False((sal_Bool)0); | |||
668 | } | |||
669 | } | |||
670 | else if ( rows == 0 ) | |||
671 | { | |||
672 | // nop. | |||
673 | m_pImpl->m_xDataSupplier->validate(); | |||
674 | return sal_True((sal_Bool)1); | |||
675 | } | |||
676 | else // rows > 0 | |||
677 | { | |||
678 | sal_Int32 nCount = m_pImpl->m_xDataSupplier->totalCount(); | |||
679 | if ( ( m_pImpl->m_nPos + rows ) <= nCount ) | |||
680 | { | |||
681 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
682 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
683 | m_pImpl->m_nPos = ( m_pImpl->m_nPos + rows ); | |||
684 | m_pImpl->m_xDataSupplier->validate(); | |||
685 | return sal_True((sal_Bool)1); | |||
686 | } | |||
687 | else | |||
688 | { | |||
689 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
690 | m_pImpl->m_bAfterLast = sal_True((sal_Bool)1); | |||
691 | m_pImpl->m_xDataSupplier->validate(); | |||
692 | return sal_False((sal_Bool)0); | |||
693 | } | |||
694 | } | |||
695 | ||||
696 | // unreachable... | |||
697 | } | |||
698 | ||||
699 | //========================================================================= | |||
700 | // virtual | |||
701 | sal_Bool SAL_CALL ResultSet::previous() | |||
702 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
703 | { | |||
704 | /* | |||
705 | previous() is not the same as relative( -1 ) because it makes sense | |||
706 | to call previous() when there is no current row. | |||
707 | */ | |||
708 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
709 | ||||
710 | if ( m_pImpl->m_bAfterLast ) | |||
| ||||
711 | { | |||
712 | m_pImpl->m_bAfterLast = sal_False((sal_Bool)0); | |||
713 | sal_Int32 nCount = m_pImpl->m_xDataSupplier->totalCount(); | |||
714 | m_pImpl->m_nPos = nCount; | |||
715 | } | |||
716 | else if ( m_pImpl->m_nPos ) | |||
717 | m_pImpl->m_nPos--; | |||
718 | ||||
719 | if ( m_pImpl->m_nPos ) | |||
720 | { | |||
721 | m_pImpl->m_xDataSupplier->validate(); | |||
| ||||
722 | return sal_True((sal_Bool)1); | |||
723 | } | |||
724 | ||||
725 | m_pImpl->m_xDataSupplier->validate(); | |||
726 | return sal_False((sal_Bool)0); | |||
727 | } | |||
728 | ||||
729 | //========================================================================= | |||
730 | // virtual | |||
731 | void SAL_CALL ResultSet::refreshRow() | |||
732 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
733 | { | |||
734 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
735 | if ( m_pImpl->m_bAfterLast || ( m_pImpl->m_nPos == 0 ) ) | |||
736 | return; | |||
737 | ||||
738 | m_pImpl->m_xDataSupplier->releasePropertyValues( m_pImpl->m_nPos ); | |||
739 | m_pImpl->m_xDataSupplier->validate(); | |||
740 | } | |||
741 | ||||
742 | //========================================================================= | |||
743 | // virtual | |||
744 | sal_Bool SAL_CALL ResultSet::rowUpdated() | |||
745 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
746 | { | |||
747 | m_pImpl->m_xDataSupplier->validate(); | |||
748 | return sal_False((sal_Bool)0); | |||
749 | } | |||
750 | ||||
751 | //========================================================================= | |||
752 | // virtual | |||
753 | sal_Bool SAL_CALL ResultSet::rowInserted() | |||
754 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
755 | { | |||
756 | m_pImpl->m_xDataSupplier->validate(); | |||
757 | return sal_False((sal_Bool)0); | |||
758 | } | |||
759 | ||||
760 | //========================================================================= | |||
761 | // virtual | |||
762 | sal_Bool SAL_CALL ResultSet::rowDeleted() | |||
763 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
764 | { | |||
765 | m_pImpl->m_xDataSupplier->validate(); | |||
766 | return sal_False((sal_Bool)0); | |||
767 | } | |||
768 | ||||
769 | //========================================================================= | |||
770 | // virtual | |||
771 | uno::Reference< uno::XInterface > SAL_CALL ResultSet::getStatement() | |||
772 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
773 | { | |||
774 | /* | |||
775 | returns the Statement that produced this ResultSet object. If the | |||
776 | result set was generated some other way, ... this method returns null. | |||
777 | */ | |||
778 | m_pImpl->m_xDataSupplier->validate(); | |||
779 | return uno::Reference< uno::XInterface >(); | |||
780 | } | |||
781 | ||||
782 | //========================================================================= | |||
783 | // | |||
784 | // XRow methods. | |||
785 | // | |||
786 | //========================================================================= | |||
787 | ||||
788 | // virtual | |||
789 | sal_Bool SAL_CALL ResultSet::wasNull() | |||
790 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
791 | { | |||
792 | // This method can not be implemented correctly!!! Imagine different | |||
793 | // threads doing a getXYZ - wasNull calling sequence on the same | |||
794 | // implementation object... | |||
795 | ||||
796 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
797 | { | |||
798 | uno::Reference< sdbc::XRow > xValues | |||
799 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
800 | m_pImpl->m_nPos - 1 ); | |||
801 | if ( xValues.is() ) | |||
802 | { | |||
803 | m_pImpl->m_xDataSupplier->validate(); | |||
804 | return xValues->wasNull(); | |||
805 | } | |||
806 | } | |||
807 | ||||
808 | m_pImpl->m_xDataSupplier->validate(); | |||
809 | return m_pImpl->m_bWasNull; | |||
810 | } | |||
811 | ||||
812 | //========================================================================= | |||
813 | // virtual | |||
814 | rtl::OUString SAL_CALL ResultSet::getString( sal_Int32 columnIndex ) | |||
815 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
816 | { | |||
817 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
818 | { | |||
819 | uno::Reference< sdbc::XRow > xValues | |||
820 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
821 | m_pImpl->m_nPos - 1 ); | |||
822 | if ( xValues.is() ) | |||
823 | { | |||
824 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
825 | m_pImpl->m_xDataSupplier->validate(); | |||
826 | return xValues->getString( columnIndex ); | |||
827 | } | |||
828 | } | |||
829 | ||||
830 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
831 | m_pImpl->m_xDataSupplier->validate(); | |||
832 | return rtl::OUString(); | |||
833 | } | |||
834 | ||||
835 | //========================================================================= | |||
836 | // virtual | |||
837 | sal_Bool SAL_CALL ResultSet::getBoolean( sal_Int32 columnIndex ) | |||
838 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
839 | { | |||
840 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
841 | { | |||
842 | uno::Reference< sdbc::XRow > xValues | |||
843 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
844 | m_pImpl->m_nPos - 1 ); | |||
845 | if ( xValues.is() ) | |||
846 | { | |||
847 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
848 | m_pImpl->m_xDataSupplier->validate(); | |||
849 | return xValues->getBoolean( columnIndex ); | |||
850 | } | |||
851 | } | |||
852 | ||||
853 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
854 | m_pImpl->m_xDataSupplier->validate(); | |||
855 | return sal_False((sal_Bool)0); | |||
856 | } | |||
857 | ||||
858 | //========================================================================= | |||
859 | // virtual | |||
860 | sal_Int8 SAL_CALL ResultSet::getByte( sal_Int32 columnIndex ) | |||
861 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
862 | { | |||
863 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
864 | { | |||
865 | uno::Reference< sdbc::XRow > xValues | |||
866 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
867 | m_pImpl->m_nPos - 1 ); | |||
868 | if ( xValues.is() ) | |||
869 | { | |||
870 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
871 | m_pImpl->m_xDataSupplier->validate(); | |||
872 | return xValues->getByte( columnIndex ); | |||
873 | } | |||
874 | } | |||
875 | ||||
876 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
877 | m_pImpl->m_xDataSupplier->validate(); | |||
878 | return 0; | |||
879 | } | |||
880 | ||||
881 | //========================================================================= | |||
882 | // virtual | |||
883 | sal_Int16 SAL_CALL ResultSet::getShort( sal_Int32 columnIndex ) | |||
884 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
885 | { | |||
886 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
887 | { | |||
888 | uno::Reference< sdbc::XRow > xValues | |||
889 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
890 | m_pImpl->m_nPos - 1 ); | |||
891 | if ( xValues.is() ) | |||
892 | { | |||
893 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
894 | m_pImpl->m_xDataSupplier->validate(); | |||
895 | return xValues->getShort( columnIndex ); | |||
896 | } | |||
897 | } | |||
898 | ||||
899 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
900 | m_pImpl->m_xDataSupplier->validate(); | |||
901 | return 0; | |||
902 | } | |||
903 | ||||
904 | //========================================================================= | |||
905 | // virtual | |||
906 | sal_Int32 SAL_CALL ResultSet::getInt( sal_Int32 columnIndex ) | |||
907 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
908 | { | |||
909 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
910 | { | |||
911 | uno::Reference< sdbc::XRow > xValues | |||
912 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
913 | m_pImpl->m_nPos - 1 ); | |||
914 | if ( xValues.is() ) | |||
915 | { | |||
916 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
917 | m_pImpl->m_xDataSupplier->validate(); | |||
918 | return xValues->getInt( columnIndex ); | |||
919 | } | |||
920 | } | |||
921 | ||||
922 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
923 | m_pImpl->m_xDataSupplier->validate(); | |||
924 | return 0; | |||
925 | } | |||
926 | ||||
927 | //========================================================================= | |||
928 | // virtual | |||
929 | sal_Int64 SAL_CALL ResultSet::getLong( sal_Int32 columnIndex ) | |||
930 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
931 | { | |||
932 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
933 | { | |||
934 | uno::Reference< sdbc::XRow > xValues | |||
935 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
936 | m_pImpl->m_nPos - 1 ); | |||
937 | if ( xValues.is() ) | |||
938 | { | |||
939 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
940 | m_pImpl->m_xDataSupplier->validate(); | |||
941 | return xValues->getLong( columnIndex ); | |||
942 | } | |||
943 | } | |||
944 | ||||
945 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
946 | m_pImpl->m_xDataSupplier->validate(); | |||
947 | return 0; | |||
948 | } | |||
949 | ||||
950 | //========================================================================= | |||
951 | // virtual | |||
952 | float SAL_CALL ResultSet::getFloat( sal_Int32 columnIndex ) | |||
953 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
954 | { | |||
955 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
956 | { | |||
957 | uno::Reference< sdbc::XRow > xValues | |||
958 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
959 | m_pImpl->m_nPos - 1 ); | |||
960 | if ( xValues.is() ) | |||
961 | { | |||
962 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
963 | m_pImpl->m_xDataSupplier->validate(); | |||
964 | return xValues->getFloat( columnIndex ); | |||
965 | } | |||
966 | } | |||
967 | ||||
968 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
969 | m_pImpl->m_xDataSupplier->validate(); | |||
970 | return 0; | |||
971 | } | |||
972 | ||||
973 | //========================================================================= | |||
974 | // virtual | |||
975 | double SAL_CALL ResultSet::getDouble( sal_Int32 columnIndex ) | |||
976 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
977 | { | |||
978 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
979 | { | |||
980 | uno::Reference< sdbc::XRow > xValues | |||
981 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
982 | m_pImpl->m_nPos - 1 ); | |||
983 | if ( xValues.is() ) | |||
984 | { | |||
985 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
986 | m_pImpl->m_xDataSupplier->validate(); | |||
987 | return xValues->getDouble( columnIndex ); | |||
988 | } | |||
989 | } | |||
990 | ||||
991 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
992 | m_pImpl->m_xDataSupplier->validate(); | |||
993 | return 0; | |||
994 | } | |||
995 | ||||
996 | //========================================================================= | |||
997 | // virtual | |||
998 | uno::Sequence< sal_Int8 > SAL_CALL | |||
999 | ResultSet::getBytes( sal_Int32 columnIndex ) | |||
1000 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1001 | { | |||
1002 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1003 | { | |||
1004 | uno::Reference< sdbc::XRow > xValues | |||
1005 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1006 | m_pImpl->m_nPos - 1 ); | |||
1007 | if ( xValues.is() ) | |||
1008 | { | |||
1009 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1010 | m_pImpl->m_xDataSupplier->validate(); | |||
1011 | return xValues->getBytes( columnIndex ); | |||
1012 | } | |||
1013 | } | |||
1014 | ||||
1015 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1016 | m_pImpl->m_xDataSupplier->validate(); | |||
1017 | return uno::Sequence< sal_Int8 >(); | |||
1018 | } | |||
1019 | ||||
1020 | //========================================================================= | |||
1021 | // virtual | |||
1022 | util::Date SAL_CALL ResultSet::getDate( sal_Int32 columnIndex ) | |||
1023 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1024 | { | |||
1025 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1026 | { | |||
1027 | uno::Reference< sdbc::XRow > xValues | |||
1028 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1029 | m_pImpl->m_nPos - 1 ); | |||
1030 | if ( xValues.is() ) | |||
1031 | { | |||
1032 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1033 | m_pImpl->m_xDataSupplier->validate(); | |||
1034 | return xValues->getDate( columnIndex ); | |||
1035 | } | |||
1036 | } | |||
1037 | ||||
1038 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1039 | m_pImpl->m_xDataSupplier->validate(); | |||
1040 | return util::Date(); | |||
1041 | } | |||
1042 | ||||
1043 | //========================================================================= | |||
1044 | // virtual | |||
1045 | util::Time SAL_CALL ResultSet::getTime( sal_Int32 columnIndex ) | |||
1046 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1047 | { | |||
1048 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1049 | { | |||
1050 | uno::Reference< sdbc::XRow > xValues | |||
1051 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1052 | m_pImpl->m_nPos - 1 ); | |||
1053 | if ( xValues.is() ) | |||
1054 | { | |||
1055 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1056 | m_pImpl->m_xDataSupplier->validate(); | |||
1057 | return xValues->getTime( columnIndex ); | |||
1058 | } | |||
1059 | } | |||
1060 | ||||
1061 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1062 | m_pImpl->m_xDataSupplier->validate(); | |||
1063 | return util::Time(); | |||
1064 | } | |||
1065 | ||||
1066 | //========================================================================= | |||
1067 | // virtual | |||
1068 | util::DateTime SAL_CALL | |||
1069 | ResultSet::getTimestamp( sal_Int32 columnIndex ) | |||
1070 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1071 | { | |||
1072 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1073 | { | |||
1074 | uno::Reference< sdbc::XRow > xValues | |||
1075 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1076 | m_pImpl->m_nPos - 1 ); | |||
1077 | if ( xValues.is() ) | |||
1078 | { | |||
1079 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1080 | m_pImpl->m_xDataSupplier->validate(); | |||
1081 | return xValues->getTimestamp( columnIndex ); | |||
1082 | } | |||
1083 | } | |||
1084 | ||||
1085 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1086 | m_pImpl->m_xDataSupplier->validate(); | |||
1087 | return util::DateTime(); | |||
1088 | } | |||
1089 | ||||
1090 | //========================================================================= | |||
1091 | // virtual | |||
1092 | uno::Reference< io::XInputStream > SAL_CALL | |||
1093 | ResultSet::getBinaryStream( sal_Int32 columnIndex ) | |||
1094 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1095 | { | |||
1096 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1097 | { | |||
1098 | uno::Reference< sdbc::XRow > xValues | |||
1099 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1100 | m_pImpl->m_nPos - 1 ); | |||
1101 | if ( xValues.is() ) | |||
1102 | { | |||
1103 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1104 | m_pImpl->m_xDataSupplier->validate(); | |||
1105 | return xValues->getBinaryStream( columnIndex ); | |||
1106 | } | |||
1107 | } | |||
1108 | ||||
1109 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1110 | m_pImpl->m_xDataSupplier->validate(); | |||
1111 | return uno::Reference< io::XInputStream >(); | |||
1112 | } | |||
1113 | ||||
1114 | //========================================================================= | |||
1115 | // virtual | |||
1116 | uno::Reference< io::XInputStream > SAL_CALL | |||
1117 | ResultSet::getCharacterStream( sal_Int32 columnIndex ) | |||
1118 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1119 | { | |||
1120 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1121 | { | |||
1122 | uno::Reference< sdbc::XRow > xValues | |||
1123 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1124 | m_pImpl->m_nPos - 1 ); | |||
1125 | if ( xValues.is() ) | |||
1126 | { | |||
1127 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1128 | m_pImpl->m_xDataSupplier->validate(); | |||
1129 | return xValues->getCharacterStream( columnIndex ); | |||
1130 | } | |||
1131 | } | |||
1132 | ||||
1133 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1134 | m_pImpl->m_xDataSupplier->validate(); | |||
1135 | return uno::Reference< io::XInputStream >(); | |||
1136 | } | |||
1137 | ||||
1138 | //========================================================================= | |||
1139 | // virtual | |||
1140 | uno::Any SAL_CALL ResultSet::getObject( | |||
1141 | sal_Int32 columnIndex, | |||
1142 | const uno::Reference< container::XNameAccess >& typeMap ) | |||
1143 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1144 | { | |||
1145 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1146 | { | |||
1147 | uno::Reference< sdbc::XRow > xValues | |||
1148 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1149 | m_pImpl->m_nPos - 1 ); | |||
1150 | if ( xValues.is() ) | |||
1151 | { | |||
1152 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1153 | m_pImpl->m_xDataSupplier->validate(); | |||
1154 | return xValues->getObject( columnIndex, typeMap ); | |||
1155 | } | |||
1156 | } | |||
1157 | ||||
1158 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1159 | m_pImpl->m_xDataSupplier->validate(); | |||
1160 | return uno::Any(); | |||
1161 | } | |||
1162 | ||||
1163 | //========================================================================= | |||
1164 | // virtual | |||
1165 | uno::Reference< sdbc::XRef > SAL_CALL | |||
1166 | ResultSet::getRef( sal_Int32 columnIndex ) | |||
1167 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1168 | { | |||
1169 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1170 | { | |||
1171 | uno::Reference< sdbc::XRow > xValues | |||
1172 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1173 | m_pImpl->m_nPos - 1 ); | |||
1174 | if ( xValues.is() ) | |||
1175 | { | |||
1176 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1177 | m_pImpl->m_xDataSupplier->validate(); | |||
1178 | return xValues->getRef( columnIndex ); | |||
1179 | } | |||
1180 | } | |||
1181 | ||||
1182 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1183 | m_pImpl->m_xDataSupplier->validate(); | |||
1184 | return uno::Reference< sdbc::XRef >(); | |||
1185 | } | |||
1186 | ||||
1187 | //========================================================================= | |||
1188 | // virtual | |||
1189 | uno::Reference< sdbc::XBlob > SAL_CALL | |||
1190 | ResultSet::getBlob( sal_Int32 columnIndex ) | |||
1191 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1192 | { | |||
1193 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1194 | { | |||
1195 | uno::Reference< sdbc::XRow > xValues | |||
1196 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1197 | m_pImpl->m_nPos - 1 ); | |||
1198 | if ( xValues.is() ) | |||
1199 | { | |||
1200 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1201 | m_pImpl->m_xDataSupplier->validate(); | |||
1202 | return xValues->getBlob( columnIndex ); | |||
1203 | } | |||
1204 | } | |||
1205 | ||||
1206 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1207 | m_pImpl->m_xDataSupplier->validate(); | |||
1208 | return uno::Reference< sdbc::XBlob >(); | |||
1209 | } | |||
1210 | ||||
1211 | //========================================================================= | |||
1212 | // virtual | |||
1213 | uno::Reference< sdbc::XClob > SAL_CALL | |||
1214 | ResultSet::getClob( sal_Int32 columnIndex ) | |||
1215 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1216 | { | |||
1217 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1218 | { | |||
1219 | uno::Reference< sdbc::XRow > xValues | |||
1220 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1221 | m_pImpl->m_nPos - 1 ); | |||
1222 | if ( xValues.is() ) | |||
1223 | { | |||
1224 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1225 | m_pImpl->m_xDataSupplier->validate(); | |||
1226 | return xValues->getClob( columnIndex ); | |||
1227 | } | |||
1228 | } | |||
1229 | ||||
1230 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1231 | m_pImpl->m_xDataSupplier->validate(); | |||
1232 | return uno::Reference< sdbc::XClob >(); | |||
1233 | } | |||
1234 | ||||
1235 | //========================================================================= | |||
1236 | // virtual | |||
1237 | uno::Reference< sdbc::XArray > SAL_CALL | |||
1238 | ResultSet::getArray( sal_Int32 columnIndex ) | |||
1239 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1240 | { | |||
1241 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1242 | { | |||
1243 | uno::Reference< sdbc::XRow > xValues | |||
1244 | = m_pImpl->m_xDataSupplier->queryPropertyValues( | |||
1245 | m_pImpl->m_nPos - 1 ); | |||
1246 | if ( xValues.is() ) | |||
1247 | { | |||
1248 | m_pImpl->m_bWasNull = sal_False((sal_Bool)0); | |||
1249 | m_pImpl->m_xDataSupplier->validate(); | |||
1250 | return xValues->getArray( columnIndex ); | |||
1251 | } | |||
1252 | } | |||
1253 | ||||
1254 | m_pImpl->m_bWasNull = sal_True((sal_Bool)1); | |||
1255 | m_pImpl->m_xDataSupplier->validate(); | |||
1256 | return uno::Reference< sdbc::XArray >(); | |||
1257 | } | |||
1258 | ||||
1259 | //========================================================================= | |||
1260 | // | |||
1261 | // XCloseable methods. | |||
1262 | // | |||
1263 | //========================================================================= | |||
1264 | ||||
1265 | // virtual | |||
1266 | void SAL_CALL ResultSet::close() | |||
1267 | throw( sdbc::SQLException, uno::RuntimeException ) | |||
1268 | { | |||
1269 | m_pImpl->m_xDataSupplier->close(); | |||
1270 | m_pImpl->m_xDataSupplier->validate(); | |||
1271 | } | |||
1272 | ||||
1273 | //========================================================================= | |||
1274 | // | |||
1275 | // XContentAccess methods. | |||
1276 | // | |||
1277 | //========================================================================= | |||
1278 | ||||
1279 | // virtual | |||
1280 | rtl::OUString SAL_CALL ResultSet::queryContentIdentifierString() | |||
1281 | throw( uno::RuntimeException ) | |||
1282 | { | |||
1283 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1284 | return m_pImpl->m_xDataSupplier->queryContentIdentifierString( | |||
1285 | m_pImpl->m_nPos - 1 ); | |||
1286 | ||||
1287 | return rtl::OUString(); | |||
1288 | } | |||
1289 | ||||
1290 | //========================================================================= | |||
1291 | // virtual | |||
1292 | uno::Reference< com::sun::star::ucb::XContentIdentifier > SAL_CALL | |||
1293 | ResultSet::queryContentIdentifier() | |||
1294 | throw( uno::RuntimeException ) | |||
1295 | { | |||
1296 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1297 | return m_pImpl->m_xDataSupplier->queryContentIdentifier( | |||
1298 | m_pImpl->m_nPos - 1 ); | |||
1299 | ||||
1300 | return uno::Reference< com::sun::star::ucb::XContentIdentifier >(); | |||
1301 | } | |||
1302 | ||||
1303 | //========================================================================= | |||
1304 | // virtual | |||
1305 | uno::Reference< com::sun::star::ucb::XContent > SAL_CALL | |||
1306 | ResultSet::queryContent() | |||
1307 | throw( uno::RuntimeException ) | |||
1308 | { | |||
1309 | if ( m_pImpl->m_nPos && !m_pImpl->m_bAfterLast ) | |||
1310 | return m_pImpl->m_xDataSupplier->queryContent( m_pImpl->m_nPos - 1 ); | |||
1311 | ||||
1312 | return uno::Reference< com::sun::star::ucb::XContent >(); | |||
1313 | } | |||
1314 | ||||
1315 | //========================================================================= | |||
1316 | // | |||
1317 | // XPropertySet methods. | |||
1318 | // | |||
1319 | //========================================================================= | |||
1320 | ||||
1321 | // virtual | |||
1322 | uno::Reference< beans::XPropertySetInfo > SAL_CALL | |||
1323 | ResultSet::getPropertySetInfo() | |||
1324 | throw( uno::RuntimeException ) | |||
1325 | { | |||
1326 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
1327 | ||||
1328 | if ( !m_pImpl->m_xPropSetInfo.is() ) | |||
1329 | m_pImpl->m_xPropSetInfo | |||
1330 | = new PropertySetInfo( m_pImpl->m_xSMgr, | |||
1331 | aPropertyTable, | |||
1332 | RESULTSET_PROPERTY_COUNT2 ); | |||
1333 | return m_pImpl->m_xPropSetInfo; | |||
1334 | } | |||
1335 | ||||
1336 | //========================================================================= | |||
1337 | // virtual | |||
1338 | void SAL_CALL ResultSet::setPropertyValue( const rtl::OUString& aPropertyName, | |||
1339 | const uno::Any& ) | |||
1340 | throw( beans::UnknownPropertyException, | |||
1341 | beans::PropertyVetoException, | |||
1342 | lang::IllegalArgumentException, | |||
1343 | lang::WrappedTargetException, | |||
1344 | uno::RuntimeException ) | |||
1345 | { | |||
1346 | if ( aPropertyName.isEmpty() ) | |||
1347 | throw beans::UnknownPropertyException(); | |||
1348 | ||||
1349 | if ( aPropertyName.equals( | |||
1350 | rtl::OUString("RowCount") ) ) | |||
1351 | { | |||
1352 | // property is read-only. | |||
1353 | throw lang::IllegalArgumentException(); | |||
1354 | } | |||
1355 | else if ( aPropertyName.equals( | |||
1356 | rtl::OUString("IsRowCountFinal") ) ) | |||
1357 | { | |||
1358 | // property is read-only. | |||
1359 | throw lang::IllegalArgumentException(); | |||
1360 | } | |||
1361 | else | |||
1362 | { | |||
1363 | throw beans::UnknownPropertyException(); | |||
1364 | } | |||
1365 | } | |||
1366 | ||||
1367 | //========================================================================= | |||
1368 | // virtual | |||
1369 | uno::Any SAL_CALL ResultSet::getPropertyValue( | |||
1370 | const rtl::OUString& PropertyName ) | |||
1371 | throw( beans::UnknownPropertyException, | |||
1372 | lang::WrappedTargetException, | |||
1373 | uno::RuntimeException ) | |||
1374 | { | |||
1375 | if ( PropertyName.isEmpty() ) | |||
1376 | throw beans::UnknownPropertyException(); | |||
1377 | ||||
1378 | uno::Any aValue; | |||
1379 | ||||
1380 | if ( PropertyName.equals( | |||
1381 | rtl::OUString("RowCount") ) ) | |||
1382 | { | |||
1383 | aValue <<= m_pImpl->m_xDataSupplier->currentCount(); | |||
1384 | } | |||
1385 | else if ( PropertyName.equals( | |||
1386 | rtl::OUString("IsRowCountFinal") ) ) | |||
1387 | { | |||
1388 | aValue <<= m_pImpl->m_xDataSupplier->isCountFinal(); | |||
1389 | } | |||
1390 | else | |||
1391 | { | |||
1392 | throw beans::UnknownPropertyException(); | |||
1393 | } | |||
1394 | ||||
1395 | return aValue; | |||
1396 | } | |||
1397 | ||||
1398 | //========================================================================= | |||
1399 | // virtual | |||
1400 | void SAL_CALL ResultSet::addPropertyChangeListener( | |||
1401 | const rtl::OUString& aPropertyName, | |||
1402 | const uno::Reference< beans::XPropertyChangeListener >& xListener ) | |||
1403 | throw( beans::UnknownPropertyException, | |||
1404 | lang::WrappedTargetException, | |||
1405 | uno::RuntimeException ) | |||
1406 | { | |||
1407 | // Note: An empty property name means a listener for "all" properties. | |||
1408 | ||||
1409 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
1410 | ||||
1411 | if ( !aPropertyName.isEmpty() && | |||
1412 | !aPropertyName.equals( | |||
1413 | rtl::OUString("RowCount") ) && | |||
1414 | !aPropertyName.equals( | |||
1415 | rtl::OUString("IsRowCountFinal") ) ) | |||
1416 | throw beans::UnknownPropertyException(); | |||
1417 | ||||
1418 | if ( !m_pImpl->m_pPropertyChangeListeners ) | |||
1419 | m_pImpl->m_pPropertyChangeListeners | |||
1420 | = new PropertyChangeListeners( m_pImpl->m_aMutex ); | |||
1421 | ||||
1422 | m_pImpl->m_pPropertyChangeListeners->addInterface( | |||
1423 | aPropertyName, xListener ); | |||
1424 | } | |||
1425 | ||||
1426 | //========================================================================= | |||
1427 | // virtual | |||
1428 | void SAL_CALL ResultSet::removePropertyChangeListener( | |||
1429 | const rtl::OUString& aPropertyName, | |||
1430 | const uno::Reference< beans::XPropertyChangeListener >& xListener ) | |||
1431 | throw( beans::UnknownPropertyException, | |||
1432 | lang::WrappedTargetException, | |||
1433 | uno::RuntimeException ) | |||
1434 | { | |||
1435 | osl::MutexGuard aGuard( m_pImpl->m_aMutex ); | |||
1436 | ||||
1437 | if ( !aPropertyName.isEmpty() && | |||
1438 | !aPropertyName.equals( | |||
1439 | rtl::OUString("RowCount") ) && | |||
1440 | !aPropertyName.equals( | |||
1441 | rtl::OUString("IsRowCountFinal") ) ) | |||
1442 | throw beans::UnknownPropertyException(); | |||
1443 | ||||
1444 | if ( m_pImpl->m_pPropertyChangeListeners ) | |||
1445 | m_pImpl->m_pPropertyChangeListeners->removeInterface( | |||
1446 | aPropertyName, xListener ); | |||
1447 | ||||
1448 | } | |||
1449 | ||||
1450 | //========================================================================= | |||
1451 | // virtual | |||
1452 | void SAL_CALL ResultSet::addVetoableChangeListener( | |||
1453 | const rtl::OUString&, | |||
1454 | const uno::Reference< beans::XVetoableChangeListener >& ) | |||
1455 | throw( beans::UnknownPropertyException, | |||
1456 | lang::WrappedTargetException, | |||
1457 | uno::RuntimeException ) | |||
1458 | { | |||
1459 | // No constrained props, at the moment. | |||
1460 | } | |||
1461 | ||||
1462 | //========================================================================= | |||
1463 | // virtual | |||
1464 | void SAL_CALL ResultSet::removeVetoableChangeListener( | |||
1465 | const rtl::OUString&, | |||
1466 | const uno::Reference< beans::XVetoableChangeListener >& ) | |||
1467 | throw( beans::UnknownPropertyException, | |||
1468 | lang::WrappedTargetException, | |||
1469 | uno::RuntimeException ) | |||
1470 | { | |||
1471 | // No constrained props, at the moment. | |||
1472 | } | |||
1473 | ||||
1474 | //========================================================================= | |||
1475 | // | |||
1476 | // Non-interface methods. | |||
1477 | // | |||
1478 | //========================================================================= | |||
1479 | ||||
1480 | void ResultSet::propertyChanged( const beans::PropertyChangeEvent& rEvt ) | |||
1481 | { | |||
1482 | if ( !m_pImpl->m_pPropertyChangeListeners ) | |||
1483 | return; | |||
1484 | ||||
1485 | // Notify listeners interested especially in the changed property. | |||
1486 | cppu::OInterfaceContainerHelper* pPropsContainer | |||
1487 | = m_pImpl->m_pPropertyChangeListeners->getContainer( | |||
1488 | rEvt.PropertyName ); | |||
1489 | if ( pPropsContainer ) | |||
1490 | { | |||
1491 | cppu::OInterfaceIteratorHelper aIter( *pPropsContainer ); | |||
1492 | while ( aIter.hasMoreElements() ) | |||
1493 | { | |||
1494 | uno::Reference< beans::XPropertyChangeListener > xListener( | |||
1495 | aIter.next(), uno::UNO_QUERY ); | |||
1496 | if ( xListener.is() ) | |||
1497 | xListener->propertyChange( rEvt ); | |||
1498 | } | |||
1499 | } | |||
1500 | ||||
1501 | // Notify listeners interested in all properties. | |||
1502 | pPropsContainer | |||
1503 | = m_pImpl->m_pPropertyChangeListeners->getContainer( rtl::OUString() ); | |||
1504 | if ( pPropsContainer ) | |||
1505 | { | |||
1506 | cppu::OInterfaceIteratorHelper aIter( *pPropsContainer ); | |||
1507 | while ( aIter.hasMoreElements() ) | |||
1508 | { | |||
1509 | uno::Reference< beans::XPropertyChangeListener > xListener( | |||
1510 | aIter.next(), uno::UNO_QUERY ); | |||
1511 | if ( xListener.is() ) | |||
1512 | xListener->propertyChange( rEvt ); | |||
1513 | } | |||
1514 | } | |||
1515 | } | |||
1516 | ||||
1517 | //========================================================================= | |||
1518 | void ResultSet::rowCountChanged( sal_uInt32 nOld, sal_uInt32 nNew ) | |||
1519 | { | |||
1520 | OSL_ENSURE( nOld < nNew, "ResultSet::rowCountChanged - nOld >= nNew!" )do { if (true && (!(nOld < nNew))) { sal_detail_logFormat ((SAL_DETAIL_LOG_LEVEL_WARN), ("legacy.osl"), ("/usr/local/src/libreoffice/ucbhelper/source/provider/resultset.cxx" ":" "1520" ": "), "%s", "ResultSet::rowCountChanged - nOld >= nNew!" ); } } while (false); | |||
1521 | ||||
1522 | if ( !m_pImpl->m_pPropertyChangeListeners ) | |||
1523 | return; | |||
1524 | ||||
1525 | propertyChanged( | |||
1526 | beans::PropertyChangeEvent( | |||
1527 | static_cast< cppu::OWeakObject * >( this ), | |||
1528 | rtl::OUString("RowCount"), | |||
1529 | sal_False((sal_Bool)0), | |||
1530 | 1001, | |||
1531 | uno::makeAny( nOld ), // old value | |||
1532 | uno::makeAny( nNew ) ) ); // new value | |||
1533 | } | |||
1534 | ||||
1535 | //========================================================================= | |||
1536 | void ResultSet::rowCountFinal() | |||
1537 | { | |||
1538 | if ( !m_pImpl->m_pPropertyChangeListeners ) | |||
1539 | return; | |||
1540 | ||||
1541 | propertyChanged( | |||
1542 | beans::PropertyChangeEvent( | |||
1543 | static_cast< cppu::OWeakObject * >( this ), | |||
1544 | rtl::OUString("IsRowCountFinal"), | |||
1545 | sal_False((sal_Bool)0), | |||
1546 | 1000, | |||
1547 | uno:: makeAny( sal_False((sal_Bool)0) ), // old value | |||
1548 | uno::makeAny( sal_True((sal_Bool)1) ) ) ); // new value | |||
1549 | } | |||
1550 | ||||
1551 | //========================================================================= | |||
1552 | const uno::Sequence< beans::Property >& ResultSet::getProperties() | |||
1553 | { | |||
1554 | return m_pImpl->m_aProperties; | |||
1555 | } | |||
1556 | ||||
1557 | //========================================================================= | |||
1558 | const uno::Reference< com::sun::star::ucb::XCommandEnvironment >& | |||
1559 | ResultSet::getEnvironment() | |||
1560 | { | |||
1561 | return m_pImpl->m_xEnv; | |||
1562 | } | |||
1563 | ||||
1564 | } // namespace ucbhelper | |||
1565 | ||||
1566 | namespace ucbhelper_impl { | |||
1567 | ||||
1568 | //========================================================================= | |||
1569 | //========================================================================= | |||
1570 | // | |||
1571 | // PropertySetInfo Implementation. | |||
1572 | // | |||
1573 | //========================================================================= | |||
1574 | //========================================================================= | |||
1575 | ||||
1576 | PropertySetInfo::PropertySetInfo( | |||
1577 | const uno::Reference< lang::XMultiServiceFactory >& rxSMgr, | |||
1578 | const PropertyInfo* pProps, | |||
1579 | sal_Int32 nProps ) | |||
1580 | : m_xSMgr( rxSMgr ) | |||
1581 | { | |||
1582 | m_pProps = new uno::Sequence< beans::Property >( nProps ); | |||
1583 | ||||
1584 | if ( nProps ) | |||
1585 | { | |||
1586 | const PropertyInfo* pEntry = pProps; | |||
1587 | beans::Property* pProperties = m_pProps->getArray(); | |||
1588 | ||||
1589 | for ( sal_Int32 n = 0; n < nProps; ++n ) | |||
1590 | { | |||
1591 | beans::Property& rProp = pProperties[ n ]; | |||
1592 | ||||
1593 | rProp.Name = rtl::OUString::createFromAscii( pEntry->pName ); | |||
1594 | rProp.Handle = pEntry->nHandle; | |||
1595 | rProp.Type = pEntry->pGetCppuType(); | |||
1596 | rProp.Attributes = pEntry->nAttributes; | |||
1597 | ||||
1598 | pEntry++; | |||
1599 | } | |||
1600 | } | |||
1601 | } | |||
1602 | ||||
1603 | //========================================================================= | |||
1604 | // virtual | |||
1605 | PropertySetInfo::~PropertySetInfo() | |||
1606 | { | |||
1607 | delete m_pProps; | |||
1608 | } | |||
1609 | ||||
1610 | //========================================================================= | |||
1611 | // | |||
1612 | // XInterface methods. | |||
1613 | // | |||
1614 | //========================================================================= | |||
1615 | ||||
1616 | XINTERFACE_IMPL_2( PropertySetInfo,void PropertySetInfo::acquire() throw() { OWeakObject::acquire (); } void PropertySetInfo::release() throw() { OWeakObject:: release(); } com::sun::star::uno::Any PropertySetInfo::queryInterface ( const com::sun::star::uno::Type & rType ) throw( com::sun ::star::uno::RuntimeException ) { com::sun::star::uno::Any aRet = cppu::queryInterface( rType, (static_cast< lang::XTypeProvider * >(this)), (static_cast< beans::XPropertySetInfo* > (this)) ); return aRet.hasValue() ? aRet : OWeakObject::queryInterface ( rType ); } | |||
1617 | lang::XTypeProvider,void PropertySetInfo::acquire() throw() { OWeakObject::acquire (); } void PropertySetInfo::release() throw() { OWeakObject:: release(); } com::sun::star::uno::Any PropertySetInfo::queryInterface ( const com::sun::star::uno::Type & rType ) throw( com::sun ::star::uno::RuntimeException ) { com::sun::star::uno::Any aRet = cppu::queryInterface( rType, (static_cast< lang::XTypeProvider * >(this)), (static_cast< beans::XPropertySetInfo* > (this)) ); return aRet.hasValue() ? aRet : OWeakObject::queryInterface ( rType ); } | |||
1618 | beans::XPropertySetInfo )void PropertySetInfo::acquire() throw() { OWeakObject::acquire (); } void PropertySetInfo::release() throw() { OWeakObject:: release(); } com::sun::star::uno::Any PropertySetInfo::queryInterface ( const com::sun::star::uno::Type & rType ) throw( com::sun ::star::uno::RuntimeException ) { com::sun::star::uno::Any aRet = cppu::queryInterface( rType, (static_cast< lang::XTypeProvider * >(this)), (static_cast< beans::XPropertySetInfo* > (this)) ); return aRet.hasValue() ? aRet : OWeakObject::queryInterface ( rType ); }; | |||
1619 | ||||
1620 | //========================================================================= | |||
1621 | // | |||
1622 | // XTypeProvider methods. | |||
1623 | // | |||
1624 | //========================================================================= | |||
1625 | ||||
1626 | XTYPEPROVIDER_IMPL_2( PropertySetInfo,com::sun::star::uno::Sequence< sal_Int8 > PropertySetInfo ::getImplementationId() throw( com::sun::star::uno::RuntimeException ) { static cppu::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex () ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool )0) ); pId = &id; } } return (*pId).getImplementationId() ; } com::sun::star::uno::Sequence< com::sun::star::uno::Type > PropertySetInfo::getTypes() throw( com::sun::star::uno:: RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu::OTypeCollection collection( getCppuType( static_cast < com::sun::star::uno::Reference< lang::XTypeProvider > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< beans::XPropertySetInfo > * >( 0 ) ) ); pCollection = &collection; } } return (*pCollection). getTypes(); } | |||
1627 | lang::XTypeProvider,com::sun::star::uno::Sequence< sal_Int8 > PropertySetInfo ::getImplementationId() throw( com::sun::star::uno::RuntimeException ) { static cppu::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex () ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool )0) ); pId = &id; } } return (*pId).getImplementationId() ; } com::sun::star::uno::Sequence< com::sun::star::uno::Type > PropertySetInfo::getTypes() throw( com::sun::star::uno:: RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu::OTypeCollection collection( getCppuType( static_cast < com::sun::star::uno::Reference< lang::XTypeProvider > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< beans::XPropertySetInfo > * >( 0 ) ) ); pCollection = &collection; } } return (*pCollection). getTypes(); } | |||
1628 | beans::XPropertySetInfo )com::sun::star::uno::Sequence< sal_Int8 > PropertySetInfo ::getImplementationId() throw( com::sun::star::uno::RuntimeException ) { static cppu::OImplementationId* pId = __null; if ( !pId ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex () ); if ( !pId ) { static cppu::OImplementationId id( ((sal_Bool )0) ); pId = &id; } } return (*pId).getImplementationId() ; } com::sun::star::uno::Sequence< com::sun::star::uno::Type > PropertySetInfo::getTypes() throw( com::sun::star::uno:: RuntimeException ) { static cppu::OTypeCollection* pCollection = __null; if ( !pCollection ) { osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() ); if ( !pCollection ) { static cppu::OTypeCollection collection( getCppuType( static_cast < com::sun::star::uno::Reference< lang::XTypeProvider > * >( 0 ) ), getCppuType( static_cast< com::sun::star:: uno::Reference< beans::XPropertySetInfo > * >( 0 ) ) ); pCollection = &collection; } } return (*pCollection). getTypes(); }; | |||
1629 | ||||
1630 | //========================================================================= | |||
1631 | // | |||
1632 | // XPropertySetInfo methods. | |||
1633 | // | |||
1634 | //========================================================================= | |||
1635 | ||||
1636 | // virtual | |||
1637 | uno::Sequence< beans::Property > SAL_CALL PropertySetInfo::getProperties() | |||
1638 | throw( uno::RuntimeException ) | |||
1639 | { | |||
1640 | return uno::Sequence< beans::Property >( *m_pProps ); | |||
1641 | } | |||
1642 | ||||
1643 | //========================================================================= | |||
1644 | // virtual | |||
1645 | beans::Property SAL_CALL PropertySetInfo::getPropertyByName( | |||
1646 | const rtl::OUString& aName ) | |||
1647 | throw( beans::UnknownPropertyException, uno::RuntimeException ) | |||
1648 | { | |||
1649 | beans::Property aProp; | |||
1650 | if ( queryProperty( aName, aProp ) ) | |||
1651 | return aProp; | |||
1652 | ||||
1653 | throw beans::UnknownPropertyException(); | |||
1654 | } | |||
1655 | ||||
1656 | //========================================================================= | |||
1657 | // virtual | |||
1658 | sal_Bool SAL_CALL PropertySetInfo::hasPropertyByName( | |||
1659 | const rtl::OUString& Name ) | |||
1660 | throw( uno::RuntimeException ) | |||
1661 | { | |||
1662 | beans::Property aProp; | |||
1663 | return queryProperty( Name, aProp ); | |||
1664 | } | |||
1665 | ||||
1666 | //========================================================================= | |||
1667 | sal_Bool PropertySetInfo::queryProperty( | |||
1668 | const rtl::OUString& aName, beans::Property& rProp ) | |||
1669 | { | |||
1670 | sal_Int32 nCount = m_pProps->getLength(); | |||
1671 | const beans::Property* pProps = m_pProps->getConstArray(); | |||
1672 | for ( sal_Int32 n = 0; n < nCount; ++n ) | |||
1673 | { | |||
1674 | const beans::Property& rCurr = pProps[ n ]; | |||
1675 | if ( rCurr.Name == aName ) | |||
1676 | { | |||
1677 | rProp = rCurr; | |||
1678 | return sal_True((sal_Bool)1); | |||
1679 | } | |||
1680 | } | |||
1681 | ||||
1682 | return sal_False((sal_Bool)0); | |||
1683 | } | |||
1684 | ||||
1685 | } // namespace ucbhelper_impl | |||
1686 | ||||
1687 | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |