1*96de5490SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*96de5490SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*96de5490SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*96de5490SAndrew Rist  * distributed with this work for additional information
6*96de5490SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*96de5490SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*96de5490SAndrew Rist  * "License"); you may not use this file except in compliance
9*96de5490SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*96de5490SAndrew Rist  *
11*96de5490SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*96de5490SAndrew Rist  *
13*96de5490SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*96de5490SAndrew Rist  * software distributed under the License is distributed on an
15*96de5490SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*96de5490SAndrew Rist  * KIND, either express or implied.  See the License for the
17*96de5490SAndrew Rist  * specific language governing permissions and limitations
18*96de5490SAndrew Rist  * under the License.
19*96de5490SAndrew Rist  *
20*96de5490SAndrew Rist  *************************************************************/
21*96de5490SAndrew Rist 
22*96de5490SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_dbaccess.hxx"
26cdf0e10cSrcweir #ifndef _DBACORE_RESULTCOLUMN_HXX_
27cdf0e10cSrcweir #include "resultcolumn.hxx"
28cdf0e10cSrcweir #endif
29cdf0e10cSrcweir #ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_
30cdf0e10cSrcweir #include <com/sun/star/lang/DisposedException.hpp>
31cdf0e10cSrcweir #endif
32cdf0e10cSrcweir #ifndef _COM_SUN_STAR_SDBC_XRESULTSETMETADATASUPPLIER_HPP_
33cdf0e10cSrcweir #include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
34cdf0e10cSrcweir #endif
35cdf0e10cSrcweir #ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_
36cdf0e10cSrcweir #include <com/sun/star/sdbc/DataType.hpp>
37cdf0e10cSrcweir #endif
38cdf0e10cSrcweir #ifndef _COM_SUN_STAR_SDBC_COLUMNVALUE_HPP_
39cdf0e10cSrcweir #include <com/sun/star/sdbc/ColumnValue.hpp>
40cdf0e10cSrcweir #endif
41cdf0e10cSrcweir #ifndef _CPPUHELPER_TYPEPROVIDER_HXX_
42cdf0e10cSrcweir #include <cppuhelper/typeprovider.hxx>
43cdf0e10cSrcweir #endif
44cdf0e10cSrcweir #ifndef _TOOLS_DEBUG_HXX
45cdf0e10cSrcweir #include <tools/debug.hxx>
46cdf0e10cSrcweir #endif
47cdf0e10cSrcweir #ifndef TOOLS_DIAGNOSE_EX_H
48cdf0e10cSrcweir #include <tools/diagnose_ex.h>
49cdf0e10cSrcweir #endif
50cdf0e10cSrcweir #ifndef DBACCESS_SHARED_DBASTRINGS_HRC
51cdf0e10cSrcweir #include "dbastrings.hrc"
52cdf0e10cSrcweir #endif
53cdf0e10cSrcweir #ifndef _DBASHARED_APITOOLS_HXX_
54cdf0e10cSrcweir #include "apitools.hxx"
55cdf0e10cSrcweir #endif
56cdf0e10cSrcweir #ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HPP_
57cdf0e10cSrcweir #include <com/sun/star/beans/PropertyAttribute.hpp>
58cdf0e10cSrcweir #endif
59cdf0e10cSrcweir #ifndef _CPPUHELPER_EXC_HLP_HXX_
60cdf0e10cSrcweir #include <cppuhelper/exc_hlp.hxx>
61cdf0e10cSrcweir #endif
62cdf0e10cSrcweir #ifndef _OSL_THREAD_H_
63cdf0e10cSrcweir #include <osl/thread.h>
64cdf0e10cSrcweir #endif
65cdf0e10cSrcweir 
66cdf0e10cSrcweir using namespace ::com::sun::star::sdbc;
67cdf0e10cSrcweir using namespace ::com::sun::star::beans;
68cdf0e10cSrcweir using namespace ::com::sun::star::uno;
69cdf0e10cSrcweir using namespace ::com::sun::star::lang;
70cdf0e10cSrcweir using namespace ::com::sun::star::container;
71cdf0e10cSrcweir using namespace ::osl;
72cdf0e10cSrcweir using namespace ::comphelper;
73cdf0e10cSrcweir using namespace ::cppu;
74cdf0e10cSrcweir using namespace dbaccess;
75cdf0e10cSrcweir 
DBG_NAME(OResultColumn)76cdf0e10cSrcweir DBG_NAME(OResultColumn)
77cdf0e10cSrcweir //--------------------------------------------------------------------------
78cdf0e10cSrcweir OResultColumn::OResultColumn( const Reference < XResultSetMetaData >& _xMetaData, sal_Int32 _nPos,
79cdf0e10cSrcweir         const Reference< XDatabaseMetaData >& _rxDBMeta )
80cdf0e10cSrcweir     :OColumn( true )
81cdf0e10cSrcweir     ,m_xMetaData( _xMetaData )
82cdf0e10cSrcweir     ,m_xDBMetaData( _rxDBMeta )
83cdf0e10cSrcweir     ,m_nPos( _nPos )
84cdf0e10cSrcweir {
85cdf0e10cSrcweir 	DBG_CTOR(OResultColumn,NULL);
86cdf0e10cSrcweir }
87cdf0e10cSrcweir // -----------------------------------------------------------------------------
impl_determineIsRowVersion_nothrow()88cdf0e10cSrcweir void OResultColumn::impl_determineIsRowVersion_nothrow()
89cdf0e10cSrcweir {
90cdf0e10cSrcweir     if ( m_aIsRowVersion.hasValue() )
91cdf0e10cSrcweir         return;
92cdf0e10cSrcweir     m_aIsRowVersion <<= (sal_Bool)(sal_False);
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     OSL_ENSURE( m_xDBMetaData.is(), "OResultColumn::impl_determineIsRowVersion_nothrow: no DBMetaData!" );
95cdf0e10cSrcweir     if ( !m_xDBMetaData.is() )
96cdf0e10cSrcweir         return;
97cdf0e10cSrcweir 
98cdf0e10cSrcweir     try
99cdf0e10cSrcweir     {
100cdf0e10cSrcweir         ::rtl::OUString sCatalog, sSchema, sTable, sColumnName;
101cdf0e10cSrcweir         getPropertyValue( PROPERTY_CATALOGNAME ) >>= sCatalog;
102cdf0e10cSrcweir         getPropertyValue( PROPERTY_SCHEMANAME ) >>= sSchema;
103cdf0e10cSrcweir         getPropertyValue( PROPERTY_TABLENAME ) >>= sTable;
104cdf0e10cSrcweir         getPropertyValue( PROPERTY_NAME ) >>= sColumnName;
105cdf0e10cSrcweir 
106cdf0e10cSrcweir         try
107cdf0e10cSrcweir         {
108cdf0e10cSrcweir             Reference< XResultSet > xVersionColumns = m_xDBMetaData->getVersionColumns(
109cdf0e10cSrcweir                 makeAny( sCatalog ), sSchema, sTable );
110cdf0e10cSrcweir             if ( xVersionColumns.is() ) // allowed to be NULL
111cdf0e10cSrcweir             {
112cdf0e10cSrcweir                 Reference< XRow > xResultRow( xVersionColumns, UNO_QUERY_THROW );
113cdf0e10cSrcweir                 while ( xVersionColumns->next() )
114cdf0e10cSrcweir                 {
115cdf0e10cSrcweir                     if ( xResultRow->getString( 2 ) == sColumnName )
116cdf0e10cSrcweir                     {
117cdf0e10cSrcweir                         m_aIsRowVersion <<= (sal_Bool)(sal_True);
118cdf0e10cSrcweir                         break;
119cdf0e10cSrcweir                     }
120cdf0e10cSrcweir                 }
121cdf0e10cSrcweir             }
122cdf0e10cSrcweir         }
123cdf0e10cSrcweir         catch(const SQLException&)
124cdf0e10cSrcweir         {
125cdf0e10cSrcweir         }
126cdf0e10cSrcweir     }
127cdf0e10cSrcweir     catch( const Exception& )
128cdf0e10cSrcweir     {
129cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
130cdf0e10cSrcweir     }
131cdf0e10cSrcweir }
132cdf0e10cSrcweir // -----------------------------------------------------------------------------
~OResultColumn()133cdf0e10cSrcweir OResultColumn::~OResultColumn()
134cdf0e10cSrcweir {
135cdf0e10cSrcweir 	DBG_DTOR(OResultColumn,NULL);
136cdf0e10cSrcweir }
137cdf0e10cSrcweir // com::sun::star::lang::XTypeProvider
138cdf0e10cSrcweir //--------------------------------------------------------------------------
getImplementationId()139cdf0e10cSrcweir Sequence< sal_Int8 > OResultColumn::getImplementationId() throw (RuntimeException)
140cdf0e10cSrcweir {
141cdf0e10cSrcweir 	static OImplementationId * pId = 0;
142cdf0e10cSrcweir 	if (! pId)
143cdf0e10cSrcweir 	{
144cdf0e10cSrcweir 		MutexGuard aGuard( Mutex::getGlobalMutex() );
145cdf0e10cSrcweir 		if (! pId)
146cdf0e10cSrcweir 		{
147cdf0e10cSrcweir 			static OImplementationId aId;
148cdf0e10cSrcweir 			pId = &aId;
149cdf0e10cSrcweir 		}
150cdf0e10cSrcweir 	}
151cdf0e10cSrcweir 	return pId->getImplementationId();
152cdf0e10cSrcweir }
153cdf0e10cSrcweir 
154cdf0e10cSrcweir // XServiceInfo
155cdf0e10cSrcweir //------------------------------------------------------------------------------
getImplementationName()156cdf0e10cSrcweir rtl::OUString OResultColumn::getImplementationName(  ) throw(RuntimeException)
157cdf0e10cSrcweir {
158cdf0e10cSrcweir 	return rtl::OUString::createFromAscii("com.sun.star.sdb.OResultColumn");
159cdf0e10cSrcweir }
160cdf0e10cSrcweir 
161cdf0e10cSrcweir //------------------------------------------------------------------------------
getSupportedServiceNames()162cdf0e10cSrcweir Sequence< ::rtl::OUString > OResultColumn::getSupportedServiceNames(  ) throw (RuntimeException)
163cdf0e10cSrcweir {
164cdf0e10cSrcweir 	Sequence< ::rtl::OUString > aSNS( 2 );
165cdf0e10cSrcweir 	aSNS[0] = SERVICE_SDBCX_COLUMN;
166cdf0e10cSrcweir 	aSNS[1] = SERVICE_SDB_RESULTCOLUMN;
167cdf0e10cSrcweir 	return aSNS;
168cdf0e10cSrcweir }
169cdf0e10cSrcweir 
170cdf0e10cSrcweir // OComponentHelper
171cdf0e10cSrcweir //------------------------------------------------------------------------------
disposing()172cdf0e10cSrcweir void OResultColumn::disposing()
173cdf0e10cSrcweir {
174cdf0e10cSrcweir 	OColumn::disposing();
175cdf0e10cSrcweir 
176cdf0e10cSrcweir 	MutexGuard aGuard(m_aMutex);
177cdf0e10cSrcweir 	m_xMetaData = NULL;
178cdf0e10cSrcweir }
179cdf0e10cSrcweir 
180cdf0e10cSrcweir // comphelper::OPropertyArrayUsageHelper
181cdf0e10cSrcweir //------------------------------------------------------------------------------
createArrayHelper() const182cdf0e10cSrcweir ::cppu::IPropertyArrayHelper* OResultColumn::createArrayHelper( ) const
183cdf0e10cSrcweir {
184cdf0e10cSrcweir 	BEGIN_PROPERTY_HELPER(21)
185cdf0e10cSrcweir 		DECL_PROP1(CATALOGNAME,				::rtl::OUString,	READONLY);
186cdf0e10cSrcweir 		DECL_PROP1(DISPLAYSIZE,				sal_Int32,			READONLY);
187cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISAUTOINCREMENT,						READONLY);
188cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISCASESENSITIVE,						READONLY);
189cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISCURRENCY,								READONLY);
190cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISDEFINITELYWRITABLE,					READONLY);
191cdf0e10cSrcweir 		DECL_PROP1(ISNULLABLE,				sal_Int32,			READONLY);
192cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISREADONLY,								READONLY);
193cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISROWVERSION,                           READONLY);
194cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISSEARCHABLE,							READONLY);
195cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISSIGNED,								READONLY);
196cdf0e10cSrcweir 		DECL_PROP1_BOOL(ISWRITABLE,								READONLY);
197cdf0e10cSrcweir 		DECL_PROP1(LABEL,					::rtl::OUString,	READONLY);
198cdf0e10cSrcweir 		DECL_PROP1(NAME,					::rtl::OUString,	READONLY);
199cdf0e10cSrcweir 		DECL_PROP1(PRECISION,				sal_Int32,			READONLY);
200cdf0e10cSrcweir 		DECL_PROP1(SCALE,					sal_Int32,			READONLY);
201cdf0e10cSrcweir 		DECL_PROP1(SCHEMANAME,				::rtl::OUString,	READONLY);
202cdf0e10cSrcweir 		DECL_PROP1(SERVICENAME,				::rtl::OUString,	READONLY);
203cdf0e10cSrcweir 		DECL_PROP1(TABLENAME,				::rtl::OUString,	READONLY);
204cdf0e10cSrcweir 		DECL_PROP1(TYPE,					sal_Int32,			READONLY);
205cdf0e10cSrcweir 		DECL_PROP1(TYPENAME,				::rtl::OUString,	READONLY);
206cdf0e10cSrcweir 	END_PROPERTY_HELPER();
207cdf0e10cSrcweir }
208cdf0e10cSrcweir 
209cdf0e10cSrcweir // cppu::OPropertySetHelper
210cdf0e10cSrcweir //------------------------------------------------------------------------------
getInfoHelper()211cdf0e10cSrcweir ::cppu::IPropertyArrayHelper& OResultColumn::getInfoHelper()
212cdf0e10cSrcweir {
213cdf0e10cSrcweir 	return *static_cast< ::comphelper::OPropertyArrayUsageHelper< OResultColumn >* >(this)->getArrayHelper();
214cdf0e10cSrcweir }
215cdf0e10cSrcweir 
216cdf0e10cSrcweir //------------------------------------------------------------------------------
217cdf0e10cSrcweir namespace
218cdf0e10cSrcweir {
219cdf0e10cSrcweir     template< typename TYPE >
obtain(Any & _out_rValue,::boost::optional<TYPE> _rCache,const sal_Int32 _nPos,const Reference<XResultSetMetaData> & _rxResultMeta,TYPE (SAL_CALL XResultSetMetaData::* Getter)(sal_Int32))220cdf0e10cSrcweir     void obtain( Any& _out_rValue, ::boost::optional< TYPE > _rCache, const sal_Int32 _nPos, const Reference < XResultSetMetaData >& _rxResultMeta, TYPE (SAL_CALL XResultSetMetaData::*Getter)( sal_Int32 ) )
221cdf0e10cSrcweir     {
222cdf0e10cSrcweir         if ( !_rCache )
223cdf0e10cSrcweir             _rCache.reset( (_rxResultMeta.get()->*Getter)( _nPos ) );
224cdf0e10cSrcweir         _out_rValue <<= *_rCache;
225cdf0e10cSrcweir     }
226cdf0e10cSrcweir }
227cdf0e10cSrcweir 
228cdf0e10cSrcweir //------------------------------------------------------------------------------
getFastPropertyValue(Any & rValue,sal_Int32 nHandle) const229cdf0e10cSrcweir void OResultColumn::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
230cdf0e10cSrcweir {
231cdf0e10cSrcweir 	try
232cdf0e10cSrcweir 	{
233cdf0e10cSrcweir         if ( OColumn::isRegisteredProperty( nHandle ) )
234cdf0e10cSrcweir         {
235cdf0e10cSrcweir             OColumn::getFastPropertyValue( rValue, nHandle );
236cdf0e10cSrcweir         }
237cdf0e10cSrcweir         else
238cdf0e10cSrcweir         {
239cdf0e10cSrcweir 		    switch (nHandle)
240cdf0e10cSrcweir 		    {
241cdf0e10cSrcweir                 case PROPERTY_ID_ISROWVERSION:
242cdf0e10cSrcweir                     const_cast< OResultColumn* >( this )->impl_determineIsRowVersion_nothrow();
243cdf0e10cSrcweir                     rValue = m_aIsRowVersion;
244cdf0e10cSrcweir                     break;
245cdf0e10cSrcweir 			    case PROPERTY_ID_TABLENAME:
246cdf0e10cSrcweir 				    rValue <<= m_xMetaData->getTableName(m_nPos);
247cdf0e10cSrcweir 				    break;
248cdf0e10cSrcweir 			    case PROPERTY_ID_SCHEMANAME:
249cdf0e10cSrcweir 				    rValue <<= m_xMetaData->getSchemaName(m_nPos);
250cdf0e10cSrcweir 				    break;
251cdf0e10cSrcweir 			    case PROPERTY_ID_CATALOGNAME:
252cdf0e10cSrcweir 				    rValue <<= m_xMetaData->getCatalogName(m_nPos);
253cdf0e10cSrcweir 				    break;
254cdf0e10cSrcweir 			    case PROPERTY_ID_ISSIGNED:
255cdf0e10cSrcweir                     obtain( rValue, m_isSigned, m_nPos, m_xMetaData, &XResultSetMetaData::isSigned );
256cdf0e10cSrcweir 			        break;
257cdf0e10cSrcweir 			    case PROPERTY_ID_ISCURRENCY:
258cdf0e10cSrcweir                     obtain( rValue, m_isCurrency, m_nPos, m_xMetaData, &XResultSetMetaData::isCurrency );
259cdf0e10cSrcweir 			        break;
260cdf0e10cSrcweir 			    case PROPERTY_ID_ISSEARCHABLE:
261cdf0e10cSrcweir                     obtain( rValue, m_bSearchable, m_nPos, m_xMetaData, &XResultSetMetaData::isSearchable );
262cdf0e10cSrcweir 			        break;
263cdf0e10cSrcweir 			    case PROPERTY_ID_ISCASESENSITIVE:
264cdf0e10cSrcweir                     obtain( rValue, m_isCaseSensitive, m_nPos, m_xMetaData, &XResultSetMetaData::isCaseSensitive );
265cdf0e10cSrcweir 			        break;
266cdf0e10cSrcweir 			    case PROPERTY_ID_ISREADONLY:
267cdf0e10cSrcweir                     obtain( rValue, m_isReadOnly, m_nPos, m_xMetaData, &XResultSetMetaData::isReadOnly );
268cdf0e10cSrcweir 			        break;
269cdf0e10cSrcweir 			    case PROPERTY_ID_ISWRITABLE:
270cdf0e10cSrcweir                     obtain( rValue, m_isWritable, m_nPos, m_xMetaData, &XResultSetMetaData::isWritable );
271cdf0e10cSrcweir 			        break;
272cdf0e10cSrcweir 			    case PROPERTY_ID_ISDEFINITELYWRITABLE:
273cdf0e10cSrcweir                     obtain( rValue, m_isDefinitelyWritable, m_nPos, m_xMetaData, &XResultSetMetaData::isDefinitelyWritable );
274cdf0e10cSrcweir 			        break;
275cdf0e10cSrcweir 			    case PROPERTY_ID_ISAUTOINCREMENT:
276cdf0e10cSrcweir                     obtain( rValue, m_isAutoIncrement, m_nPos, m_xMetaData, &XResultSetMetaData::isAutoIncrement );
277cdf0e10cSrcweir 			        break;
278cdf0e10cSrcweir 			    case PROPERTY_ID_SERVICENAME:
279cdf0e10cSrcweir 				    rValue <<= m_xMetaData->getColumnServiceName(m_nPos);
280cdf0e10cSrcweir 				    break;
281cdf0e10cSrcweir 			    case PROPERTY_ID_LABEL:
282cdf0e10cSrcweir                     obtain( rValue, m_sColumnLabel, m_nPos, m_xMetaData, &XResultSetMetaData::getColumnLabel );
283cdf0e10cSrcweir 				    break;
284cdf0e10cSrcweir 			    case PROPERTY_ID_DISPLAYSIZE:
285cdf0e10cSrcweir                     obtain( rValue, m_nColumnDisplaySize, m_nPos, m_xMetaData, &XResultSetMetaData::getColumnDisplaySize );
286cdf0e10cSrcweir 				    break;
287cdf0e10cSrcweir 			    case PROPERTY_ID_TYPE:
288cdf0e10cSrcweir                     obtain( rValue, m_nColumnType, m_nPos, m_xMetaData, &XResultSetMetaData::getColumnType );
289cdf0e10cSrcweir 				    break;
290cdf0e10cSrcweir 			    case PROPERTY_ID_PRECISION:
291cdf0e10cSrcweir                     obtain( rValue, m_nPrecision, m_nPos, m_xMetaData, &XResultSetMetaData::getPrecision );
292cdf0e10cSrcweir 				    break;
293cdf0e10cSrcweir 			    case PROPERTY_ID_SCALE:
294cdf0e10cSrcweir                     obtain( rValue, m_nScale, m_nPos, m_xMetaData, &XResultSetMetaData::getScale );
295cdf0e10cSrcweir 				    break;
296cdf0e10cSrcweir 			    case PROPERTY_ID_ISNULLABLE:
297cdf0e10cSrcweir                     obtain( rValue, m_isNullable, m_nPos, m_xMetaData, &XResultSetMetaData::isNullable );
298cdf0e10cSrcweir 				    break;
299cdf0e10cSrcweir 			    case PROPERTY_ID_TYPENAME:
300cdf0e10cSrcweir 				    rValue <<= m_xMetaData->getColumnTypeName(m_nPos);
301cdf0e10cSrcweir 				    break;
302cdf0e10cSrcweir                 default:
303cdf0e10cSrcweir                     OSL_ENSURE( false, "OResultColumn::getFastPropertyValue: unknown property handle!" );
304cdf0e10cSrcweir                     break;
305cdf0e10cSrcweir             }
306cdf0e10cSrcweir 		}
307cdf0e10cSrcweir 	}
308cdf0e10cSrcweir 	catch (SQLException& )
309cdf0e10cSrcweir 	{
310cdf0e10cSrcweir 		// default handling if we caught an exception
311cdf0e10cSrcweir 		switch (nHandle)
312cdf0e10cSrcweir 		{
313cdf0e10cSrcweir 			case PROPERTY_ID_LABEL:
314cdf0e10cSrcweir 			case PROPERTY_ID_TYPENAME:
315cdf0e10cSrcweir 			case PROPERTY_ID_SERVICENAME:
316cdf0e10cSrcweir 			case PROPERTY_ID_TABLENAME:
317cdf0e10cSrcweir 			case PROPERTY_ID_SCHEMANAME:
318cdf0e10cSrcweir 			case PROPERTY_ID_CATALOGNAME:
319cdf0e10cSrcweir 				// empty string'S
320cdf0e10cSrcweir 				rValue <<= rtl::OUString();
321cdf0e10cSrcweir 				break;
322cdf0e10cSrcweir             case PROPERTY_ID_ISROWVERSION:
323cdf0e10cSrcweir 			case PROPERTY_ID_ISAUTOINCREMENT:
324cdf0e10cSrcweir 			case PROPERTY_ID_ISWRITABLE:
325cdf0e10cSrcweir 			case PROPERTY_ID_ISDEFINITELYWRITABLE:
326cdf0e10cSrcweir 			case PROPERTY_ID_ISCASESENSITIVE:
327cdf0e10cSrcweir 			case PROPERTY_ID_ISSEARCHABLE:
328cdf0e10cSrcweir 			case PROPERTY_ID_ISCURRENCY:
329cdf0e10cSrcweir 			case PROPERTY_ID_ISSIGNED:
330cdf0e10cSrcweir 			{
331cdf0e10cSrcweir 				sal_Bool bVal = sal_False;
332cdf0e10cSrcweir 				rValue.setValue(&bVal, getBooleanCppuType());
333cdf0e10cSrcweir 			}	break;
334cdf0e10cSrcweir 			case PROPERTY_ID_ISREADONLY:
335cdf0e10cSrcweir 			{
336cdf0e10cSrcweir 				sal_Bool bVal = sal_True;
337cdf0e10cSrcweir 				rValue.setValue(&bVal, getBooleanCppuType());
338cdf0e10cSrcweir 			}	break;
339cdf0e10cSrcweir 			case PROPERTY_ID_SCALE:
340cdf0e10cSrcweir 			case PROPERTY_ID_PRECISION:
341cdf0e10cSrcweir 			case PROPERTY_ID_DISPLAYSIZE:
342cdf0e10cSrcweir 				rValue <<= sal_Int32(0);
343cdf0e10cSrcweir 				break;
344cdf0e10cSrcweir 			case PROPERTY_ID_TYPE:
345cdf0e10cSrcweir 				rValue <<= sal_Int32(DataType::SQLNULL);
346cdf0e10cSrcweir 				break;
347cdf0e10cSrcweir 			case PROPERTY_ID_ISNULLABLE:
348cdf0e10cSrcweir 				rValue <<= ColumnValue::NULLABLE_UNKNOWN;
349cdf0e10cSrcweir 				break;
350cdf0e10cSrcweir 		}
351cdf0e10cSrcweir 	}
352cdf0e10cSrcweir }
353cdf0e10cSrcweir 
354