1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_connectivity.hxx"
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include "connectivity/PColumn.hxx"
28*b1cdbd2cSJim Jagielski #include "connectivity/dbtools.hxx"
29*b1cdbd2cSJim Jagielski #include "TConnection.hxx"
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski #include <comphelper/types.hxx>
32*b1cdbd2cSJim Jagielski #include <tools/diagnose_ex.h>
33*b1cdbd2cSJim Jagielski 
34*b1cdbd2cSJim Jagielski using namespace ::comphelper;
35*b1cdbd2cSJim Jagielski using namespace connectivity;
36*b1cdbd2cSJim Jagielski using namespace dbtools;
37*b1cdbd2cSJim Jagielski using namespace connectivity::parse;
38*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
39*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::sdbc;
40*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
41*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
OParseColumn(const Reference<XPropertySet> & _xColumn,sal_Bool _bCase)44*b1cdbd2cSJim Jagielski OParseColumn::OParseColumn(const Reference<XPropertySet>& _xColumn,sal_Bool		_bCase)
45*b1cdbd2cSJim Jagielski 	: connectivity::sdbcx::OColumn(	getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME)))
46*b1cdbd2cSJim Jagielski 								,	getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)))
47*b1cdbd2cSJim Jagielski 								,	getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE)))
48*b1cdbd2cSJim Jagielski                                 ,	getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION)))
49*b1cdbd2cSJim Jagielski 								,	getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE)))
50*b1cdbd2cSJim Jagielski 								,	getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION)))
51*b1cdbd2cSJim Jagielski 								,	getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE)))
52*b1cdbd2cSJim Jagielski 								,	getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)))
53*b1cdbd2cSJim Jagielski 								,	getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT)))
54*b1cdbd2cSJim Jagielski 								,	sal_False
55*b1cdbd2cSJim Jagielski 								,	getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY)))
56*b1cdbd2cSJim Jagielski 								,	_bCase
57*b1cdbd2cSJim Jagielski 								)
58*b1cdbd2cSJim Jagielski 	, m_bFunction(sal_False)
59*b1cdbd2cSJim Jagielski 	, m_bDbasePrecisionChanged(sal_False)
60*b1cdbd2cSJim Jagielski 	, m_bAggregateFunction(sal_False)
61*b1cdbd2cSJim Jagielski     , m_bIsSearchable( sal_True )
62*b1cdbd2cSJim Jagielski {
63*b1cdbd2cSJim Jagielski 	construct();
64*b1cdbd2cSJim Jagielski }
65*b1cdbd2cSJim Jagielski 
66*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
OParseColumn(const::rtl::OUString & _Name,const::rtl::OUString & _TypeName,const::rtl::OUString & _DefaultValue,const::rtl::OUString & _Description,sal_Int32 _IsNullable,sal_Int32 _Precision,sal_Int32 _Scale,sal_Int32 _Type,sal_Bool _IsAutoIncrement,sal_Bool _IsCurrency,sal_Bool _bCase)67*b1cdbd2cSJim Jagielski OParseColumn::OParseColumn(	const ::rtl::OUString& _Name,
68*b1cdbd2cSJim Jagielski 					const ::rtl::OUString& _TypeName,
69*b1cdbd2cSJim Jagielski 					const ::rtl::OUString& _DefaultValue,
70*b1cdbd2cSJim Jagielski                     const ::rtl::OUString& _Description,
71*b1cdbd2cSJim Jagielski 					sal_Int32		_IsNullable,
72*b1cdbd2cSJim Jagielski 					sal_Int32		_Precision,
73*b1cdbd2cSJim Jagielski 					sal_Int32		_Scale,
74*b1cdbd2cSJim Jagielski 					sal_Int32		_Type,
75*b1cdbd2cSJim Jagielski 					sal_Bool		_IsAutoIncrement,
76*b1cdbd2cSJim Jagielski 					sal_Bool		_IsCurrency,
77*b1cdbd2cSJim Jagielski 					sal_Bool		_bCase
78*b1cdbd2cSJim Jagielski 				) : connectivity::sdbcx::OColumn(_Name,
79*b1cdbd2cSJim Jagielski 								  _TypeName,
80*b1cdbd2cSJim Jagielski 								  _DefaultValue,
81*b1cdbd2cSJim Jagielski                                   _Description,
82*b1cdbd2cSJim Jagielski 								  _IsNullable,
83*b1cdbd2cSJim Jagielski 								  _Precision,
84*b1cdbd2cSJim Jagielski 								  _Scale,
85*b1cdbd2cSJim Jagielski 								  _Type,
86*b1cdbd2cSJim Jagielski 								  _IsAutoIncrement,
87*b1cdbd2cSJim Jagielski 								  sal_False,
88*b1cdbd2cSJim Jagielski 								  _IsCurrency,
89*b1cdbd2cSJim Jagielski 								  _bCase)
90*b1cdbd2cSJim Jagielski 	, m_bFunction(sal_False)
91*b1cdbd2cSJim Jagielski 	, m_bDbasePrecisionChanged(sal_False)
92*b1cdbd2cSJim Jagielski 	, m_bAggregateFunction(sal_False)
93*b1cdbd2cSJim Jagielski     , m_bIsSearchable( sal_True )
94*b1cdbd2cSJim Jagielski {
95*b1cdbd2cSJim Jagielski 	construct();
96*b1cdbd2cSJim Jagielski }
97*b1cdbd2cSJim Jagielski 
98*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
createColumnsForResultSet(const Reference<XResultSetMetaData> & _rxResMetaData,const Reference<XDatabaseMetaData> & _rxDBMetaData,const Reference<XNameAccess> & i_xQueryColumns)99*b1cdbd2cSJim Jagielski ::vos::ORef< OSQLColumns > OParseColumn::createColumnsForResultSet( const Reference< XResultSetMetaData >& _rxResMetaData,
100*b1cdbd2cSJim Jagielski     const Reference< XDatabaseMetaData >& _rxDBMetaData,const Reference< XNameAccess>& i_xQueryColumns )
101*b1cdbd2cSJim Jagielski {
102*b1cdbd2cSJim Jagielski     sal_Int32 nColumnCount = _rxResMetaData->getColumnCount();
103*b1cdbd2cSJim Jagielski     ::vos::ORef< OSQLColumns > aReturn( new OSQLColumns ); aReturn->get().reserve( nColumnCount );
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski 	StringMap aColumnMap;
106*b1cdbd2cSJim Jagielski     for ( sal_Int32 i = 1; i <= nColumnCount; ++i )
107*b1cdbd2cSJim Jagielski     {
108*b1cdbd2cSJim Jagielski         OParseColumn* pColumn = createColumnForResultSet( _rxResMetaData, _rxDBMetaData, i,aColumnMap );
109*b1cdbd2cSJim Jagielski         aReturn->get().push_back( pColumn );
110*b1cdbd2cSJim Jagielski         if ( i_xQueryColumns.is() && i_xQueryColumns->hasByName(pColumn->getRealName()) )
111*b1cdbd2cSJim Jagielski         {
112*b1cdbd2cSJim Jagielski             Reference<XPropertySet> xColumn(i_xQueryColumns->getByName(pColumn->getRealName()),UNO_QUERY_THROW);
113*b1cdbd2cSJim Jagielski             ::rtl::OUString sLabel;
114*b1cdbd2cSJim Jagielski             xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_LABEL)) >>= sLabel;
115*b1cdbd2cSJim Jagielski             if ( sLabel.getLength() )
116*b1cdbd2cSJim Jagielski                 pColumn->setLabel(sLabel);
117*b1cdbd2cSJim Jagielski         }
118*b1cdbd2cSJim Jagielski     }
119*b1cdbd2cSJim Jagielski 
120*b1cdbd2cSJim Jagielski     return aReturn;
121*b1cdbd2cSJim Jagielski }
122*b1cdbd2cSJim Jagielski 
123*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
createColumnForResultSet(const Reference<XResultSetMetaData> & _rxResMetaData,const Reference<XDatabaseMetaData> & _rxDBMetaData,sal_Int32 _nColumnPos,StringMap & _rColumns)124*b1cdbd2cSJim Jagielski OParseColumn* OParseColumn::createColumnForResultSet( const Reference< XResultSetMetaData >& _rxResMetaData,
125*b1cdbd2cSJim Jagielski     const Reference< XDatabaseMetaData >& _rxDBMetaData, sal_Int32 _nColumnPos,StringMap& _rColumns )
126*b1cdbd2cSJim Jagielski {
127*b1cdbd2cSJim Jagielski     ::rtl::OUString sLabel = _rxResMetaData->getColumnLabel( _nColumnPos );
128*b1cdbd2cSJim Jagielski     // retrieve the name of the column
129*b1cdbd2cSJim Jagielski 	// check for duplicate entries
130*b1cdbd2cSJim Jagielski 	if(_rColumns.find(sLabel) != _rColumns.end())
131*b1cdbd2cSJim Jagielski 	{
132*b1cdbd2cSJim Jagielski 		::rtl::OUString sAlias(sLabel);
133*b1cdbd2cSJim Jagielski 		sal_Int32 searchIndex=1;
134*b1cdbd2cSJim Jagielski 		while(_rColumns.find(sAlias) != _rColumns.end())
135*b1cdbd2cSJim Jagielski 		{
136*b1cdbd2cSJim Jagielski             (sAlias = sLabel) += ::rtl::OUString::valueOf(searchIndex++);
137*b1cdbd2cSJim Jagielski 		}
138*b1cdbd2cSJim Jagielski 		sLabel = sAlias;
139*b1cdbd2cSJim Jagielski 	}
140*b1cdbd2cSJim Jagielski     _rColumns.insert(StringMap::value_type(sLabel,0));
141*b1cdbd2cSJim Jagielski 	OParseColumn* pColumn = new OParseColumn(
142*b1cdbd2cSJim Jagielski         sLabel,
143*b1cdbd2cSJim Jagielski 		_rxResMetaData->getColumnTypeName( _nColumnPos ),
144*b1cdbd2cSJim Jagielski         ::rtl::OUString(),
145*b1cdbd2cSJim Jagielski         ::rtl::OUString(),
146*b1cdbd2cSJim Jagielski         _rxResMetaData->isNullable( _nColumnPos ),
147*b1cdbd2cSJim Jagielski         _rxResMetaData->getPrecision( _nColumnPos ),
148*b1cdbd2cSJim Jagielski         _rxResMetaData->getScale( _nColumnPos ),
149*b1cdbd2cSJim Jagielski         _rxResMetaData->getColumnType( _nColumnPos ),
150*b1cdbd2cSJim Jagielski         _rxResMetaData->isAutoIncrement( _nColumnPos ),
151*b1cdbd2cSJim Jagielski         _rxResMetaData->isCurrency( _nColumnPos ),
152*b1cdbd2cSJim Jagielski         _rxDBMetaData->supportsMixedCaseQuotedIdentifiers()
153*b1cdbd2cSJim Jagielski     );
154*b1cdbd2cSJim Jagielski     const ::rtl::OUString sTableName = _rxResMetaData->getTableName( _nColumnPos );
155*b1cdbd2cSJim Jagielski     if ( sTableName.getLength() )
156*b1cdbd2cSJim Jagielski         pColumn->setTableName(  ::dbtools::composeTableName( _rxDBMetaData,
157*b1cdbd2cSJim Jagielski             _rxResMetaData->getCatalogName( _nColumnPos ),
158*b1cdbd2cSJim Jagielski             _rxResMetaData->getSchemaName( _nColumnPos ),
159*b1cdbd2cSJim Jagielski             sTableName,
160*b1cdbd2cSJim Jagielski             sal_False,
161*b1cdbd2cSJim Jagielski             eComplete
162*b1cdbd2cSJim Jagielski         ) );
163*b1cdbd2cSJim Jagielski     pColumn->setIsSearchable( _rxResMetaData->isSearchable( _nColumnPos ) );
164*b1cdbd2cSJim Jagielski     pColumn->setRealName(_rxResMetaData->getColumnName( _nColumnPos ));
165*b1cdbd2cSJim Jagielski     pColumn->setLabel(sLabel);
166*b1cdbd2cSJim Jagielski     return pColumn;
167*b1cdbd2cSJim Jagielski }
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
~OParseColumn()170*b1cdbd2cSJim Jagielski OParseColumn::~OParseColumn()
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski }
173*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
construct()174*b1cdbd2cSJim Jagielski void OParseColumn::construct()
175*b1cdbd2cSJim Jagielski {
176*b1cdbd2cSJim Jagielski 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_FUNCTION),				PROPERTY_ID_FUNCTION,				0,  &m_bFunction,		        ::getCppuType(reinterpret_cast< sal_Bool*>(NULL)));
177*b1cdbd2cSJim Jagielski 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_AGGREGATEFUNCTION),		PROPERTY_ID_AGGREGATEFUNCTION,		0,  &m_bAggregateFunction,		::getCppuType(reinterpret_cast< sal_Bool*>(NULL)));
178*b1cdbd2cSJim Jagielski 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME),				PROPERTY_ID_TABLENAME,				0,  &m_aTableName,		        ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
179*b1cdbd2cSJim Jagielski 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_REALNAME),				PROPERTY_ID_REALNAME,				0,  &m_aRealName,		        ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
180*b1cdbd2cSJim Jagielski 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DBASEPRECISIONCHANGED),	PROPERTY_ID_DBASEPRECISIONCHANGED,	0,  &m_bDbasePrecisionChanged,	::getCppuType(reinterpret_cast<sal_Bool*>(NULL)));
181*b1cdbd2cSJim Jagielski     registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISSEARCHABLE),	        PROPERTY_ID_ISSEARCHABLE,			0,  &m_bIsSearchable,           ::getCppuType(reinterpret_cast< sal_Bool*>(NULL)));
182*b1cdbd2cSJim Jagielski     registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_LABEL),				    PROPERTY_ID_LABEL,				    0,  &m_sLabel,		            ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
183*b1cdbd2cSJim Jagielski }
184*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
createArrayHelper() const185*b1cdbd2cSJim Jagielski ::cppu::IPropertyArrayHelper* OParseColumn::createArrayHelper() const
186*b1cdbd2cSJim Jagielski {
187*b1cdbd2cSJim Jagielski     return doCreateArrayHelper();
188*b1cdbd2cSJim Jagielski }
189*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getInfoHelper()190*b1cdbd2cSJim Jagielski ::cppu::IPropertyArrayHelper & SAL_CALL OParseColumn::getInfoHelper()
191*b1cdbd2cSJim Jagielski {
192*b1cdbd2cSJim Jagielski     OSL_ENSURE( !isNew(), "OParseColumn::getInfoHelper: a *new* ParseColumn?" );
193*b1cdbd2cSJim Jagielski 	return *OParseColumn_PROP::getArrayHelper();
194*b1cdbd2cSJim Jagielski }
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
197*b1cdbd2cSJim Jagielski namespace
198*b1cdbd2cSJim Jagielski {
lcl_getColumnTableName(const Reference<XPropertySet> & i_parseColumn)199*b1cdbd2cSJim Jagielski     ::rtl::OUString lcl_getColumnTableName( const Reference< XPropertySet >& i_parseColumn )
200*b1cdbd2cSJim Jagielski     {
201*b1cdbd2cSJim Jagielski         ::rtl::OUString sColumnTableName;
202*b1cdbd2cSJim Jagielski         try
203*b1cdbd2cSJim Jagielski         {
204*b1cdbd2cSJim Jagielski             OSL_VERIFY( i_parseColumn->getPropertyValue( OMetaConnection::getPropMap().getNameByIndex( PROPERTY_ID_TABLENAME ) ) >>= sColumnTableName );
205*b1cdbd2cSJim Jagielski         }
206*b1cdbd2cSJim Jagielski         catch( const Exception& )
207*b1cdbd2cSJim Jagielski         {
208*b1cdbd2cSJim Jagielski         	DBG_UNHANDLED_EXCEPTION();
209*b1cdbd2cSJim Jagielski         }
210*b1cdbd2cSJim Jagielski         return sColumnTableName;
211*b1cdbd2cSJim Jagielski     }
212*b1cdbd2cSJim Jagielski }
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
OOrderColumn(const Reference<XPropertySet> & _xColumn,const::rtl::OUString & i_rOriginatingTableName,sal_Bool _bCase,sal_Bool _bAscending)215*b1cdbd2cSJim Jagielski OOrderColumn::OOrderColumn(	const Reference<XPropertySet>& _xColumn, const ::rtl::OUString& i_rOriginatingTableName,
216*b1cdbd2cSJim Jagielski                             sal_Bool	_bCase, sal_Bool _bAscending )
217*b1cdbd2cSJim Jagielski 	: connectivity::sdbcx::OColumn(
218*b1cdbd2cSJim Jagielski         getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))),
219*b1cdbd2cSJim Jagielski 		getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))),
220*b1cdbd2cSJim Jagielski 		getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))),
221*b1cdbd2cSJim Jagielski         getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))),
222*b1cdbd2cSJim Jagielski 		getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))),
223*b1cdbd2cSJim Jagielski 		getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))),
224*b1cdbd2cSJim Jagielski 		getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))),
225*b1cdbd2cSJim Jagielski 		getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))),
226*b1cdbd2cSJim Jagielski 		getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))),
227*b1cdbd2cSJim Jagielski 		sal_False,
228*b1cdbd2cSJim Jagielski 		getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))),
229*b1cdbd2cSJim Jagielski 		_bCase
230*b1cdbd2cSJim Jagielski     )
231*b1cdbd2cSJim Jagielski 	,m_bAscending(_bAscending)
232*b1cdbd2cSJim Jagielski     ,m_sTableName( i_rOriginatingTableName )
233*b1cdbd2cSJim Jagielski {
234*b1cdbd2cSJim Jagielski 	construct();
235*b1cdbd2cSJim Jagielski }
236*b1cdbd2cSJim Jagielski 
237*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
OOrderColumn(const Reference<XPropertySet> & _xColumn,sal_Bool _bCase,sal_Bool _bAscending)238*b1cdbd2cSJim Jagielski OOrderColumn::OOrderColumn(	const Reference<XPropertySet>& _xColumn, sal_Bool _bCase, sal_Bool _bAscending )
239*b1cdbd2cSJim Jagielski 	: connectivity::sdbcx::OColumn(
240*b1cdbd2cSJim Jagielski         getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))),
241*b1cdbd2cSJim Jagielski 		getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME))),
242*b1cdbd2cSJim Jagielski 		getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE))),
243*b1cdbd2cSJim Jagielski         getString(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DESCRIPTION))),
244*b1cdbd2cSJim Jagielski 		getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE))),
245*b1cdbd2cSJim Jagielski 		getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION))),
246*b1cdbd2cSJim Jagielski 		getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE))),
247*b1cdbd2cSJim Jagielski 		getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))),
248*b1cdbd2cSJim Jagielski 		getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT))),
249*b1cdbd2cSJim Jagielski 		sal_False,
250*b1cdbd2cSJim Jagielski 		getBOOL(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISCURRENCY))),
251*b1cdbd2cSJim Jagielski 		_bCase
252*b1cdbd2cSJim Jagielski     )
253*b1cdbd2cSJim Jagielski 	,m_bAscending(_bAscending)
254*b1cdbd2cSJim Jagielski     ,m_sTableName( lcl_getColumnTableName( _xColumn ) )
255*b1cdbd2cSJim Jagielski {
256*b1cdbd2cSJim Jagielski 	construct();
257*b1cdbd2cSJim Jagielski }
258*b1cdbd2cSJim Jagielski 
259*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
~OOrderColumn()260*b1cdbd2cSJim Jagielski OOrderColumn::~OOrderColumn()
261*b1cdbd2cSJim Jagielski {
262*b1cdbd2cSJim Jagielski }
263*b1cdbd2cSJim Jagielski 
264*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
construct()265*b1cdbd2cSJim Jagielski void OOrderColumn::construct()
266*b1cdbd2cSJim Jagielski {
267*b1cdbd2cSJim Jagielski 	registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISASCENDING), PROPERTY_ID_ISASCENDING,
268*b1cdbd2cSJim Jagielski         PropertyAttribute::READONLY,  const_cast< sal_Bool* >( &m_bAscending ),    ::getCppuType( reinterpret_cast< sal_Bool* >( NULL ) ) );
269*b1cdbd2cSJim Jagielski     registerProperty(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TABLENAME),   PROPERTY_ID_TABLENAME,
270*b1cdbd2cSJim Jagielski         PropertyAttribute::READONLY,  const_cast< ::rtl::OUString* >( &m_sTableName ),  ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
271*b1cdbd2cSJim Jagielski }
272*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
createArrayHelper() const273*b1cdbd2cSJim Jagielski ::cppu::IPropertyArrayHelper* OOrderColumn::createArrayHelper() const
274*b1cdbd2cSJim Jagielski {
275*b1cdbd2cSJim Jagielski     return doCreateArrayHelper();
276*b1cdbd2cSJim Jagielski }
277*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getInfoHelper()278*b1cdbd2cSJim Jagielski ::cppu::IPropertyArrayHelper & SAL_CALL OOrderColumn::getInfoHelper()
279*b1cdbd2cSJim Jagielski {
280*b1cdbd2cSJim Jagielski     OSL_ENSURE( !isNew(), "OOrderColumn::getInfoHelper: a *new* OrderColumn?" );
281*b1cdbd2cSJim Jagielski 	return *OOrderColumn_PROP::getArrayHelper();
282*b1cdbd2cSJim Jagielski }
283*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getSupportedServiceNames()284*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL OOrderColumn::getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException)
285*b1cdbd2cSJim Jagielski {
286*b1cdbd2cSJim Jagielski 	::com::sun::star::uno::Sequence< ::rtl::OUString > aSupported(1);
287*b1cdbd2cSJim Jagielski 	aSupported[0] = ::rtl::OUString::createFromAscii("com.sun.star.sdb.OrderColumn");
288*b1cdbd2cSJim Jagielski 
289*b1cdbd2cSJim Jagielski 	return aSupported;
290*b1cdbd2cSJim Jagielski }
291*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
292