xref: /AOO41X/main/dbaccess/source/ui/tabledesign/FieldDescriptions.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_dbaccess.hxx"
30*cdf0e10cSrcweir #ifndef DBAUI_FIELDDESCRIPTIONS_HXX
31*cdf0e10cSrcweir #include "FieldDescriptions.hxx"
32*cdf0e10cSrcweir #endif
33*cdf0e10cSrcweir #ifndef _TOOLS_DEBUG_HXX
34*cdf0e10cSrcweir #include <tools/debug.hxx>
35*cdf0e10cSrcweir #endif
36*cdf0e10cSrcweir #ifndef TOOLS_DIAGNOSE_EX_H
37*cdf0e10cSrcweir #include <tools/diagnose_ex.h>
38*cdf0e10cSrcweir #endif
39*cdf0e10cSrcweir #ifndef _DBU_TBL_HRC_
40*cdf0e10cSrcweir #include "dbu_tbl.hrc"
41*cdf0e10cSrcweir #endif
42*cdf0e10cSrcweir #ifndef _COM_SUN_STAR_SDBC_COLUMNVALUE_HPP_
43*cdf0e10cSrcweir #include <com/sun/star/sdbc/ColumnValue.hpp>
44*cdf0e10cSrcweir #endif
45*cdf0e10cSrcweir #ifndef DBACCESS_SHARED_DBUSTRINGS_HRC
46*cdf0e10cSrcweir #include "dbustrings.hrc"
47*cdf0e10cSrcweir #endif
48*cdf0e10cSrcweir #ifndef _COMPHELPER_TYPES_HXX_
49*cdf0e10cSrcweir #include <comphelper/types.hxx>
50*cdf0e10cSrcweir #endif
51*cdf0e10cSrcweir #ifndef _COMPHELPER_EXTRACT_HXX_
52*cdf0e10cSrcweir #include <comphelper/extract.hxx>
53*cdf0e10cSrcweir #endif
54*cdf0e10cSrcweir #ifndef DBAUI_TOOLS_HXX
55*cdf0e10cSrcweir #include "UITools.hxx"
56*cdf0e10cSrcweir #endif
57*cdf0e10cSrcweir #ifndef _COM_SUN_STAR_UTIL_NUMBERFORMAT_HPP_
58*cdf0e10cSrcweir #include <com/sun/star/util/NumberFormat.hpp>
59*cdf0e10cSrcweir #endif
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir #define DEFAULT_VARCHAR_PRECSION	50
62*cdf0e10cSrcweir #define DEFAULT_OTHER_PRECSION		16
63*cdf0e10cSrcweir #define DEFAULT_NUMERIC_PRECSION	5
64*cdf0e10cSrcweir #define DEFAULT_NUMERIC_SCALE		0
65*cdf0e10cSrcweir 
66*cdf0e10cSrcweir 
67*cdf0e10cSrcweir using namespace dbaui;
68*cdf0e10cSrcweir using namespace ::com::sun::star::sdbc;
69*cdf0e10cSrcweir using namespace ::com::sun::star::uno;
70*cdf0e10cSrcweir using namespace ::com::sun::star::beans;
71*cdf0e10cSrcweir using namespace ::com::sun::star::util;
72*cdf0e10cSrcweir 
73*cdf0e10cSrcweir //========================================================================
74*cdf0e10cSrcweir // class OFieldDescription
75*cdf0e10cSrcweir //========================================================================
76*cdf0e10cSrcweir DBG_NAME(OFieldDescription)
77*cdf0e10cSrcweir //------------------------------------------------------------------------------
78*cdf0e10cSrcweir OFieldDescription::OFieldDescription()
79*cdf0e10cSrcweir     :m_pType()
80*cdf0e10cSrcweir 	,m_nType(DataType::VARCHAR)
81*cdf0e10cSrcweir 	,m_nPrecision(0)
82*cdf0e10cSrcweir 	,m_nScale(0)
83*cdf0e10cSrcweir 	,m_nIsNullable(ColumnValue::NULLABLE)
84*cdf0e10cSrcweir     ,m_nFormatKey(0)
85*cdf0e10cSrcweir 	,m_eHorJustify(SVX_HOR_JUSTIFY_STANDARD)
86*cdf0e10cSrcweir 	,m_bIsAutoIncrement(sal_False)
87*cdf0e10cSrcweir     ,m_bIsPrimaryKey(sal_False)
88*cdf0e10cSrcweir 	,m_bIsCurrency(sal_False)
89*cdf0e10cSrcweir 	,m_bHidden(sal_False)
90*cdf0e10cSrcweir {
91*cdf0e10cSrcweir 	DBG_CTOR(OFieldDescription,NULL);
92*cdf0e10cSrcweir }
93*cdf0e10cSrcweir //------------------------------------------------------------------------------
94*cdf0e10cSrcweir OFieldDescription::OFieldDescription( const OFieldDescription& rDescr )
95*cdf0e10cSrcweir     :m_aDefaultValue(rDescr.m_aDefaultValue)
96*cdf0e10cSrcweir     ,m_aControlDefault(rDescr.m_aControlDefault)
97*cdf0e10cSrcweir     ,m_aWidth(rDescr.m_aWidth)
98*cdf0e10cSrcweir     ,m_aRelativePosition(rDescr.m_aRelativePosition)
99*cdf0e10cSrcweir     ,m_pType(rDescr.m_pType)
100*cdf0e10cSrcweir     ,m_xDest(rDescr.m_xDest)
101*cdf0e10cSrcweir     ,m_xDestInfo(rDescr.m_xDestInfo)
102*cdf0e10cSrcweir     ,m_sName(rDescr.m_sName)
103*cdf0e10cSrcweir     ,m_sTypeName(rDescr.m_sTypeName)
104*cdf0e10cSrcweir     ,m_sDescription(rDescr.m_sDescription)
105*cdf0e10cSrcweir     ,m_sAutoIncrementValue(rDescr.m_sAutoIncrementValue)
106*cdf0e10cSrcweir     ,m_nType(rDescr.m_nType)
107*cdf0e10cSrcweir     ,m_nPrecision(rDescr.m_nPrecision)
108*cdf0e10cSrcweir     ,m_nScale(rDescr.m_nScale)
109*cdf0e10cSrcweir     ,m_nIsNullable(rDescr.m_nIsNullable)
110*cdf0e10cSrcweir     ,m_nFormatKey(rDescr.m_nFormatKey)
111*cdf0e10cSrcweir     ,m_eHorJustify(rDescr.m_eHorJustify)
112*cdf0e10cSrcweir     ,m_bIsAutoIncrement(rDescr.m_bIsAutoIncrement)
113*cdf0e10cSrcweir     ,m_bIsPrimaryKey(rDescr.m_bIsPrimaryKey)
114*cdf0e10cSrcweir     ,m_bIsCurrency(rDescr.m_bIsCurrency)
115*cdf0e10cSrcweir     ,m_bHidden(rDescr.m_bHidden)
116*cdf0e10cSrcweir {
117*cdf0e10cSrcweir     DBG_CTOR(OFieldDescription,NULL);
118*cdf0e10cSrcweir }
119*cdf0e10cSrcweir 
120*cdf0e10cSrcweir //------------------------------------------------------------------------------
121*cdf0e10cSrcweir OFieldDescription::~OFieldDescription()
122*cdf0e10cSrcweir {
123*cdf0e10cSrcweir 	DBG_DTOR(OFieldDescription,NULL);
124*cdf0e10cSrcweir }
125*cdf0e10cSrcweir //------------------------------------------------------------------------------
126*cdf0e10cSrcweir OFieldDescription::OFieldDescription(const Reference< XPropertySet >& xAffectedCol,sal_Bool _bUseAsDest)
127*cdf0e10cSrcweir     :m_pType()
128*cdf0e10cSrcweir 	,m_nType(DataType::VARCHAR)
129*cdf0e10cSrcweir 	,m_nPrecision(0)
130*cdf0e10cSrcweir 	,m_nScale(0)
131*cdf0e10cSrcweir 	,m_nIsNullable(ColumnValue::NULLABLE)
132*cdf0e10cSrcweir 	,m_nFormatKey(0)
133*cdf0e10cSrcweir 	,m_eHorJustify(SVX_HOR_JUSTIFY_STANDARD)
134*cdf0e10cSrcweir 	,m_bIsAutoIncrement(sal_False)
135*cdf0e10cSrcweir     ,m_bIsPrimaryKey(sal_False)
136*cdf0e10cSrcweir     ,m_bIsCurrency(sal_False)
137*cdf0e10cSrcweir     ,m_bHidden(sal_False)
138*cdf0e10cSrcweir {
139*cdf0e10cSrcweir 	DBG_CTOR(OFieldDescription,NULL);
140*cdf0e10cSrcweir 	OSL_ENSURE(xAffectedCol.is(),"PropetySet can notbe null!");
141*cdf0e10cSrcweir 	if ( xAffectedCol.is() )
142*cdf0e10cSrcweir 	{
143*cdf0e10cSrcweir 		if ( _bUseAsDest )
144*cdf0e10cSrcweir 		{
145*cdf0e10cSrcweir 			m_xDest = xAffectedCol;
146*cdf0e10cSrcweir 			m_xDestInfo = xAffectedCol->getPropertySetInfo();;
147*cdf0e10cSrcweir 		}
148*cdf0e10cSrcweir 		else
149*cdf0e10cSrcweir 		{
150*cdf0e10cSrcweir 			try
151*cdf0e10cSrcweir 			{
152*cdf0e10cSrcweir 				Reference<XPropertySetInfo> xPropSetInfo = xAffectedCol->getPropertySetInfo();
153*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_NAME))
154*cdf0e10cSrcweir 					SetName(::comphelper::getString(xAffectedCol->getPropertyValue(PROPERTY_NAME)));
155*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_DESCRIPTION))
156*cdf0e10cSrcweir 					SetDescription(::comphelper::getString(xAffectedCol->getPropertyValue(PROPERTY_DESCRIPTION)));
157*cdf0e10cSrcweir                 if(xPropSetInfo->hasPropertyByName(PROPERTY_HELPTEXT))
158*cdf0e10cSrcweir                 {
159*cdf0e10cSrcweir                     ::rtl::OUString sHelpText;
160*cdf0e10cSrcweir                     xAffectedCol->getPropertyValue(PROPERTY_HELPTEXT) >>= sHelpText;
161*cdf0e10cSrcweir 					SetHelpText(sHelpText);
162*cdf0e10cSrcweir                 }
163*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_DEFAULTVALUE))
164*cdf0e10cSrcweir 					SetDefaultValue( xAffectedCol->getPropertyValue(PROPERTY_DEFAULTVALUE) );
165*cdf0e10cSrcweir 
166*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_CONTROLDEFAULT))
167*cdf0e10cSrcweir 					SetControlDefault( xAffectedCol->getPropertyValue(PROPERTY_CONTROLDEFAULT) );
168*cdf0e10cSrcweir 
169*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_AUTOINCREMENTCREATION))
170*cdf0e10cSrcweir 					SetAutoIncrementValue(::comphelper::getString(xAffectedCol->getPropertyValue(PROPERTY_AUTOINCREMENTCREATION)));
171*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_TYPE))
172*cdf0e10cSrcweir 					SetTypeValue(::comphelper::getINT32(xAffectedCol->getPropertyValue(PROPERTY_TYPE)));
173*cdf0e10cSrcweir                 if (xPropSetInfo->hasPropertyByName(PROPERTY_TYPENAME))
174*cdf0e10cSrcweir 					SetTypeName(::comphelper::getString(xAffectedCol->getPropertyValue(PROPERTY_TYPENAME)));
175*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_PRECISION))
176*cdf0e10cSrcweir 					SetPrecision(::comphelper::getINT32(xAffectedCol->getPropertyValue(PROPERTY_PRECISION)));
177*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_SCALE))
178*cdf0e10cSrcweir 					SetScale(::comphelper::getINT32(xAffectedCol->getPropertyValue(PROPERTY_SCALE)));
179*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_ISNULLABLE))
180*cdf0e10cSrcweir 					SetIsNullable(::comphelper::getINT32(xAffectedCol->getPropertyValue(PROPERTY_ISNULLABLE)));
181*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_FORMATKEY))
182*cdf0e10cSrcweir                 {
183*cdf0e10cSrcweir                     const Any aValue = xAffectedCol->getPropertyValue(PROPERTY_FORMATKEY);
184*cdf0e10cSrcweir                     if ( aValue.hasValue() )
185*cdf0e10cSrcweir 					    SetFormatKey(::comphelper::getINT32(aValue));
186*cdf0e10cSrcweir                 }
187*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_RELATIVEPOSITION))
188*cdf0e10cSrcweir 					m_aRelativePosition = xAffectedCol->getPropertyValue(PROPERTY_RELATIVEPOSITION);
189*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_WIDTH))
190*cdf0e10cSrcweir 					m_aWidth = xAffectedCol->getPropertyValue(PROPERTY_WIDTH);
191*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_HIDDEN))
192*cdf0e10cSrcweir 					xAffectedCol->getPropertyValue(PROPERTY_HIDDEN) >>= m_bHidden;
193*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_ALIGN))
194*cdf0e10cSrcweir                 {
195*cdf0e10cSrcweir                     const Any aValue = xAffectedCol->getPropertyValue(PROPERTY_ALIGN);
196*cdf0e10cSrcweir                     if ( aValue.hasValue() )
197*cdf0e10cSrcweir 					    SetHorJustify( ::dbaui::mapTextJustify(::comphelper::getINT32(aValue)));
198*cdf0e10cSrcweir                 }
199*cdf0e10cSrcweir 				if(xPropSetInfo->hasPropertyByName(PROPERTY_ISAUTOINCREMENT))
200*cdf0e10cSrcweir 					SetAutoIncrement(::cppu::any2bool(xAffectedCol->getPropertyValue(PROPERTY_ISAUTOINCREMENT)));
201*cdf0e10cSrcweir 			}
202*cdf0e10cSrcweir 			catch(const Exception&)
203*cdf0e10cSrcweir 			{
204*cdf0e10cSrcweir                 DBG_UNHANDLED_EXCEPTION();
205*cdf0e10cSrcweir 			}
206*cdf0e10cSrcweir 		}
207*cdf0e10cSrcweir 	}
208*cdf0e10cSrcweir }
209*cdf0e10cSrcweir // -----------------------------------------------------------------------------
210*cdf0e10cSrcweir void OFieldDescription::FillFromTypeInfo(const TOTypeInfoSP& _pType,sal_Bool _bForce,sal_Bool _bReset)
211*cdf0e10cSrcweir {
212*cdf0e10cSrcweir 	TOTypeInfoSP pOldType = getTypeInfo();
213*cdf0e10cSrcweir 	if ( _pType != pOldType )
214*cdf0e10cSrcweir 	{
215*cdf0e10cSrcweir 		// reset type depending information
216*cdf0e10cSrcweir 		if ( _bReset )
217*cdf0e10cSrcweir 		{
218*cdf0e10cSrcweir 			SetFormatKey(0);
219*cdf0e10cSrcweir 			SetControlDefault(Any());
220*cdf0e10cSrcweir 		}
221*cdf0e10cSrcweir 
222*cdf0e10cSrcweir 		sal_Bool bForce = _bForce || pOldType.get() == NULL || pOldType->nType != _pType->nType;
223*cdf0e10cSrcweir 		switch ( _pType->nType )
224*cdf0e10cSrcweir 		{
225*cdf0e10cSrcweir 			case DataType::CHAR:
226*cdf0e10cSrcweir 			case DataType::VARCHAR:
227*cdf0e10cSrcweir 				if ( bForce )
228*cdf0e10cSrcweir 				{
229*cdf0e10cSrcweir 					sal_Int32 nPrec = DEFAULT_VARCHAR_PRECSION;
230*cdf0e10cSrcweir 					if ( GetPrecision() )
231*cdf0e10cSrcweir 						nPrec = GetPrecision();
232*cdf0e10cSrcweir 					SetPrecision(::std::min<sal_Int32>(nPrec,_pType->nPrecision));
233*cdf0e10cSrcweir 				}
234*cdf0e10cSrcweir 				break;
235*cdf0e10cSrcweir             case DataType::TIMESTAMP:
236*cdf0e10cSrcweir                 if ( bForce && _pType->nMaximumScale)
237*cdf0e10cSrcweir 				{
238*cdf0e10cSrcweir 					SetScale(::std::min<sal_Int32>(GetScale() ? GetScale() : DEFAULT_NUMERIC_SCALE,_pType->nMaximumScale));
239*cdf0e10cSrcweir 				}
240*cdf0e10cSrcweir                 break;
241*cdf0e10cSrcweir 			default:
242*cdf0e10cSrcweir 				if ( bForce )
243*cdf0e10cSrcweir 				{
244*cdf0e10cSrcweir 					sal_Int32 nPrec = DEFAULT_OTHER_PRECSION;
245*cdf0e10cSrcweir 					switch ( _pType->nType )
246*cdf0e10cSrcweir 					{
247*cdf0e10cSrcweir 						case DataType::BIT:
248*cdf0e10cSrcweir 						case DataType::BLOB:
249*cdf0e10cSrcweir 						case DataType::CLOB:
250*cdf0e10cSrcweir 							nPrec = _pType->nPrecision;
251*cdf0e10cSrcweir 							break;
252*cdf0e10cSrcweir 						default:
253*cdf0e10cSrcweir 							if ( GetPrecision() )
254*cdf0e10cSrcweir 								nPrec = GetPrecision();
255*cdf0e10cSrcweir 							break;
256*cdf0e10cSrcweir 					}
257*cdf0e10cSrcweir 
258*cdf0e10cSrcweir 					if ( _pType->nPrecision )
259*cdf0e10cSrcweir 						SetPrecision(::std::min<sal_Int32>(nPrec ? nPrec : DEFAULT_NUMERIC_PRECSION,_pType->nPrecision));
260*cdf0e10cSrcweir 					if ( _pType->nMaximumScale )
261*cdf0e10cSrcweir 						SetScale(::std::min<sal_Int32>(GetScale() ? GetScale() : DEFAULT_NUMERIC_SCALE,_pType->nMaximumScale));
262*cdf0e10cSrcweir 				}
263*cdf0e10cSrcweir 		}
264*cdf0e10cSrcweir 		if ( !_pType->aCreateParams.getLength() )
265*cdf0e10cSrcweir 		{
266*cdf0e10cSrcweir 			SetPrecision(_pType->nPrecision);
267*cdf0e10cSrcweir 			SetScale(_pType->nMinimumScale);
268*cdf0e10cSrcweir 		}
269*cdf0e10cSrcweir 		if ( !_pType->bNullable && IsNullable() )
270*cdf0e10cSrcweir 			SetIsNullable(ColumnValue::NO_NULLS);
271*cdf0e10cSrcweir 		if ( !_pType->bAutoIncrement && IsAutoIncrement() )
272*cdf0e10cSrcweir 			SetAutoIncrement(sal_False);
273*cdf0e10cSrcweir 		SetCurrency( _pType->bCurrency );
274*cdf0e10cSrcweir 		SetType(_pType);
275*cdf0e10cSrcweir 		SetTypeName(_pType->aTypeName);
276*cdf0e10cSrcweir 	}
277*cdf0e10cSrcweir }
278*cdf0e10cSrcweir // -----------------------------------------------------------------------------
279*cdf0e10cSrcweir void OFieldDescription::SetName(const ::rtl::OUString& _rName)
280*cdf0e10cSrcweir {
281*cdf0e10cSrcweir 	try
282*cdf0e10cSrcweir 	{
283*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_NAME) )
284*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_NAME,makeAny(_rName));
285*cdf0e10cSrcweir 		else
286*cdf0e10cSrcweir 			m_sName = _rName;
287*cdf0e10cSrcweir 	}
288*cdf0e10cSrcweir 	catch(const Exception& )
289*cdf0e10cSrcweir 	{
290*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
291*cdf0e10cSrcweir 	}
292*cdf0e10cSrcweir }
293*cdf0e10cSrcweir // -----------------------------------------------------------------------------
294*cdf0e10cSrcweir void OFieldDescription::SetHelpText(const ::rtl::OUString& _sHelpText)
295*cdf0e10cSrcweir {
296*cdf0e10cSrcweir     try
297*cdf0e10cSrcweir 	{
298*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_HELPTEXT) )
299*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_HELPTEXT,makeAny(_sHelpText));
300*cdf0e10cSrcweir 		else
301*cdf0e10cSrcweir 			m_sHelpText = _sHelpText;
302*cdf0e10cSrcweir 	}
303*cdf0e10cSrcweir 	catch(const Exception& )
304*cdf0e10cSrcweir 	{
305*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
306*cdf0e10cSrcweir 	}
307*cdf0e10cSrcweir }
308*cdf0e10cSrcweir // -----------------------------------------------------------------------------
309*cdf0e10cSrcweir void OFieldDescription::SetDescription(const ::rtl::OUString& _rDescription)
310*cdf0e10cSrcweir {
311*cdf0e10cSrcweir 	try
312*cdf0e10cSrcweir 	{
313*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_DESCRIPTION) )
314*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_DESCRIPTION,makeAny(_rDescription));
315*cdf0e10cSrcweir 		else
316*cdf0e10cSrcweir 			m_sDescription = _rDescription;
317*cdf0e10cSrcweir 	}
318*cdf0e10cSrcweir 	catch(const Exception& )
319*cdf0e10cSrcweir 	{
320*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
321*cdf0e10cSrcweir 	}
322*cdf0e10cSrcweir }
323*cdf0e10cSrcweir // -----------------------------------------------------------------------------
324*cdf0e10cSrcweir void OFieldDescription::SetDefaultValue(const Any& _rDefaultValue)
325*cdf0e10cSrcweir {
326*cdf0e10cSrcweir 	try
327*cdf0e10cSrcweir 	{
328*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_DEFAULTVALUE) )
329*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_DEFAULTVALUE,makeAny(_rDefaultValue));
330*cdf0e10cSrcweir 		else
331*cdf0e10cSrcweir 			m_aDefaultValue = _rDefaultValue;
332*cdf0e10cSrcweir 	}
333*cdf0e10cSrcweir 	catch( const Exception& )
334*cdf0e10cSrcweir 	{
335*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
336*cdf0e10cSrcweir 	}
337*cdf0e10cSrcweir }
338*cdf0e10cSrcweir // -----------------------------------------------------------------------------
339*cdf0e10cSrcweir void OFieldDescription::SetControlDefault(const Any& _rControlDefault)
340*cdf0e10cSrcweir {
341*cdf0e10cSrcweir 	try
342*cdf0e10cSrcweir 	{
343*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_CONTROLDEFAULT) )
344*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_CONTROLDEFAULT,makeAny(_rControlDefault));
345*cdf0e10cSrcweir 		else
346*cdf0e10cSrcweir 			m_aControlDefault = _rControlDefault;
347*cdf0e10cSrcweir 	}
348*cdf0e10cSrcweir 	catch( const Exception& )
349*cdf0e10cSrcweir 	{
350*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
351*cdf0e10cSrcweir 	}
352*cdf0e10cSrcweir }
353*cdf0e10cSrcweir // -----------------------------------------------------------------------------
354*cdf0e10cSrcweir void OFieldDescription::SetAutoIncrementValue(const ::rtl::OUString& _sAutoIncValue)
355*cdf0e10cSrcweir {
356*cdf0e10cSrcweir 	try
357*cdf0e10cSrcweir 	{
358*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_AUTOINCREMENTCREATION) )
359*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_AUTOINCREMENTCREATION,makeAny(_sAutoIncValue));
360*cdf0e10cSrcweir 		else
361*cdf0e10cSrcweir 			m_sAutoIncrementValue = _sAutoIncValue;
362*cdf0e10cSrcweir 	}
363*cdf0e10cSrcweir 	catch( const Exception& )
364*cdf0e10cSrcweir 	{
365*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
366*cdf0e10cSrcweir 	}
367*cdf0e10cSrcweir }
368*cdf0e10cSrcweir // -----------------------------------------------------------------------------
369*cdf0e10cSrcweir void OFieldDescription::SetType(TOTypeInfoSP _pType)
370*cdf0e10cSrcweir {
371*cdf0e10cSrcweir 	m_pType = _pType;
372*cdf0e10cSrcweir 	if ( m_pType.get() )
373*cdf0e10cSrcweir 	{
374*cdf0e10cSrcweir 		try
375*cdf0e10cSrcweir 		{
376*cdf0e10cSrcweir 			if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_TYPE) )
377*cdf0e10cSrcweir 				m_xDest->setPropertyValue(PROPERTY_TYPE,makeAny(m_pType->nType));
378*cdf0e10cSrcweir 			else
379*cdf0e10cSrcweir 				m_nType = m_pType->nType;
380*cdf0e10cSrcweir 		}
381*cdf0e10cSrcweir 	    catch( const Exception& )
382*cdf0e10cSrcweir 	    {
383*cdf0e10cSrcweir             DBG_UNHANDLED_EXCEPTION();
384*cdf0e10cSrcweir 	    }
385*cdf0e10cSrcweir 	}
386*cdf0e10cSrcweir }
387*cdf0e10cSrcweir // -----------------------------------------------------------------------------
388*cdf0e10cSrcweir void OFieldDescription::SetTypeValue(sal_Int32 _nType)
389*cdf0e10cSrcweir {
390*cdf0e10cSrcweir 	try
391*cdf0e10cSrcweir 	{
392*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_TYPE) )
393*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_TYPE,makeAny(_nType));
394*cdf0e10cSrcweir 		else
395*cdf0e10cSrcweir 		{
396*cdf0e10cSrcweir 			m_nType = _nType;
397*cdf0e10cSrcweir 			OSL_ENSURE(!m_pType.get(),"Invalid call here!");
398*cdf0e10cSrcweir 		}
399*cdf0e10cSrcweir 	}
400*cdf0e10cSrcweir 	catch( const Exception& )
401*cdf0e10cSrcweir 	{
402*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
403*cdf0e10cSrcweir 	}
404*cdf0e10cSrcweir }
405*cdf0e10cSrcweir // -----------------------------------------------------------------------------
406*cdf0e10cSrcweir void OFieldDescription::SetPrecision(const sal_Int32& _rPrecision)
407*cdf0e10cSrcweir {
408*cdf0e10cSrcweir 	try
409*cdf0e10cSrcweir 	{
410*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_PRECISION) )
411*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_PRECISION,makeAny(_rPrecision));
412*cdf0e10cSrcweir 		else
413*cdf0e10cSrcweir 			m_nPrecision = _rPrecision;
414*cdf0e10cSrcweir 	}
415*cdf0e10cSrcweir 	catch( const Exception& )
416*cdf0e10cSrcweir 	{
417*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
418*cdf0e10cSrcweir 	}
419*cdf0e10cSrcweir }
420*cdf0e10cSrcweir // -----------------------------------------------------------------------------
421*cdf0e10cSrcweir void OFieldDescription::SetScale(const sal_Int32& _rScale)
422*cdf0e10cSrcweir {
423*cdf0e10cSrcweir 	try
424*cdf0e10cSrcweir 	{
425*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_SCALE) )
426*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_SCALE,makeAny(_rScale));
427*cdf0e10cSrcweir 		else
428*cdf0e10cSrcweir 			m_nScale = _rScale;
429*cdf0e10cSrcweir 	}
430*cdf0e10cSrcweir 	catch( const Exception& )
431*cdf0e10cSrcweir 	{
432*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
433*cdf0e10cSrcweir 	}
434*cdf0e10cSrcweir }
435*cdf0e10cSrcweir // -----------------------------------------------------------------------------
436*cdf0e10cSrcweir void OFieldDescription::SetIsNullable(const sal_Int32& _rIsNullable)
437*cdf0e10cSrcweir {
438*cdf0e10cSrcweir 	try
439*cdf0e10cSrcweir 	{
440*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_ISNULLABLE) )
441*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_ISNULLABLE,makeAny(_rIsNullable));
442*cdf0e10cSrcweir 		else
443*cdf0e10cSrcweir 			m_nIsNullable = _rIsNullable;
444*cdf0e10cSrcweir 	}
445*cdf0e10cSrcweir 	catch( const Exception& )
446*cdf0e10cSrcweir 	{
447*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
448*cdf0e10cSrcweir 	}
449*cdf0e10cSrcweir }
450*cdf0e10cSrcweir // -----------------------------------------------------------------------------
451*cdf0e10cSrcweir void OFieldDescription::SetFormatKey(const sal_Int32& _rFormatKey)
452*cdf0e10cSrcweir {
453*cdf0e10cSrcweir 	try
454*cdf0e10cSrcweir 	{
455*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_FORMATKEY) )
456*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_FORMATKEY,makeAny(_rFormatKey));
457*cdf0e10cSrcweir 		else
458*cdf0e10cSrcweir 			m_nFormatKey = _rFormatKey;
459*cdf0e10cSrcweir 	}
460*cdf0e10cSrcweir 	catch( const Exception& )
461*cdf0e10cSrcweir 	{
462*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
463*cdf0e10cSrcweir 	}
464*cdf0e10cSrcweir }
465*cdf0e10cSrcweir // -----------------------------------------------------------------------------
466*cdf0e10cSrcweir void OFieldDescription::SetHorJustify(const SvxCellHorJustify& _rHorJustify)
467*cdf0e10cSrcweir {
468*cdf0e10cSrcweir 	try
469*cdf0e10cSrcweir 	{
470*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_ALIGN) )
471*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_ALIGN,makeAny( dbaui::mapTextAllign(_rHorJustify)));
472*cdf0e10cSrcweir 		else
473*cdf0e10cSrcweir 			m_eHorJustify = _rHorJustify;
474*cdf0e10cSrcweir 	}
475*cdf0e10cSrcweir 	catch( const Exception& )
476*cdf0e10cSrcweir 	{
477*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
478*cdf0e10cSrcweir 	}
479*cdf0e10cSrcweir }
480*cdf0e10cSrcweir // -----------------------------------------------------------------------------
481*cdf0e10cSrcweir void OFieldDescription::SetAutoIncrement(sal_Bool _bAuto)
482*cdf0e10cSrcweir {
483*cdf0e10cSrcweir 	try
484*cdf0e10cSrcweir 	{
485*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_ISAUTOINCREMENT) )
486*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_ISAUTOINCREMENT,makeAny(_bAuto));
487*cdf0e10cSrcweir 		else
488*cdf0e10cSrcweir 			m_bIsAutoIncrement = _bAuto;
489*cdf0e10cSrcweir 	}
490*cdf0e10cSrcweir 	catch( const Exception& )
491*cdf0e10cSrcweir 	{
492*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
493*cdf0e10cSrcweir 	}
494*cdf0e10cSrcweir }
495*cdf0e10cSrcweir // -----------------------------------------------------------------------------
496*cdf0e10cSrcweir void OFieldDescription::SetPrimaryKey(sal_Bool _bPKey)
497*cdf0e10cSrcweir {
498*cdf0e10cSrcweir 	m_bIsPrimaryKey = _bPKey;
499*cdf0e10cSrcweir 	if ( _bPKey )
500*cdf0e10cSrcweir 		SetIsNullable(::com::sun::star::sdbc::ColumnValue::NO_NULLS);
501*cdf0e10cSrcweir }
502*cdf0e10cSrcweir // -----------------------------------------------------------------------------
503*cdf0e10cSrcweir void OFieldDescription::SetCurrency(sal_Bool _bIsCurrency)
504*cdf0e10cSrcweir {
505*cdf0e10cSrcweir 	m_bIsCurrency = _bIsCurrency;
506*cdf0e10cSrcweir }
507*cdf0e10cSrcweir // -----------------------------------------------------------------------------
508*cdf0e10cSrcweir 
509*cdf0e10cSrcweir ::rtl::OUString				OFieldDescription::GetName()				const
510*cdf0e10cSrcweir {
511*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_NAME) )
512*cdf0e10cSrcweir 		return ::comphelper::getString(m_xDest->getPropertyValue(PROPERTY_NAME));
513*cdf0e10cSrcweir 	else
514*cdf0e10cSrcweir 		return m_sName;
515*cdf0e10cSrcweir }
516*cdf0e10cSrcweir // -----------------------------------------------------------------------------
517*cdf0e10cSrcweir ::rtl::OUString				OFieldDescription::GetDescription()			const
518*cdf0e10cSrcweir {
519*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_DESCRIPTION) )
520*cdf0e10cSrcweir 		return ::comphelper::getString(m_xDest->getPropertyValue(PROPERTY_DESCRIPTION));
521*cdf0e10cSrcweir 	else
522*cdf0e10cSrcweir 		return m_sDescription;
523*cdf0e10cSrcweir }
524*cdf0e10cSrcweir // -----------------------------------------------------------------------------
525*cdf0e10cSrcweir ::rtl::OUString				OFieldDescription::GetHelpText()			const
526*cdf0e10cSrcweir {
527*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_HELPTEXT) )
528*cdf0e10cSrcweir 		return ::comphelper::getString(m_xDest->getPropertyValue(PROPERTY_HELPTEXT));
529*cdf0e10cSrcweir 	else
530*cdf0e10cSrcweir 		return m_sHelpText;
531*cdf0e10cSrcweir }
532*cdf0e10cSrcweir // -----------------------------------------------------------------------------
533*cdf0e10cSrcweir ::com::sun::star::uno::Any	OFieldDescription::GetControlDefault()		const
534*cdf0e10cSrcweir {
535*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_CONTROLDEFAULT) )
536*cdf0e10cSrcweir 		return m_xDest->getPropertyValue(PROPERTY_CONTROLDEFAULT);
537*cdf0e10cSrcweir 	else
538*cdf0e10cSrcweir 		return m_aControlDefault;
539*cdf0e10cSrcweir }
540*cdf0e10cSrcweir // -----------------------------------------------------------------------------
541*cdf0e10cSrcweir ::rtl::OUString				OFieldDescription::GetAutoIncrementValue()	const
542*cdf0e10cSrcweir {
543*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_AUTOINCREMENTCREATION) )
544*cdf0e10cSrcweir 		return ::comphelper::getString(m_xDest->getPropertyValue(PROPERTY_AUTOINCREMENTCREATION));
545*cdf0e10cSrcweir 	else
546*cdf0e10cSrcweir 		return m_sAutoIncrementValue;
547*cdf0e10cSrcweir }
548*cdf0e10cSrcweir // -----------------------------------------------------------------------------
549*cdf0e10cSrcweir sal_Int32					OFieldDescription::GetType()				const
550*cdf0e10cSrcweir {
551*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_TYPE) )
552*cdf0e10cSrcweir 		return ::comphelper::getINT32(m_xDest->getPropertyValue(PROPERTY_TYPE));
553*cdf0e10cSrcweir 	else
554*cdf0e10cSrcweir 		return m_pType.get() ? m_pType->nType : m_nType;
555*cdf0e10cSrcweir }
556*cdf0e10cSrcweir // -----------------------------------------------------------------------------
557*cdf0e10cSrcweir ::rtl::OUString             OFieldDescription::GetTypeName()			const
558*cdf0e10cSrcweir {
559*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_TYPENAME) )
560*cdf0e10cSrcweir 		return ::comphelper::getString(m_xDest->getPropertyValue(PROPERTY_TYPENAME));
561*cdf0e10cSrcweir 	else
562*cdf0e10cSrcweir 		return m_pType.get() ? m_pType->aTypeName : m_sTypeName;
563*cdf0e10cSrcweir }
564*cdf0e10cSrcweir // -----------------------------------------------------------------------------
565*cdf0e10cSrcweir sal_Int32					OFieldDescription::GetPrecision()			const
566*cdf0e10cSrcweir {
567*cdf0e10cSrcweir     sal_Int32 nPrec = m_nPrecision;
568*cdf0e10cSrcweir     if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_PRECISION) )
569*cdf0e10cSrcweir 		nPrec = ::comphelper::getINT32(m_xDest->getPropertyValue(PROPERTY_PRECISION));
570*cdf0e10cSrcweir 
571*cdf0e10cSrcweir     TOTypeInfoSP pTypeInfo = getTypeInfo();
572*cdf0e10cSrcweir     if ( pTypeInfo )
573*cdf0e10cSrcweir     {
574*cdf0e10cSrcweir 	    switch ( pTypeInfo->nType )
575*cdf0e10cSrcweir 	    {
576*cdf0e10cSrcweir             case DataType::TINYINT:
577*cdf0e10cSrcweir             case DataType::SMALLINT:
578*cdf0e10cSrcweir 		    case DataType::INTEGER:
579*cdf0e10cSrcweir             case DataType::BIGINT:
580*cdf0e10cSrcweir                 if ( !nPrec )
581*cdf0e10cSrcweir                     nPrec = pTypeInfo->nPrecision;
582*cdf0e10cSrcweir                 break;
583*cdf0e10cSrcweir         } // switch ( pTypeInfo->nType )
584*cdf0e10cSrcweir     }
585*cdf0e10cSrcweir 
586*cdf0e10cSrcweir 	return nPrec;
587*cdf0e10cSrcweir }
588*cdf0e10cSrcweir // -----------------------------------------------------------------------------
589*cdf0e10cSrcweir sal_Int32					OFieldDescription::GetScale()				const
590*cdf0e10cSrcweir {
591*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_SCALE) )
592*cdf0e10cSrcweir 		return ::comphelper::getINT32(m_xDest->getPropertyValue(PROPERTY_SCALE));
593*cdf0e10cSrcweir 	else
594*cdf0e10cSrcweir 		return m_nScale;
595*cdf0e10cSrcweir }
596*cdf0e10cSrcweir // -----------------------------------------------------------------------------
597*cdf0e10cSrcweir sal_Int32					OFieldDescription::GetIsNullable()			const
598*cdf0e10cSrcweir {
599*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_ISNULLABLE) )
600*cdf0e10cSrcweir 		return ::comphelper::getINT32(m_xDest->getPropertyValue(PROPERTY_ISNULLABLE));
601*cdf0e10cSrcweir 	else
602*cdf0e10cSrcweir 		return m_nIsNullable;
603*cdf0e10cSrcweir }
604*cdf0e10cSrcweir // -----------------------------------------------------------------------------
605*cdf0e10cSrcweir sal_Int32					OFieldDescription::GetFormatKey()			const
606*cdf0e10cSrcweir {
607*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_FORMATKEY) )
608*cdf0e10cSrcweir 		return ::comphelper::getINT32(m_xDest->getPropertyValue(PROPERTY_FORMATKEY));
609*cdf0e10cSrcweir 	else
610*cdf0e10cSrcweir 		return m_nFormatKey;
611*cdf0e10cSrcweir }
612*cdf0e10cSrcweir // -----------------------------------------------------------------------------
613*cdf0e10cSrcweir SvxCellHorJustify			OFieldDescription::GetHorJustify()			const
614*cdf0e10cSrcweir {
615*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_ALIGN) )
616*cdf0e10cSrcweir 		return ::dbaui::mapTextJustify(::comphelper::getINT32(m_xDest->getPropertyValue(PROPERTY_ALIGN)));
617*cdf0e10cSrcweir 	else
618*cdf0e10cSrcweir 		return m_eHorJustify;
619*cdf0e10cSrcweir }
620*cdf0e10cSrcweir // -----------------------------------------------------------------------------
621*cdf0e10cSrcweir TOTypeInfoSP				OFieldDescription::getTypeInfo()			const
622*cdf0e10cSrcweir {
623*cdf0e10cSrcweir 	return m_pType;
624*cdf0e10cSrcweir }
625*cdf0e10cSrcweir // -----------------------------------------------------------------------------
626*cdf0e10cSrcweir TOTypeInfoSP				OFieldDescription::getSpecialTypeInfo()	const
627*cdf0e10cSrcweir {
628*cdf0e10cSrcweir     TOTypeInfoSP pSpecialType( new OTypeInfo() );
629*cdf0e10cSrcweir     *pSpecialType = *m_pType;
630*cdf0e10cSrcweir     pSpecialType->nPrecision = GetPrecision();
631*cdf0e10cSrcweir     pSpecialType->nMaximumScale = static_cast<sal_Int16>(GetScale());
632*cdf0e10cSrcweir     pSpecialType->bAutoIncrement = IsAutoIncrement(); // http://dba.openoffice.org/issues/show_bug.cgi?id=115398 fixed by ludob
633*cdf0e10cSrcweir     return pSpecialType;
634*cdf0e10cSrcweir }
635*cdf0e10cSrcweir // -----------------------------------------------------------------------------
636*cdf0e10cSrcweir sal_Bool					OFieldDescription::IsAutoIncrement()		const
637*cdf0e10cSrcweir {
638*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_ISAUTOINCREMENT) )
639*cdf0e10cSrcweir 		return ::cppu::any2bool(m_xDest->getPropertyValue(PROPERTY_ISAUTOINCREMENT));
640*cdf0e10cSrcweir 	else
641*cdf0e10cSrcweir 		return m_bIsAutoIncrement;
642*cdf0e10cSrcweir }
643*cdf0e10cSrcweir // -----------------------------------------------------------------------------
644*cdf0e10cSrcweir sal_Bool					OFieldDescription::IsPrimaryKey()			const
645*cdf0e10cSrcweir {
646*cdf0e10cSrcweir 	return m_bIsPrimaryKey;
647*cdf0e10cSrcweir }
648*cdf0e10cSrcweir // -----------------------------------------------------------------------------
649*cdf0e10cSrcweir sal_Bool					OFieldDescription::IsCurrency()				const
650*cdf0e10cSrcweir {
651*cdf0e10cSrcweir 		return m_bIsCurrency;
652*cdf0e10cSrcweir }
653*cdf0e10cSrcweir // -----------------------------------------------------------------------------
654*cdf0e10cSrcweir sal_Bool					OFieldDescription::IsNullable()				const
655*cdf0e10cSrcweir {
656*cdf0e10cSrcweir 	if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_ISNULLABLE) )
657*cdf0e10cSrcweir 		return ::comphelper::getINT32(m_xDest->getPropertyValue(PROPERTY_ISNULLABLE)) == ::com::sun::star::sdbc::ColumnValue::NULLABLE;
658*cdf0e10cSrcweir 	else
659*cdf0e10cSrcweir 		return m_nIsNullable == ::com::sun::star::sdbc::ColumnValue::NULLABLE;
660*cdf0e10cSrcweir }
661*cdf0e10cSrcweir // -----------------------------------------------------------------------------
662*cdf0e10cSrcweir void OFieldDescription::SetTypeName(const ::rtl::OUString& _sTypeName)
663*cdf0e10cSrcweir {
664*cdf0e10cSrcweir 	try
665*cdf0e10cSrcweir 	{
666*cdf0e10cSrcweir 		if ( m_xDest.is() && m_xDestInfo->hasPropertyByName(PROPERTY_TYPENAME) )
667*cdf0e10cSrcweir 			m_xDest->setPropertyValue(PROPERTY_TYPENAME,makeAny(_sTypeName));
668*cdf0e10cSrcweir 		else
669*cdf0e10cSrcweir 			m_sTypeName = _sTypeName;
670*cdf0e10cSrcweir 	}
671*cdf0e10cSrcweir 	catch( const Exception& )
672*cdf0e10cSrcweir 	{
673*cdf0e10cSrcweir         DBG_UNHANDLED_EXCEPTION();
674*cdf0e10cSrcweir 	}
675*cdf0e10cSrcweir }
676*cdf0e10cSrcweir // -----------------------------------------------------------------------------
677*cdf0e10cSrcweir void OFieldDescription::copyColumnSettingsTo(const Reference< XPropertySet >& _rxColumn)
678*cdf0e10cSrcweir {
679*cdf0e10cSrcweir 	if ( _rxColumn.is() )
680*cdf0e10cSrcweir 	{
681*cdf0e10cSrcweir 		Reference<XPropertySetInfo> xInfo = _rxColumn->getPropertySetInfo();
682*cdf0e10cSrcweir 
683*cdf0e10cSrcweir 		if ( GetFormatKey() != NumberFormat::ALL && xInfo->hasPropertyByName(PROPERTY_FORMATKEY) )
684*cdf0e10cSrcweir 			_rxColumn->setPropertyValue(PROPERTY_FORMATKEY,makeAny(GetFormatKey()));
685*cdf0e10cSrcweir 		if ( GetHorJustify() != SVX_HOR_JUSTIFY_STANDARD && xInfo->hasPropertyByName(PROPERTY_ALIGN) )
686*cdf0e10cSrcweir 			_rxColumn->setPropertyValue(PROPERTY_ALIGN,makeAny(dbaui::mapTextAllign(GetHorJustify())));
687*cdf0e10cSrcweir 		if ( GetHelpText().getLength() && xInfo->hasPropertyByName(PROPERTY_HELPTEXT) )
688*cdf0e10cSrcweir 			_rxColumn->setPropertyValue(PROPERTY_HELPTEXT,makeAny(GetHelpText()));
689*cdf0e10cSrcweir 		if ( GetControlDefault().hasValue() && xInfo->hasPropertyByName(PROPERTY_CONTROLDEFAULT) )
690*cdf0e10cSrcweir 			_rxColumn->setPropertyValue(PROPERTY_CONTROLDEFAULT,GetControlDefault());
691*cdf0e10cSrcweir 
692*cdf0e10cSrcweir 		if(xInfo->hasPropertyByName(PROPERTY_RELATIVEPOSITION))
693*cdf0e10cSrcweir 			_rxColumn->setPropertyValue(PROPERTY_RELATIVEPOSITION,m_aRelativePosition);
694*cdf0e10cSrcweir 		if(xInfo->hasPropertyByName(PROPERTY_WIDTH))
695*cdf0e10cSrcweir 			_rxColumn->setPropertyValue(PROPERTY_WIDTH,m_aWidth);
696*cdf0e10cSrcweir 		if(xInfo->hasPropertyByName(PROPERTY_HIDDEN))
697*cdf0e10cSrcweir 			_rxColumn->setPropertyValue(PROPERTY_HIDDEN,makeAny(m_bHidden));
698*cdf0e10cSrcweir 	}
699*cdf0e10cSrcweir }
700*cdf0e10cSrcweir // -----------------------------------------------------------------------------
701