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 <stdio.h>
28*b1cdbd2cSJim Jagielski #include "connectivity/FValue.hxx"
29*b1cdbd2cSJim Jagielski #include "connectivity/CommonTools.hxx"
30*b1cdbd2cSJim Jagielski #include <connectivity/dbconversion.hxx>
31*b1cdbd2cSJim Jagielski #include <comphelper/extract.hxx>
32*b1cdbd2cSJim Jagielski #include <com/sun/star/io/XInputStream.hpp>
33*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
34*b1cdbd2cSJim Jagielski #include <rtl/logfile.hxx>
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski using namespace ::dbtools;
37*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::sdbc;
38*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::sdb;
39*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
40*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::util;
41*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::io;
42*b1cdbd2cSJim Jagielski
43*b1cdbd2cSJim Jagielski namespace connectivity
44*b1cdbd2cSJim Jagielski {
45*b1cdbd2cSJim Jagielski
46*b1cdbd2cSJim Jagielski namespace {
isStorageCompatible(sal_Int32 _eType1,sal_Int32 _eType2)47*b1cdbd2cSJim Jagielski static sal_Bool isStorageCompatible(sal_Int32 _eType1, sal_Int32 _eType2)
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::isStorageCompatible" );
50*b1cdbd2cSJim Jagielski sal_Bool bIsCompatible = sal_True;
51*b1cdbd2cSJim Jagielski
52*b1cdbd2cSJim Jagielski if (_eType1 != _eType2)
53*b1cdbd2cSJim Jagielski {
54*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_TRACE( aLogger, "ORowSetValue::isStorageCompatible _eType1 != _eType2" );
55*b1cdbd2cSJim Jagielski switch (_eType1)
56*b1cdbd2cSJim Jagielski {
57*b1cdbd2cSJim Jagielski case DataType::CHAR:
58*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
59*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
60*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
61*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
62*b1cdbd2cSJim Jagielski bIsCompatible = (DataType::CHAR == _eType2)
63*b1cdbd2cSJim Jagielski || (DataType::VARCHAR == _eType2)
64*b1cdbd2cSJim Jagielski || (DataType::DECIMAL == _eType2)
65*b1cdbd2cSJim Jagielski || (DataType::NUMERIC == _eType2)
66*b1cdbd2cSJim Jagielski || (DataType::LONGVARCHAR == _eType2);
67*b1cdbd2cSJim Jagielski break;
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
70*b1cdbd2cSJim Jagielski case DataType::REAL:
71*b1cdbd2cSJim Jagielski bIsCompatible = (DataType::DOUBLE == _eType2)
72*b1cdbd2cSJim Jagielski || (DataType::REAL == _eType2);
73*b1cdbd2cSJim Jagielski break;
74*b1cdbd2cSJim Jagielski
75*b1cdbd2cSJim Jagielski case DataType::BINARY:
76*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
77*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
78*b1cdbd2cSJim Jagielski bIsCompatible = (DataType::BINARY == _eType2)
79*b1cdbd2cSJim Jagielski || (DataType::VARBINARY == _eType2)
80*b1cdbd2cSJim Jagielski || (DataType::LONGVARBINARY == _eType2);
81*b1cdbd2cSJim Jagielski break;
82*b1cdbd2cSJim Jagielski
83*b1cdbd2cSJim Jagielski case DataType::INTEGER:
84*b1cdbd2cSJim Jagielski bIsCompatible = (DataType::SMALLINT == _eType2)
85*b1cdbd2cSJim Jagielski || (DataType::TINYINT == _eType2)
86*b1cdbd2cSJim Jagielski || (DataType::BIT == _eType2)
87*b1cdbd2cSJim Jagielski || (DataType::BOOLEAN == _eType2);
88*b1cdbd2cSJim Jagielski break;
89*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
90*b1cdbd2cSJim Jagielski bIsCompatible = (DataType::TINYINT == _eType2)
91*b1cdbd2cSJim Jagielski || (DataType::BIT == _eType2)
92*b1cdbd2cSJim Jagielski || (DataType::BOOLEAN == _eType2);
93*b1cdbd2cSJim Jagielski break;
94*b1cdbd2cSJim Jagielski case DataType::TINYINT:
95*b1cdbd2cSJim Jagielski bIsCompatible = (DataType::BIT == _eType2)
96*b1cdbd2cSJim Jagielski || (DataType::BOOLEAN == _eType2);
97*b1cdbd2cSJim Jagielski break;
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski case DataType::BLOB:
100*b1cdbd2cSJim Jagielski case DataType::CLOB:
101*b1cdbd2cSJim Jagielski case DataType::OBJECT:
102*b1cdbd2cSJim Jagielski bIsCompatible = (DataType::BLOB == _eType2)
103*b1cdbd2cSJim Jagielski || (DataType::CLOB == _eType2)
104*b1cdbd2cSJim Jagielski || (DataType::OBJECT == _eType2);
105*b1cdbd2cSJim Jagielski break;
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski default:
108*b1cdbd2cSJim Jagielski bIsCompatible = sal_False;
109*b1cdbd2cSJim Jagielski }
110*b1cdbd2cSJim Jagielski }
111*b1cdbd2cSJim Jagielski return bIsCompatible;
112*b1cdbd2cSJim Jagielski }
113*b1cdbd2cSJim Jagielski }
114*b1cdbd2cSJim Jagielski
115*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
116*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
117*b1cdbd2cSJim Jagielski
118*b1cdbd2cSJim Jagielski #include <vector>
119*b1cdbd2cSJim Jagielski #include <rtl/string.h>
120*b1cdbd2cSJim Jagielski
121*b1cdbd2cSJim Jagielski namespace tracing
122*b1cdbd2cSJim Jagielski {
123*b1cdbd2cSJim Jagielski struct AllocationType
124*b1cdbd2cSJim Jagielski {
125*b1cdbd2cSJim Jagielski const sal_Char* pName;
126*b1cdbd2cSJim Jagielski sal_Int32 nAllocatedUnits;
127*b1cdbd2cSJim Jagielski
AllocationTypeconnectivity::tracing::AllocationType128*b1cdbd2cSJim Jagielski AllocationType( ) : pName( NULL ), nAllocatedUnits( 0 ) { }
129*b1cdbd2cSJim Jagielski };
130*b1cdbd2cSJim Jagielski
131*b1cdbd2cSJim Jagielski // =============================================================================
132*b1cdbd2cSJim Jagielski class AllocationTracer
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski public:
135*b1cdbd2cSJim Jagielski typedef ::std::vector< AllocationType > AllocationState;
136*b1cdbd2cSJim Jagielski static AllocationState s_aAllocated;
137*b1cdbd2cSJim Jagielski static ::osl::Mutex s_aMutex;
138*b1cdbd2cSJim Jagielski
139*b1cdbd2cSJim Jagielski public:
140*b1cdbd2cSJim Jagielski static void registerUnit( const sal_Char* _pName );
141*b1cdbd2cSJim Jagielski static void revokeUnit( const sal_Char* _pName );
142*b1cdbd2cSJim Jagielski
143*b1cdbd2cSJim Jagielski private:
144*b1cdbd2cSJim Jagielski static AllocationState::iterator getLocation( const sal_Char* _pName );
145*b1cdbd2cSJim Jagielski };
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski // =============================================================================
getLocation(const sal_Char * _pName)148*b1cdbd2cSJim Jagielski AllocationTracer::AllocationState::iterator AllocationTracer::getLocation( const sal_Char* _pName )
149*b1cdbd2cSJim Jagielski {
150*b1cdbd2cSJim Jagielski AllocationState::iterator aLookFor = s_aAllocated.begin();
151*b1cdbd2cSJim Jagielski for ( ;
152*b1cdbd2cSJim Jagielski aLookFor != s_aAllocated.end();
153*b1cdbd2cSJim Jagielski ++aLookFor
154*b1cdbd2cSJim Jagielski )
155*b1cdbd2cSJim Jagielski {
156*b1cdbd2cSJim Jagielski if ( 0 == rtl_str_compare( aLookFor->pName, _pName ) )
157*b1cdbd2cSJim Jagielski // found
158*b1cdbd2cSJim Jagielski return aLookFor;
159*b1cdbd2cSJim Jagielski }
160*b1cdbd2cSJim Jagielski // not found
161*b1cdbd2cSJim Jagielski s_aAllocated.push_back( AllocationType() );
162*b1cdbd2cSJim Jagielski aLookFor = s_aAllocated.end(); --aLookFor;
163*b1cdbd2cSJim Jagielski aLookFor->pName = _pName; // note that this assumes that _pName is a constant string ....
164*b1cdbd2cSJim Jagielski return aLookFor;
165*b1cdbd2cSJim Jagielski }
166*b1cdbd2cSJim Jagielski
167*b1cdbd2cSJim Jagielski // =============================================================================
168*b1cdbd2cSJim Jagielski AllocationTracer::AllocationState AllocationTracer::s_aAllocated;
169*b1cdbd2cSJim Jagielski ::osl::Mutex AllocationTracer::s_aMutex;
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski // =============================================================================
registerUnit(const sal_Char * _pName)172*b1cdbd2cSJim Jagielski void AllocationTracer::registerUnit( const sal_Char* _pName )
173*b1cdbd2cSJim Jagielski {
174*b1cdbd2cSJim Jagielski ::osl::MutexGuard aGuard( s_aMutex );
175*b1cdbd2cSJim Jagielski
176*b1cdbd2cSJim Jagielski AllocationState::iterator aPos = getLocation( _pName );
177*b1cdbd2cSJim Jagielski ++aPos->nAllocatedUnits;
178*b1cdbd2cSJim Jagielski }
179*b1cdbd2cSJim Jagielski
180*b1cdbd2cSJim Jagielski // =============================================================================
revokeUnit(const sal_Char * _pName)181*b1cdbd2cSJim Jagielski void AllocationTracer::revokeUnit( const sal_Char* _pName )
182*b1cdbd2cSJim Jagielski {
183*b1cdbd2cSJim Jagielski ::osl::MutexGuard aGuard( s_aMutex );
184*b1cdbd2cSJim Jagielski
185*b1cdbd2cSJim Jagielski AllocationState::iterator aPos = getLocation( _pName );
186*b1cdbd2cSJim Jagielski --aPos->nAllocatedUnits;
187*b1cdbd2cSJim Jagielski }
188*b1cdbd2cSJim Jagielski
189*b1cdbd2cSJim Jagielski #define TRACE_ALLOC( type ) tracing::AllocationTracer::registerUnit( #type );
190*b1cdbd2cSJim Jagielski #define TRACE_FREE( type ) tracing::AllocationTracer::revokeUnit( #type );
191*b1cdbd2cSJim Jagielski }
192*b1cdbd2cSJim Jagielski #else
193*b1cdbd2cSJim Jagielski #define TRACE_ALLOC( type )
194*b1cdbd2cSJim Jagielski #define TRACE_FREE( type )
195*b1cdbd2cSJim Jagielski #endif
196*b1cdbd2cSJim Jagielski
197*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
setTypeKind(sal_Int32 _eType)198*b1cdbd2cSJim Jagielski void ORowSetValue::setTypeKind(sal_Int32 _eType)
199*b1cdbd2cSJim Jagielski {
200*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::setTypeKind" );
201*b1cdbd2cSJim Jagielski if ( !m_bNull && !isStorageCompatible(_eType, m_eTypeKind) )
202*b1cdbd2cSJim Jagielski {
203*b1cdbd2cSJim Jagielski switch(_eType)
204*b1cdbd2cSJim Jagielski {
205*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
206*b1cdbd2cSJim Jagielski case DataType::CHAR:
207*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
208*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
209*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
210*b1cdbd2cSJim Jagielski (*this) = getString();
211*b1cdbd2cSJim Jagielski break;
212*b1cdbd2cSJim Jagielski case DataType::BIGINT:
213*b1cdbd2cSJim Jagielski (*this) = getLong();
214*b1cdbd2cSJim Jagielski break;
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski case DataType::FLOAT:
217*b1cdbd2cSJim Jagielski (*this) = getFloat();
218*b1cdbd2cSJim Jagielski break;
219*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
220*b1cdbd2cSJim Jagielski case DataType::REAL:
221*b1cdbd2cSJim Jagielski (*this) = getDouble();
222*b1cdbd2cSJim Jagielski break;
223*b1cdbd2cSJim Jagielski case DataType::TINYINT:
224*b1cdbd2cSJim Jagielski (*this) = getInt8();
225*b1cdbd2cSJim Jagielski break;
226*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
227*b1cdbd2cSJim Jagielski (*this) = getInt16();
228*b1cdbd2cSJim Jagielski break;
229*b1cdbd2cSJim Jagielski case DataType::INTEGER:
230*b1cdbd2cSJim Jagielski (*this) = getInt32();
231*b1cdbd2cSJim Jagielski break;
232*b1cdbd2cSJim Jagielski case DataType::BIT:
233*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
234*b1cdbd2cSJim Jagielski (*this) = getBool();
235*b1cdbd2cSJim Jagielski break;
236*b1cdbd2cSJim Jagielski case DataType::DATE:
237*b1cdbd2cSJim Jagielski (*this) = getDate();
238*b1cdbd2cSJim Jagielski break;
239*b1cdbd2cSJim Jagielski case DataType::TIME:
240*b1cdbd2cSJim Jagielski (*this) = getTime();
241*b1cdbd2cSJim Jagielski break;
242*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
243*b1cdbd2cSJim Jagielski (*this) = getDateTime();
244*b1cdbd2cSJim Jagielski break;
245*b1cdbd2cSJim Jagielski case DataType::BINARY:
246*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
247*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
248*b1cdbd2cSJim Jagielski (*this) = getSequence();
249*b1cdbd2cSJim Jagielski break;
250*b1cdbd2cSJim Jagielski case DataType::BLOB:
251*b1cdbd2cSJim Jagielski case DataType::CLOB:
252*b1cdbd2cSJim Jagielski case DataType::OBJECT:
253*b1cdbd2cSJim Jagielski case DataType::OTHER:
254*b1cdbd2cSJim Jagielski (*this) = getAny();
255*b1cdbd2cSJim Jagielski break;
256*b1cdbd2cSJim Jagielski default:
257*b1cdbd2cSJim Jagielski (*this) = getAny();
258*b1cdbd2cSJim Jagielski OSL_ENSURE(0,"ORowSetValue:operator==(): UNSPUPPORTED TYPE!");
259*b1cdbd2cSJim Jagielski }
260*b1cdbd2cSJim Jagielski }
261*b1cdbd2cSJim Jagielski
262*b1cdbd2cSJim Jagielski m_eTypeKind = _eType;
263*b1cdbd2cSJim Jagielski }
264*b1cdbd2cSJim Jagielski
265*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
free()266*b1cdbd2cSJim Jagielski void ORowSetValue::free()
267*b1cdbd2cSJim Jagielski {
268*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::free" );
269*b1cdbd2cSJim Jagielski if(!m_bNull)
270*b1cdbd2cSJim Jagielski {
271*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
272*b1cdbd2cSJim Jagielski {
273*b1cdbd2cSJim Jagielski case DataType::CHAR:
274*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
275*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
276*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
277*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
278*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pString,"String pointer is null!");
279*b1cdbd2cSJim Jagielski rtl_uString_release(m_aValue.m_pString);
280*b1cdbd2cSJim Jagielski m_aValue.m_pString = NULL;
281*b1cdbd2cSJim Jagielski break;
282*b1cdbd2cSJim Jagielski case DataType::INTEGER:
283*b1cdbd2cSJim Jagielski if ( !m_bSigned )
284*b1cdbd2cSJim Jagielski {
285*b1cdbd2cSJim Jagielski delete (sal_Int64*)m_aValue.m_pValue;
286*b1cdbd2cSJim Jagielski TRACE_FREE( sal_Int64 )
287*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
288*b1cdbd2cSJim Jagielski }
289*b1cdbd2cSJim Jagielski break;
290*b1cdbd2cSJim Jagielski case DataType::BIGINT:
291*b1cdbd2cSJim Jagielski if ( m_bSigned )
292*b1cdbd2cSJim Jagielski {
293*b1cdbd2cSJim Jagielski delete (sal_Int64*)m_aValue.m_pValue;
294*b1cdbd2cSJim Jagielski TRACE_FREE( sal_Int64 )
295*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
296*b1cdbd2cSJim Jagielski }
297*b1cdbd2cSJim Jagielski else
298*b1cdbd2cSJim Jagielski {
299*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pString,"String pointer is null!");
300*b1cdbd2cSJim Jagielski rtl_uString_release(m_aValue.m_pString);
301*b1cdbd2cSJim Jagielski m_aValue.m_pString = NULL;
302*b1cdbd2cSJim Jagielski }
303*b1cdbd2cSJim Jagielski break;
304*b1cdbd2cSJim Jagielski case DataType::FLOAT:
305*b1cdbd2cSJim Jagielski delete (float*)m_aValue.m_pValue;
306*b1cdbd2cSJim Jagielski TRACE_FREE( float )
307*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
308*b1cdbd2cSJim Jagielski break;
309*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
310*b1cdbd2cSJim Jagielski case DataType::REAL:
311*b1cdbd2cSJim Jagielski delete (double*)m_aValue.m_pValue;
312*b1cdbd2cSJim Jagielski TRACE_FREE( double )
313*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
314*b1cdbd2cSJim Jagielski break;
315*b1cdbd2cSJim Jagielski case DataType::DATE:
316*b1cdbd2cSJim Jagielski delete (::com::sun::star::util::Date*)m_aValue.m_pValue;
317*b1cdbd2cSJim Jagielski TRACE_FREE( Date )
318*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
319*b1cdbd2cSJim Jagielski break;
320*b1cdbd2cSJim Jagielski case DataType::TIME:
321*b1cdbd2cSJim Jagielski delete (::com::sun::star::util::Time*)m_aValue.m_pValue;
322*b1cdbd2cSJim Jagielski TRACE_FREE( Time )
323*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
324*b1cdbd2cSJim Jagielski break;
325*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
326*b1cdbd2cSJim Jagielski delete (::com::sun::star::util::DateTime*)m_aValue.m_pValue;
327*b1cdbd2cSJim Jagielski TRACE_FREE( DateTime )
328*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
329*b1cdbd2cSJim Jagielski break;
330*b1cdbd2cSJim Jagielski case DataType::BINARY:
331*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
332*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
333*b1cdbd2cSJim Jagielski delete (Sequence<sal_Int8>*)m_aValue.m_pValue;
334*b1cdbd2cSJim Jagielski TRACE_FREE( Sequence_sal_Int8 )
335*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
336*b1cdbd2cSJim Jagielski break;
337*b1cdbd2cSJim Jagielski case DataType::BLOB:
338*b1cdbd2cSJim Jagielski case DataType::CLOB:
339*b1cdbd2cSJim Jagielski case DataType::OBJECT:
340*b1cdbd2cSJim Jagielski delete (Any*)m_aValue.m_pValue;
341*b1cdbd2cSJim Jagielski TRACE_FREE( Any )
342*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
343*b1cdbd2cSJim Jagielski break;
344*b1cdbd2cSJim Jagielski case DataType::BIT:
345*b1cdbd2cSJim Jagielski case DataType::TINYINT:
346*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
347*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
348*b1cdbd2cSJim Jagielski break;
349*b1cdbd2cSJim Jagielski default:
350*b1cdbd2cSJim Jagielski if ( m_aValue.m_pValue )
351*b1cdbd2cSJim Jagielski {
352*b1cdbd2cSJim Jagielski delete (Any*)m_aValue.m_pValue;
353*b1cdbd2cSJim Jagielski TRACE_FREE( Any )
354*b1cdbd2cSJim Jagielski m_aValue.m_pValue = NULL;
355*b1cdbd2cSJim Jagielski }
356*b1cdbd2cSJim Jagielski break;
357*b1cdbd2cSJim Jagielski
358*b1cdbd2cSJim Jagielski }
359*b1cdbd2cSJim Jagielski m_bNull = sal_True;
360*b1cdbd2cSJim Jagielski }
361*b1cdbd2cSJim Jagielski }
362*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
operator =(const ORowSetValue & _rRH)363*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const ORowSetValue& _rRH)
364*b1cdbd2cSJim Jagielski {
365*b1cdbd2cSJim Jagielski if(&_rRH == this)
366*b1cdbd2cSJim Jagielski return *this;
367*b1cdbd2cSJim Jagielski
368*b1cdbd2cSJim Jagielski if ( m_eTypeKind != _rRH.m_eTypeKind || (_rRH.m_bNull && !m_bNull) || m_bSigned != _rRH.m_bSigned)
369*b1cdbd2cSJim Jagielski free();
370*b1cdbd2cSJim Jagielski
371*b1cdbd2cSJim Jagielski m_bBound = _rRH.m_bBound;
372*b1cdbd2cSJim Jagielski m_eTypeKind = _rRH.m_eTypeKind;
373*b1cdbd2cSJim Jagielski m_bSigned = _rRH.m_bSigned;
374*b1cdbd2cSJim Jagielski
375*b1cdbd2cSJim Jagielski if(m_bNull && !_rRH.m_bNull)
376*b1cdbd2cSJim Jagielski {
377*b1cdbd2cSJim Jagielski switch(_rRH.m_eTypeKind)
378*b1cdbd2cSJim Jagielski {
379*b1cdbd2cSJim Jagielski case DataType::CHAR:
380*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
381*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
382*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
383*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
384*b1cdbd2cSJim Jagielski rtl_uString_acquire(_rRH.m_aValue.m_pString);
385*b1cdbd2cSJim Jagielski m_aValue.m_pString = _rRH.m_aValue.m_pString;
386*b1cdbd2cSJim Jagielski break;
387*b1cdbd2cSJim Jagielski case DataType::BIGINT:
388*b1cdbd2cSJim Jagielski if ( _rRH.m_bSigned )
389*b1cdbd2cSJim Jagielski {
390*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new sal_Int64(*(sal_Int64*)_rRH.m_aValue.m_pValue);
391*b1cdbd2cSJim Jagielski TRACE_ALLOC( sal_Int64 )
392*b1cdbd2cSJim Jagielski }
393*b1cdbd2cSJim Jagielski else
394*b1cdbd2cSJim Jagielski {
395*b1cdbd2cSJim Jagielski rtl_uString_acquire(_rRH.m_aValue.m_pString);
396*b1cdbd2cSJim Jagielski m_aValue.m_pString = _rRH.m_aValue.m_pString;
397*b1cdbd2cSJim Jagielski }
398*b1cdbd2cSJim Jagielski break;
399*b1cdbd2cSJim Jagielski case DataType::FLOAT:
400*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new float(*(float*)_rRH.m_aValue.m_pValue);
401*b1cdbd2cSJim Jagielski TRACE_ALLOC( float )
402*b1cdbd2cSJim Jagielski break;
403*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
404*b1cdbd2cSJim Jagielski case DataType::REAL:
405*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new double(*(double*)_rRH.m_aValue.m_pValue);
406*b1cdbd2cSJim Jagielski TRACE_ALLOC( double )
407*b1cdbd2cSJim Jagielski break;
408*b1cdbd2cSJim Jagielski case DataType::DATE:
409*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Date(*(Date*)_rRH.m_aValue.m_pValue);
410*b1cdbd2cSJim Jagielski TRACE_ALLOC( Date )
411*b1cdbd2cSJim Jagielski break;
412*b1cdbd2cSJim Jagielski case DataType::TIME:
413*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Time(*(Time*)_rRH.m_aValue.m_pValue);
414*b1cdbd2cSJim Jagielski TRACE_ALLOC( Time )
415*b1cdbd2cSJim Jagielski break;
416*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
417*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new DateTime(*(DateTime*)_rRH.m_aValue.m_pValue);
418*b1cdbd2cSJim Jagielski TRACE_ALLOC( DateTime )
419*b1cdbd2cSJim Jagielski break;
420*b1cdbd2cSJim Jagielski case DataType::BINARY:
421*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
422*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
423*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Sequence<sal_Int8>(*(Sequence<sal_Int8>*)_rRH.m_aValue.m_pValue);
424*b1cdbd2cSJim Jagielski TRACE_ALLOC( Sequence_sal_Int8 )
425*b1cdbd2cSJim Jagielski break;
426*b1cdbd2cSJim Jagielski case DataType::BIT:
427*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
428*b1cdbd2cSJim Jagielski m_aValue.m_bBool = _rRH.m_aValue.m_bBool;
429*b1cdbd2cSJim Jagielski break;
430*b1cdbd2cSJim Jagielski case DataType::TINYINT:
431*b1cdbd2cSJim Jagielski if ( _rRH.m_bSigned )
432*b1cdbd2cSJim Jagielski m_aValue.m_nInt8 = _rRH.m_aValue.m_nInt8;
433*b1cdbd2cSJim Jagielski else
434*b1cdbd2cSJim Jagielski m_aValue.m_nInt16 = _rRH.m_aValue.m_nInt16;
435*b1cdbd2cSJim Jagielski break;
436*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
437*b1cdbd2cSJim Jagielski if ( _rRH.m_bSigned )
438*b1cdbd2cSJim Jagielski m_aValue.m_nInt16 = _rRH.m_aValue.m_nInt16;
439*b1cdbd2cSJim Jagielski else
440*b1cdbd2cSJim Jagielski m_aValue.m_nInt32 = _rRH.m_aValue.m_nInt32;
441*b1cdbd2cSJim Jagielski break;
442*b1cdbd2cSJim Jagielski case DataType::INTEGER:
443*b1cdbd2cSJim Jagielski if ( _rRH.m_bSigned )
444*b1cdbd2cSJim Jagielski m_aValue.m_nInt32 = _rRH.m_aValue.m_nInt32;
445*b1cdbd2cSJim Jagielski else
446*b1cdbd2cSJim Jagielski {
447*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new sal_Int64(*(sal_Int64*)_rRH.m_aValue.m_pValue);
448*b1cdbd2cSJim Jagielski TRACE_ALLOC( sal_Int64 )
449*b1cdbd2cSJim Jagielski }
450*b1cdbd2cSJim Jagielski break;
451*b1cdbd2cSJim Jagielski default:
452*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Any(*(Any*)_rRH.m_aValue.m_pValue);
453*b1cdbd2cSJim Jagielski TRACE_ALLOC( Any )
454*b1cdbd2cSJim Jagielski }
455*b1cdbd2cSJim Jagielski }
456*b1cdbd2cSJim Jagielski else if(!_rRH.m_bNull)
457*b1cdbd2cSJim Jagielski {
458*b1cdbd2cSJim Jagielski switch(_rRH.m_eTypeKind)
459*b1cdbd2cSJim Jagielski {
460*b1cdbd2cSJim Jagielski case DataType::CHAR:
461*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
462*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
463*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
464*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
465*b1cdbd2cSJim Jagielski (*this) = ::rtl::OUString(_rRH.m_aValue.m_pString);
466*b1cdbd2cSJim Jagielski break;
467*b1cdbd2cSJim Jagielski case DataType::BIGINT:
468*b1cdbd2cSJim Jagielski if ( _rRH.m_bSigned )
469*b1cdbd2cSJim Jagielski (*this) = *(sal_Int64*)_rRH.m_aValue.m_pValue;
470*b1cdbd2cSJim Jagielski else
471*b1cdbd2cSJim Jagielski (*this) = ::rtl::OUString(_rRH.m_aValue.m_pString);
472*b1cdbd2cSJim Jagielski break;
473*b1cdbd2cSJim Jagielski case DataType::FLOAT:
474*b1cdbd2cSJim Jagielski (*this) = *(float*)_rRH.m_aValue.m_pValue;
475*b1cdbd2cSJim Jagielski break;
476*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
477*b1cdbd2cSJim Jagielski case DataType::REAL:
478*b1cdbd2cSJim Jagielski (*this) = *(double*)_rRH.m_aValue.m_pValue;
479*b1cdbd2cSJim Jagielski break;
480*b1cdbd2cSJim Jagielski case DataType::DATE:
481*b1cdbd2cSJim Jagielski (*this) = *(Date*)_rRH.m_aValue.m_pValue;
482*b1cdbd2cSJim Jagielski break;
483*b1cdbd2cSJim Jagielski case DataType::TIME:
484*b1cdbd2cSJim Jagielski (*this) = *(Time*)_rRH.m_aValue.m_pValue;
485*b1cdbd2cSJim Jagielski break;
486*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
487*b1cdbd2cSJim Jagielski (*this) = *(DateTime*)_rRH.m_aValue.m_pValue;
488*b1cdbd2cSJim Jagielski break;
489*b1cdbd2cSJim Jagielski case DataType::BINARY:
490*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
491*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
492*b1cdbd2cSJim Jagielski (*this) = *(Sequence<sal_Int8>*)_rRH.m_aValue.m_pValue;
493*b1cdbd2cSJim Jagielski break;
494*b1cdbd2cSJim Jagielski case DataType::BIT:
495*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
496*b1cdbd2cSJim Jagielski m_aValue.m_bBool = _rRH.m_aValue.m_bBool;
497*b1cdbd2cSJim Jagielski break;
498*b1cdbd2cSJim Jagielski case DataType::TINYINT:
499*b1cdbd2cSJim Jagielski if ( _rRH.m_bSigned )
500*b1cdbd2cSJim Jagielski m_aValue.m_nInt8 = _rRH.m_aValue.m_nInt8;
501*b1cdbd2cSJim Jagielski else
502*b1cdbd2cSJim Jagielski m_aValue.m_nInt16 = _rRH.m_aValue.m_nInt16;
503*b1cdbd2cSJim Jagielski break;
504*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
505*b1cdbd2cSJim Jagielski if ( _rRH.m_bSigned )
506*b1cdbd2cSJim Jagielski m_aValue.m_nInt16 = _rRH.m_aValue.m_nInt16;
507*b1cdbd2cSJim Jagielski else
508*b1cdbd2cSJim Jagielski m_aValue.m_nInt32 = _rRH.m_aValue.m_nInt32;
509*b1cdbd2cSJim Jagielski break;
510*b1cdbd2cSJim Jagielski case DataType::INTEGER:
511*b1cdbd2cSJim Jagielski if ( _rRH.m_bSigned )
512*b1cdbd2cSJim Jagielski m_aValue.m_nInt32 = _rRH.m_aValue.m_nInt32;
513*b1cdbd2cSJim Jagielski else
514*b1cdbd2cSJim Jagielski *static_cast<sal_Int64*>(m_aValue.m_pValue) = *(sal_Int64*)_rRH.m_aValue.m_pValue;
515*b1cdbd2cSJim Jagielski break;
516*b1cdbd2cSJim Jagielski default:
517*b1cdbd2cSJim Jagielski (*(Any*)m_aValue.m_pValue) = (*(Any*)_rRH.m_aValue.m_pValue);
518*b1cdbd2cSJim Jagielski }
519*b1cdbd2cSJim Jagielski }
520*b1cdbd2cSJim Jagielski
521*b1cdbd2cSJim Jagielski m_bNull = _rRH.m_bNull;
522*b1cdbd2cSJim Jagielski // OJ: BUGID: 96277
523*b1cdbd2cSJim Jagielski m_eTypeKind = _rRH.m_eTypeKind;
524*b1cdbd2cSJim Jagielski
525*b1cdbd2cSJim Jagielski return *this;
526*b1cdbd2cSJim Jagielski }
527*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
528*b1cdbd2cSJim Jagielski
operator =(const Date & _rRH)529*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const Date& _rRH)
530*b1cdbd2cSJim Jagielski {
531*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::DATE)
532*b1cdbd2cSJim Jagielski free();
533*b1cdbd2cSJim Jagielski
534*b1cdbd2cSJim Jagielski if(m_bNull)
535*b1cdbd2cSJim Jagielski {
536*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Date(_rRH);
537*b1cdbd2cSJim Jagielski TRACE_ALLOC( Date )
538*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::DATE;
539*b1cdbd2cSJim Jagielski m_bNull = sal_False;
540*b1cdbd2cSJim Jagielski }
541*b1cdbd2cSJim Jagielski else
542*b1cdbd2cSJim Jagielski *(Date*)m_aValue.m_pValue = _rRH;
543*b1cdbd2cSJim Jagielski
544*b1cdbd2cSJim Jagielski return *this;
545*b1cdbd2cSJim Jagielski }
546*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
operator =(const Time & _rRH)547*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const Time& _rRH)
548*b1cdbd2cSJim Jagielski {
549*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::TIME)
550*b1cdbd2cSJim Jagielski free();
551*b1cdbd2cSJim Jagielski
552*b1cdbd2cSJim Jagielski if(m_bNull)
553*b1cdbd2cSJim Jagielski {
554*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Time(_rRH);
555*b1cdbd2cSJim Jagielski TRACE_ALLOC( Time )
556*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::TIME;
557*b1cdbd2cSJim Jagielski m_bNull = sal_False;
558*b1cdbd2cSJim Jagielski }
559*b1cdbd2cSJim Jagielski else
560*b1cdbd2cSJim Jagielski *(Time*)m_aValue.m_pValue = _rRH;
561*b1cdbd2cSJim Jagielski
562*b1cdbd2cSJim Jagielski return *this;
563*b1cdbd2cSJim Jagielski }
564*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
operator =(const DateTime & _rRH)565*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const DateTime& _rRH)
566*b1cdbd2cSJim Jagielski {
567*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::TIMESTAMP)
568*b1cdbd2cSJim Jagielski free();
569*b1cdbd2cSJim Jagielski if(m_bNull)
570*b1cdbd2cSJim Jagielski {
571*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new DateTime(_rRH);
572*b1cdbd2cSJim Jagielski TRACE_ALLOC( DateTime )
573*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::TIMESTAMP;
574*b1cdbd2cSJim Jagielski m_bNull = sal_False;
575*b1cdbd2cSJim Jagielski }
576*b1cdbd2cSJim Jagielski else
577*b1cdbd2cSJim Jagielski *(DateTime*)m_aValue.m_pValue = _rRH;
578*b1cdbd2cSJim Jagielski
579*b1cdbd2cSJim Jagielski return *this;
580*b1cdbd2cSJim Jagielski }
581*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
582*b1cdbd2cSJim Jagielski
operator =(const::rtl::OUString & _rRH)583*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const ::rtl::OUString& _rRH)
584*b1cdbd2cSJim Jagielski {
585*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::VARCHAR || m_aValue.m_pString != _rRH.pData)
586*b1cdbd2cSJim Jagielski {
587*b1cdbd2cSJim Jagielski free();
588*b1cdbd2cSJim Jagielski m_bNull = sal_False;
589*b1cdbd2cSJim Jagielski
590*b1cdbd2cSJim Jagielski m_aValue.m_pString = _rRH.pData;
591*b1cdbd2cSJim Jagielski rtl_uString_acquire(m_aValue.m_pString);
592*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::VARCHAR;
593*b1cdbd2cSJim Jagielski }
594*b1cdbd2cSJim Jagielski
595*b1cdbd2cSJim Jagielski return *this;
596*b1cdbd2cSJim Jagielski }
597*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
598*b1cdbd2cSJim Jagielski
operator =(const double & _rRH)599*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const double& _rRH)
600*b1cdbd2cSJim Jagielski {
601*b1cdbd2cSJim Jagielski if( !isStorageCompatible(m_eTypeKind,DataType::DOUBLE) )
602*b1cdbd2cSJim Jagielski free();
603*b1cdbd2cSJim Jagielski
604*b1cdbd2cSJim Jagielski if(m_bNull)
605*b1cdbd2cSJim Jagielski {
606*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new double(_rRH);
607*b1cdbd2cSJim Jagielski TRACE_ALLOC( double )
608*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::DOUBLE;
609*b1cdbd2cSJim Jagielski m_bNull = sal_False;
610*b1cdbd2cSJim Jagielski }
611*b1cdbd2cSJim Jagielski else
612*b1cdbd2cSJim Jagielski *(double*)m_aValue.m_pValue = _rRH;
613*b1cdbd2cSJim Jagielski
614*b1cdbd2cSJim Jagielski return *this;
615*b1cdbd2cSJim Jagielski }
616*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
operator =(const float & _rRH)617*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const float& _rRH)
618*b1cdbd2cSJim Jagielski {
619*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::FLOAT)
620*b1cdbd2cSJim Jagielski free();
621*b1cdbd2cSJim Jagielski
622*b1cdbd2cSJim Jagielski if(m_bNull)
623*b1cdbd2cSJim Jagielski {
624*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new float(_rRH);
625*b1cdbd2cSJim Jagielski TRACE_ALLOC( float )
626*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::FLOAT;
627*b1cdbd2cSJim Jagielski m_bNull = sal_False;
628*b1cdbd2cSJim Jagielski }
629*b1cdbd2cSJim Jagielski else
630*b1cdbd2cSJim Jagielski *(float*)m_aValue.m_pValue = _rRH;
631*b1cdbd2cSJim Jagielski
632*b1cdbd2cSJim Jagielski return *this;
633*b1cdbd2cSJim Jagielski }
634*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
635*b1cdbd2cSJim Jagielski
operator =(const sal_Int8 & _rRH)636*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const sal_Int8& _rRH)
637*b1cdbd2cSJim Jagielski {
638*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::TINYINT )
639*b1cdbd2cSJim Jagielski free();
640*b1cdbd2cSJim Jagielski
641*b1cdbd2cSJim Jagielski m_aValue.m_nInt8 = _rRH;
642*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::TINYINT;
643*b1cdbd2cSJim Jagielski m_bNull = sal_False;
644*b1cdbd2cSJim Jagielski return *this;
645*b1cdbd2cSJim Jagielski }
646*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
647*b1cdbd2cSJim Jagielski
operator =(const sal_Int16 & _rRH)648*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const sal_Int16& _rRH)
649*b1cdbd2cSJim Jagielski {
650*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::SMALLINT )
651*b1cdbd2cSJim Jagielski free();
652*b1cdbd2cSJim Jagielski
653*b1cdbd2cSJim Jagielski m_aValue.m_nInt16 = _rRH;
654*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::SMALLINT;
655*b1cdbd2cSJim Jagielski m_bNull = sal_False;
656*b1cdbd2cSJim Jagielski
657*b1cdbd2cSJim Jagielski return *this;
658*b1cdbd2cSJim Jagielski }
659*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
660*b1cdbd2cSJim Jagielski
operator =(const sal_Int32 & _rRH)661*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const sal_Int32& _rRH)
662*b1cdbd2cSJim Jagielski {
663*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::INTEGER )
664*b1cdbd2cSJim Jagielski free();
665*b1cdbd2cSJim Jagielski
666*b1cdbd2cSJim Jagielski if ( m_bSigned )
667*b1cdbd2cSJim Jagielski m_aValue.m_nInt32 = _rRH;
668*b1cdbd2cSJim Jagielski else
669*b1cdbd2cSJim Jagielski {
670*b1cdbd2cSJim Jagielski if ( m_bNull )
671*b1cdbd2cSJim Jagielski {
672*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new sal_Int64(_rRH);
673*b1cdbd2cSJim Jagielski TRACE_ALLOC( sal_Int64 )
674*b1cdbd2cSJim Jagielski }
675*b1cdbd2cSJim Jagielski else
676*b1cdbd2cSJim Jagielski *static_cast<sal_Int64*>(m_aValue.m_pValue) = static_cast<sal_Int64>(_rRH);
677*b1cdbd2cSJim Jagielski }
678*b1cdbd2cSJim Jagielski
679*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::INTEGER;
680*b1cdbd2cSJim Jagielski m_bNull = sal_False;
681*b1cdbd2cSJim Jagielski
682*b1cdbd2cSJim Jagielski return *this;
683*b1cdbd2cSJim Jagielski }
684*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
685*b1cdbd2cSJim Jagielski
operator =(const sal_Bool _rRH)686*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const sal_Bool _rRH)
687*b1cdbd2cSJim Jagielski {
688*b1cdbd2cSJim Jagielski if(m_eTypeKind != DataType::BIT && DataType::BOOLEAN != m_eTypeKind )
689*b1cdbd2cSJim Jagielski free();
690*b1cdbd2cSJim Jagielski
691*b1cdbd2cSJim Jagielski m_aValue.m_bBool = _rRH;
692*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::BIT;
693*b1cdbd2cSJim Jagielski m_bNull = sal_False;
694*b1cdbd2cSJim Jagielski
695*b1cdbd2cSJim Jagielski return *this;
696*b1cdbd2cSJim Jagielski }
697*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
operator =(const sal_Int64 & _rRH)698*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const sal_Int64& _rRH)
699*b1cdbd2cSJim Jagielski {
700*b1cdbd2cSJim Jagielski if ( DataType::BIGINT != m_eTypeKind || !m_bSigned )
701*b1cdbd2cSJim Jagielski free();
702*b1cdbd2cSJim Jagielski
703*b1cdbd2cSJim Jagielski if ( m_bSigned )
704*b1cdbd2cSJim Jagielski {
705*b1cdbd2cSJim Jagielski if(m_bNull)
706*b1cdbd2cSJim Jagielski {
707*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new sal_Int64(_rRH);
708*b1cdbd2cSJim Jagielski TRACE_ALLOC( sal_Int64 )
709*b1cdbd2cSJim Jagielski }
710*b1cdbd2cSJim Jagielski else
711*b1cdbd2cSJim Jagielski *static_cast<sal_Int64*>(m_aValue.m_pValue) = _rRH;
712*b1cdbd2cSJim Jagielski }
713*b1cdbd2cSJim Jagielski else
714*b1cdbd2cSJim Jagielski {
715*b1cdbd2cSJim Jagielski ::rtl::OUString aVal = ::rtl::OUString::valueOf(_rRH);
716*b1cdbd2cSJim Jagielski m_aValue.m_pString = aVal.pData;
717*b1cdbd2cSJim Jagielski rtl_uString_acquire(m_aValue.m_pString);
718*b1cdbd2cSJim Jagielski }
719*b1cdbd2cSJim Jagielski
720*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::BIGINT;
721*b1cdbd2cSJim Jagielski m_bNull = sal_False;
722*b1cdbd2cSJim Jagielski
723*b1cdbd2cSJim Jagielski return *this;
724*b1cdbd2cSJim Jagielski }
725*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
operator =(const Sequence<sal_Int8> & _rRH)726*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const Sequence<sal_Int8>& _rRH)
727*b1cdbd2cSJim Jagielski {
728*b1cdbd2cSJim Jagielski if (!isStorageCompatible(DataType::LONGVARBINARY,m_eTypeKind))
729*b1cdbd2cSJim Jagielski free();
730*b1cdbd2cSJim Jagielski
731*b1cdbd2cSJim Jagielski if (m_bNull)
732*b1cdbd2cSJim Jagielski {
733*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Sequence<sal_Int8>(_rRH);
734*b1cdbd2cSJim Jagielski TRACE_ALLOC( Sequence_sal_Int8 )
735*b1cdbd2cSJim Jagielski }
736*b1cdbd2cSJim Jagielski else
737*b1cdbd2cSJim Jagielski *static_cast< Sequence< sal_Int8 >* >(m_aValue.m_pValue) = _rRH;
738*b1cdbd2cSJim Jagielski
739*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::LONGVARBINARY;
740*b1cdbd2cSJim Jagielski m_bNull = sal_False;
741*b1cdbd2cSJim Jagielski
742*b1cdbd2cSJim Jagielski return *this;
743*b1cdbd2cSJim Jagielski }
744*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
operator =(const Any & _rAny)745*b1cdbd2cSJim Jagielski ORowSetValue& ORowSetValue::operator=(const Any& _rAny)
746*b1cdbd2cSJim Jagielski {
747*b1cdbd2cSJim Jagielski if (!isStorageCompatible(DataType::OBJECT,m_eTypeKind))
748*b1cdbd2cSJim Jagielski free();
749*b1cdbd2cSJim Jagielski
750*b1cdbd2cSJim Jagielski if ( m_bNull )
751*b1cdbd2cSJim Jagielski {
752*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Any(_rAny);
753*b1cdbd2cSJim Jagielski TRACE_ALLOC( Any )
754*b1cdbd2cSJim Jagielski }
755*b1cdbd2cSJim Jagielski else
756*b1cdbd2cSJim Jagielski *static_cast<Any*>(m_aValue.m_pValue) = _rAny;
757*b1cdbd2cSJim Jagielski
758*b1cdbd2cSJim Jagielski m_eTypeKind = DataType::OBJECT;
759*b1cdbd2cSJim Jagielski m_bNull = sal_False;
760*b1cdbd2cSJim Jagielski
761*b1cdbd2cSJim Jagielski return *this;
762*b1cdbd2cSJim Jagielski }
763*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
764*b1cdbd2cSJim Jagielski
operator ==(const Date & _rLH,const Date & _rRH)765*b1cdbd2cSJim Jagielski sal_Bool operator==(const Date& _rLH,const Date& _rRH)
766*b1cdbd2cSJim Jagielski {
767*b1cdbd2cSJim Jagielski return _rLH.Day == _rRH.Day && _rLH.Month == _rRH.Month && _rLH.Year == _rRH.Year;
768*b1cdbd2cSJim Jagielski }
769*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
770*b1cdbd2cSJim Jagielski
operator ==(const Time & _rLH,const Time & _rRH)771*b1cdbd2cSJim Jagielski sal_Bool operator==(const Time& _rLH,const Time& _rRH)
772*b1cdbd2cSJim Jagielski {
773*b1cdbd2cSJim Jagielski return _rLH.Minutes == _rRH.Minutes && _rLH.Hours == _rRH.Hours && _rLH.Seconds == _rRH.Seconds && _rLH.HundredthSeconds == _rRH.HundredthSeconds;
774*b1cdbd2cSJim Jagielski }
775*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
776*b1cdbd2cSJim Jagielski
operator ==(const DateTime & _rLH,const DateTime & _rRH)777*b1cdbd2cSJim Jagielski sal_Bool operator==(const DateTime& _rLH,const DateTime& _rRH)
778*b1cdbd2cSJim Jagielski {
779*b1cdbd2cSJim Jagielski return _rLH.Day == _rRH.Day && _rLH.Month == _rRH.Month && _rLH.Year == _rRH.Year &&
780*b1cdbd2cSJim Jagielski _rLH.Minutes == _rRH.Minutes && _rLH.Hours == _rRH.Hours && _rLH.Seconds == _rRH.Seconds && _rLH.HundredthSeconds == _rRH.HundredthSeconds;
781*b1cdbd2cSJim Jagielski }
782*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
783*b1cdbd2cSJim Jagielski
operator ==(const ORowSetValue & _rRH) const784*b1cdbd2cSJim Jagielski bool ORowSetValue::operator==(const ORowSetValue& _rRH) const
785*b1cdbd2cSJim Jagielski {
786*b1cdbd2cSJim Jagielski if ( m_bNull != _rRH.isNull() )
787*b1cdbd2cSJim Jagielski return false;
788*b1cdbd2cSJim Jagielski
789*b1cdbd2cSJim Jagielski if(m_bNull && _rRH.isNull())
790*b1cdbd2cSJim Jagielski return true;
791*b1cdbd2cSJim Jagielski
792*b1cdbd2cSJim Jagielski if ( m_eTypeKind != _rRH.m_eTypeKind )
793*b1cdbd2cSJim Jagielski {
794*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
795*b1cdbd2cSJim Jagielski {
796*b1cdbd2cSJim Jagielski case DataType::FLOAT:
797*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
798*b1cdbd2cSJim Jagielski case DataType::REAL:
799*b1cdbd2cSJim Jagielski return getDouble() == _rRH.getDouble();
800*b1cdbd2cSJim Jagielski default:
801*b1cdbd2cSJim Jagielski switch(_rRH.m_eTypeKind)
802*b1cdbd2cSJim Jagielski {
803*b1cdbd2cSJim Jagielski case DataType::FLOAT:
804*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
805*b1cdbd2cSJim Jagielski case DataType::REAL:
806*b1cdbd2cSJim Jagielski return getDouble() == _rRH.getDouble();
807*b1cdbd2cSJim Jagielski default:
808*b1cdbd2cSJim Jagielski break;
809*b1cdbd2cSJim Jagielski }
810*b1cdbd2cSJim Jagielski break;
811*b1cdbd2cSJim Jagielski }
812*b1cdbd2cSJim Jagielski return false;
813*b1cdbd2cSJim Jagielski }
814*b1cdbd2cSJim Jagielski
815*b1cdbd2cSJim Jagielski bool bRet = false;
816*b1cdbd2cSJim Jagielski OSL_ENSURE(!m_bNull,"SHould not be null!");
817*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
818*b1cdbd2cSJim Jagielski {
819*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
820*b1cdbd2cSJim Jagielski case DataType::CHAR:
821*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
822*b1cdbd2cSJim Jagielski {
823*b1cdbd2cSJim Jagielski ::rtl::OUString aVal1(m_aValue.m_pString);
824*b1cdbd2cSJim Jagielski ::rtl::OUString aVal2(_rRH.m_aValue.m_pString);
825*b1cdbd2cSJim Jagielski return aVal1 == aVal2;
826*b1cdbd2cSJim Jagielski }
827*b1cdbd2cSJim Jagielski default:
828*b1cdbd2cSJim Jagielski if ( m_bSigned != _rRH.m_bSigned )
829*b1cdbd2cSJim Jagielski return false;
830*b1cdbd2cSJim Jagielski break;
831*b1cdbd2cSJim Jagielski }
832*b1cdbd2cSJim Jagielski
833*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
834*b1cdbd2cSJim Jagielski {
835*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
836*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
837*b1cdbd2cSJim Jagielski {
838*b1cdbd2cSJim Jagielski ::rtl::OUString aVal1(m_aValue.m_pString);
839*b1cdbd2cSJim Jagielski ::rtl::OUString aVal2(_rRH.m_aValue.m_pString);
840*b1cdbd2cSJim Jagielski bRet = aVal1 == aVal2;
841*b1cdbd2cSJim Jagielski }
842*b1cdbd2cSJim Jagielski break;
843*b1cdbd2cSJim Jagielski case DataType::FLOAT:
844*b1cdbd2cSJim Jagielski bRet = *(float*)m_aValue.m_pValue == *(float*)_rRH.m_aValue.m_pValue;
845*b1cdbd2cSJim Jagielski break;
846*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
847*b1cdbd2cSJim Jagielski case DataType::REAL:
848*b1cdbd2cSJim Jagielski bRet = *(double*)m_aValue.m_pValue == *(double*)_rRH.m_aValue.m_pValue;
849*b1cdbd2cSJim Jagielski break;
850*b1cdbd2cSJim Jagielski case DataType::TINYINT:
851*b1cdbd2cSJim Jagielski bRet = m_bSigned ? ( m_aValue.m_nInt8 == _rRH.m_aValue.m_nInt8 ) : (m_aValue.m_nInt16 == _rRH.m_aValue.m_nInt16);
852*b1cdbd2cSJim Jagielski break;
853*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
854*b1cdbd2cSJim Jagielski bRet = m_bSigned ? ( m_aValue.m_nInt16 == _rRH.m_aValue.m_nInt16 ) : (m_aValue.m_nInt32 == _rRH.m_aValue.m_nInt32);
855*b1cdbd2cSJim Jagielski break;
856*b1cdbd2cSJim Jagielski case DataType::INTEGER:
857*b1cdbd2cSJim Jagielski bRet = m_bSigned ? ( m_aValue.m_nInt32 == _rRH.m_aValue.m_nInt32 ) : (*(sal_Int64*)m_aValue.m_pValue == *(sal_Int64*)_rRH.m_aValue.m_pValue);
858*b1cdbd2cSJim Jagielski break;
859*b1cdbd2cSJim Jagielski case DataType::BIGINT:
860*b1cdbd2cSJim Jagielski if ( m_bSigned )
861*b1cdbd2cSJim Jagielski bRet = *(sal_Int64*)m_aValue.m_pValue == *(sal_Int64*)_rRH.m_aValue.m_pValue;
862*b1cdbd2cSJim Jagielski else
863*b1cdbd2cSJim Jagielski {
864*b1cdbd2cSJim Jagielski ::rtl::OUString aVal1(m_aValue.m_pString);
865*b1cdbd2cSJim Jagielski ::rtl::OUString aVal2(_rRH.m_aValue.m_pString);
866*b1cdbd2cSJim Jagielski bRet = aVal1 == aVal2;
867*b1cdbd2cSJim Jagielski }
868*b1cdbd2cSJim Jagielski break;
869*b1cdbd2cSJim Jagielski case DataType::BIT:
870*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
871*b1cdbd2cSJim Jagielski bRet = m_aValue.m_bBool == _rRH.m_aValue.m_bBool;
872*b1cdbd2cSJim Jagielski break;
873*b1cdbd2cSJim Jagielski case DataType::DATE:
874*b1cdbd2cSJim Jagielski bRet = *(Date*)m_aValue.m_pValue == *(Date*)_rRH.m_aValue.m_pValue;
875*b1cdbd2cSJim Jagielski break;
876*b1cdbd2cSJim Jagielski case DataType::TIME:
877*b1cdbd2cSJim Jagielski bRet = *(Time*)m_aValue.m_pValue == *(Time*)_rRH.m_aValue.m_pValue;
878*b1cdbd2cSJim Jagielski break;
879*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
880*b1cdbd2cSJim Jagielski bRet = *(DateTime*)m_aValue.m_pValue == *(DateTime*)_rRH.m_aValue.m_pValue;
881*b1cdbd2cSJim Jagielski break;
882*b1cdbd2cSJim Jagielski case DataType::BINARY:
883*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
884*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
885*b1cdbd2cSJim Jagielski bRet = false;
886*b1cdbd2cSJim Jagielski break;
887*b1cdbd2cSJim Jagielski case DataType::BLOB:
888*b1cdbd2cSJim Jagielski case DataType::CLOB:
889*b1cdbd2cSJim Jagielski case DataType::OBJECT:
890*b1cdbd2cSJim Jagielski case DataType::OTHER:
891*b1cdbd2cSJim Jagielski bRet = false;
892*b1cdbd2cSJim Jagielski break;
893*b1cdbd2cSJim Jagielski default:
894*b1cdbd2cSJim Jagielski bRet = false;
895*b1cdbd2cSJim Jagielski OSL_ENSURE(0,"ORowSetValue::operator==(): UNSPUPPORTED TYPE!");
896*b1cdbd2cSJim Jagielski break;
897*b1cdbd2cSJim Jagielski }
898*b1cdbd2cSJim Jagielski return bRet;
899*b1cdbd2cSJim Jagielski }
900*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
makeAny() const901*b1cdbd2cSJim Jagielski Any ORowSetValue::makeAny() const
902*b1cdbd2cSJim Jagielski {
903*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::makeAny" );
904*b1cdbd2cSJim Jagielski Any rValue;
905*b1cdbd2cSJim Jagielski if(isBound() && !isNull())
906*b1cdbd2cSJim Jagielski {
907*b1cdbd2cSJim Jagielski switch(getTypeKind())
908*b1cdbd2cSJim Jagielski {
909*b1cdbd2cSJim Jagielski case DataType::CHAR:
910*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
911*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
912*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
913*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
914*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pString,"Value is null!");
915*b1cdbd2cSJim Jagielski rValue <<= (::rtl::OUString)m_aValue.m_pString;
916*b1cdbd2cSJim Jagielski break;
917*b1cdbd2cSJim Jagielski case DataType::BIGINT:
918*b1cdbd2cSJim Jagielski if ( m_bSigned )
919*b1cdbd2cSJim Jagielski {
920*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pValue,"Value is null!");
921*b1cdbd2cSJim Jagielski rValue <<= *(sal_Int64*)m_aValue.m_pValue;
922*b1cdbd2cSJim Jagielski }
923*b1cdbd2cSJim Jagielski else
924*b1cdbd2cSJim Jagielski {
925*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pString,"Value is null!");
926*b1cdbd2cSJim Jagielski rValue <<= (::rtl::OUString)m_aValue.m_pString;
927*b1cdbd2cSJim Jagielski }
928*b1cdbd2cSJim Jagielski break;
929*b1cdbd2cSJim Jagielski case DataType::FLOAT:
930*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pValue,"Value is null!");
931*b1cdbd2cSJim Jagielski rValue <<= *(float*)m_aValue.m_pValue;
932*b1cdbd2cSJim Jagielski break;
933*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
934*b1cdbd2cSJim Jagielski case DataType::REAL:
935*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pValue,"Value is null!");
936*b1cdbd2cSJim Jagielski rValue <<= *(double*)m_aValue.m_pValue;
937*b1cdbd2cSJim Jagielski break;
938*b1cdbd2cSJim Jagielski case DataType::DATE:
939*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pValue,"Value is null!");
940*b1cdbd2cSJim Jagielski rValue <<= *(Date*)m_aValue.m_pValue;
941*b1cdbd2cSJim Jagielski break;
942*b1cdbd2cSJim Jagielski case DataType::TIME:
943*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pValue,"Value is null!");
944*b1cdbd2cSJim Jagielski rValue <<= *(Time*)m_aValue.m_pValue;
945*b1cdbd2cSJim Jagielski break;
946*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
947*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pValue,"Value is null!");
948*b1cdbd2cSJim Jagielski rValue <<= *(DateTime*)m_aValue.m_pValue;
949*b1cdbd2cSJim Jagielski break;
950*b1cdbd2cSJim Jagielski case DataType::BINARY:
951*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
952*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
953*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pValue,"Value is null!");
954*b1cdbd2cSJim Jagielski rValue <<= *(Sequence<sal_Int8>*)m_aValue.m_pValue;
955*b1cdbd2cSJim Jagielski break;
956*b1cdbd2cSJim Jagielski case DataType::BLOB:
957*b1cdbd2cSJim Jagielski case DataType::CLOB:
958*b1cdbd2cSJim Jagielski case DataType::OBJECT:
959*b1cdbd2cSJim Jagielski case DataType::OTHER:
960*b1cdbd2cSJim Jagielski rValue = getAny();
961*b1cdbd2cSJim Jagielski break;
962*b1cdbd2cSJim Jagielski case DataType::BIT:
963*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
964*b1cdbd2cSJim Jagielski rValue.setValue( &m_aValue.m_bBool, ::getCppuBooleanType() );
965*b1cdbd2cSJim Jagielski break;
966*b1cdbd2cSJim Jagielski case DataType::TINYINT:
967*b1cdbd2cSJim Jagielski if ( m_bSigned )
968*b1cdbd2cSJim Jagielski rValue <<= m_aValue.m_nInt8;
969*b1cdbd2cSJim Jagielski else
970*b1cdbd2cSJim Jagielski rValue <<= m_aValue.m_nInt16;
971*b1cdbd2cSJim Jagielski break;
972*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
973*b1cdbd2cSJim Jagielski if ( m_bSigned )
974*b1cdbd2cSJim Jagielski rValue <<= m_aValue.m_nInt16;
975*b1cdbd2cSJim Jagielski else
976*b1cdbd2cSJim Jagielski rValue <<= m_aValue.m_nInt32;
977*b1cdbd2cSJim Jagielski break;
978*b1cdbd2cSJim Jagielski case DataType::INTEGER:
979*b1cdbd2cSJim Jagielski if ( m_bSigned )
980*b1cdbd2cSJim Jagielski rValue <<= m_aValue.m_nInt32;
981*b1cdbd2cSJim Jagielski else
982*b1cdbd2cSJim Jagielski {
983*b1cdbd2cSJim Jagielski OSL_ENSURE(m_aValue.m_pValue,"Value is null!");
984*b1cdbd2cSJim Jagielski rValue <<= *(sal_Int64*)m_aValue.m_pValue;
985*b1cdbd2cSJim Jagielski }
986*b1cdbd2cSJim Jagielski break;
987*b1cdbd2cSJim Jagielski default:
988*b1cdbd2cSJim Jagielski OSL_ENSURE(0,"ORowSetValue::makeAny(): UNSPUPPORTED TYPE!");
989*b1cdbd2cSJim Jagielski rValue = getAny();
990*b1cdbd2cSJim Jagielski break;
991*b1cdbd2cSJim Jagielski }
992*b1cdbd2cSJim Jagielski }
993*b1cdbd2cSJim Jagielski return rValue;
994*b1cdbd2cSJim Jagielski }
995*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
getString() const996*b1cdbd2cSJim Jagielski ::rtl::OUString ORowSetValue::getString( ) const
997*b1cdbd2cSJim Jagielski {
998*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getString" );
999*b1cdbd2cSJim Jagielski ::rtl::OUString aRet;
1000*b1cdbd2cSJim Jagielski if(!m_bNull)
1001*b1cdbd2cSJim Jagielski {
1002*b1cdbd2cSJim Jagielski switch(getTypeKind())
1003*b1cdbd2cSJim Jagielski {
1004*b1cdbd2cSJim Jagielski case DataType::CHAR:
1005*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1006*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1007*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1008*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1009*b1cdbd2cSJim Jagielski aRet = m_aValue.m_pString;
1010*b1cdbd2cSJim Jagielski break;
1011*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1012*b1cdbd2cSJim Jagielski if ( m_bSigned )
1013*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((sal_Int64)*this);
1014*b1cdbd2cSJim Jagielski else
1015*b1cdbd2cSJim Jagielski aRet = m_aValue.m_pString;
1016*b1cdbd2cSJim Jagielski break;
1017*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1018*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((float)*this);
1019*b1cdbd2cSJim Jagielski break;
1020*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1021*b1cdbd2cSJim Jagielski case DataType::REAL:
1022*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((double)*this);
1023*b1cdbd2cSJim Jagielski break;
1024*b1cdbd2cSJim Jagielski case DataType::DATE:
1025*b1cdbd2cSJim Jagielski aRet = connectivity::toDateString(*this);
1026*b1cdbd2cSJim Jagielski break;
1027*b1cdbd2cSJim Jagielski case DataType::TIME:
1028*b1cdbd2cSJim Jagielski aRet = connectivity::toTimeString(*this);
1029*b1cdbd2cSJim Jagielski break;
1030*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1031*b1cdbd2cSJim Jagielski aRet = connectivity::toDateTimeString(*this);
1032*b1cdbd2cSJim Jagielski break;
1033*b1cdbd2cSJim Jagielski case DataType::BINARY:
1034*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1035*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1036*b1cdbd2cSJim Jagielski {
1037*b1cdbd2cSJim Jagielski ::rtl::OUStringBuffer sVal = ::rtl::OUString::createFromAscii("0x");
1038*b1cdbd2cSJim Jagielski Sequence<sal_Int8> aSeq(getSequence());
1039*b1cdbd2cSJim Jagielski const sal_Int8* pBegin = aSeq.getConstArray();
1040*b1cdbd2cSJim Jagielski const sal_Int8* pEnd = pBegin + aSeq.getLength();
1041*b1cdbd2cSJim Jagielski for(;pBegin != pEnd;++pBegin)
1042*b1cdbd2cSJim Jagielski sVal.append((sal_Int32)*pBegin,16);
1043*b1cdbd2cSJim Jagielski aRet = sVal.makeStringAndClear();
1044*b1cdbd2cSJim Jagielski }
1045*b1cdbd2cSJim Jagielski break;
1046*b1cdbd2cSJim Jagielski case DataType::BIT:
1047*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1048*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((sal_Int32)(sal_Bool)*this);
1049*b1cdbd2cSJim Jagielski break;
1050*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1051*b1cdbd2cSJim Jagielski if ( m_bSigned )
1052*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((sal_Int32)(sal_Int8)*this);
1053*b1cdbd2cSJim Jagielski else
1054*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((sal_Int32)(sal_Int16)*this);
1055*b1cdbd2cSJim Jagielski break;
1056*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1057*b1cdbd2cSJim Jagielski if ( m_bSigned )
1058*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((sal_Int32)(sal_Int16)*this);
1059*b1cdbd2cSJim Jagielski else
1060*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((sal_Int32)*this);
1061*b1cdbd2cSJim Jagielski break;
1062*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1063*b1cdbd2cSJim Jagielski if ( m_bSigned )
1064*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((sal_Int32)*this);
1065*b1cdbd2cSJim Jagielski else
1066*b1cdbd2cSJim Jagielski aRet = ::rtl::OUString::valueOf((sal_Int64)*this);
1067*b1cdbd2cSJim Jagielski break;
1068*b1cdbd2cSJim Jagielski case DataType::CLOB:
1069*b1cdbd2cSJim Jagielski {
1070*b1cdbd2cSJim Jagielski Any aValue( getAny() );
1071*b1cdbd2cSJim Jagielski Reference< XClob > xClob;
1072*b1cdbd2cSJim Jagielski if ( aValue >>= xClob )
1073*b1cdbd2cSJim Jagielski {
1074*b1cdbd2cSJim Jagielski if ( xClob.is() )
1075*b1cdbd2cSJim Jagielski {
1076*b1cdbd2cSJim Jagielski aRet = xClob->getSubString(1,(sal_Int32)xClob->length() );
1077*b1cdbd2cSJim Jagielski }
1078*b1cdbd2cSJim Jagielski }
1079*b1cdbd2cSJim Jagielski }
1080*b1cdbd2cSJim Jagielski break;
1081*b1cdbd2cSJim Jagielski default:
1082*b1cdbd2cSJim Jagielski {
1083*b1cdbd2cSJim Jagielski Any aValue = getAny();
1084*b1cdbd2cSJim Jagielski aValue >>= aRet;
1085*b1cdbd2cSJim Jagielski break;
1086*b1cdbd2cSJim Jagielski }
1087*b1cdbd2cSJim Jagielski }
1088*b1cdbd2cSJim Jagielski }
1089*b1cdbd2cSJim Jagielski return aRet;
1090*b1cdbd2cSJim Jagielski }
1091*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
getBool() const1092*b1cdbd2cSJim Jagielski sal_Bool ORowSetValue::getBool() const
1093*b1cdbd2cSJim Jagielski {
1094*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getBool" );
1095*b1cdbd2cSJim Jagielski sal_Bool bRet = sal_False;
1096*b1cdbd2cSJim Jagielski if(!m_bNull)
1097*b1cdbd2cSJim Jagielski {
1098*b1cdbd2cSJim Jagielski switch(getTypeKind())
1099*b1cdbd2cSJim Jagielski {
1100*b1cdbd2cSJim Jagielski case DataType::CHAR:
1101*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1102*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1103*b1cdbd2cSJim Jagielski {
1104*b1cdbd2cSJim Jagielski const ::rtl::OUString sValue(m_aValue.m_pString);
1105*b1cdbd2cSJim Jagielski const static ::rtl::OUString s_sTrue(RTL_CONSTASCII_USTRINGPARAM("true"));
1106*b1cdbd2cSJim Jagielski const static ::rtl::OUString s_sFalse(RTL_CONSTASCII_USTRINGPARAM("false"));
1107*b1cdbd2cSJim Jagielski if ( sValue.equalsIgnoreAsciiCase(s_sTrue) )
1108*b1cdbd2cSJim Jagielski {
1109*b1cdbd2cSJim Jagielski bRet = sal_True;
1110*b1cdbd2cSJim Jagielski break;
1111*b1cdbd2cSJim Jagielski }
1112*b1cdbd2cSJim Jagielski else if ( sValue.equalsIgnoreAsciiCase(s_sFalse) )
1113*b1cdbd2cSJim Jagielski {
1114*b1cdbd2cSJim Jagielski bRet = sal_False;
1115*b1cdbd2cSJim Jagielski break;
1116*b1cdbd2cSJim Jagielski }
1117*b1cdbd2cSJim Jagielski }
1118*b1cdbd2cSJim Jagielski // run through
1119*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1120*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1121*b1cdbd2cSJim Jagielski
1122*b1cdbd2cSJim Jagielski bRet = ::rtl::OUString(m_aValue.m_pString).toInt32() != 0;
1123*b1cdbd2cSJim Jagielski break;
1124*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1125*b1cdbd2cSJim Jagielski if ( m_bSigned )
1126*b1cdbd2cSJim Jagielski bRet = *(sal_Int64*)m_aValue.m_pValue != 0;
1127*b1cdbd2cSJim Jagielski else
1128*b1cdbd2cSJim Jagielski bRet = ::rtl::OUString(m_aValue.m_pString).toInt64() != 0;
1129*b1cdbd2cSJim Jagielski break;
1130*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1131*b1cdbd2cSJim Jagielski bRet = *(float*)m_aValue.m_pValue != 0.0;
1132*b1cdbd2cSJim Jagielski break;
1133*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1134*b1cdbd2cSJim Jagielski case DataType::REAL:
1135*b1cdbd2cSJim Jagielski bRet = *(double*)m_aValue.m_pValue != 0.0;
1136*b1cdbd2cSJim Jagielski break;
1137*b1cdbd2cSJim Jagielski case DataType::DATE:
1138*b1cdbd2cSJim Jagielski case DataType::TIME:
1139*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1140*b1cdbd2cSJim Jagielski case DataType::BINARY:
1141*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1142*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1143*b1cdbd2cSJim Jagielski OSL_ASSERT(!"getBool() for this type is not allowed!");
1144*b1cdbd2cSJim Jagielski break;
1145*b1cdbd2cSJim Jagielski case DataType::BIT:
1146*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1147*b1cdbd2cSJim Jagielski bRet = m_aValue.m_bBool;
1148*b1cdbd2cSJim Jagielski break;
1149*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1150*b1cdbd2cSJim Jagielski bRet = m_bSigned ? (m_aValue.m_nInt8 != 0) : (m_aValue.m_nInt16 != 0);
1151*b1cdbd2cSJim Jagielski break;
1152*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1153*b1cdbd2cSJim Jagielski bRet = m_bSigned ? (m_aValue.m_nInt16 != 0) : (m_aValue.m_nInt32 != 0);
1154*b1cdbd2cSJim Jagielski break;
1155*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1156*b1cdbd2cSJim Jagielski bRet = m_bSigned ? (m_aValue.m_nInt32 != 0) : (*static_cast<sal_Int64*>(m_aValue.m_pValue) != sal_Int64(0));
1157*b1cdbd2cSJim Jagielski break;
1158*b1cdbd2cSJim Jagielski default:
1159*b1cdbd2cSJim Jagielski {
1160*b1cdbd2cSJim Jagielski Any aValue = getAny();
1161*b1cdbd2cSJim Jagielski aValue >>= bRet;
1162*b1cdbd2cSJim Jagielski break;
1163*b1cdbd2cSJim Jagielski }
1164*b1cdbd2cSJim Jagielski }
1165*b1cdbd2cSJim Jagielski }
1166*b1cdbd2cSJim Jagielski return bRet;
1167*b1cdbd2cSJim Jagielski }
1168*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
getInt8() const1169*b1cdbd2cSJim Jagielski sal_Int8 ORowSetValue::getInt8() const
1170*b1cdbd2cSJim Jagielski {
1171*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getInt8" );
1172*b1cdbd2cSJim Jagielski
1173*b1cdbd2cSJim Jagielski
1174*b1cdbd2cSJim Jagielski sal_Int8 nRet = 0;
1175*b1cdbd2cSJim Jagielski if(!m_bNull)
1176*b1cdbd2cSJim Jagielski {
1177*b1cdbd2cSJim Jagielski switch(getTypeKind())
1178*b1cdbd2cSJim Jagielski {
1179*b1cdbd2cSJim Jagielski case DataType::CHAR:
1180*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1181*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1182*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1183*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1184*b1cdbd2cSJim Jagielski nRet = sal_Int8(::rtl::OUString(m_aValue.m_pString).toInt32());
1185*b1cdbd2cSJim Jagielski break;
1186*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1187*b1cdbd2cSJim Jagielski if ( m_bSigned )
1188*b1cdbd2cSJim Jagielski nRet = sal_Int8(*(sal_Int64*)m_aValue.m_pValue);
1189*b1cdbd2cSJim Jagielski else
1190*b1cdbd2cSJim Jagielski nRet = sal_Int8(::rtl::OUString(m_aValue.m_pString).toInt32());
1191*b1cdbd2cSJim Jagielski break;
1192*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1193*b1cdbd2cSJim Jagielski nRet = sal_Int8(*(float*)m_aValue.m_pValue);
1194*b1cdbd2cSJim Jagielski break;
1195*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1196*b1cdbd2cSJim Jagielski case DataType::REAL:
1197*b1cdbd2cSJim Jagielski nRet = sal_Int8(*(double*)m_aValue.m_pValue);
1198*b1cdbd2cSJim Jagielski break;
1199*b1cdbd2cSJim Jagielski case DataType::DATE:
1200*b1cdbd2cSJim Jagielski case DataType::TIME:
1201*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1202*b1cdbd2cSJim Jagielski case DataType::BINARY:
1203*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1204*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1205*b1cdbd2cSJim Jagielski case DataType::BLOB:
1206*b1cdbd2cSJim Jagielski case DataType::CLOB:
1207*b1cdbd2cSJim Jagielski OSL_ASSERT(!"getInt8() for this type is not allowed!");
1208*b1cdbd2cSJim Jagielski break;
1209*b1cdbd2cSJim Jagielski case DataType::BIT:
1210*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1211*b1cdbd2cSJim Jagielski nRet = m_aValue.m_bBool;
1212*b1cdbd2cSJim Jagielski break;
1213*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1214*b1cdbd2cSJim Jagielski if ( m_bSigned )
1215*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt8;
1216*b1cdbd2cSJim Jagielski else
1217*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int8>(m_aValue.m_nInt16);
1218*b1cdbd2cSJim Jagielski break;
1219*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1220*b1cdbd2cSJim Jagielski if ( m_bSigned )
1221*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int8>(m_aValue.m_nInt16);
1222*b1cdbd2cSJim Jagielski else
1223*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int8>(m_aValue.m_nInt32);
1224*b1cdbd2cSJim Jagielski break;
1225*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1226*b1cdbd2cSJim Jagielski if ( m_bSigned )
1227*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int8>(m_aValue.m_nInt32);
1228*b1cdbd2cSJim Jagielski else
1229*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int8>(*static_cast<sal_Int64*>(m_aValue.m_pValue));
1230*b1cdbd2cSJim Jagielski break;
1231*b1cdbd2cSJim Jagielski default:
1232*b1cdbd2cSJim Jagielski {
1233*b1cdbd2cSJim Jagielski Any aValue = getAny();
1234*b1cdbd2cSJim Jagielski aValue >>= nRet;
1235*b1cdbd2cSJim Jagielski break;
1236*b1cdbd2cSJim Jagielski }
1237*b1cdbd2cSJim Jagielski }
1238*b1cdbd2cSJim Jagielski }
1239*b1cdbd2cSJim Jagielski return nRet;
1240*b1cdbd2cSJim Jagielski }
1241*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
getInt16() const1242*b1cdbd2cSJim Jagielski sal_Int16 ORowSetValue::getInt16() const
1243*b1cdbd2cSJim Jagielski {
1244*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getInt16" );
1245*b1cdbd2cSJim Jagielski
1246*b1cdbd2cSJim Jagielski
1247*b1cdbd2cSJim Jagielski sal_Int16 nRet = 0;
1248*b1cdbd2cSJim Jagielski if(!m_bNull)
1249*b1cdbd2cSJim Jagielski {
1250*b1cdbd2cSJim Jagielski switch(getTypeKind())
1251*b1cdbd2cSJim Jagielski {
1252*b1cdbd2cSJim Jagielski case DataType::CHAR:
1253*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1254*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1255*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1256*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1257*b1cdbd2cSJim Jagielski nRet = sal_Int16(::rtl::OUString(m_aValue.m_pString).toInt32());
1258*b1cdbd2cSJim Jagielski break;
1259*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1260*b1cdbd2cSJim Jagielski if ( m_bSigned )
1261*b1cdbd2cSJim Jagielski nRet = sal_Int16(*(sal_Int64*)m_aValue.m_pValue);
1262*b1cdbd2cSJim Jagielski else
1263*b1cdbd2cSJim Jagielski nRet = sal_Int16(::rtl::OUString(m_aValue.m_pString).toInt32());
1264*b1cdbd2cSJim Jagielski break;
1265*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1266*b1cdbd2cSJim Jagielski nRet = sal_Int16(*(float*)m_aValue.m_pValue);
1267*b1cdbd2cSJim Jagielski break;
1268*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1269*b1cdbd2cSJim Jagielski case DataType::REAL:
1270*b1cdbd2cSJim Jagielski nRet = sal_Int16(*(double*)m_aValue.m_pValue);
1271*b1cdbd2cSJim Jagielski break;
1272*b1cdbd2cSJim Jagielski case DataType::DATE:
1273*b1cdbd2cSJim Jagielski case DataType::TIME:
1274*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1275*b1cdbd2cSJim Jagielski case DataType::BINARY:
1276*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1277*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1278*b1cdbd2cSJim Jagielski case DataType::BLOB:
1279*b1cdbd2cSJim Jagielski case DataType::CLOB:
1280*b1cdbd2cSJim Jagielski OSL_ASSERT(!"getInt16() for this type is not allowed!");
1281*b1cdbd2cSJim Jagielski break;
1282*b1cdbd2cSJim Jagielski case DataType::BIT:
1283*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1284*b1cdbd2cSJim Jagielski nRet = m_aValue.m_bBool;
1285*b1cdbd2cSJim Jagielski break;
1286*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1287*b1cdbd2cSJim Jagielski if ( m_bSigned )
1288*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt8;
1289*b1cdbd2cSJim Jagielski else
1290*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1291*b1cdbd2cSJim Jagielski break;
1292*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1293*b1cdbd2cSJim Jagielski if ( m_bSigned )
1294*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1295*b1cdbd2cSJim Jagielski else
1296*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int16>(m_aValue.m_nInt32);
1297*b1cdbd2cSJim Jagielski break;
1298*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1299*b1cdbd2cSJim Jagielski if ( m_bSigned )
1300*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int16>(m_aValue.m_nInt32);
1301*b1cdbd2cSJim Jagielski else
1302*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int16>(*static_cast<sal_Int64*>(m_aValue.m_pValue));
1303*b1cdbd2cSJim Jagielski break;
1304*b1cdbd2cSJim Jagielski default:
1305*b1cdbd2cSJim Jagielski {
1306*b1cdbd2cSJim Jagielski Any aValue = getAny();
1307*b1cdbd2cSJim Jagielski aValue >>= nRet;
1308*b1cdbd2cSJim Jagielski break;
1309*b1cdbd2cSJim Jagielski }
1310*b1cdbd2cSJim Jagielski }
1311*b1cdbd2cSJim Jagielski }
1312*b1cdbd2cSJim Jagielski return nRet;
1313*b1cdbd2cSJim Jagielski }
1314*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
getInt32() const1315*b1cdbd2cSJim Jagielski sal_Int32 ORowSetValue::getInt32() const
1316*b1cdbd2cSJim Jagielski {
1317*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getInt32" );
1318*b1cdbd2cSJim Jagielski sal_Int32 nRet = 0;
1319*b1cdbd2cSJim Jagielski if(!m_bNull)
1320*b1cdbd2cSJim Jagielski {
1321*b1cdbd2cSJim Jagielski switch(getTypeKind())
1322*b1cdbd2cSJim Jagielski {
1323*b1cdbd2cSJim Jagielski case DataType::CHAR:
1324*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1325*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1326*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1327*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1328*b1cdbd2cSJim Jagielski nRet = ::rtl::OUString(m_aValue.m_pString).toInt32();
1329*b1cdbd2cSJim Jagielski break;
1330*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1331*b1cdbd2cSJim Jagielski if ( m_bSigned )
1332*b1cdbd2cSJim Jagielski nRet = sal_Int32(*(sal_Int64*)m_aValue.m_pValue);
1333*b1cdbd2cSJim Jagielski else
1334*b1cdbd2cSJim Jagielski nRet = ::rtl::OUString(m_aValue.m_pString).toInt32();
1335*b1cdbd2cSJim Jagielski break;
1336*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1337*b1cdbd2cSJim Jagielski nRet = sal_Int32(*(float*)m_aValue.m_pValue);
1338*b1cdbd2cSJim Jagielski break;
1339*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1340*b1cdbd2cSJim Jagielski case DataType::REAL:
1341*b1cdbd2cSJim Jagielski nRet = sal_Int32(*(double*)m_aValue.m_pValue);
1342*b1cdbd2cSJim Jagielski break;
1343*b1cdbd2cSJim Jagielski case DataType::DATE:
1344*b1cdbd2cSJim Jagielski nRet = dbtools::DBTypeConversion::toDays(*(::com::sun::star::util::Date*)m_aValue.m_pValue);
1345*b1cdbd2cSJim Jagielski break;
1346*b1cdbd2cSJim Jagielski case DataType::TIME:
1347*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1348*b1cdbd2cSJim Jagielski case DataType::BINARY:
1349*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1350*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1351*b1cdbd2cSJim Jagielski case DataType::BLOB:
1352*b1cdbd2cSJim Jagielski case DataType::CLOB:
1353*b1cdbd2cSJim Jagielski OSL_ASSERT(!"getInt32() for this type is not allowed!");
1354*b1cdbd2cSJim Jagielski break;
1355*b1cdbd2cSJim Jagielski case DataType::BIT:
1356*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1357*b1cdbd2cSJim Jagielski nRet = m_aValue.m_bBool;
1358*b1cdbd2cSJim Jagielski break;
1359*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1360*b1cdbd2cSJim Jagielski if ( m_bSigned )
1361*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt8;
1362*b1cdbd2cSJim Jagielski else
1363*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1364*b1cdbd2cSJim Jagielski break;
1365*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1366*b1cdbd2cSJim Jagielski if ( m_bSigned )
1367*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1368*b1cdbd2cSJim Jagielski else
1369*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt32;
1370*b1cdbd2cSJim Jagielski break;
1371*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1372*b1cdbd2cSJim Jagielski if ( m_bSigned )
1373*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt32;
1374*b1cdbd2cSJim Jagielski else
1375*b1cdbd2cSJim Jagielski nRet = static_cast<sal_Int32>(*static_cast<sal_Int64*>(m_aValue.m_pValue));
1376*b1cdbd2cSJim Jagielski break;
1377*b1cdbd2cSJim Jagielski default:
1378*b1cdbd2cSJim Jagielski {
1379*b1cdbd2cSJim Jagielski Any aValue = getAny();
1380*b1cdbd2cSJim Jagielski aValue >>= nRet;
1381*b1cdbd2cSJim Jagielski break;
1382*b1cdbd2cSJim Jagielski }
1383*b1cdbd2cSJim Jagielski }
1384*b1cdbd2cSJim Jagielski }
1385*b1cdbd2cSJim Jagielski return nRet;
1386*b1cdbd2cSJim Jagielski }
1387*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
getLong() const1388*b1cdbd2cSJim Jagielski sal_Int64 ORowSetValue::getLong() const
1389*b1cdbd2cSJim Jagielski {
1390*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getLong" );
1391*b1cdbd2cSJim Jagielski sal_Int64 nRet = 0;
1392*b1cdbd2cSJim Jagielski if(!m_bNull)
1393*b1cdbd2cSJim Jagielski {
1394*b1cdbd2cSJim Jagielski switch(getTypeKind())
1395*b1cdbd2cSJim Jagielski {
1396*b1cdbd2cSJim Jagielski case DataType::CHAR:
1397*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1398*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1399*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1400*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1401*b1cdbd2cSJim Jagielski nRet = ::rtl::OUString(m_aValue.m_pString).toInt64();
1402*b1cdbd2cSJim Jagielski break;
1403*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1404*b1cdbd2cSJim Jagielski if ( m_bSigned )
1405*b1cdbd2cSJim Jagielski nRet = *(sal_Int64*)m_aValue.m_pValue;
1406*b1cdbd2cSJim Jagielski else
1407*b1cdbd2cSJim Jagielski nRet = ::rtl::OUString(m_aValue.m_pString).toInt64();
1408*b1cdbd2cSJim Jagielski break;
1409*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1410*b1cdbd2cSJim Jagielski nRet = sal_Int64(*(float*)m_aValue.m_pValue);
1411*b1cdbd2cSJim Jagielski break;
1412*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1413*b1cdbd2cSJim Jagielski case DataType::REAL:
1414*b1cdbd2cSJim Jagielski nRet = sal_Int64(*(double*)m_aValue.m_pValue);
1415*b1cdbd2cSJim Jagielski break;
1416*b1cdbd2cSJim Jagielski case DataType::DATE:
1417*b1cdbd2cSJim Jagielski nRet = dbtools::DBTypeConversion::toDays(*(::com::sun::star::util::Date*)m_aValue.m_pValue);
1418*b1cdbd2cSJim Jagielski break;
1419*b1cdbd2cSJim Jagielski case DataType::TIME:
1420*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1421*b1cdbd2cSJim Jagielski case DataType::BINARY:
1422*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1423*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1424*b1cdbd2cSJim Jagielski case DataType::BLOB:
1425*b1cdbd2cSJim Jagielski case DataType::CLOB:
1426*b1cdbd2cSJim Jagielski OSL_ASSERT(!"getInt32() for this type is not allowed!");
1427*b1cdbd2cSJim Jagielski break;
1428*b1cdbd2cSJim Jagielski case DataType::BIT:
1429*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1430*b1cdbd2cSJim Jagielski nRet = m_aValue.m_bBool;
1431*b1cdbd2cSJim Jagielski break;
1432*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1433*b1cdbd2cSJim Jagielski if ( m_bSigned )
1434*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt8;
1435*b1cdbd2cSJim Jagielski else
1436*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1437*b1cdbd2cSJim Jagielski break;
1438*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1439*b1cdbd2cSJim Jagielski if ( m_bSigned )
1440*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1441*b1cdbd2cSJim Jagielski else
1442*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt32;
1443*b1cdbd2cSJim Jagielski break;
1444*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1445*b1cdbd2cSJim Jagielski if ( m_bSigned )
1446*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt32;
1447*b1cdbd2cSJim Jagielski else
1448*b1cdbd2cSJim Jagielski nRet = *(sal_Int64*)m_aValue.m_pValue;
1449*b1cdbd2cSJim Jagielski break;
1450*b1cdbd2cSJim Jagielski default:
1451*b1cdbd2cSJim Jagielski {
1452*b1cdbd2cSJim Jagielski Any aValue = getAny();
1453*b1cdbd2cSJim Jagielski aValue >>= nRet;
1454*b1cdbd2cSJim Jagielski break;
1455*b1cdbd2cSJim Jagielski }
1456*b1cdbd2cSJim Jagielski }
1457*b1cdbd2cSJim Jagielski }
1458*b1cdbd2cSJim Jagielski return nRet;
1459*b1cdbd2cSJim Jagielski }
1460*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
getFloat() const1461*b1cdbd2cSJim Jagielski float ORowSetValue::getFloat() const
1462*b1cdbd2cSJim Jagielski {
1463*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getFloat" );
1464*b1cdbd2cSJim Jagielski float nRet = 0;
1465*b1cdbd2cSJim Jagielski if(!m_bNull)
1466*b1cdbd2cSJim Jagielski {
1467*b1cdbd2cSJim Jagielski switch(getTypeKind())
1468*b1cdbd2cSJim Jagielski {
1469*b1cdbd2cSJim Jagielski case DataType::CHAR:
1470*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1471*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1472*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1473*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1474*b1cdbd2cSJim Jagielski nRet = ::rtl::OUString(m_aValue.m_pString).toFloat();
1475*b1cdbd2cSJim Jagielski break;
1476*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1477*b1cdbd2cSJim Jagielski if ( m_bSigned )
1478*b1cdbd2cSJim Jagielski nRet = float(*(sal_Int64*)m_aValue.m_pValue);
1479*b1cdbd2cSJim Jagielski else
1480*b1cdbd2cSJim Jagielski nRet = ::rtl::OUString(m_aValue.m_pString).toFloat();
1481*b1cdbd2cSJim Jagielski break;
1482*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1483*b1cdbd2cSJim Jagielski nRet = *(float*)m_aValue.m_pValue;
1484*b1cdbd2cSJim Jagielski break;
1485*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1486*b1cdbd2cSJim Jagielski case DataType::REAL:
1487*b1cdbd2cSJim Jagielski nRet = (float)*(double*)m_aValue.m_pValue;
1488*b1cdbd2cSJim Jagielski break;
1489*b1cdbd2cSJim Jagielski case DataType::DATE:
1490*b1cdbd2cSJim Jagielski nRet = (float)dbtools::DBTypeConversion::toDouble(*(::com::sun::star::util::Date*)m_aValue.m_pValue);
1491*b1cdbd2cSJim Jagielski break;
1492*b1cdbd2cSJim Jagielski case DataType::TIME:
1493*b1cdbd2cSJim Jagielski nRet = (float)dbtools::DBTypeConversion::toDouble(*(::com::sun::star::util::Time*)m_aValue.m_pValue);
1494*b1cdbd2cSJim Jagielski break;
1495*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1496*b1cdbd2cSJim Jagielski nRet = (float)dbtools::DBTypeConversion::toDouble(*(::com::sun::star::util::DateTime*)m_aValue.m_pValue);
1497*b1cdbd2cSJim Jagielski break;
1498*b1cdbd2cSJim Jagielski case DataType::BINARY:
1499*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1500*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1501*b1cdbd2cSJim Jagielski case DataType::BLOB:
1502*b1cdbd2cSJim Jagielski case DataType::CLOB:
1503*b1cdbd2cSJim Jagielski OSL_ASSERT(!"getDouble() for this type is not allowed!");
1504*b1cdbd2cSJim Jagielski break;
1505*b1cdbd2cSJim Jagielski case DataType::BIT:
1506*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1507*b1cdbd2cSJim Jagielski nRet = m_aValue.m_bBool;
1508*b1cdbd2cSJim Jagielski break;
1509*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1510*b1cdbd2cSJim Jagielski if ( m_bSigned )
1511*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt8;
1512*b1cdbd2cSJim Jagielski else
1513*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1514*b1cdbd2cSJim Jagielski break;
1515*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1516*b1cdbd2cSJim Jagielski if ( m_bSigned )
1517*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1518*b1cdbd2cSJim Jagielski else
1519*b1cdbd2cSJim Jagielski nRet = (float)m_aValue.m_nInt32;
1520*b1cdbd2cSJim Jagielski break;
1521*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1522*b1cdbd2cSJim Jagielski if ( m_bSigned )
1523*b1cdbd2cSJim Jagielski nRet = (float)m_aValue.m_nInt32;
1524*b1cdbd2cSJim Jagielski else
1525*b1cdbd2cSJim Jagielski nRet = float(*(sal_Int64*)m_aValue.m_pValue);
1526*b1cdbd2cSJim Jagielski break;
1527*b1cdbd2cSJim Jagielski default:
1528*b1cdbd2cSJim Jagielski {
1529*b1cdbd2cSJim Jagielski Any aValue = getAny();
1530*b1cdbd2cSJim Jagielski aValue >>= nRet;
1531*b1cdbd2cSJim Jagielski break;
1532*b1cdbd2cSJim Jagielski }
1533*b1cdbd2cSJim Jagielski }
1534*b1cdbd2cSJim Jagielski }
1535*b1cdbd2cSJim Jagielski return nRet;
1536*b1cdbd2cSJim Jagielski }
1537*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
getDouble() const1538*b1cdbd2cSJim Jagielski double ORowSetValue::getDouble() const
1539*b1cdbd2cSJim Jagielski {
1540*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getDouble" );
1541*b1cdbd2cSJim Jagielski
1542*b1cdbd2cSJim Jagielski
1543*b1cdbd2cSJim Jagielski double nRet = 0;
1544*b1cdbd2cSJim Jagielski if(!m_bNull)
1545*b1cdbd2cSJim Jagielski {
1546*b1cdbd2cSJim Jagielski switch(getTypeKind())
1547*b1cdbd2cSJim Jagielski {
1548*b1cdbd2cSJim Jagielski case DataType::CHAR:
1549*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1550*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1551*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1552*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1553*b1cdbd2cSJim Jagielski nRet = ::rtl::OUString(m_aValue.m_pString).toDouble();
1554*b1cdbd2cSJim Jagielski break;
1555*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1556*b1cdbd2cSJim Jagielski if ( m_bSigned )
1557*b1cdbd2cSJim Jagielski nRet = double(*(sal_Int64*)m_aValue.m_pValue);
1558*b1cdbd2cSJim Jagielski else
1559*b1cdbd2cSJim Jagielski nRet = ::rtl::OUString(m_aValue.m_pString).toDouble();
1560*b1cdbd2cSJim Jagielski break;
1561*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1562*b1cdbd2cSJim Jagielski nRet = *(float*)m_aValue.m_pValue;
1563*b1cdbd2cSJim Jagielski break;
1564*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1565*b1cdbd2cSJim Jagielski case DataType::REAL:
1566*b1cdbd2cSJim Jagielski nRet = *(double*)m_aValue.m_pValue;
1567*b1cdbd2cSJim Jagielski break;
1568*b1cdbd2cSJim Jagielski case DataType::DATE:
1569*b1cdbd2cSJim Jagielski nRet = dbtools::DBTypeConversion::toDouble(*(::com::sun::star::util::Date*)m_aValue.m_pValue);
1570*b1cdbd2cSJim Jagielski break;
1571*b1cdbd2cSJim Jagielski case DataType::TIME:
1572*b1cdbd2cSJim Jagielski nRet = dbtools::DBTypeConversion::toDouble(*(::com::sun::star::util::Time*)m_aValue.m_pValue);
1573*b1cdbd2cSJim Jagielski break;
1574*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1575*b1cdbd2cSJim Jagielski nRet = dbtools::DBTypeConversion::toDouble(*(::com::sun::star::util::DateTime*)m_aValue.m_pValue);
1576*b1cdbd2cSJim Jagielski break;
1577*b1cdbd2cSJim Jagielski case DataType::BINARY:
1578*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1579*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1580*b1cdbd2cSJim Jagielski case DataType::BLOB:
1581*b1cdbd2cSJim Jagielski case DataType::CLOB:
1582*b1cdbd2cSJim Jagielski OSL_ASSERT(!"getDouble() for this type is not allowed!");
1583*b1cdbd2cSJim Jagielski break;
1584*b1cdbd2cSJim Jagielski case DataType::BIT:
1585*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1586*b1cdbd2cSJim Jagielski nRet = m_aValue.m_bBool;
1587*b1cdbd2cSJim Jagielski break;
1588*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1589*b1cdbd2cSJim Jagielski if ( m_bSigned )
1590*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt8;
1591*b1cdbd2cSJim Jagielski else
1592*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1593*b1cdbd2cSJim Jagielski break;
1594*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1595*b1cdbd2cSJim Jagielski if ( m_bSigned )
1596*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt16;
1597*b1cdbd2cSJim Jagielski else
1598*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt32;
1599*b1cdbd2cSJim Jagielski break;
1600*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1601*b1cdbd2cSJim Jagielski if ( m_bSigned )
1602*b1cdbd2cSJim Jagielski nRet = m_aValue.m_nInt32;
1603*b1cdbd2cSJim Jagielski else
1604*b1cdbd2cSJim Jagielski nRet = double(*(sal_Int64*)m_aValue.m_pValue);
1605*b1cdbd2cSJim Jagielski break;
1606*b1cdbd2cSJim Jagielski default:
1607*b1cdbd2cSJim Jagielski {
1608*b1cdbd2cSJim Jagielski Any aValue = getAny();
1609*b1cdbd2cSJim Jagielski aValue >>= nRet;
1610*b1cdbd2cSJim Jagielski break;
1611*b1cdbd2cSJim Jagielski }
1612*b1cdbd2cSJim Jagielski }
1613*b1cdbd2cSJim Jagielski }
1614*b1cdbd2cSJim Jagielski return nRet;
1615*b1cdbd2cSJim Jagielski }
1616*b1cdbd2cSJim Jagielski // -------------------------------------------------------------------------
setFromDouble(const double & _rVal,sal_Int32 _nDatatype)1617*b1cdbd2cSJim Jagielski void ORowSetValue::setFromDouble(const double& _rVal,sal_Int32 _nDatatype)
1618*b1cdbd2cSJim Jagielski {
1619*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::setFromDouble" );
1620*b1cdbd2cSJim Jagielski free();
1621*b1cdbd2cSJim Jagielski
1622*b1cdbd2cSJim Jagielski m_bNull = sal_False;
1623*b1cdbd2cSJim Jagielski switch(_nDatatype)
1624*b1cdbd2cSJim Jagielski {
1625*b1cdbd2cSJim Jagielski case DataType::CHAR:
1626*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1627*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1628*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1629*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1630*b1cdbd2cSJim Jagielski {
1631*b1cdbd2cSJim Jagielski ::rtl::OUString aVal = ::rtl::OUString::valueOf(_rVal);
1632*b1cdbd2cSJim Jagielski m_aValue.m_pString = aVal.pData;
1633*b1cdbd2cSJim Jagielski rtl_uString_acquire(m_aValue.m_pString);
1634*b1cdbd2cSJim Jagielski }
1635*b1cdbd2cSJim Jagielski break;
1636*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1637*b1cdbd2cSJim Jagielski if ( m_bSigned )
1638*b1cdbd2cSJim Jagielski {
1639*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new sal_Int64((sal_Int64)_rVal);
1640*b1cdbd2cSJim Jagielski TRACE_ALLOC( sal_Int64 )
1641*b1cdbd2cSJim Jagielski }
1642*b1cdbd2cSJim Jagielski else
1643*b1cdbd2cSJim Jagielski {
1644*b1cdbd2cSJim Jagielski ::rtl::OUString aVal = ::rtl::OUString::valueOf(_rVal);
1645*b1cdbd2cSJim Jagielski m_aValue.m_pString = aVal.pData;
1646*b1cdbd2cSJim Jagielski rtl_uString_acquire(m_aValue.m_pString);
1647*b1cdbd2cSJim Jagielski }
1648*b1cdbd2cSJim Jagielski break;
1649*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1650*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new float((float)_rVal);
1651*b1cdbd2cSJim Jagielski TRACE_ALLOC( float )
1652*b1cdbd2cSJim Jagielski break;
1653*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1654*b1cdbd2cSJim Jagielski case DataType::REAL:
1655*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new double(_rVal);
1656*b1cdbd2cSJim Jagielski TRACE_ALLOC( double )
1657*b1cdbd2cSJim Jagielski break;
1658*b1cdbd2cSJim Jagielski case DataType::DATE:
1659*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Date(dbtools::DBTypeConversion::toDate(_rVal));
1660*b1cdbd2cSJim Jagielski TRACE_ALLOC( Date )
1661*b1cdbd2cSJim Jagielski break;
1662*b1cdbd2cSJim Jagielski case DataType::TIME:
1663*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Time(dbtools::DBTypeConversion::toTime(_rVal));
1664*b1cdbd2cSJim Jagielski TRACE_ALLOC( Time )
1665*b1cdbd2cSJim Jagielski break;
1666*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1667*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new DateTime(dbtools::DBTypeConversion::toDateTime(_rVal));
1668*b1cdbd2cSJim Jagielski TRACE_ALLOC( DateTime )
1669*b1cdbd2cSJim Jagielski break;
1670*b1cdbd2cSJim Jagielski case DataType::BINARY:
1671*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1672*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1673*b1cdbd2cSJim Jagielski case DataType::BLOB:
1674*b1cdbd2cSJim Jagielski case DataType::CLOB:
1675*b1cdbd2cSJim Jagielski OSL_ASSERT(!"setFromDouble() for this type is not allowed!");
1676*b1cdbd2cSJim Jagielski break;
1677*b1cdbd2cSJim Jagielski case DataType::BIT:
1678*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1679*b1cdbd2cSJim Jagielski m_aValue.m_bBool = _rVal != 0.0;
1680*b1cdbd2cSJim Jagielski break;
1681*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1682*b1cdbd2cSJim Jagielski if ( m_bSigned )
1683*b1cdbd2cSJim Jagielski m_aValue.m_nInt8 = sal_Int8(_rVal);
1684*b1cdbd2cSJim Jagielski else
1685*b1cdbd2cSJim Jagielski m_aValue.m_nInt16 = sal_Int16(_rVal);
1686*b1cdbd2cSJim Jagielski break;
1687*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1688*b1cdbd2cSJim Jagielski if ( m_bSigned )
1689*b1cdbd2cSJim Jagielski m_aValue.m_nInt16 = sal_Int16(_rVal);
1690*b1cdbd2cSJim Jagielski else
1691*b1cdbd2cSJim Jagielski m_aValue.m_nInt32 = sal_Int32(_rVal);
1692*b1cdbd2cSJim Jagielski break;
1693*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1694*b1cdbd2cSJim Jagielski if ( m_bSigned )
1695*b1cdbd2cSJim Jagielski m_aValue.m_nInt32 = sal_Int32(_rVal);
1696*b1cdbd2cSJim Jagielski else
1697*b1cdbd2cSJim Jagielski {
1698*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new sal_Int64((sal_Int64)_rVal);
1699*b1cdbd2cSJim Jagielski TRACE_ALLOC( sal_Int64 )
1700*b1cdbd2cSJim Jagielski }
1701*b1cdbd2cSJim Jagielski break;
1702*b1cdbd2cSJim Jagielski default:
1703*b1cdbd2cSJim Jagielski {
1704*b1cdbd2cSJim Jagielski m_aValue.m_pValue = new Any(_rVal);
1705*b1cdbd2cSJim Jagielski break;
1706*b1cdbd2cSJim Jagielski }
1707*b1cdbd2cSJim Jagielski }
1708*b1cdbd2cSJim Jagielski m_eTypeKind = _nDatatype;
1709*b1cdbd2cSJim Jagielski }
1710*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getSequence() const1711*b1cdbd2cSJim Jagielski Sequence<sal_Int8> ORowSetValue::getSequence() const
1712*b1cdbd2cSJim Jagielski {
1713*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getSequence" );
1714*b1cdbd2cSJim Jagielski Sequence<sal_Int8> aSeq;
1715*b1cdbd2cSJim Jagielski if (!m_bNull)
1716*b1cdbd2cSJim Jagielski {
1717*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
1718*b1cdbd2cSJim Jagielski {
1719*b1cdbd2cSJim Jagielski case DataType::OBJECT:
1720*b1cdbd2cSJim Jagielski case DataType::CLOB:
1721*b1cdbd2cSJim Jagielski case DataType::BLOB:
1722*b1cdbd2cSJim Jagielski {
1723*b1cdbd2cSJim Jagielski Reference<XInputStream> xStream;
1724*b1cdbd2cSJim Jagielski const Any aValue = makeAny();
1725*b1cdbd2cSJim Jagielski if(aValue.hasValue())
1726*b1cdbd2cSJim Jagielski {
1727*b1cdbd2cSJim Jagielski Reference<XBlob> xBlob(aValue,UNO_QUERY);
1728*b1cdbd2cSJim Jagielski if ( xBlob.is() )
1729*b1cdbd2cSJim Jagielski xStream = xBlob->getBinaryStream();
1730*b1cdbd2cSJim Jagielski else
1731*b1cdbd2cSJim Jagielski {
1732*b1cdbd2cSJim Jagielski Reference<XClob> xClob(aValue,UNO_QUERY);
1733*b1cdbd2cSJim Jagielski if ( xClob.is() )
1734*b1cdbd2cSJim Jagielski xStream = xClob->getCharacterStream();
1735*b1cdbd2cSJim Jagielski }
1736*b1cdbd2cSJim Jagielski if(xStream.is())
1737*b1cdbd2cSJim Jagielski {
1738*b1cdbd2cSJim Jagielski const sal_uInt32 nBytesToRead = 65535;
1739*b1cdbd2cSJim Jagielski sal_uInt32 nRead;
1740*b1cdbd2cSJim Jagielski
1741*b1cdbd2cSJim Jagielski do
1742*b1cdbd2cSJim Jagielski {
1743*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Sequence< sal_Int8 > aReadSeq;
1744*b1cdbd2cSJim Jagielski
1745*b1cdbd2cSJim Jagielski nRead = xStream->readSomeBytes( aReadSeq, nBytesToRead );
1746*b1cdbd2cSJim Jagielski
1747*b1cdbd2cSJim Jagielski if( nRead )
1748*b1cdbd2cSJim Jagielski {
1749*b1cdbd2cSJim Jagielski const sal_uInt32 nOldLength = aSeq.getLength();
1750*b1cdbd2cSJim Jagielski aSeq.realloc( nOldLength + nRead );
1751*b1cdbd2cSJim Jagielski rtl_copyMemory( aSeq.getArray() + nOldLength, aReadSeq.getConstArray(), aReadSeq.getLength() );
1752*b1cdbd2cSJim Jagielski }
1753*b1cdbd2cSJim Jagielski }
1754*b1cdbd2cSJim Jagielski while( nBytesToRead == nRead );
1755*b1cdbd2cSJim Jagielski xStream->closeInput();
1756*b1cdbd2cSJim Jagielski }
1757*b1cdbd2cSJim Jagielski }
1758*b1cdbd2cSJim Jagielski }
1759*b1cdbd2cSJim Jagielski break;
1760*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1761*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1762*b1cdbd2cSJim Jagielski {
1763*b1cdbd2cSJim Jagielski ::rtl::OUString sVal(m_aValue.m_pString);
1764*b1cdbd2cSJim Jagielski aSeq = Sequence<sal_Int8>(reinterpret_cast<const sal_Int8*>(sVal.getStr()),sizeof(sal_Unicode)*sVal.getLength());
1765*b1cdbd2cSJim Jagielski }
1766*b1cdbd2cSJim Jagielski break;
1767*b1cdbd2cSJim Jagielski case DataType::BINARY:
1768*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1769*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1770*b1cdbd2cSJim Jagielski aSeq = *static_cast< Sequence<sal_Int8>*>(m_aValue.m_pValue);
1771*b1cdbd2cSJim Jagielski break;
1772*b1cdbd2cSJim Jagielski default:
1773*b1cdbd2cSJim Jagielski {
1774*b1cdbd2cSJim Jagielski Any aValue = getAny();
1775*b1cdbd2cSJim Jagielski aValue >>= aSeq;
1776*b1cdbd2cSJim Jagielski break;
1777*b1cdbd2cSJim Jagielski }
1778*b1cdbd2cSJim Jagielski }
1779*b1cdbd2cSJim Jagielski }
1780*b1cdbd2cSJim Jagielski return aSeq;
1781*b1cdbd2cSJim Jagielski
1782*b1cdbd2cSJim Jagielski }
1783*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getDate() const1784*b1cdbd2cSJim Jagielski ::com::sun::star::util::Date ORowSetValue::getDate() const
1785*b1cdbd2cSJim Jagielski {
1786*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getDate" );
1787*b1cdbd2cSJim Jagielski ::com::sun::star::util::Date aValue;
1788*b1cdbd2cSJim Jagielski if(!m_bNull)
1789*b1cdbd2cSJim Jagielski {
1790*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
1791*b1cdbd2cSJim Jagielski {
1792*b1cdbd2cSJim Jagielski case DataType::CHAR:
1793*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1794*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1795*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toDate(getString());
1796*b1cdbd2cSJim Jagielski break;
1797*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1798*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1799*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1800*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1801*b1cdbd2cSJim Jagielski case DataType::REAL:
1802*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toDate((double)*this);
1803*b1cdbd2cSJim Jagielski break;
1804*b1cdbd2cSJim Jagielski
1805*b1cdbd2cSJim Jagielski case DataType::DATE:
1806*b1cdbd2cSJim Jagielski aValue = *static_cast< ::com::sun::star::util::Date*>(m_aValue.m_pValue);
1807*b1cdbd2cSJim Jagielski break;
1808*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1809*b1cdbd2cSJim Jagielski {
1810*b1cdbd2cSJim Jagielski ::com::sun::star::util::DateTime* pDateTime = static_cast< ::com::sun::star::util::DateTime*>(m_aValue.m_pValue);
1811*b1cdbd2cSJim Jagielski aValue.Day = pDateTime->Day;
1812*b1cdbd2cSJim Jagielski aValue.Month = pDateTime->Month;
1813*b1cdbd2cSJim Jagielski aValue.Year = pDateTime->Year;
1814*b1cdbd2cSJim Jagielski }
1815*b1cdbd2cSJim Jagielski break;
1816*b1cdbd2cSJim Jagielski case DataType::BIT:
1817*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
1818*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1819*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1820*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1821*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1822*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toDate( double( sal_Int64( *this ) ) );
1823*b1cdbd2cSJim Jagielski break;
1824*b1cdbd2cSJim Jagielski
1825*b1cdbd2cSJim Jagielski case DataType::BLOB:
1826*b1cdbd2cSJim Jagielski case DataType::CLOB:
1827*b1cdbd2cSJim Jagielski case DataType::OBJECT:
1828*b1cdbd2cSJim Jagielski default:
1829*b1cdbd2cSJim Jagielski OSL_ENSURE( false, "ORowSetValue::getDate: cannot retrieve the data!" );
1830*b1cdbd2cSJim Jagielski // NO break!
1831*b1cdbd2cSJim Jagielski
1832*b1cdbd2cSJim Jagielski case DataType::BINARY:
1833*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
1834*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
1835*b1cdbd2cSJim Jagielski case DataType::TIME:
1836*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toDate( (double)0 );
1837*b1cdbd2cSJim Jagielski break;
1838*b1cdbd2cSJim Jagielski }
1839*b1cdbd2cSJim Jagielski }
1840*b1cdbd2cSJim Jagielski return aValue;
1841*b1cdbd2cSJim Jagielski }
1842*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getTime() const1843*b1cdbd2cSJim Jagielski ::com::sun::star::util::Time ORowSetValue::getTime() const
1844*b1cdbd2cSJim Jagielski {
1845*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getTime" );
1846*b1cdbd2cSJim Jagielski ::com::sun::star::util::Time aValue;
1847*b1cdbd2cSJim Jagielski if(!m_bNull)
1848*b1cdbd2cSJim Jagielski {
1849*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
1850*b1cdbd2cSJim Jagielski {
1851*b1cdbd2cSJim Jagielski case DataType::CHAR:
1852*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1853*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1854*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toTime(getString());
1855*b1cdbd2cSJim Jagielski break;
1856*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1857*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1858*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toTime((double)*this);
1859*b1cdbd2cSJim Jagielski break;
1860*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1861*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1862*b1cdbd2cSJim Jagielski case DataType::REAL:
1863*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toTime((double)*this);
1864*b1cdbd2cSJim Jagielski break;
1865*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1866*b1cdbd2cSJim Jagielski {
1867*b1cdbd2cSJim Jagielski ::com::sun::star::util::DateTime* pDateTime = static_cast< ::com::sun::star::util::DateTime*>(m_aValue.m_pValue);
1868*b1cdbd2cSJim Jagielski aValue.HundredthSeconds = pDateTime->HundredthSeconds;
1869*b1cdbd2cSJim Jagielski aValue.Seconds = pDateTime->Seconds;
1870*b1cdbd2cSJim Jagielski aValue.Minutes = pDateTime->Minutes;
1871*b1cdbd2cSJim Jagielski aValue.Hours = pDateTime->Hours;
1872*b1cdbd2cSJim Jagielski }
1873*b1cdbd2cSJim Jagielski break;
1874*b1cdbd2cSJim Jagielski case DataType::TIME:
1875*b1cdbd2cSJim Jagielski aValue = *static_cast< ::com::sun::star::util::Time*>(m_aValue.m_pValue);
1876*b1cdbd2cSJim Jagielski break;
1877*b1cdbd2cSJim Jagielski default:
1878*b1cdbd2cSJim Jagielski {
1879*b1cdbd2cSJim Jagielski Any aAnyValue = getAny();
1880*b1cdbd2cSJim Jagielski aAnyValue >>= aValue;
1881*b1cdbd2cSJim Jagielski break;
1882*b1cdbd2cSJim Jagielski }
1883*b1cdbd2cSJim Jagielski }
1884*b1cdbd2cSJim Jagielski }
1885*b1cdbd2cSJim Jagielski return aValue;
1886*b1cdbd2cSJim Jagielski }
1887*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
getDateTime() const1888*b1cdbd2cSJim Jagielski ::com::sun::star::util::DateTime ORowSetValue::getDateTime() const
1889*b1cdbd2cSJim Jagielski {
1890*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::getDateTime" );
1891*b1cdbd2cSJim Jagielski ::com::sun::star::util::DateTime aValue;
1892*b1cdbd2cSJim Jagielski if(!m_bNull)
1893*b1cdbd2cSJim Jagielski {
1894*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
1895*b1cdbd2cSJim Jagielski {
1896*b1cdbd2cSJim Jagielski case DataType::CHAR:
1897*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
1898*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
1899*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toDateTime(getString());
1900*b1cdbd2cSJim Jagielski break;
1901*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
1902*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
1903*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toDateTime((double)*this);
1904*b1cdbd2cSJim Jagielski break;
1905*b1cdbd2cSJim Jagielski case DataType::FLOAT:
1906*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
1907*b1cdbd2cSJim Jagielski case DataType::REAL:
1908*b1cdbd2cSJim Jagielski aValue = DBTypeConversion::toDateTime((double)*this);
1909*b1cdbd2cSJim Jagielski break;
1910*b1cdbd2cSJim Jagielski case DataType::DATE:
1911*b1cdbd2cSJim Jagielski {
1912*b1cdbd2cSJim Jagielski ::com::sun::star::util::Date* pDate = static_cast< ::com::sun::star::util::Date*>(m_aValue.m_pValue);
1913*b1cdbd2cSJim Jagielski aValue.Day = pDate->Day;
1914*b1cdbd2cSJim Jagielski aValue.Month = pDate->Month;
1915*b1cdbd2cSJim Jagielski aValue.Year = pDate->Year;
1916*b1cdbd2cSJim Jagielski }
1917*b1cdbd2cSJim Jagielski break;
1918*b1cdbd2cSJim Jagielski case DataType::TIME:
1919*b1cdbd2cSJim Jagielski {
1920*b1cdbd2cSJim Jagielski ::com::sun::star::util::Time* pTime = static_cast< ::com::sun::star::util::Time*>(m_aValue.m_pValue);
1921*b1cdbd2cSJim Jagielski aValue.HundredthSeconds = pTime->HundredthSeconds;
1922*b1cdbd2cSJim Jagielski aValue.Seconds = pTime->Seconds;
1923*b1cdbd2cSJim Jagielski aValue.Minutes = pTime->Minutes;
1924*b1cdbd2cSJim Jagielski aValue.Hours = pTime->Hours;
1925*b1cdbd2cSJim Jagielski }
1926*b1cdbd2cSJim Jagielski break;
1927*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
1928*b1cdbd2cSJim Jagielski aValue = *static_cast< ::com::sun::star::util::DateTime*>(m_aValue.m_pValue);
1929*b1cdbd2cSJim Jagielski break;
1930*b1cdbd2cSJim Jagielski default:
1931*b1cdbd2cSJim Jagielski {
1932*b1cdbd2cSJim Jagielski Any aAnyValue = getAny();
1933*b1cdbd2cSJim Jagielski aAnyValue >>= aValue;
1934*b1cdbd2cSJim Jagielski break;
1935*b1cdbd2cSJim Jagielski }
1936*b1cdbd2cSJim Jagielski }
1937*b1cdbd2cSJim Jagielski }
1938*b1cdbd2cSJim Jagielski return aValue;
1939*b1cdbd2cSJim Jagielski }
1940*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
setSigned(sal_Bool _bMod)1941*b1cdbd2cSJim Jagielski void ORowSetValue::setSigned(sal_Bool _bMod)
1942*b1cdbd2cSJim Jagielski {
1943*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::setSigned" );
1944*b1cdbd2cSJim Jagielski if ( m_bSigned != _bMod )
1945*b1cdbd2cSJim Jagielski {
1946*b1cdbd2cSJim Jagielski m_bSigned = _bMod;
1947*b1cdbd2cSJim Jagielski if ( !m_bNull )
1948*b1cdbd2cSJim Jagielski {
1949*b1cdbd2cSJim Jagielski sal_Int32 nType = m_eTypeKind;
1950*b1cdbd2cSJim Jagielski switch(m_eTypeKind)
1951*b1cdbd2cSJim Jagielski {
1952*b1cdbd2cSJim Jagielski case DataType::BIGINT:
1953*b1cdbd2cSJim Jagielski if ( m_bSigned ) // now we are signed, so we were unsigned and need to call getString()
1954*b1cdbd2cSJim Jagielski {
1955*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1956*b1cdbd2cSJim Jagielski const ::rtl::OUString sValue = getString();
1957*b1cdbd2cSJim Jagielski free();
1958*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1959*b1cdbd2cSJim Jagielski (*this) = sValue;
1960*b1cdbd2cSJim Jagielski }
1961*b1cdbd2cSJim Jagielski else
1962*b1cdbd2cSJim Jagielski {
1963*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1964*b1cdbd2cSJim Jagielski const sal_Int64 nValue = getLong();
1965*b1cdbd2cSJim Jagielski free();
1966*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1967*b1cdbd2cSJim Jagielski (*this) = nValue;
1968*b1cdbd2cSJim Jagielski }
1969*b1cdbd2cSJim Jagielski break;
1970*b1cdbd2cSJim Jagielski case DataType::TINYINT:
1971*b1cdbd2cSJim Jagielski if ( m_bSigned )
1972*b1cdbd2cSJim Jagielski (*this) = getInt8();
1973*b1cdbd2cSJim Jagielski else
1974*b1cdbd2cSJim Jagielski {
1975*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1976*b1cdbd2cSJim Jagielski (*this) = getInt16();
1977*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1978*b1cdbd2cSJim Jagielski }
1979*b1cdbd2cSJim Jagielski break;
1980*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
1981*b1cdbd2cSJim Jagielski if ( m_bSigned )
1982*b1cdbd2cSJim Jagielski (*this) = getInt16();
1983*b1cdbd2cSJim Jagielski else
1984*b1cdbd2cSJim Jagielski {
1985*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1986*b1cdbd2cSJim Jagielski (*this) = getInt32();
1987*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1988*b1cdbd2cSJim Jagielski }
1989*b1cdbd2cSJim Jagielski break;
1990*b1cdbd2cSJim Jagielski case DataType::INTEGER:
1991*b1cdbd2cSJim Jagielski if ( m_bSigned )
1992*b1cdbd2cSJim Jagielski (*this) = getInt32();
1993*b1cdbd2cSJim Jagielski else
1994*b1cdbd2cSJim Jagielski {
1995*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1996*b1cdbd2cSJim Jagielski (*this) = getLong();
1997*b1cdbd2cSJim Jagielski m_bSigned = !m_bSigned;
1998*b1cdbd2cSJim Jagielski }
1999*b1cdbd2cSJim Jagielski break;
2000*b1cdbd2cSJim Jagielski }
2001*b1cdbd2cSJim Jagielski m_eTypeKind = nType;
2002*b1cdbd2cSJim Jagielski }
2003*b1cdbd2cSJim Jagielski }
2004*b1cdbd2cSJim Jagielski }
2005*b1cdbd2cSJim Jagielski
2006*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
2007*b1cdbd2cSJim Jagielski namespace detail
2008*b1cdbd2cSJim Jagielski {
2009*b1cdbd2cSJim Jagielski class SAL_NO_VTABLE IValueSource
2010*b1cdbd2cSJim Jagielski {
2011*b1cdbd2cSJim Jagielski public:
2012*b1cdbd2cSJim Jagielski virtual ::rtl::OUString getString() const = 0;
2013*b1cdbd2cSJim Jagielski virtual sal_Bool getBoolean() const = 0;
2014*b1cdbd2cSJim Jagielski virtual sal_Int8 getByte() const = 0;
2015*b1cdbd2cSJim Jagielski virtual sal_Int16 getShort() const = 0;
2016*b1cdbd2cSJim Jagielski virtual sal_Int32 getInt() const = 0;
2017*b1cdbd2cSJim Jagielski virtual sal_Int64 getLong() const = 0;
2018*b1cdbd2cSJim Jagielski virtual float getFloat() const = 0;
2019*b1cdbd2cSJim Jagielski virtual double getDouble() const = 0;
2020*b1cdbd2cSJim Jagielski virtual Date getDate() const = 0;
2021*b1cdbd2cSJim Jagielski virtual Time getTime() const = 0;
2022*b1cdbd2cSJim Jagielski virtual DateTime getTimestamp() const = 0;
2023*b1cdbd2cSJim Jagielski virtual Sequence< sal_Int8 > getBytes() const = 0;
2024*b1cdbd2cSJim Jagielski virtual Reference< XInputStream > getBinaryStream() const = 0;
2025*b1cdbd2cSJim Jagielski virtual Reference< XInputStream > getCharacterStream() const = 0;
2026*b1cdbd2cSJim Jagielski virtual Reference< XBlob > getBlob() const = 0;
2027*b1cdbd2cSJim Jagielski virtual Reference< XClob > getClob() const = 0;
2028*b1cdbd2cSJim Jagielski virtual Any getObject() const = 0;
2029*b1cdbd2cSJim Jagielski virtual sal_Bool wasNull() const = 0;
2030*b1cdbd2cSJim Jagielski
~IValueSource()2031*b1cdbd2cSJim Jagielski virtual ~IValueSource() { }
2032*b1cdbd2cSJim Jagielski };
2033*b1cdbd2cSJim Jagielski
2034*b1cdbd2cSJim Jagielski class RowValue : public IValueSource
2035*b1cdbd2cSJim Jagielski {
2036*b1cdbd2cSJim Jagielski public:
RowValue(const Reference<XRow> & _xRow,const sal_Int32 _nPos)2037*b1cdbd2cSJim Jagielski RowValue( const Reference< XRow >& _xRow, const sal_Int32 _nPos )
2038*b1cdbd2cSJim Jagielski :m_xRow( _xRow )
2039*b1cdbd2cSJim Jagielski ,m_nPos( _nPos )
2040*b1cdbd2cSJim Jagielski {
2041*b1cdbd2cSJim Jagielski }
2042*b1cdbd2cSJim Jagielski
2043*b1cdbd2cSJim Jagielski // IValueSource
getString() const2044*b1cdbd2cSJim Jagielski virtual ::rtl::OUString getString() const { return m_xRow->getString( m_nPos ); };
getBoolean() const2045*b1cdbd2cSJim Jagielski virtual sal_Bool getBoolean() const { return m_xRow->getBoolean( m_nPos ); };
getByte() const2046*b1cdbd2cSJim Jagielski virtual sal_Int8 getByte() const { return m_xRow->getByte( m_nPos ); };
getShort() const2047*b1cdbd2cSJim Jagielski virtual sal_Int16 getShort() const { return m_xRow->getShort( m_nPos ); }
getInt() const2048*b1cdbd2cSJim Jagielski virtual sal_Int32 getInt() const { return m_xRow->getInt( m_nPos ); }
getLong() const2049*b1cdbd2cSJim Jagielski virtual sal_Int64 getLong() const { return m_xRow->getLong( m_nPos ); }
getFloat() const2050*b1cdbd2cSJim Jagielski virtual float getFloat() const { return m_xRow->getFloat( m_nPos ); };
getDouble() const2051*b1cdbd2cSJim Jagielski virtual double getDouble() const { return m_xRow->getDouble( m_nPos ); };
getDate() const2052*b1cdbd2cSJim Jagielski virtual Date getDate() const { return m_xRow->getDate( m_nPos ); };
getTime() const2053*b1cdbd2cSJim Jagielski virtual Time getTime() const { return m_xRow->getTime( m_nPos ); };
getTimestamp() const2054*b1cdbd2cSJim Jagielski virtual DateTime getTimestamp() const { return m_xRow->getTimestamp( m_nPos ); };
getBytes() const2055*b1cdbd2cSJim Jagielski virtual Sequence< sal_Int8 > getBytes() const { return m_xRow->getBytes( m_nPos ); };
getBinaryStream() const2056*b1cdbd2cSJim Jagielski virtual Reference< XInputStream > getBinaryStream() const { return m_xRow->getBinaryStream( m_nPos ); };
getCharacterStream() const2057*b1cdbd2cSJim Jagielski virtual Reference< XInputStream > getCharacterStream() const { return m_xRow->getCharacterStream( m_nPos ); };
getBlob() const2058*b1cdbd2cSJim Jagielski virtual Reference< XBlob > getBlob() const { return m_xRow->getBlob( m_nPos ); };
getClob() const2059*b1cdbd2cSJim Jagielski virtual Reference< XClob > getClob() const { return m_xRow->getClob( m_nPos ); };
getObject() const2060*b1cdbd2cSJim Jagielski virtual Any getObject() const { return m_xRow->getObject( m_nPos ,NULL); };
wasNull() const2061*b1cdbd2cSJim Jagielski virtual sal_Bool wasNull() const { return m_xRow->wasNull( ); };
2062*b1cdbd2cSJim Jagielski
2063*b1cdbd2cSJim Jagielski private:
2064*b1cdbd2cSJim Jagielski const Reference< XRow > m_xRow;
2065*b1cdbd2cSJim Jagielski const sal_Int32 m_nPos;
2066*b1cdbd2cSJim Jagielski };
2067*b1cdbd2cSJim Jagielski
2068*b1cdbd2cSJim Jagielski class ColumnValue : public IValueSource
2069*b1cdbd2cSJim Jagielski {
2070*b1cdbd2cSJim Jagielski public:
ColumnValue(const Reference<XColumn> & _rxColumn)2071*b1cdbd2cSJim Jagielski ColumnValue( const Reference< XColumn >& _rxColumn )
2072*b1cdbd2cSJim Jagielski :m_xColumn( _rxColumn )
2073*b1cdbd2cSJim Jagielski {
2074*b1cdbd2cSJim Jagielski }
2075*b1cdbd2cSJim Jagielski
2076*b1cdbd2cSJim Jagielski // IValueSource
getString() const2077*b1cdbd2cSJim Jagielski virtual ::rtl::OUString getString() const { return m_xColumn->getString(); };
getBoolean() const2078*b1cdbd2cSJim Jagielski virtual sal_Bool getBoolean() const { return m_xColumn->getBoolean(); };
getByte() const2079*b1cdbd2cSJim Jagielski virtual sal_Int8 getByte() const { return m_xColumn->getByte(); };
getShort() const2080*b1cdbd2cSJim Jagielski virtual sal_Int16 getShort() const { return m_xColumn->getShort(); }
getInt() const2081*b1cdbd2cSJim Jagielski virtual sal_Int32 getInt() const { return m_xColumn->getInt(); }
getLong() const2082*b1cdbd2cSJim Jagielski virtual sal_Int64 getLong() const { return m_xColumn->getLong(); }
getFloat() const2083*b1cdbd2cSJim Jagielski virtual float getFloat() const { return m_xColumn->getFloat(); };
getDouble() const2084*b1cdbd2cSJim Jagielski virtual double getDouble() const { return m_xColumn->getDouble(); };
getDate() const2085*b1cdbd2cSJim Jagielski virtual Date getDate() const { return m_xColumn->getDate(); };
getTime() const2086*b1cdbd2cSJim Jagielski virtual Time getTime() const { return m_xColumn->getTime(); };
getTimestamp() const2087*b1cdbd2cSJim Jagielski virtual DateTime getTimestamp() const { return m_xColumn->getTimestamp(); };
getBytes() const2088*b1cdbd2cSJim Jagielski virtual Sequence< sal_Int8 > getBytes() const { return m_xColumn->getBytes(); };
getBinaryStream() const2089*b1cdbd2cSJim Jagielski virtual Reference< XInputStream > getBinaryStream() const { return m_xColumn->getBinaryStream(); };
getCharacterStream() const2090*b1cdbd2cSJim Jagielski virtual Reference< XInputStream > getCharacterStream() const { return m_xColumn->getCharacterStream(); };
getBlob() const2091*b1cdbd2cSJim Jagielski virtual Reference< XBlob > getBlob() const { return m_xColumn->getBlob(); };
getClob() const2092*b1cdbd2cSJim Jagielski virtual Reference< XClob > getClob() const { return m_xColumn->getClob(); };
getObject() const2093*b1cdbd2cSJim Jagielski virtual Any getObject() const { return m_xColumn->getObject( NULL ); };
wasNull() const2094*b1cdbd2cSJim Jagielski virtual sal_Bool wasNull() const { return m_xColumn->wasNull( ); };
2095*b1cdbd2cSJim Jagielski
2096*b1cdbd2cSJim Jagielski private:
2097*b1cdbd2cSJim Jagielski const Reference< XColumn > m_xColumn;
2098*b1cdbd2cSJim Jagielski };
2099*b1cdbd2cSJim Jagielski }
2100*b1cdbd2cSJim Jagielski
2101*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
fill(const sal_Int32 _nType,const Reference<XColumn> & _rxColumn)2102*b1cdbd2cSJim Jagielski void ORowSetValue::fill( const sal_Int32 _nType, const Reference< XColumn >& _rxColumn )
2103*b1cdbd2cSJim Jagielski {
2104*b1cdbd2cSJim Jagielski detail::ColumnValue aColumnValue( _rxColumn );
2105*b1cdbd2cSJim Jagielski impl_fill( _nType, sal_True, aColumnValue );
2106*b1cdbd2cSJim Jagielski }
2107*b1cdbd2cSJim Jagielski
2108*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
fill(sal_Int32 _nPos,sal_Int32 _nType,sal_Bool _bNullable,const Reference<XRow> & _xRow)2109*b1cdbd2cSJim Jagielski void ORowSetValue::fill( sal_Int32 _nPos, sal_Int32 _nType, sal_Bool _bNullable, const Reference< XRow>& _xRow )
2110*b1cdbd2cSJim Jagielski {
2111*b1cdbd2cSJim Jagielski detail::RowValue aRowValue( _xRow, _nPos );
2112*b1cdbd2cSJim Jagielski impl_fill( _nType, _bNullable, aRowValue );
2113*b1cdbd2cSJim Jagielski }
2114*b1cdbd2cSJim Jagielski
2115*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
fill(sal_Int32 _nPos,sal_Int32 _nType,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XRow> & _xRow)2116*b1cdbd2cSJim Jagielski void ORowSetValue::fill(sal_Int32 _nPos,
2117*b1cdbd2cSJim Jagielski sal_Int32 _nType,
2118*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow>& _xRow)
2119*b1cdbd2cSJim Jagielski {
2120*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::fill (1)" );
2121*b1cdbd2cSJim Jagielski fill(_nPos,_nType,sal_True,_xRow);
2122*b1cdbd2cSJim Jagielski }
2123*b1cdbd2cSJim Jagielski
2124*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
impl_fill(const sal_Int32 _nType,sal_Bool _bNullable,const detail::IValueSource & _rValueSource)2125*b1cdbd2cSJim Jagielski void ORowSetValue::impl_fill( const sal_Int32 _nType, sal_Bool _bNullable, const detail::IValueSource& _rValueSource )
2126*b1cdbd2cSJim Jagielski
2127*b1cdbd2cSJim Jagielski {
2128*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::fill (2)" );
2129*b1cdbd2cSJim Jagielski sal_Bool bReadData = sal_True;
2130*b1cdbd2cSJim Jagielski switch(_nType)
2131*b1cdbd2cSJim Jagielski {
2132*b1cdbd2cSJim Jagielski case DataType::CHAR:
2133*b1cdbd2cSJim Jagielski case DataType::VARCHAR:
2134*b1cdbd2cSJim Jagielski case DataType::DECIMAL:
2135*b1cdbd2cSJim Jagielski case DataType::NUMERIC:
2136*b1cdbd2cSJim Jagielski case DataType::LONGVARCHAR:
2137*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getString();
2138*b1cdbd2cSJim Jagielski break;
2139*b1cdbd2cSJim Jagielski case DataType::BIGINT:
2140*b1cdbd2cSJim Jagielski if ( isSigned() )
2141*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getLong();
2142*b1cdbd2cSJim Jagielski else
2143*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getString();
2144*b1cdbd2cSJim Jagielski break;
2145*b1cdbd2cSJim Jagielski case DataType::FLOAT:
2146*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getFloat();
2147*b1cdbd2cSJim Jagielski break;
2148*b1cdbd2cSJim Jagielski case DataType::DOUBLE:
2149*b1cdbd2cSJim Jagielski case DataType::REAL:
2150*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getDouble();
2151*b1cdbd2cSJim Jagielski break;
2152*b1cdbd2cSJim Jagielski case DataType::DATE:
2153*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getDate();
2154*b1cdbd2cSJim Jagielski break;
2155*b1cdbd2cSJim Jagielski case DataType::TIME:
2156*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getTime();
2157*b1cdbd2cSJim Jagielski break;
2158*b1cdbd2cSJim Jagielski case DataType::TIMESTAMP:
2159*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getTimestamp();
2160*b1cdbd2cSJim Jagielski break;
2161*b1cdbd2cSJim Jagielski case DataType::BINARY:
2162*b1cdbd2cSJim Jagielski case DataType::VARBINARY:
2163*b1cdbd2cSJim Jagielski case DataType::LONGVARBINARY:
2164*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getBytes();
2165*b1cdbd2cSJim Jagielski break;
2166*b1cdbd2cSJim Jagielski case DataType::BIT:
2167*b1cdbd2cSJim Jagielski case DataType::BOOLEAN:
2168*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getBoolean();
2169*b1cdbd2cSJim Jagielski break;
2170*b1cdbd2cSJim Jagielski case DataType::TINYINT:
2171*b1cdbd2cSJim Jagielski if ( isSigned() )
2172*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getByte();
2173*b1cdbd2cSJim Jagielski else
2174*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getShort();
2175*b1cdbd2cSJim Jagielski break;
2176*b1cdbd2cSJim Jagielski case DataType::SMALLINT:
2177*b1cdbd2cSJim Jagielski if ( isSigned() )
2178*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getShort();
2179*b1cdbd2cSJim Jagielski else
2180*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getInt();
2181*b1cdbd2cSJim Jagielski break;
2182*b1cdbd2cSJim Jagielski case DataType::INTEGER:
2183*b1cdbd2cSJim Jagielski if ( isSigned() )
2184*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getInt();
2185*b1cdbd2cSJim Jagielski else
2186*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getLong();
2187*b1cdbd2cSJim Jagielski break;
2188*b1cdbd2cSJim Jagielski case DataType::CLOB:
2189*b1cdbd2cSJim Jagielski (*this) = ::com::sun::star::uno::makeAny(_rValueSource.getClob());
2190*b1cdbd2cSJim Jagielski setTypeKind(DataType::CLOB);
2191*b1cdbd2cSJim Jagielski break;
2192*b1cdbd2cSJim Jagielski case DataType::BLOB:
2193*b1cdbd2cSJim Jagielski (*this) = ::com::sun::star::uno::makeAny(_rValueSource.getBlob());
2194*b1cdbd2cSJim Jagielski setTypeKind(DataType::BLOB);
2195*b1cdbd2cSJim Jagielski break;
2196*b1cdbd2cSJim Jagielski case DataType::OTHER:
2197*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getObject();
2198*b1cdbd2cSJim Jagielski setTypeKind(DataType::OTHER);
2199*b1cdbd2cSJim Jagielski break;
2200*b1cdbd2cSJim Jagielski default:
2201*b1cdbd2cSJim Jagielski OSL_ENSURE( false, "ORowSetValue::fill: unsupported type!" );
2202*b1cdbd2cSJim Jagielski (*this) = _rValueSource.getObject();
2203*b1cdbd2cSJim Jagielski break;
2204*b1cdbd2cSJim Jagielski }
2205*b1cdbd2cSJim Jagielski if ( bReadData && _bNullable && _rValueSource.wasNull() )
2206*b1cdbd2cSJim Jagielski setNull();
2207*b1cdbd2cSJim Jagielski setTypeKind(_nType);
2208*b1cdbd2cSJim Jagielski }
2209*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
fill(const Any & _rValue)2210*b1cdbd2cSJim Jagielski void ORowSetValue::fill(const Any& _rValue)
2211*b1cdbd2cSJim Jagielski {
2212*b1cdbd2cSJim Jagielski RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbtools", "Ocke.Janssen@sun.com", "ORowSetValue::fill (3)" );
2213*b1cdbd2cSJim Jagielski switch (_rValue.getValueType().getTypeClass())
2214*b1cdbd2cSJim Jagielski {
2215*b1cdbd2cSJim Jagielski case TypeClass_VOID:
2216*b1cdbd2cSJim Jagielski setNull();
2217*b1cdbd2cSJim Jagielski break;
2218*b1cdbd2cSJim Jagielski case TypeClass_BOOLEAN:
2219*b1cdbd2cSJim Jagielski {
2220*b1cdbd2cSJim Jagielski sal_Bool bValue( sal_False );
2221*b1cdbd2cSJim Jagielski _rValue >>= bValue;
2222*b1cdbd2cSJim Jagielski (*this) = bValue;
2223*b1cdbd2cSJim Jagielski break;
2224*b1cdbd2cSJim Jagielski }
2225*b1cdbd2cSJim Jagielski case TypeClass_CHAR:
2226*b1cdbd2cSJim Jagielski {
2227*b1cdbd2cSJim Jagielski sal_Unicode aDummy(0);
2228*b1cdbd2cSJim Jagielski _rValue >>= aDummy;
2229*b1cdbd2cSJim Jagielski (*this) = ::rtl::OUString(aDummy);
2230*b1cdbd2cSJim Jagielski break;
2231*b1cdbd2cSJim Jagielski }
2232*b1cdbd2cSJim Jagielski case TypeClass_STRING:
2233*b1cdbd2cSJim Jagielski {
2234*b1cdbd2cSJim Jagielski ::rtl::OUString sDummy;
2235*b1cdbd2cSJim Jagielski _rValue >>= sDummy;
2236*b1cdbd2cSJim Jagielski (*this) = sDummy;
2237*b1cdbd2cSJim Jagielski break;
2238*b1cdbd2cSJim Jagielski }
2239*b1cdbd2cSJim Jagielski case TypeClass_FLOAT:
2240*b1cdbd2cSJim Jagielski {
2241*b1cdbd2cSJim Jagielski float aDummy(0.0);
2242*b1cdbd2cSJim Jagielski _rValue >>= aDummy;
2243*b1cdbd2cSJim Jagielski (*this) = aDummy;
2244*b1cdbd2cSJim Jagielski break;
2245*b1cdbd2cSJim Jagielski }
2246*b1cdbd2cSJim Jagielski case TypeClass_DOUBLE:
2247*b1cdbd2cSJim Jagielski {
2248*b1cdbd2cSJim Jagielski double aDummy(0.0);
2249*b1cdbd2cSJim Jagielski _rValue >>= aDummy;
2250*b1cdbd2cSJim Jagielski (*this) = aDummy;
2251*b1cdbd2cSJim Jagielski break;
2252*b1cdbd2cSJim Jagielski }
2253*b1cdbd2cSJim Jagielski case TypeClass_BYTE:
2254*b1cdbd2cSJim Jagielski {
2255*b1cdbd2cSJim Jagielski sal_Int8 aDummy(0);
2256*b1cdbd2cSJim Jagielski _rValue >>= aDummy;
2257*b1cdbd2cSJim Jagielski (*this) = aDummy;
2258*b1cdbd2cSJim Jagielski break;
2259*b1cdbd2cSJim Jagielski }
2260*b1cdbd2cSJim Jagielski case TypeClass_SHORT:
2261*b1cdbd2cSJim Jagielski {
2262*b1cdbd2cSJim Jagielski sal_Int16 aDummy(0);
2263*b1cdbd2cSJim Jagielski _rValue >>= aDummy;
2264*b1cdbd2cSJim Jagielski (*this) = aDummy;
2265*b1cdbd2cSJim Jagielski break;
2266*b1cdbd2cSJim Jagielski }
2267*b1cdbd2cSJim Jagielski case TypeClass_LONG:
2268*b1cdbd2cSJim Jagielski {
2269*b1cdbd2cSJim Jagielski sal_Int32 aDummy(0);
2270*b1cdbd2cSJim Jagielski _rValue >>= aDummy;
2271*b1cdbd2cSJim Jagielski (*this) = aDummy;
2272*b1cdbd2cSJim Jagielski break;
2273*b1cdbd2cSJim Jagielski }
2274*b1cdbd2cSJim Jagielski case TypeClass_UNSIGNED_SHORT:
2275*b1cdbd2cSJim Jagielski {
2276*b1cdbd2cSJim Jagielski sal_uInt16 nValue(0);
2277*b1cdbd2cSJim Jagielski _rValue >>= nValue;
2278*b1cdbd2cSJim Jagielski (*this) = static_cast<sal_Int32>(nValue);
2279*b1cdbd2cSJim Jagielski setSigned(sal_False);
2280*b1cdbd2cSJim Jagielski break;
2281*b1cdbd2cSJim Jagielski }
2282*b1cdbd2cSJim Jagielski case TypeClass_HYPER:
2283*b1cdbd2cSJim Jagielski {
2284*b1cdbd2cSJim Jagielski sal_Int64 nValue(0);
2285*b1cdbd2cSJim Jagielski _rValue >>= nValue;
2286*b1cdbd2cSJim Jagielski (*this) = nValue;
2287*b1cdbd2cSJim Jagielski break;
2288*b1cdbd2cSJim Jagielski }
2289*b1cdbd2cSJim Jagielski case TypeClass_UNSIGNED_HYPER:
2290*b1cdbd2cSJim Jagielski {
2291*b1cdbd2cSJim Jagielski sal_uInt64 nValue(0);
2292*b1cdbd2cSJim Jagielski _rValue >>= nValue;
2293*b1cdbd2cSJim Jagielski (*this) = static_cast<sal_Int64>(nValue);
2294*b1cdbd2cSJim Jagielski setSigned(sal_False);
2295*b1cdbd2cSJim Jagielski break;
2296*b1cdbd2cSJim Jagielski }
2297*b1cdbd2cSJim Jagielski case TypeClass_UNSIGNED_LONG:
2298*b1cdbd2cSJim Jagielski {
2299*b1cdbd2cSJim Jagielski sal_uInt32 nValue(0);
2300*b1cdbd2cSJim Jagielski _rValue >>= nValue;
2301*b1cdbd2cSJim Jagielski (*this) = static_cast<sal_Int64>(nValue);
2302*b1cdbd2cSJim Jagielski setSigned(sal_False);
2303*b1cdbd2cSJim Jagielski break;
2304*b1cdbd2cSJim Jagielski }
2305*b1cdbd2cSJim Jagielski case TypeClass_ENUM:
2306*b1cdbd2cSJim Jagielski {
2307*b1cdbd2cSJim Jagielski sal_Int32 enumValue( 0 );
2308*b1cdbd2cSJim Jagielski ::cppu::enum2int( enumValue, _rValue );
2309*b1cdbd2cSJim Jagielski (*this) = enumValue;
2310*b1cdbd2cSJim Jagielski }
2311*b1cdbd2cSJim Jagielski break;
2312*b1cdbd2cSJim Jagielski
2313*b1cdbd2cSJim Jagielski case TypeClass_SEQUENCE:
2314*b1cdbd2cSJim Jagielski {
2315*b1cdbd2cSJim Jagielski Sequence<sal_Int8> aDummy;
2316*b1cdbd2cSJim Jagielski if ( _rValue >>= aDummy )
2317*b1cdbd2cSJim Jagielski (*this) = aDummy;
2318*b1cdbd2cSJim Jagielski else
2319*b1cdbd2cSJim Jagielski OSL_ENSURE( false, "ORowSetValue::fill: unsupported sequence type!" );
2320*b1cdbd2cSJim Jagielski break;
2321*b1cdbd2cSJim Jagielski }
2322*b1cdbd2cSJim Jagielski
2323*b1cdbd2cSJim Jagielski case TypeClass_STRUCT:
2324*b1cdbd2cSJim Jagielski {
2325*b1cdbd2cSJim Jagielski ::com::sun::star::util::Date aDate;
2326*b1cdbd2cSJim Jagielski ::com::sun::star::util::Time aTime;
2327*b1cdbd2cSJim Jagielski ::com::sun::star::util::DateTime aDateTime;
2328*b1cdbd2cSJim Jagielski if ( _rValue >>= aDate )
2329*b1cdbd2cSJim Jagielski {
2330*b1cdbd2cSJim Jagielski (*this) = aDate;
2331*b1cdbd2cSJim Jagielski }
2332*b1cdbd2cSJim Jagielski else if ( _rValue >>= aTime )
2333*b1cdbd2cSJim Jagielski {
2334*b1cdbd2cSJim Jagielski (*this) = aTime;
2335*b1cdbd2cSJim Jagielski }
2336*b1cdbd2cSJim Jagielski else if ( _rValue >>= aDateTime )
2337*b1cdbd2cSJim Jagielski {
2338*b1cdbd2cSJim Jagielski (*this) = aDateTime;
2339*b1cdbd2cSJim Jagielski }
2340*b1cdbd2cSJim Jagielski else
2341*b1cdbd2cSJim Jagielski OSL_ENSURE( false, "ORowSetValue::fill: unsupported structure!" );
2342*b1cdbd2cSJim Jagielski
2343*b1cdbd2cSJim Jagielski break;
2344*b1cdbd2cSJim Jagielski }
2345*b1cdbd2cSJim Jagielski case TypeClass_INTERFACE:
2346*b1cdbd2cSJim Jagielski {
2347*b1cdbd2cSJim Jagielski Reference< XClob > xClob;
2348*b1cdbd2cSJim Jagielski if ( _rValue >>= xClob )
2349*b1cdbd2cSJim Jagielski {
2350*b1cdbd2cSJim Jagielski (*this) = _rValue;
2351*b1cdbd2cSJim Jagielski setTypeKind(DataType::CLOB);
2352*b1cdbd2cSJim Jagielski }
2353*b1cdbd2cSJim Jagielski else
2354*b1cdbd2cSJim Jagielski {
2355*b1cdbd2cSJim Jagielski Reference< XBlob > xBlob;
2356*b1cdbd2cSJim Jagielski if ( _rValue >>= xBlob )
2357*b1cdbd2cSJim Jagielski {
2358*b1cdbd2cSJim Jagielski (*this) = _rValue;
2359*b1cdbd2cSJim Jagielski setTypeKind(DataType::BLOB);
2360*b1cdbd2cSJim Jagielski }
2361*b1cdbd2cSJim Jagielski else
2362*b1cdbd2cSJim Jagielski {
2363*b1cdbd2cSJim Jagielski (*this) = _rValue;
2364*b1cdbd2cSJim Jagielski }
2365*b1cdbd2cSJim Jagielski }
2366*b1cdbd2cSJim Jagielski }
2367*b1cdbd2cSJim Jagielski break;
2368*b1cdbd2cSJim Jagielski
2369*b1cdbd2cSJim Jagielski default:
2370*b1cdbd2cSJim Jagielski OSL_ENSURE(0,"Unknown type");
2371*b1cdbd2cSJim Jagielski break;
2372*b1cdbd2cSJim Jagielski }
2373*b1cdbd2cSJim Jagielski }
2374*b1cdbd2cSJim Jagielski
2375*b1cdbd2cSJim Jagielski } // namespace connectivity
2376