/src/libreoffice/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx
Line | Count | Source |
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 | | #include <FDatabaseMetaDataResultSet.hxx> |
22 | | #include <FDatabaseMetaDataResultSetMetaData.hxx> |
23 | | #include <com/sun/star/sdbc/ColumnSearch.hpp> |
24 | | #include <com/sun/star/beans/PropertyAttribute.hpp> |
25 | | #include <cppuhelper/supportsservice.hxx> |
26 | | #include <connectivity/dbexception.hxx> |
27 | | #include <o3tl/safeint.hxx> |
28 | | #include <TConnection.hxx> |
29 | | |
30 | | using namespace connectivity; |
31 | | using namespace dbtools; |
32 | | using namespace cppu; |
33 | | |
34 | | using namespace ::com::sun::star::beans; |
35 | | using namespace ::com::sun::star::uno; |
36 | | using namespace ::com::sun::star::sdbc; |
37 | | using namespace ::com::sun::star::container; |
38 | | using namespace ::com::sun::star::lang; |
39 | | |
40 | | ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet() |
41 | | : |
42 | 0 | m_nColPos(0) |
43 | 0 | ,m_bBOF(true) |
44 | 0 | ,m_bEOF(true) |
45 | 0 | { |
46 | 0 | construct(); |
47 | 0 | } Unexecuted instantiation: connectivity::ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet() Unexecuted instantiation: connectivity::ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet() |
48 | | |
49 | | |
50 | | ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet( MetaDataResultSetType _eType ) |
51 | | : |
52 | 100k | m_nColPos(0) |
53 | 100k | ,m_bBOF(true) |
54 | 100k | ,m_bEOF(true) |
55 | 100k | { |
56 | 100k | construct(); |
57 | | |
58 | 100k | setType(_eType); |
59 | 100k | } Unexecuted instantiation: connectivity::ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet(connectivity::ODatabaseMetaDataResultSet::MetaDataResultSetType) connectivity::ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet(connectivity::ODatabaseMetaDataResultSet::MetaDataResultSetType) Line | Count | Source | 52 | 100k | m_nColPos(0) | 53 | 100k | ,m_bBOF(true) | 54 | 100k | ,m_bEOF(true) | 55 | 100k | { | 56 | 100k | construct(); | 57 | | | 58 | 100k | setType(_eType); | 59 | 100k | } |
|
60 | | |
61 | | |
62 | | ODatabaseMetaDataResultSet::~ODatabaseMetaDataResultSet() |
63 | 100k | { |
64 | 100k | } |
65 | | |
66 | | void ODatabaseMetaDataResultSet::construct() |
67 | 100k | { |
68 | 100k | registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FETCHSIZE), PROPERTY_ID_FETCHSIZE, 0,&m_nFetchSize, ::cppu::UnoType<sal_Int32>::get()); |
69 | 100k | registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_RESULTSETTYPE), PROPERTY_ID_RESULTSETTYPE, PropertyAttribute::READONLY,&m_nResultSetType, ::cppu::UnoType<sal_Int32>::get()); |
70 | 100k | registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FETCHDIRECTION), PROPERTY_ID_FETCHDIRECTION, 0, &m_nFetchDirection, ::cppu::UnoType<sal_Int32>::get()); |
71 | 100k | registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_RESULTSETCONCURRENCY), PROPERTY_ID_RESULTSETCONCURRENCY, PropertyAttribute::READONLY,&m_nResultSetConcurrency, ::cppu::UnoType<sal_Int32>::get()); |
72 | 100k | } |
73 | | |
74 | | void ODatabaseMetaDataResultSet::setType(MetaDataResultSetType _eType) |
75 | 100k | { |
76 | 100k | switch( _eType ) |
77 | 100k | { |
78 | 0 | case eCatalogs: setCatalogsMap(); break; |
79 | 0 | case eSchemas: setSchemasMap(); break; |
80 | 0 | case eColumnPrivileges: setColumnPrivilegesMap(); break; |
81 | 11.1k | case eColumns: setColumnsMap(); break; |
82 | 67.4k | case eTables: setTablesMap(); break; |
83 | 0 | case eTableTypes: setTableTypes(); break; |
84 | 0 | case eProcedureColumns: setProcedureColumnsMap(); break; |
85 | 0 | case eProcedures: setProceduresMap(); break; |
86 | 0 | case eExportedKeys: setExportedKeysMap(); break; |
87 | 11.1k | case eImportedKeys: setImportedKeysMap(); break; |
88 | 11.1k | case ePrimaryKeys: setPrimaryKeysMap(); break; |
89 | 0 | case eIndexInfo: setIndexInfoMap(); break; |
90 | 0 | case eTablePrivileges: setTablePrivilegesMap(); break; |
91 | 0 | case eCrossReference: setCrossReferenceMap(); break; |
92 | 0 | case eTypeInfo: setTypeInfoMap(); break; |
93 | 0 | case eBestRowIdentifier: setBestRowIdentifierMap(); break; |
94 | 0 | case eVersionColumns: setVersionColumnsMap(); break; |
95 | 0 | case eUDTs: setUDTsMap(); break; |
96 | 0 | default: |
97 | 0 | OSL_FAIL("Wrong type!"); |
98 | 100k | } |
99 | 100k | } |
100 | | |
101 | | void ODatabaseMetaDataResultSet::disposing(std::unique_lock<std::mutex>& rGuard) |
102 | 56.0k | { |
103 | 56.0k | disposePropertySetListeners(rGuard); |
104 | | |
105 | 56.0k | m_xMetaData.clear(); |
106 | 56.0k | m_aRowsIter = m_aRows.end(); |
107 | 56.0k | m_aRows.clear(); |
108 | 56.0k | m_aRowsIter = m_aRows.end(); |
109 | 56.0k | } |
110 | | |
111 | | void ODatabaseMetaDataResultSet::setRows(ORows&& _rRows) |
112 | 78.5k | { |
113 | 78.5k | m_aRows = std::move(_rRows); |
114 | 78.5k | m_bBOF = true; |
115 | 78.5k | m_bEOF = m_aRows.empty(); |
116 | 78.5k | } |
117 | | |
118 | | sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::findColumn( const OUString& columnName ) |
119 | 0 | { |
120 | 0 | std::unique_lock aGuard( m_aMutex ); |
121 | 0 | throwIfDisposed(aGuard); |
122 | |
|
123 | 0 | Reference< XResultSetMetaData > xMeta = getMetaData(aGuard); |
124 | 0 | sal_Int32 nLen = xMeta->getColumnCount(); |
125 | 0 | sal_Int32 i = 1; |
126 | 0 | for(;i<=nLen;++i) |
127 | 0 | { |
128 | 0 | if(xMeta->isCaseSensitive(i) ? columnName == xMeta->getColumnName(i) : |
129 | 0 | columnName.equalsIgnoreAsciiCase(xMeta->getColumnName(i)) |
130 | 0 | ) |
131 | 0 | return i; |
132 | 0 | } |
133 | | |
134 | 0 | ::dbtools::throwInvalidColumnException( columnName, *this ); |
135 | 0 | } |
136 | | |
137 | | void ODatabaseMetaDataResultSet::checkIndex(std::unique_lock<std::mutex>& /*rGuard*/, sal_Int32 columnIndex ) |
138 | 3.02M | { |
139 | 3.02M | if(columnIndex < 1 || o3tl::make_unsigned(columnIndex) >= (*m_aRowsIter).size()) |
140 | 0 | ::dbtools::throwInvalidIndexException(*this); |
141 | 3.02M | } |
142 | | |
143 | | Reference< css::io::XInputStream > SAL_CALL ODatabaseMetaDataResultSet::getBinaryStream( sal_Int32 /*columnIndex*/ ) |
144 | 0 | { |
145 | 0 | return nullptr; |
146 | 0 | } |
147 | | |
148 | | Reference< css::io::XInputStream > SAL_CALL ODatabaseMetaDataResultSet::getCharacterStream( sal_Int32 /*columnIndex*/ ) |
149 | 0 | { |
150 | 0 | return nullptr; |
151 | 0 | } |
152 | | |
153 | | |
154 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::getBoolean( sal_Int32 columnIndex ) |
155 | 0 | { |
156 | 0 | return getValue(columnIndex).getBool(); |
157 | 0 | } |
158 | | |
159 | | |
160 | | sal_Int8 SAL_CALL ODatabaseMetaDataResultSet::getByte( sal_Int32 columnIndex ) |
161 | 0 | { |
162 | 0 | return getValue(columnIndex).getInt8(); |
163 | 0 | } |
164 | | |
165 | | |
166 | | Sequence< sal_Int8 > SAL_CALL ODatabaseMetaDataResultSet::getBytes( sal_Int32 columnIndex ) |
167 | 0 | { |
168 | 0 | return getValue(columnIndex).getSequence(); |
169 | 0 | } |
170 | | |
171 | | |
172 | | css::util::Date SAL_CALL ODatabaseMetaDataResultSet::getDate( sal_Int32 columnIndex ) |
173 | 0 | { |
174 | 0 | return getValue(columnIndex).getDate(); |
175 | 0 | } |
176 | | |
177 | | |
178 | | double SAL_CALL ODatabaseMetaDataResultSet::getDouble( sal_Int32 columnIndex ) |
179 | 0 | { |
180 | 0 | return getValue(columnIndex).getDouble(); |
181 | 0 | } |
182 | | |
183 | | |
184 | | float SAL_CALL ODatabaseMetaDataResultSet::getFloat( sal_Int32 columnIndex ) |
185 | 0 | { |
186 | 0 | return getValue(columnIndex).getFloat(); |
187 | 0 | } |
188 | | |
189 | | |
190 | | sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getInt( sal_Int32 columnIndex ) |
191 | 1.61M | { |
192 | 1.61M | return getValue(columnIndex).getInt32(); |
193 | 1.61M | } |
194 | | |
195 | | |
196 | | sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getRow( ) |
197 | 0 | { |
198 | 0 | return 0; |
199 | 0 | } |
200 | | |
201 | | |
202 | | sal_Int64 SAL_CALL ODatabaseMetaDataResultSet::getLong( sal_Int32 columnIndex ) |
203 | 0 | { |
204 | 0 | return getValue(columnIndex).getLong(); |
205 | 0 | } |
206 | | |
207 | | |
208 | | Reference< XResultSetMetaData > SAL_CALL ODatabaseMetaDataResultSet::getMetaData( ) |
209 | 0 | { |
210 | 0 | std::unique_lock aGuard( m_aMutex ); |
211 | 0 | return getMetaData(aGuard); |
212 | 0 | } |
213 | | |
214 | | Reference< XResultSetMetaData > ODatabaseMetaDataResultSet::getMetaData( std::unique_lock<std::mutex>& rGuard ) |
215 | 0 | { |
216 | 0 | throwIfDisposed(rGuard); |
217 | |
|
218 | 0 | if(!m_xMetaData.is()) |
219 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
220 | |
|
221 | 0 | return m_xMetaData; |
222 | 0 | } |
223 | | |
224 | | Reference< XArray > SAL_CALL ODatabaseMetaDataResultSet::getArray( sal_Int32 /*columnIndex*/ ) |
225 | 0 | { |
226 | 0 | return nullptr; |
227 | 0 | } |
228 | | |
229 | | |
230 | | Reference< XClob > SAL_CALL ODatabaseMetaDataResultSet::getClob( sal_Int32 /*columnIndex*/ ) |
231 | 0 | { |
232 | 0 | return nullptr; |
233 | 0 | } |
234 | | |
235 | | Reference< XBlob > SAL_CALL ODatabaseMetaDataResultSet::getBlob( sal_Int32 /*columnIndex*/ ) |
236 | 0 | { |
237 | 0 | return nullptr; |
238 | 0 | } |
239 | | |
240 | | |
241 | | Reference< XRef > SAL_CALL ODatabaseMetaDataResultSet::getRef( sal_Int32 /*columnIndex*/ ) |
242 | 0 | { |
243 | 0 | return nullptr; |
244 | 0 | } |
245 | | |
246 | | |
247 | | Any SAL_CALL ODatabaseMetaDataResultSet::getObject( sal_Int32 columnIndex, const Reference< css::container::XNameAccess >& /*typeMap*/ ) |
248 | 0 | { |
249 | 0 | return getValue(columnIndex).makeAny(); |
250 | 0 | } |
251 | | |
252 | | |
253 | | sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex ) |
254 | 0 | { |
255 | 0 | return getValue(columnIndex).getInt16(); |
256 | 0 | } |
257 | | |
258 | | |
259 | | OUString SAL_CALL ODatabaseMetaDataResultSet::getString( sal_Int32 columnIndex ) |
260 | 1.40M | { |
261 | 1.40M | return getValue(columnIndex).getString(); |
262 | 1.40M | } |
263 | | |
264 | | |
265 | | css::util::Time SAL_CALL ODatabaseMetaDataResultSet::getTime( sal_Int32 columnIndex ) |
266 | 0 | { |
267 | 0 | return getValue(columnIndex).getTime(); |
268 | 0 | } |
269 | | |
270 | | |
271 | | css::util::DateTime SAL_CALL ODatabaseMetaDataResultSet::getTimestamp( sal_Int32 columnIndex ) |
272 | 0 | { |
273 | 0 | return getValue(columnIndex).getDateTime(); |
274 | 0 | } |
275 | | |
276 | | |
277 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isAfterLast() |
278 | 0 | { |
279 | 0 | return m_bEOF; |
280 | 0 | } |
281 | | |
282 | | bool ODatabaseMetaDataResultSet::isAfterLast( std::unique_lock<std::mutex>& /*rGuard*/) |
283 | 3.02M | { |
284 | 3.02M | return m_bEOF; |
285 | 3.02M | } |
286 | | |
287 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isFirst( ) |
288 | 0 | { |
289 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
290 | 0 | } |
291 | | |
292 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isLast( ) |
293 | 0 | { |
294 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
295 | 0 | } |
296 | | |
297 | | void SAL_CALL ODatabaseMetaDataResultSet::beforeFirst( ) |
298 | 0 | { |
299 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
300 | 0 | } |
301 | | |
302 | | void SAL_CALL ODatabaseMetaDataResultSet::afterLast( ) |
303 | 0 | { |
304 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
305 | 0 | } |
306 | | |
307 | | |
308 | | void SAL_CALL ODatabaseMetaDataResultSet::close( ) |
309 | 0 | { |
310 | 0 | { |
311 | 0 | std::unique_lock aGuard( m_aMutex ); |
312 | 0 | throwIfDisposed(aGuard); |
313 | 0 | } |
314 | 0 | dispose(); |
315 | 0 | } |
316 | | |
317 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::first( ) |
318 | 0 | { |
319 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
320 | 0 | } |
321 | | |
322 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::last( ) |
323 | 0 | { |
324 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
325 | 0 | } |
326 | | |
327 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::absolute( sal_Int32 /*row*/ ) |
328 | 0 | { |
329 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
330 | 0 | } |
331 | | |
332 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::relative( sal_Int32 /*row*/ ) |
333 | 0 | { |
334 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
335 | 0 | } |
336 | | |
337 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::previous( ) |
338 | 0 | { |
339 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
340 | 0 | } |
341 | | |
342 | | Reference< XInterface > SAL_CALL ODatabaseMetaDataResultSet::getStatement( ) |
343 | 0 | { |
344 | 0 | return nullptr; |
345 | 0 | } |
346 | | |
347 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowDeleted( ) |
348 | 0 | { |
349 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
350 | 0 | } |
351 | | |
352 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowInserted( ) |
353 | 0 | { |
354 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
355 | 0 | } |
356 | | |
357 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowUpdated( ) |
358 | 0 | { |
359 | 0 | ::dbtools::throwFunctionSequenceException(*this); |
360 | 0 | } |
361 | | |
362 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isBeforeFirst() |
363 | 0 | { |
364 | 0 | return m_bBOF; |
365 | 0 | } |
366 | | |
367 | | bool ODatabaseMetaDataResultSet::isBeforeFirst(std::unique_lock<std::mutex>& /*rGuard*/) |
368 | 3.02M | { |
369 | 3.02M | return m_bBOF; |
370 | 3.02M | } |
371 | | |
372 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::next( ) |
373 | 480k | { |
374 | 480k | std::unique_lock aGuard( m_aMutex ); |
375 | 480k | return next(aGuard); |
376 | 480k | } |
377 | | |
378 | | bool ODatabaseMetaDataResultSet::next( std::unique_lock<std::mutex>& rGuard ) |
379 | 480k | { |
380 | 480k | throwIfDisposed(rGuard); |
381 | | |
382 | 480k | if ( m_bBOF ) |
383 | 100k | { |
384 | 100k | m_aRowsIter = m_aRows.begin(); |
385 | 100k | m_bBOF = false; |
386 | 100k | } |
387 | 380k | else |
388 | 380k | { |
389 | 380k | if ( m_bEOF ) |
390 | 0 | throwFunctionSequenceException( *this ); |
391 | 380k | else |
392 | 380k | if ( m_aRowsIter != m_aRows.end() ) |
393 | 380k | ++m_aRowsIter; |
394 | 380k | } |
395 | | |
396 | 480k | bool bSuccess = m_aRowsIter != m_aRows.end(); |
397 | 480k | if ( !bSuccess ) |
398 | 89.4k | { |
399 | 89.4k | m_bEOF = true; |
400 | 89.4k | m_bBOF = m_aRows.empty(); |
401 | 89.4k | } |
402 | 480k | return bSuccess; |
403 | 480k | } |
404 | | |
405 | | |
406 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::wasNull( ) |
407 | 0 | { |
408 | 0 | std::unique_lock aGuard( m_aMutex ); |
409 | 0 | throwIfDisposed(aGuard); |
410 | |
|
411 | 0 | if(m_aRowsIter == m_aRows.end() || !(*m_aRowsIter)[m_nColPos].is()) |
412 | 0 | return true; |
413 | | |
414 | 0 | return (*m_aRowsIter)[m_nColPos]->getValue().isNull(); |
415 | 0 | } |
416 | | |
417 | | void SAL_CALL ODatabaseMetaDataResultSet::refreshRow( ) |
418 | 0 | { |
419 | 0 | } |
420 | | |
421 | | |
422 | | void SAL_CALL ODatabaseMetaDataResultSet::cancel( ) |
423 | 0 | { |
424 | 0 | } |
425 | | |
426 | | void SAL_CALL ODatabaseMetaDataResultSet::clearWarnings( ) |
427 | 0 | { |
428 | 0 | } |
429 | | |
430 | | Any SAL_CALL ODatabaseMetaDataResultSet::getWarnings( ) |
431 | 0 | { |
432 | 0 | return Any(); |
433 | 0 | } |
434 | | |
435 | | ::cppu::IPropertyArrayHelper* ODatabaseMetaDataResultSet::createArrayHelper( ) const |
436 | 0 | { |
437 | 0 | Sequence< Property > aProps; |
438 | 0 | describeProperties(aProps); |
439 | 0 | return new ::cppu::OPropertyArrayHelper(aProps); |
440 | 0 | } |
441 | | |
442 | | void ODatabaseMetaDataResultSet::setProceduresMap() |
443 | 0 | { |
444 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
445 | 0 | m_xMetaData->setProceduresMap(); |
446 | 0 | } |
447 | | |
448 | | void ODatabaseMetaDataResultSet::setCatalogsMap() |
449 | 0 | { |
450 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
451 | 0 | m_xMetaData->setCatalogsMap(); |
452 | 0 | } |
453 | | |
454 | | void ODatabaseMetaDataResultSet::setSchemasMap() |
455 | 0 | { |
456 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
457 | 0 | m_xMetaData->setSchemasMap(); |
458 | 0 | } |
459 | | |
460 | | void ODatabaseMetaDataResultSet::setColumnPrivilegesMap() |
461 | 0 | { |
462 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
463 | 0 | m_xMetaData->setColumnPrivilegesMap(); |
464 | 0 | } |
465 | | |
466 | | void ODatabaseMetaDataResultSet::setColumnsMap() |
467 | 11.1k | { |
468 | 11.1k | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
469 | 11.1k | m_xMetaData->setColumnsMap(); |
470 | 11.1k | } |
471 | | |
472 | | void ODatabaseMetaDataResultSet::setTablesMap() |
473 | 67.4k | { |
474 | 67.4k | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
475 | 67.4k | m_xMetaData->setTablesMap(); |
476 | 67.4k | } |
477 | | |
478 | | void ODatabaseMetaDataResultSet::setProcedureColumnsMap() |
479 | 0 | { |
480 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
481 | 0 | m_xMetaData->setProcedureColumnsMap(); |
482 | 0 | } |
483 | | |
484 | | void ODatabaseMetaDataResultSet::setPrimaryKeysMap() |
485 | 11.1k | { |
486 | 11.1k | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
487 | 11.1k | m_xMetaData->setPrimaryKeysMap(); |
488 | 11.1k | } |
489 | | |
490 | | void ODatabaseMetaDataResultSet::setIndexInfoMap() |
491 | 0 | { |
492 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
493 | 0 | m_xMetaData->setIndexInfoMap(); |
494 | 0 | } |
495 | | |
496 | | void ODatabaseMetaDataResultSet::setTablePrivilegesMap() |
497 | 0 | { |
498 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
499 | 0 | m_xMetaData->setTablePrivilegesMap(); |
500 | 0 | } |
501 | | |
502 | | void ODatabaseMetaDataResultSet::setCrossReferenceMap() |
503 | 0 | { |
504 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
505 | 0 | m_xMetaData->setCrossReferenceMap(); |
506 | 0 | } |
507 | | |
508 | | void ODatabaseMetaDataResultSet::setVersionColumnsMap() |
509 | 0 | { |
510 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
511 | 0 | m_xMetaData->setVersionColumnsMap(); |
512 | 0 | } |
513 | | |
514 | | void ODatabaseMetaDataResultSet::setBestRowIdentifierMap() |
515 | 0 | { |
516 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
517 | 0 | m_xMetaData->setBestRowIdentifierMap(); |
518 | 0 | } |
519 | | |
520 | | void ODatabaseMetaDataResultSet::setTypeInfoMap() |
521 | 0 | { |
522 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
523 | 0 | m_xMetaData->setTypeInfoMap(); |
524 | 0 | } |
525 | | |
526 | | void ODatabaseMetaDataResultSet::setUDTsMap() |
527 | 0 | { |
528 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
529 | 0 | m_xMetaData->setUDTsMap(); |
530 | 0 | } |
531 | | |
532 | | void ODatabaseMetaDataResultSet::setTableTypes() |
533 | 0 | { |
534 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
535 | 0 | m_xMetaData->setTableTypes(); |
536 | 0 | } |
537 | | |
538 | | void ODatabaseMetaDataResultSet::setExportedKeysMap() |
539 | 0 | { |
540 | 0 | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
541 | 0 | m_xMetaData->setExportedKeysMap(); |
542 | 0 | } |
543 | | |
544 | | void ODatabaseMetaDataResultSet::setImportedKeysMap() |
545 | 11.1k | { |
546 | 11.1k | m_xMetaData = new ODatabaseMetaDataResultSetMetaData(); |
547 | 11.1k | m_xMetaData->setImportedKeysMap(); |
548 | 11.1k | } |
549 | | |
550 | | ORowSetValueDecorator& ORowSetValueDecorator::operator=(const ORowSetValue& _aValue) |
551 | 7.21M | { |
552 | 7.21M | m_aValue = _aValue; |
553 | 7.21M | return *this; |
554 | 7.21M | } |
555 | | |
556 | | const ORowSetValue& ODatabaseMetaDataResultSet::getValue(sal_Int32 columnIndex) |
557 | 3.02M | { |
558 | 3.02M | std::unique_lock aGuard( m_aMutex ); |
559 | 3.02M | throwIfDisposed(aGuard); |
560 | | |
561 | 3.02M | if ( isBeforeFirst(aGuard) || isAfterLast(aGuard) ) |
562 | 0 | ::dbtools::throwFunctionSequenceException( *this ); |
563 | | |
564 | 3.02M | checkIndex(aGuard, columnIndex); |
565 | 3.02M | m_nColPos = columnIndex; |
566 | | |
567 | 3.02M | if(m_aRowsIter != m_aRows.end() && (*m_aRowsIter)[columnIndex].is()) |
568 | 2.68M | return *(*m_aRowsIter)[columnIndex]; |
569 | 346k | return m_aEmptyValue; |
570 | 3.02M | } |
571 | | |
572 | | /// return an empty ORowSetValueDecorator |
573 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getEmptyValue() |
574 | 67.4k | { |
575 | 67.4k | static ORowSetValueDecoratorRef aEmptyValueRef = new ORowSetValueDecorator(); |
576 | 67.4k | return aEmptyValueRef; |
577 | 67.4k | } |
578 | | |
579 | | /// return an ORowSetValueDecorator with 0 as value |
580 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::get0Value() |
581 | 0 | { |
582 | 0 | static ORowSetValueDecoratorRef a0ValueRef = new ORowSetValueDecorator(sal_Int32(0)); |
583 | 0 | return a0ValueRef; |
584 | 0 | } |
585 | | |
586 | | /// return an ORowSetValueDecorator with 1 as value |
587 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::get1Value() |
588 | 0 | { |
589 | 0 | static ORowSetValueDecoratorRef a1ValueRef = new ORowSetValueDecorator(sal_Int32(1)); |
590 | 0 | return a1ValueRef; |
591 | 0 | } |
592 | | |
593 | | /// return an ORowSetValueDecorator with ColumnSearch::BASIC as value |
594 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getBasicValue() |
595 | 0 | { |
596 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(ColumnSearch::BASIC); |
597 | 0 | return aValueRef; |
598 | 0 | } |
599 | | |
600 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getSelectValue() |
601 | 0 | { |
602 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"SELECT"_ustr); |
603 | 0 | return aValueRef; |
604 | 0 | } |
605 | | |
606 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getInsertValue() |
607 | 0 | { |
608 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"INSERT"_ustr); |
609 | 0 | return aValueRef; |
610 | 0 | } |
611 | | |
612 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getDeleteValue() |
613 | 0 | { |
614 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"DELETE"_ustr); |
615 | 0 | return aValueRef; |
616 | 0 | } |
617 | | |
618 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getUpdateValue() |
619 | 0 | { |
620 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"UPDATE"_ustr); |
621 | 0 | return aValueRef; |
622 | 0 | } |
623 | | |
624 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getCreateValue() |
625 | 0 | { |
626 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"CREATE"_ustr); |
627 | 0 | return aValueRef; |
628 | 0 | } |
629 | | |
630 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getReadValue() |
631 | 0 | { |
632 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"READ"_ustr); |
633 | 0 | return aValueRef; |
634 | 0 | } |
635 | | |
636 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getAlterValue() |
637 | 0 | { |
638 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"ALTER"_ustr); |
639 | 0 | return aValueRef; |
640 | 0 | } |
641 | | |
642 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getDropValue() |
643 | 0 | { |
644 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"DROP"_ustr); |
645 | 0 | return aValueRef; |
646 | 0 | } |
647 | | |
648 | | ORowSetValueDecoratorRef const & ODatabaseMetaDataResultSet::getQuoteValue() |
649 | 0 | { |
650 | 0 | static ORowSetValueDecoratorRef aValueRef = new ORowSetValueDecorator(u"'"_ustr); |
651 | 0 | return aValueRef; |
652 | 0 | } |
653 | | |
654 | | void SAL_CALL ODatabaseMetaDataResultSet::initialize( const Sequence< Any >& _aArguments ) |
655 | 0 | { |
656 | 0 | if ( _aArguments.getLength() != 2 ) |
657 | 0 | return; |
658 | | |
659 | 0 | sal_Int32 nResultSetType = 0; |
660 | 0 | if ( !(_aArguments[0] >>= nResultSetType)) |
661 | 0 | return; |
662 | | |
663 | 0 | setType(static_cast<MetaDataResultSetType>(nResultSetType)); |
664 | 0 | Sequence< Sequence<Any> > aRows; |
665 | 0 | if ( !(_aArguments[1] >>= aRows) ) |
666 | 0 | return; |
667 | | |
668 | 0 | ORows aRowsToSet; |
669 | 0 | for (auto& row : aRows) |
670 | 0 | { |
671 | 0 | ORow aRowToSet; |
672 | 0 | for (auto& field : row) |
673 | 0 | { |
674 | 0 | ORowSetValueDecoratorRef aValue; |
675 | 0 | switch (field.getValueTypeClass()) |
676 | 0 | { |
677 | 0 | case TypeClass_BOOLEAN: |
678 | 0 | { |
679 | 0 | bool bValue = false; |
680 | 0 | field >>= bValue; |
681 | 0 | aValue = new ORowSetValueDecorator(ORowSetValue(bValue)); |
682 | 0 | } |
683 | 0 | break; |
684 | 0 | case TypeClass_BYTE: |
685 | 0 | { |
686 | 0 | sal_Int8 nValue(0); |
687 | 0 | field >>= nValue; |
688 | 0 | aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); |
689 | 0 | } |
690 | 0 | break; |
691 | 0 | case TypeClass_SHORT: |
692 | 0 | case TypeClass_UNSIGNED_SHORT: |
693 | 0 | { |
694 | 0 | sal_Int16 nValue(0); |
695 | 0 | field >>= nValue; |
696 | 0 | aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); |
697 | 0 | } |
698 | 0 | break; |
699 | 0 | case TypeClass_LONG: |
700 | 0 | case TypeClass_UNSIGNED_LONG: |
701 | 0 | { |
702 | 0 | sal_Int32 nValue(0); |
703 | 0 | field >>= nValue; |
704 | 0 | aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); |
705 | 0 | } |
706 | 0 | break; |
707 | 0 | case TypeClass_HYPER: |
708 | 0 | case TypeClass_UNSIGNED_HYPER: |
709 | 0 | { |
710 | 0 | sal_Int64 nValue(0); |
711 | 0 | field >>= nValue; |
712 | 0 | aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); |
713 | 0 | } |
714 | 0 | break; |
715 | 0 | case TypeClass_FLOAT: |
716 | 0 | { |
717 | 0 | float nValue(0.0); |
718 | 0 | field >>= nValue; |
719 | 0 | aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); |
720 | 0 | } |
721 | 0 | break; |
722 | 0 | case TypeClass_DOUBLE: |
723 | 0 | { |
724 | 0 | double nValue(0.0); |
725 | 0 | field >>= nValue; |
726 | 0 | aValue = new ORowSetValueDecorator(ORowSetValue(nValue)); |
727 | 0 | } |
728 | 0 | break; |
729 | 0 | case TypeClass_STRING: |
730 | 0 | { |
731 | 0 | OUString sValue; |
732 | 0 | field >>= sValue; |
733 | 0 | aValue = new ORowSetValueDecorator(ORowSetValue(sValue)); |
734 | 0 | } |
735 | 0 | break; |
736 | 0 | default: |
737 | 0 | break; |
738 | 0 | } |
739 | 0 | aRowToSet.push_back(aValue); |
740 | 0 | } |
741 | 0 | aRowsToSet.push_back(std::move(aRowToSet)); |
742 | 0 | } // for (; pRowsIter != pRowsEnd;++pRowsIter |
743 | 0 | setRows(std::move(aRowsToSet)); |
744 | 0 | } |
745 | | // XServiceInfo |
746 | | |
747 | | |
748 | | OUString SAL_CALL ODatabaseMetaDataResultSet::getImplementationName( ) |
749 | 0 | { |
750 | 0 | return u"org.openoffice.comp.helper.DatabaseMetaDataResultSet"_ustr; |
751 | 0 | } |
752 | | |
753 | | sal_Bool SAL_CALL ODatabaseMetaDataResultSet::supportsService( const OUString& _rServiceName ) |
754 | 0 | { |
755 | 0 | return cppu::supportsService(this, _rServiceName); |
756 | 0 | } |
757 | | |
758 | | Sequence< OUString > SAL_CALL ODatabaseMetaDataResultSet::getSupportedServiceNames( ) |
759 | 0 | { |
760 | 0 | return Sequence<OUString>{ u"com.sun.star.sdbc.ResultSet"_ustr }; |
761 | 0 | } |
762 | | |
763 | | extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* |
764 | | connectivity_dbtools_ODatabaseMetaDataResultSet_get_implementation( |
765 | | css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any> const&) |
766 | 0 | { |
767 | 0 | return cppu::acquire(new ODatabaseMetaDataResultSet()); |
768 | 0 | } |
769 | | |
770 | | /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |