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