1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #include "SResultSet.hxx" 25 #include "SResultSetMetaData.hxx" 26 #include <com/sun/star/sdbc/DataType.hpp> 27 #include <com/sun/star/beans/PropertyAttribute.hpp> 28 #include <com/sun/star/sdbcx/CompareBookmark.hpp> 29 #include <cppuhelper/typeprovider.hxx> 30 #include <com/sun/star/lang/DisposedException.hpp> 31 #include "propertyids.hxx" 32 33 using namespace connectivity::skeleton; 34 using namespace cppu; 35 using namespace com::sun::star::uno; 36 using namespace com::sun::star::lang; 37 using namespace com::sun::star::beans; 38 using namespace com::sun::star::sdbc; 39 using namespace com::sun::star::sdbcx; 40 using namespace com::sun::star::container; 41 using namespace com::sun::star::io; 42 using namespace com::sun::star::util; 43 44 //------------------------------------------------------------------------------ 45 // IMPLEMENT_SERVICE_INFO(OResultSet,"com.sun.star.sdbcx.OResultSet","com.sun.star.sdbc.ResultSet"); 46 ::rtl::OUString SAL_CALL OResultSet::getImplementationName( ) throw ( RuntimeException) \ 47 { 48 return ::rtl::OUString::createFromAscii("com.sun.star.sdbcx.skeleton.ResultSet"); 49 } 50 // ------------------------------------------------------------------------- 51 Sequence< ::rtl::OUString > SAL_CALL OResultSet::getSupportedServiceNames( ) throw( RuntimeException) 52 { 53 Sequence< ::rtl::OUString > aSupported(2); 54 aSupported[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdbc.ResultSet"); 55 aSupported[1] = ::rtl::OUString::createFromAscii("com.sun.star.sdbcx.ResultSet"); 56 return aSupported; 57 } 58 // ------------------------------------------------------------------------- 59 sal_Bool SAL_CALL OResultSet::supportsService( const ::rtl::OUString& _rServiceName ) throw( RuntimeException) 60 { 61 Sequence< ::rtl::OUString > aSupported(getSupportedServiceNames()); 62 const ::rtl::OUString* pSupported = aSupported.getConstArray(); 63 const ::rtl::OUString* pEnd = pSupported + aSupported.getLength(); 64 for (;pSupported != pEnd && !pSupported->equals(_rServiceName); ++pSupported) 65 ; 66 67 return pSupported != pEnd; 68 } 69 70 // ------------------------------------------------------------------------- 71 OResultSet::OResultSet(OStatement_Base* pStmt) 72 : OResultSet_BASE(m_aMutex) 73 ,OPropertySetHelper(OResultSet_BASE::rBHelper) 74 ,m_aStatement((OWeakObject*)pStmt) 75 ,m_xMetaData(NULL) 76 ,m_nTextEncoding(pStmt->getOwnConnection()->getTextEncoding()) 77 ,m_pStatement(pStmt) 78 ,m_bWasNull(sal_True) 79 { 80 } 81 // ------------------------------------------------------------------------- 82 OResultSet::~OResultSet() 83 { 84 } 85 // ------------------------------------------------------------------------- 86 void OResultSet::disposing(void) 87 { 88 OPropertySetHelper::disposing(); 89 90 ::osl::MutexGuard aGuard(m_aMutex); 91 92 m_aStatement = NULL; 93 m_xMetaData = NULL; 94 } 95 // ------------------------------------------------------------------------- 96 Any SAL_CALL OResultSet::queryInterface( const Type & rType ) throw(RuntimeException) 97 { 98 Any aRet = OPropertySetHelper::queryInterface(rType); 99 if(!aRet.hasValue()) 100 aRet = OResultSet_BASE::queryInterface(rType); 101 return aRet; 102 } 103 // ------------------------------------------------------------------------- 104 Sequence< Type > SAL_CALL OResultSet::getTypes( ) throw( RuntimeException) 105 { 106 OTypeCollection aTypes( 107 ::cppu::UnoType< Reference< ::com::sun::star::beans::XMultiPropertySet > >::get(), 108 ::cppu::UnoType< Reference< ::com::sun::star::beans::XFastPropertySet > >::get(), 109 ::cppu::UnoType< Reference< ::com::sun::star::beans::XPropertySet > >::get()); 110 111 return concatSequences(aTypes.getTypes(),OResultSet_BASE::getTypes()); 112 } 113 // ------------------------------------------------------------------------- 114 115 sal_Int32 SAL_CALL OResultSet::findColumn( const ::rtl::OUString& columnName ) throw(SQLException, RuntimeException) 116 { 117 118 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 119 120 // find the first column with the name columnName 121 122 ::osl::MutexGuard aGuard( m_aMutex ); 123 124 Reference< XResultSetMetaData > xMeta = getMetaData(); 125 sal_Int32 nLen = xMeta->getColumnCount(); 126 sal_Int32 i = 1; 127 for(;i<=nLen;++i) 128 if(xMeta->isCaseSensitive(i) ? columnName == xMeta->getColumnName(i) : 129 columnName.equalsIgnoreAsciiCase(xMeta->getColumnName(i))) 130 break; 131 return i; 132 } 133 // ------------------------------------------------------------------------- 134 Reference< XInputStream > SAL_CALL OResultSet::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 135 { 136 ::osl::MutexGuard aGuard( m_aMutex ); 137 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 138 139 140 return NULL; 141 } 142 // ------------------------------------------------------------------------- 143 Reference< XInputStream > SAL_CALL OResultSet::getCharacterStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 144 { 145 ::osl::MutexGuard aGuard( m_aMutex ); 146 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 147 148 149 return NULL; 150 } 151 152 // ------------------------------------------------------------------------- 153 sal_Bool SAL_CALL OResultSet::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 154 { 155 ::osl::MutexGuard aGuard( m_aMutex ); 156 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 157 158 return sal_False; 159 } 160 // ------------------------------------------------------------------------- 161 162 sal_Int8 SAL_CALL OResultSet::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 163 { 164 ::osl::MutexGuard aGuard( m_aMutex ); 165 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 166 167 168 sal_Int8 nRet = 0; 169 return nRet; 170 } 171 // ------------------------------------------------------------------------- 172 173 Sequence< sal_Int8 > SAL_CALL OResultSet::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 174 { 175 176 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 177 ::osl::MutexGuard aGuard( m_aMutex ); 178 179 return Sequence< sal_Int8 >(); 180 } 181 // ------------------------------------------------------------------------- 182 183 Date SAL_CALL OResultSet::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 184 { 185 ::osl::MutexGuard aGuard( m_aMutex ); 186 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 187 188 189 Date nRet; 190 return nRet; 191 } 192 // ------------------------------------------------------------------------- 193 194 double SAL_CALL OResultSet::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 195 { 196 ::osl::MutexGuard aGuard( m_aMutex ); 197 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 198 199 200 double nRet = 0; 201 return nRet; 202 } 203 // ------------------------------------------------------------------------- 204 205 float SAL_CALL OResultSet::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 206 { 207 ::osl::MutexGuard aGuard( m_aMutex ); 208 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 209 210 211 float nVal(0); 212 return nVal; 213 } 214 // ------------------------------------------------------------------------- 215 216 sal_Int32 SAL_CALL OResultSet::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 217 { 218 ::osl::MutexGuard aGuard( m_aMutex ); 219 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 220 221 sal_Int32 nRet=0; 222 return nRet; 223 } 224 // ------------------------------------------------------------------------- 225 226 sal_Int32 SAL_CALL OResultSet::getRow( ) throw(SQLException, RuntimeException) 227 { 228 ::osl::MutexGuard aGuard( m_aMutex ); 229 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 230 231 sal_Int32 nValue = 0; 232 return nValue; 233 } 234 // ------------------------------------------------------------------------- 235 236 sal_Int64 SAL_CALL OResultSet::getLong( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 237 { 238 ::osl::MutexGuard aGuard( m_aMutex ); 239 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 240 241 return sal_Int64(); 242 } 243 // ------------------------------------------------------------------------- 244 245 Reference< XResultSetMetaData > SAL_CALL OResultSet::getMetaData( ) throw(SQLException, RuntimeException) 246 { 247 ::osl::MutexGuard aGuard( m_aMutex ); 248 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 249 250 251 if(!m_xMetaData.is()) 252 m_xMetaData = new OResultSetMetaData(m_pStatement->getOwnConnection()); 253 return m_xMetaData; 254 } 255 // ------------------------------------------------------------------------- 256 Reference< XArray > SAL_CALL OResultSet::getArray( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 257 { 258 ::osl::MutexGuard aGuard( m_aMutex ); 259 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 260 261 return NULL; 262 } 263 264 // ------------------------------------------------------------------------- 265 266 Reference< XClob > SAL_CALL OResultSet::getClob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 267 { 268 ::osl::MutexGuard aGuard( m_aMutex ); 269 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 270 271 return NULL; 272 } 273 // ------------------------------------------------------------------------- 274 Reference< XBlob > SAL_CALL OResultSet::getBlob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 275 { 276 ::osl::MutexGuard aGuard( m_aMutex ); 277 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 278 279 return NULL; 280 } 281 // ------------------------------------------------------------------------- 282 283 Reference< XRef > SAL_CALL OResultSet::getRef( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 284 { 285 ::osl::MutexGuard aGuard( m_aMutex ); 286 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 287 288 return NULL; 289 } 290 // ------------------------------------------------------------------------- 291 292 Any SAL_CALL OResultSet::getObject( sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(SQLException, RuntimeException) 293 { 294 ::osl::MutexGuard aGuard( m_aMutex ); 295 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 296 297 return Any(); 298 } 299 // ------------------------------------------------------------------------- 300 301 sal_Int16 SAL_CALL OResultSet::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 302 { 303 ::osl::MutexGuard aGuard( m_aMutex ); 304 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 305 306 307 sal_Int16 nRet=0; 308 return nRet; 309 } 310 // ------------------------------------------------------------------------- 311 312 313 ::rtl::OUString SAL_CALL OResultSet::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 314 { 315 ::osl::MutexGuard aGuard( m_aMutex ); 316 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 317 318 319 ::rtl::OUString nRet; 320 return nRet; 321 } 322 // ------------------------------------------------------------------------- 323 324 Time SAL_CALL OResultSet::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 325 { 326 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 327 328 ::osl::MutexGuard aGuard( m_aMutex ); 329 330 Time nRet; 331 return nRet; 332 } 333 // ------------------------------------------------------------------------- 334 335 336 DateTime SAL_CALL OResultSet::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 337 { 338 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 339 340 341 ::osl::MutexGuard aGuard( m_aMutex ); 342 343 DateTime nRet; 344 return nRet; 345 } 346 // ------------------------------------------------------------------------- 347 348 sal_Bool SAL_CALL OResultSet::isBeforeFirst( ) throw(SQLException, RuntimeException) 349 { 350 ::osl::MutexGuard aGuard( m_aMutex ); 351 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 352 353 354 // here you have to implement your movements 355 // return true means there is no data 356 return sal_True; 357 } 358 // ------------------------------------------------------------------------- 359 sal_Bool SAL_CALL OResultSet::isAfterLast( ) throw(SQLException, RuntimeException) 360 { 361 ::osl::MutexGuard aGuard( m_aMutex ); 362 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 363 364 return sal_True; 365 } 366 // ------------------------------------------------------------------------- 367 sal_Bool SAL_CALL OResultSet::isFirst( ) throw(SQLException, RuntimeException) 368 { 369 ::osl::MutexGuard aGuard( m_aMutex ); 370 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 371 372 373 return sal_False; 374 } 375 // ------------------------------------------------------------------------- 376 sal_Bool SAL_CALL OResultSet::isLast( ) throw(SQLException, RuntimeException) 377 { 378 ::osl::MutexGuard aGuard( m_aMutex ); 379 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 380 381 382 return sal_False; 383 } 384 // ------------------------------------------------------------------------- 385 void SAL_CALL OResultSet::beforeFirst( ) throw(SQLException, RuntimeException) 386 { 387 ::osl::MutexGuard aGuard( m_aMutex ); 388 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 389 390 // move before the first row so that isBeforeFirst returns false 391 // the smae for other movement methods 392 } 393 // ------------------------------------------------------------------------- 394 void SAL_CALL OResultSet::afterLast( ) throw(SQLException, RuntimeException) 395 { 396 ::osl::MutexGuard aGuard( m_aMutex ); 397 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 398 } 399 // ------------------------------------------------------------------------- 400 401 void SAL_CALL OResultSet::close( ) throw(SQLException, RuntimeException) 402 { 403 { 404 ::osl::MutexGuard aGuard( m_aMutex ); 405 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 406 407 } 408 dispose(); 409 } 410 // ------------------------------------------------------------------------- 411 412 sal_Bool SAL_CALL OResultSet::first( ) throw(SQLException, RuntimeException) 413 { 414 ::osl::MutexGuard aGuard( m_aMutex ); 415 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 416 417 return sal_False; 418 } 419 // ------------------------------------------------------------------------- 420 421 sal_Bool SAL_CALL OResultSet::last( ) throw(SQLException, RuntimeException) 422 { 423 ::osl::MutexGuard aGuard( m_aMutex ); 424 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 425 426 return sal_False; 427 } 428 // ------------------------------------------------------------------------- 429 sal_Bool SAL_CALL OResultSet::absolute( sal_Int32 row ) throw(SQLException, RuntimeException) 430 { 431 ::osl::MutexGuard aGuard( m_aMutex ); 432 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 433 434 return sal_False; 435 } 436 // ------------------------------------------------------------------------- 437 sal_Bool SAL_CALL OResultSet::relative( sal_Int32 row ) throw(SQLException, RuntimeException) 438 { 439 ::osl::MutexGuard aGuard( m_aMutex ); 440 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 441 442 return sal_False; 443 } 444 // ------------------------------------------------------------------------- 445 sal_Bool SAL_CALL OResultSet::previous( ) throw(SQLException, RuntimeException) 446 { 447 ::osl::MutexGuard aGuard( m_aMutex ); 448 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 449 450 return sal_False; 451 } 452 // ------------------------------------------------------------------------- 453 Reference< XInterface > SAL_CALL OResultSet::getStatement( ) throw(SQLException, RuntimeException) 454 { 455 ::osl::MutexGuard aGuard( m_aMutex ); 456 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 457 458 459 return m_aStatement.get(); 460 } 461 // ------------------------------------------------------------------------- 462 463 sal_Bool SAL_CALL OResultSet::rowDeleted( ) throw(SQLException, RuntimeException) 464 { 465 ::osl::MutexGuard aGuard( m_aMutex ); 466 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 467 468 469 return sal_False; 470 } 471 // ------------------------------------------------------------------------- 472 sal_Bool SAL_CALL OResultSet::rowInserted( ) throw(SQLException, RuntimeException) 473 { 474 ::osl::MutexGuard aGuard( m_aMutex ); 475 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 476 477 478 return sal_False; 479 } 480 // ------------------------------------------------------------------------- 481 sal_Bool SAL_CALL OResultSet::rowUpdated( ) throw(SQLException, RuntimeException) 482 { 483 ::osl::MutexGuard aGuard( m_aMutex ); 484 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 485 486 487 return sal_False; 488 } 489 // ------------------------------------------------------------------------- 490 491 sal_Bool SAL_CALL OResultSet::next( ) throw(SQLException, RuntimeException) 492 { 493 ::osl::MutexGuard aGuard( m_aMutex ); 494 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 495 496 497 return sal_False; 498 } 499 // ------------------------------------------------------------------------- 500 501 sal_Bool SAL_CALL OResultSet::wasNull( ) throw(SQLException, RuntimeException) 502 { 503 ::osl::MutexGuard aGuard( m_aMutex ); 504 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 505 506 507 return m_bWasNull; 508 } 509 // ------------------------------------------------------------------------- 510 511 void SAL_CALL OResultSet::cancel( ) throw(RuntimeException) 512 { 513 ::osl::MutexGuard aGuard( m_aMutex ); 514 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 515 516 } 517 // ------------------------------------------------------------------------- 518 void SAL_CALL OResultSet::clearWarnings( ) throw(SQLException, RuntimeException) 519 { 520 } 521 // ------------------------------------------------------------------------- 522 Any SAL_CALL OResultSet::getWarnings( ) throw(SQLException, RuntimeException) 523 { 524 return Any(); 525 } 526 // ------------------------------------------------------------------------- 527 void SAL_CALL OResultSet::insertRow( ) throw(SQLException, RuntimeException) 528 { 529 ::osl::MutexGuard aGuard( m_aMutex ); 530 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 531 532 // you only have to implement this if you want to insert new rows 533 } 534 // ------------------------------------------------------------------------- 535 void SAL_CALL OResultSet::updateRow( ) throw(SQLException, RuntimeException) 536 { 537 ::osl::MutexGuard aGuard( m_aMutex ); 538 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 539 540 541 // only when you allow updates 542 } 543 // ------------------------------------------------------------------------- 544 void SAL_CALL OResultSet::deleteRow( ) throw(SQLException, RuntimeException) 545 { 546 ::osl::MutexGuard aGuard( m_aMutex ); 547 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 548 } 549 // ------------------------------------------------------------------------- 550 551 void SAL_CALL OResultSet::cancelRowUpdates( ) throw(SQLException, RuntimeException) 552 { 553 ::osl::MutexGuard aGuard( m_aMutex ); 554 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 555 } 556 // ------------------------------------------------------------------------- 557 558 void SAL_CALL OResultSet::moveToInsertRow( ) throw(SQLException, RuntimeException) 559 { 560 ::osl::MutexGuard aGuard( m_aMutex ); 561 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 562 563 564 // only when you allow insert's 565 } 566 // ------------------------------------------------------------------------- 567 568 void SAL_CALL OResultSet::moveToCurrentRow( ) throw(SQLException, RuntimeException) 569 { 570 ::osl::MutexGuard aGuard( m_aMutex ); 571 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 572 } 573 // ------------------------------------------------------------------------- 574 575 void SAL_CALL OResultSet::updateNull( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) 576 { 577 ::osl::MutexGuard aGuard( m_aMutex ); 578 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 579 } 580 // ------------------------------------------------------------------------- 581 582 void SAL_CALL OResultSet::updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(SQLException, RuntimeException) 583 { 584 ::osl::MutexGuard aGuard( m_aMutex ); 585 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 586 587 } 588 // ------------------------------------------------------------------------- 589 void SAL_CALL OResultSet::updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(SQLException, RuntimeException) 590 { 591 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 592 ::osl::MutexGuard aGuard( m_aMutex ); 593 594 } 595 // ------------------------------------------------------------------------- 596 597 void SAL_CALL OResultSet::updateShort( sal_Int32 columnIndex, sal_Int16 x ) throw(SQLException, RuntimeException) 598 { 599 ::osl::MutexGuard aGuard( m_aMutex ); 600 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 601 602 } 603 // ------------------------------------------------------------------------- 604 void SAL_CALL OResultSet::updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(SQLException, RuntimeException) 605 { 606 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 607 ::osl::MutexGuard aGuard( m_aMutex ); 608 609 } 610 // ------------------------------------------------------------------------- 611 void SAL_CALL OResultSet::updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(SQLException, RuntimeException) 612 { 613 ::osl::MutexGuard aGuard( m_aMutex ); 614 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 615 616 } 617 // ----------------------------------------------------------------------- 618 void SAL_CALL OResultSet::updateFloat( sal_Int32 columnIndex, float x ) throw(SQLException, RuntimeException) 619 { 620 ::osl::MutexGuard aGuard( m_aMutex ); 621 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 622 623 } 624 // ------------------------------------------------------------------------- 625 626 void SAL_CALL OResultSet::updateDouble( sal_Int32 columnIndex, double x ) throw(SQLException, RuntimeException) 627 { 628 ::osl::MutexGuard aGuard( m_aMutex ); 629 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 630 631 } 632 // ------------------------------------------------------------------------- 633 void SAL_CALL OResultSet::updateString( sal_Int32 columnIndex, const ::rtl::OUString& x ) throw(SQLException, RuntimeException) 634 { 635 ::osl::MutexGuard aGuard( m_aMutex ); 636 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 637 638 } 639 // ------------------------------------------------------------------------- 640 void SAL_CALL OResultSet::updateBytes( sal_Int32 columnIndex, const Sequence< sal_Int8 >& x ) throw(SQLException, RuntimeException) 641 { 642 ::osl::MutexGuard aGuard( m_aMutex ); 643 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 644 645 } 646 // ------------------------------------------------------------------------- 647 void SAL_CALL OResultSet::updateDate( sal_Int32 columnIndex, const Date& x ) throw(SQLException, RuntimeException) 648 { 649 ::osl::MutexGuard aGuard( m_aMutex ); 650 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 651 652 } 653 // ------------------------------------------------------------------------- 654 655 void SAL_CALL OResultSet::updateTime( sal_Int32 columnIndex, const Time& x ) throw(SQLException, RuntimeException) 656 { 657 ::osl::MutexGuard aGuard( m_aMutex ); 658 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 659 660 } 661 // ------------------------------------------------------------------------- 662 663 void SAL_CALL OResultSet::updateTimestamp( sal_Int32 columnIndex, const DateTime& x ) throw(SQLException, RuntimeException) 664 { 665 ::osl::MutexGuard aGuard( m_aMutex ); 666 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 667 668 } 669 // ------------------------------------------------------------------------- 670 671 void SAL_CALL OResultSet::updateBinaryStream( sal_Int32 columnIndex, const Reference< XInputStream >& x, sal_Int32 length ) throw(SQLException, RuntimeException) 672 { 673 ::osl::MutexGuard aGuard( m_aMutex ); 674 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 675 676 } 677 // ------------------------------------------------------------------------- 678 void SAL_CALL OResultSet::updateCharacterStream( sal_Int32 columnIndex, const Reference< XInputStream >& x, sal_Int32 length ) throw(SQLException, RuntimeException) 679 { 680 ::osl::MutexGuard aGuard( m_aMutex ); 681 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 682 683 } 684 // ------------------------------------------------------------------------- 685 void SAL_CALL OResultSet::refreshRow( ) throw(SQLException, RuntimeException) 686 { 687 ::osl::MutexGuard aGuard( m_aMutex ); 688 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 689 690 } 691 // ------------------------------------------------------------------------- 692 void SAL_CALL OResultSet::updateObject( sal_Int32 columnIndex, const Any& x ) throw(SQLException, RuntimeException) 693 { 694 ::osl::MutexGuard aGuard( m_aMutex ); 695 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 696 697 } 698 // ------------------------------------------------------------------------- 699 700 void SAL_CALL OResultSet::updateNumericObject( sal_Int32 columnIndex, const Any& x, sal_Int32 scale ) throw(SQLException, RuntimeException) 701 { 702 ::osl::MutexGuard aGuard( m_aMutex ); 703 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 704 705 } 706 // ------------------------------------------------------------------------- 707 // XRowLocate 708 Any SAL_CALL OResultSet::getBookmark( ) throw( SQLException, RuntimeException) 709 { 710 ::osl::MutexGuard aGuard( m_aMutex ); 711 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 712 713 // if you don't want to support bookmark you must remove the XRowLocate interface 714 715 return Any(); 716 } 717 // ------------------------------------------------------------------------- 718 sal_Bool SAL_CALL OResultSet::moveToBookmark( const Any& bookmark ) throw( SQLException, RuntimeException) 719 { 720 ::osl::MutexGuard aGuard( m_aMutex ); 721 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 722 723 return sal_False; 724 } 725 // ------------------------------------------------------------------------- 726 sal_Bool SAL_CALL OResultSet::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows ) throw( SQLException, RuntimeException) 727 { 728 ::osl::MutexGuard aGuard( m_aMutex ); 729 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 730 731 return sal_False; 732 } 733 // ------------------------------------------------------------------------- 734 sal_Int32 SAL_CALL OResultSet::compareBookmarks( const Any& first, const Any& second ) throw( SQLException, RuntimeException) 735 { 736 ::osl::MutexGuard aGuard( m_aMutex ); 737 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 738 739 740 return CompareBookmark::NOT_EQUAL; 741 } 742 // ------------------------------------------------------------------------- 743 sal_Bool SAL_CALL OResultSet::hasOrderedBookmarks( ) throw( SQLException, RuntimeException) 744 { 745 return sal_False; 746 } 747 // ------------------------------------------------------------------------- 748 sal_Int32 SAL_CALL OResultSet::hashBookmark( const Any& bookmark ) throw( SQLException, RuntimeException) 749 { 750 throw SQLException(); 751 } 752 // ------------------------------------------------------------------------- 753 // XDeleteRows 754 Sequence< sal_Int32 > SAL_CALL OResultSet::deleteRows( const Sequence< Any >& rows ) throw( SQLException, RuntimeException) 755 { 756 ::osl::MutexGuard aGuard( m_aMutex ); 757 checkDisposed(OResultSet_BASE::rBHelper.bDisposed); 758 759 return Sequence< sal_Int32 >(); 760 } 761 // ------------------------------------------------------------------------- 762 IPropertyArrayHelper* OResultSet::createArrayHelper( ) const 763 { 764 Sequence< Property > aProps(6); 765 Property* pProperties = aProps.getArray(); 766 sal_Int32 nPos = 0; 767 DECL_PROP1IMPL(CURSORNAME, ::rtl::OUString) PropertyAttribute::READONLY); 768 DECL_PROP0(FETCHDIRECTION, sal_Int32); 769 DECL_PROP0(FETCHSIZE, sal_Int32); 770 DECL_BOOL_PROP1IMPL(ISBOOKMARKABLE) PropertyAttribute::READONLY); 771 DECL_PROP1IMPL(RESULTSETCONCURRENCY,sal_Int32) PropertyAttribute::READONLY); 772 DECL_PROP1IMPL(RESULTSETTYPE, sal_Int32) PropertyAttribute::READONLY); 773 774 return new OPropertyArrayHelper(aProps); 775 } 776 // ------------------------------------------------------------------------- 777 IPropertyArrayHelper & OResultSet::getInfoHelper() 778 { 779 return *const_cast<OResultSet*>(this)->getArrayHelper(); 780 } 781 // ------------------------------------------------------------------------- 782 sal_Bool OResultSet::convertFastPropertyValue( 783 Any & rConvertedValue, 784 Any & rOldValue, 785 sal_Int32 nHandle, 786 const Any& rValue ) 787 throw (::com::sun::star::lang::IllegalArgumentException) 788 { 789 switch(nHandle) 790 { 791 case PROPERTY_ID_ISBOOKMARKABLE: 792 case PROPERTY_ID_CURSORNAME: 793 case PROPERTY_ID_RESULTSETCONCURRENCY: 794 case PROPERTY_ID_RESULTSETTYPE: 795 throw ::com::sun::star::lang::IllegalArgumentException(); 796 break; 797 case PROPERTY_ID_FETCHDIRECTION: 798 case PROPERTY_ID_FETCHSIZE: 799 default: 800 ; 801 } 802 return sal_False; 803 } 804 // ------------------------------------------------------------------------- 805 void OResultSet::setFastPropertyValue_NoBroadcast( 806 sal_Int32 nHandle, 807 const Any& rValue 808 ) 809 throw (Exception) 810 { 811 switch(nHandle) 812 { 813 case PROPERTY_ID_ISBOOKMARKABLE: 814 case PROPERTY_ID_CURSORNAME: 815 case PROPERTY_ID_RESULTSETCONCURRENCY: 816 case PROPERTY_ID_RESULTSETTYPE: 817 throw Exception(); 818 break; 819 case PROPERTY_ID_FETCHDIRECTION: 820 break; 821 case PROPERTY_ID_FETCHSIZE: 822 break; 823 default: 824 ; 825 } 826 } 827 // ------------------------------------------------------------------------- 828 void OResultSet::getFastPropertyValue( 829 Any& rValue, 830 sal_Int32 nHandle 831 ) const 832 { 833 switch(nHandle) 834 { 835 case PROPERTY_ID_ISBOOKMARKABLE: 836 case PROPERTY_ID_CURSORNAME: 837 case PROPERTY_ID_RESULTSETCONCURRENCY: 838 case PROPERTY_ID_RESULTSETTYPE: 839 case PROPERTY_ID_FETCHDIRECTION: 840 case PROPERTY_ID_FETCHSIZE: 841 ; 842 } 843 } 844 // ----------------------------------------------------------------------------- 845 void SAL_CALL OResultSet::acquire() throw() 846 { 847 OResultSet_BASE::acquire(); 848 } 849 // ----------------------------------------------------------------------------- 850 void SAL_CALL OResultSet::release() throw() 851 { 852 OResultSet_BASE::release(); 853 } 854 // ----------------------------------------------------------------------------- 855 ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL OResultSet::getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException) 856 { 857 return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper()); 858 } 859 // ----------------------------------------------------------------------------- 860 861 862 863