1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _UCBHELPER_PROPERTYVALUESET_HXX
25 #define _UCBHELPER_PROPERTYVALUESET_HXX
26 
27 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
28 #include <com/sun/star/lang/XTypeProvider.hpp>
29 #include <com/sun/star/sdbc/XColumnLocate.hpp>
30 #include <com/sun/star/sdbc/XRow.hpp>
31 #include <com/sun/star/beans/Property.hpp>
32 #include <cppuhelper/weak.hxx>
33 
34 #include "osl/mutex.hxx"
35 #include <ucbhelper/macros.hxx>
36 #include "ucbhelper/ucbhelperdllapi.h"
37 
38 namespace com { namespace sun { namespace star { namespace script {
39 	class XTypeConverter;
40 } } } }
41 
42 namespace com { namespace sun { namespace star { namespace beans {
43 	struct PropertyValue;
44 	class XPropertySet;
45 } } } }
46 
47 namespace ucbhelper {
48 
49 class PropertyValues;
50 
51 //=========================================================================
52 
53 /**
54   * This class implements the interface XRow. After construction of a valueset
55   * the user can append properties ( incl. its values ) to the set. This class
56   * is useful when implementing the command "getPropertyValues", because the
57   * values to return can easyly appended to a valueset object. That object can
58   * directly be returned by the implementation of the command.
59   */
60 class UCBHELPER_DLLPUBLIC PropertyValueSet :
61 				public cppu::OWeakObject,
62 				public com::sun::star::lang::XTypeProvider,
63 				public com::sun::star::sdbc::XRow,
64 				public com::sun::star::sdbc::XColumnLocate
65 {
66 	com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >
67 									 m_xSMgr;
68 	com::sun::star::uno::Reference< com::sun::star::script::XTypeConverter >
69 									 m_xTypeConverter;
70 	osl::Mutex		m_aMutex;
71 	PropertyValues* m_pValues;
72 	sal_Bool 		m_bWasNull;
73 	sal_Bool    	m_bTriedToGetTypeConverter;
74 
75 private:
76 	UCBHELPER_DLLPRIVATE const com::sun::star::uno::Reference<
77 			com::sun::star::script::XTypeConverter >&
78 	getTypeConverter();
79 
80 public:
81 	PropertyValueSet(
82 			const com::sun::star::uno::Reference<
83 				com::sun::star::lang::XMultiServiceFactory >& rxSMgr );
84 	PropertyValueSet(
85 			const com::sun::star::uno::Reference<
86 				com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
87 			const com::sun::star::uno::Sequence<
88 				com::sun::star::beans::PropertyValue >& rValues );
89 	virtual ~PropertyValueSet();
90 
91 	// XInterface
92 	XINTERFACE_DECL()
93 
94 	// XTypeProvider
95 	XTYPEPROVIDER_DECL()
96 
97 	// XRow
98     virtual sal_Bool SAL_CALL
99 	wasNull()
100 		throw( ::com::sun::star::sdbc::SQLException,
101 			   ::com::sun::star::uno::RuntimeException );
102     virtual ::rtl::OUString SAL_CALL
103 	getString( sal_Int32 columnIndex )
104 		throw( ::com::sun::star::sdbc::SQLException,
105 			   ::com::sun::star::uno::RuntimeException );
106     virtual sal_Bool SAL_CALL
107 	getBoolean( sal_Int32 columnIndex )
108 		throw( ::com::sun::star::sdbc::SQLException,
109 			   ::com::sun::star::uno::RuntimeException );
110     virtual sal_Int8 SAL_CALL
111 	getByte( sal_Int32 columnIndex )
112 		throw( ::com::sun::star::sdbc::SQLException,
113 			   ::com::sun::star::uno::RuntimeException );
114     virtual sal_Int16 SAL_CALL
115 	getShort( sal_Int32 columnIndex )
116 		throw( ::com::sun::star::sdbc::SQLException,
117 			   ::com::sun::star::uno::RuntimeException );
118     virtual sal_Int32 SAL_CALL
119 	getInt( sal_Int32 columnIndex )
120 		throw( ::com::sun::star::sdbc::SQLException,
121 			   ::com::sun::star::uno::RuntimeException );
122     virtual sal_Int64 SAL_CALL
123 	getLong( sal_Int32 columnIndex )
124 		throw( ::com::sun::star::sdbc::SQLException,
125 			   ::com::sun::star::uno::RuntimeException );
126     virtual float SAL_CALL
127 	getFloat( sal_Int32 columnIndex )
128 		throw( ::com::sun::star::sdbc::SQLException,
129 			   ::com::sun::star::uno::RuntimeException );
130     virtual double SAL_CALL
131 	getDouble( sal_Int32 columnIndex )
132 		throw( ::com::sun::star::sdbc::SQLException,
133 			   ::com::sun::star::uno::RuntimeException );
134     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL
135 	getBytes( sal_Int32 columnIndex )
136 		throw( ::com::sun::star::sdbc::SQLException,
137 			   ::com::sun::star::uno::RuntimeException );
138     virtual ::com::sun::star::util::Date SAL_CALL
139 	getDate( sal_Int32 columnIndex )
140 		throw( ::com::sun::star::sdbc::SQLException,
141 			   ::com::sun::star::uno::RuntimeException );
142     virtual ::com::sun::star::util::Time SAL_CALL
143 	getTime( sal_Int32 columnIndex )
144 		throw( ::com::sun::star::sdbc::SQLException,
145 			   ::com::sun::star::uno::RuntimeException );
146     virtual ::com::sun::star::util::DateTime SAL_CALL
147 	getTimestamp( sal_Int32 columnIndex )
148 		throw( ::com::sun::star::sdbc::SQLException,
149 			   ::com::sun::star::uno::RuntimeException );
150     virtual ::com::sun::star::uno::Reference<
151 				::com::sun::star::io::XInputStream > SAL_CALL
152 	getBinaryStream( sal_Int32 columnIndex )
153 		throw( ::com::sun::star::sdbc::SQLException,
154 			   ::com::sun::star::uno::RuntimeException );
155     virtual ::com::sun::star::uno::Reference<
156 				::com::sun::star::io::XInputStream > SAL_CALL
157 	getCharacterStream( sal_Int32 columnIndex )
158 		throw( ::com::sun::star::sdbc::SQLException,
159 			   ::com::sun::star::uno::RuntimeException );
160     virtual ::com::sun::star::uno::Any SAL_CALL
161 	getObject( sal_Int32 columnIndex,
162 			   const ::com::sun::star::uno::Reference<
163 			   	::com::sun::star::container::XNameAccess >& typeMap )
164 		throw( ::com::sun::star::sdbc::SQLException,
165 			   ::com::sun::star::uno::RuntimeException );
166     virtual ::com::sun::star::uno::Reference<
167 				::com::sun::star::sdbc::XRef > SAL_CALL
168 	getRef( sal_Int32 columnIndex )
169 		throw( ::com::sun::star::sdbc::SQLException,
170 			   ::com::sun::star::uno::RuntimeException );
171     virtual ::com::sun::star::uno::Reference<
172 				::com::sun::star::sdbc::XBlob > SAL_CALL
173 	getBlob( sal_Int32 columnIndex )
174 		throw( ::com::sun::star::sdbc::SQLException,
175 			   ::com::sun::star::uno::RuntimeException );
176     virtual ::com::sun::star::uno::Reference<
177 				::com::sun::star::sdbc::XClob > SAL_CALL
178 	getClob( sal_Int32 columnIndex )
179 		throw( ::com::sun::star::sdbc::SQLException,
180 			   ::com::sun::star::uno::RuntimeException );
181     virtual ::com::sun::star::uno::Reference<
182 				::com::sun::star::sdbc::XArray > SAL_CALL
183 	getArray( sal_Int32 columnIndex )
184 		throw( ::com::sun::star::sdbc::SQLException,
185 			   ::com::sun::star::uno::RuntimeException );
186 
187 	// XColumnLocate
188     virtual sal_Int32 SAL_CALL
189 	findColumn( const ::rtl::OUString& columnName )
190 		throw( ::com::sun::star::sdbc::SQLException,
191 			   ::com::sun::star::uno::RuntimeException );
192 
193 	//////////////////////////////////////////////////////////////////////
194 	// Non-interface methods
195 	//////////////////////////////////////////////////////////////////////
196 
197 	/**
198 	  * This method returns the number of elements of the value set.
199 	  *
200 	  * @return the number of elements of the value set.
201 	  */
202 	sal_Int32 getLength() const;
203 
204 	void appendString( const ::rtl::OUString& rPropName, const ::rtl::OUString& rValue );
appendString(const sal_Char * pAsciiPropName,const::rtl::OUString & rValue)205     void appendString( const sal_Char* pAsciiPropName, const ::rtl::OUString& rValue )
206     {
207         appendString( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
208     }
appendString(const::com::sun::star::beans::Property & rProp,const::rtl::OUString & rValue)209 	void appendString( const ::com::sun::star::beans::Property& rProp, const ::rtl::OUString& rValue )
210     {
211         appendString( rProp.Name, rValue );
212     }
213 
214 	void appendBoolean( const ::rtl::OUString& rPropName, sal_Bool bValue );
appendBoolean(const sal_Char * pAsciiPropName,sal_Bool bValue)215     void appendBoolean( const sal_Char* pAsciiPropName, sal_Bool bValue )
216     {
217         appendBoolean( ::rtl::OUString::createFromAscii( pAsciiPropName ), bValue );
218     }
appendBoolean(const::com::sun::star::beans::Property & rProp,sal_Bool bValue)219 	void appendBoolean( const ::com::sun::star::beans::Property& rProp, sal_Bool bValue )
220     {
221         appendBoolean( rProp.Name, bValue );
222     }
223 
224     void appendByte( const ::rtl::OUString& rPropName, sal_Int8 nValue );
appendByte(const sal_Char * pAsciiPropName,sal_Int8 nValue)225     void appendByte( const sal_Char* pAsciiPropName, sal_Int8 nValue )
226     {
227         appendByte( ::rtl::OUString::createFromAscii( pAsciiPropName ), nValue );
228     }
appendByte(const::com::sun::star::beans::Property & rProp,sal_Int8 nValue)229     void appendByte( const ::com::sun::star::beans::Property& rProp, sal_Int8 nValue )
230     {
231         appendByte( rProp.Name, nValue );
232     }
233 
234 	void appendShort( const ::rtl::OUString& rPropName, sal_Int16 nValue );
appendShort(const sal_Char * pAsciiPropName,sal_Int16 nValue)235     void appendShort( const sal_Char* pAsciiPropName, sal_Int16 nValue )
236     {
237         appendShort( ::rtl::OUString::createFromAscii( pAsciiPropName ), nValue );
238     }
appendShort(const::com::sun::star::beans::Property & rProp,sal_Int16 nValue)239 	void appendShort( const ::com::sun::star::beans::Property& rProp, sal_Int16 nValue )
240     {
241         appendShort( rProp.Name, nValue );
242     }
243 
244 	void appendInt( const ::rtl::OUString& rPropName, sal_Int32 nValue );
appendInt(const sal_Char * pAsciiPropName,sal_Int32 nValue)245     void appendInt( const sal_Char* pAsciiPropName, sal_Int32 nValue )
246     {
247         appendInt( ::rtl::OUString::createFromAscii( pAsciiPropName ), nValue );
248     }
appendInt(const::com::sun::star::beans::Property & rProp,sal_Int32 nValue)249 	void appendInt( const ::com::sun::star::beans::Property& rProp, sal_Int32 nValue )
250     {
251         appendInt( rProp.Name, nValue );
252     }
253 
254 	void appendLong( const ::rtl::OUString& rPropName, sal_Int64 nValue );
appendLong(const sal_Char * pAsciiPropName,sal_Int64 nValue)255     void appendLong( const sal_Char* pAsciiPropName, sal_Int64 nValue )
256     {
257         appendLong( ::rtl::OUString::createFromAscii( pAsciiPropName ), nValue );
258     }
appendLong(const::com::sun::star::beans::Property & rProp,sal_Int64 nValue)259 	void appendLong( const ::com::sun::star::beans::Property& rProp, sal_Int64 nValue )
260     {
261         appendLong( rProp.Name, nValue );
262     }
263 
264 	void appendFloat( const ::rtl::OUString& rPropName, float nValue );
appendFloat(const sal_Char * pAsciiPropName,float nValue)265     void appendFloat( const sal_Char* pAsciiPropName, float nValue )
266     {
267         appendFloat( ::rtl::OUString::createFromAscii( pAsciiPropName ), nValue );
268     }
appendFloat(const::com::sun::star::beans::Property & rProp,float nValue)269 	void appendFloat( const ::com::sun::star::beans::Property& rProp, float nValue )
270     {
271         appendFloat( rProp.Name, nValue );
272     }
273 
274 	void appendDouble( const ::rtl::OUString& rPropName, double nValue );
appendDouble(const sal_Char * pAsciiPropName,double nValue)275     void appendDouble( const sal_Char* pAsciiPropName, double nValue )
276     {
277         appendDouble( ::rtl::OUString::createFromAscii( pAsciiPropName ), nValue );
278     }
appendDouble(const::com::sun::star::beans::Property & rProp,double nValue)279 	void appendDouble( const ::com::sun::star::beans::Property& rProp, double nValue )
280     {
281         appendDouble( rProp.Name, nValue );
282     }
283 
284 	void appendBytes( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Sequence< sal_Int8 >& rValue );
appendBytes(const sal_Char * pAsciiPropName,const::com::sun::star::uno::Sequence<sal_Int8> & rValue)285     void appendBytes( const sal_Char* pAsciiPropName, const ::com::sun::star::uno::Sequence< sal_Int8 >& rValue )
286     {
287         appendBytes( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
288     }
appendBytes(const::com::sun::star::beans::Property & rProp,const::com::sun::star::uno::Sequence<sal_Int8> & rValue)289 	void appendBytes( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::uno::Sequence< sal_Int8 >& rValue )
290     {
291         appendBytes( rProp.Name, rValue );
292     }
293 
294 	void appendDate( const ::rtl::OUString& rPropName, const ::com::sun::star::util::Date& rValue );
appendDate(const sal_Char * pAsciiPropName,const::com::sun::star::util::Date & rValue)295     void appendDate( const sal_Char* pAsciiPropName, const ::com::sun::star::util::Date& rValue )
296     {
297         appendDate( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
298     }
appendDate(const::com::sun::star::beans::Property & rProp,const::com::sun::star::util::Date & rValue)299 	void appendDate( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::util::Date& rValue )
300     {
301         appendDate( rProp.Name, rValue );
302     }
303 
304 	void appendTime( const ::rtl::OUString& rPropName, const ::com::sun::star::util::Time& rValue );
appendTime(const sal_Char * pAsciiPropName,const::com::sun::star::util::Time & rValue)305     void appendTime( const sal_Char* pAsciiPropName, const ::com::sun::star::util::Time& rValue )
306     {
307         appendTime( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
308     }
appendTime(const::com::sun::star::beans::Property & rProp,const::com::sun::star::util::Time & rValue)309 	void appendTime( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::util::Time& rValue )
310     {
311         appendTime( rProp.Name, rValue );
312     }
313 
314 	void appendTimestamp( const ::rtl::OUString& rPropName, const ::com::sun::star::util::DateTime& rValue );
appendTimestamp(const sal_Char * pAsciiPropName,const::com::sun::star::util::DateTime & rValue)315     void appendTimestamp( const sal_Char* pAsciiPropName, const ::com::sun::star::util::DateTime& rValue )
316     {
317         appendTimestamp( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
318     }
appendTimestamp(const::com::sun::star::beans::Property & rProp,const::com::sun::star::util::DateTime & rValue)319 	void appendTimestamp( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::util::DateTime& rValue )
320     {
321         appendTimestamp( rProp.Name, rValue );
322     }
323 
324 	void appendBinaryStream( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rValue );
appendBinaryStream(const sal_Char * pAsciiPropName,const::com::sun::star::uno::Reference<::com::sun::star::io::XInputStream> & rValue)325     void appendBinaryStream( const sal_Char* pAsciiPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rValue )
326     {
327         appendBinaryStream( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
328     }
appendBinaryStream(const::com::sun::star::beans::Property & rProp,const::com::sun::star::uno::Reference<::com::sun::star::io::XInputStream> & rValue)329 	void appendBinaryStream( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rValue )
330     {
331         appendBinaryStream( rProp.Name, rValue );
332     }
333 
334 	void appendCharacterStream( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rValue );
appendCharacterStream(const sal_Char * pAsciiPropName,const::com::sun::star::uno::Reference<::com::sun::star::io::XInputStream> & rValue)335     void appendCharacterStream( const sal_Char* pAsciiPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rValue )
336     {
337         appendCharacterStream( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
338     }
appendCharacterStream(const::com::sun::star::beans::Property & rProp,const::com::sun::star::uno::Reference<::com::sun::star::io::XInputStream> & rValue)339 	void appendCharacterStream( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& rValue )
340     {
341         appendCharacterStream( rProp.Name, rValue );
342     }
343 
344 	void appendObject( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Any& rValue );
appendObject(const sal_Char * pAsciiPropName,const::com::sun::star::uno::Any & rValue)345     void appendObject( const sal_Char* pAsciiPropName, const ::com::sun::star::uno::Any& rValue )
346     {
347         appendObject( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
348     }
appendObject(const::com::sun::star::beans::Property & rProp,const::com::sun::star::uno::Any & rValue)349 	void appendObject( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::uno::Any& rValue )
350     {
351         appendObject( rProp.Name, rValue );
352     }
353 
354 	void appendRef( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& rValue );
appendRef(const sal_Char * pAsciiPropName,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XRef> & rValue)355     void appendRef( const sal_Char* pAsciiPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& rValue )
356     {
357         appendRef( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
358     }
appendRef(const::com::sun::star::beans::Property & rProp,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XRef> & rValue)359 	void appendRef( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& rValue )
360     {
361         appendRef( rProp.Name, rValue );
362     }
363 
364 	void appendBlob( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& rValue );
appendBlob(const sal_Char * pAsciiPropName,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XBlob> & rValue)365     void appendBlob( const sal_Char* pAsciiPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& rValue )
366     {
367         appendBlob( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
368     }
appendBlob(const::com::sun::star::beans::Property & rProp,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XBlob> & rValue)369 	void appendBlob( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& rValue )
370     {
371         appendBlob( rProp.Name, rValue );
372     }
373 
374 	void appendClob( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& rValue );
appendClob(const sal_Char * pAsciiPropName,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XClob> & rValue)375     void appendClob( const sal_Char* pAsciiPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& rValue )
376     {
377         appendClob( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
378     }
appendClob(const::com::sun::star::beans::Property & rProp,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XClob> & rValue)379 	void appendClob( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& rValue )
380     {
381         appendClob( rProp.Name, rValue );
382     }
383 
384 	void appendArray( const ::rtl::OUString& rPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& rValue );
appendArray(const sal_Char * pAsciiPropName,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XArray> & rValue)385     void appendArray( const sal_Char* pAsciiPropName, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& rValue )
386     {
387         appendArray( ::rtl::OUString::createFromAscii( pAsciiPropName ), rValue );
388     }
appendArray(const::com::sun::star::beans::Property & rProp,const::com::sun::star::uno::Reference<::com::sun::star::sdbc::XArray> & rValue)389 	void appendArray( const ::com::sun::star::beans::Property& rProp, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& rValue )
390     {
391         appendArray( rProp.Name, rValue );
392     }
393 
394 	void appendVoid( const ::rtl::OUString& rPropName );
appendVoid(const sal_Char * pAsciiPropName)395     void appendVoid( const sal_Char* pAsciiPropName)
396     {
397         appendVoid( ::rtl::OUString::createFromAscii( pAsciiPropName ) );
398     }
appendVoid(const::com::sun::star::beans::Property & rProp)399 	void appendVoid( const ::com::sun::star::beans::Property& rProp )
400     {
401         appendVoid( rProp.Name );
402     }
403 
404 	/**
405 	  *	This method tries to append all property values contained in a
406 	  * property set to the value set.
407 	  *
408  	  *	@param  rSet is a property set containing the property values.
409 	  */
410 	void appendPropertySet( const ::com::sun::star::uno::Reference<
411 								::com::sun::star::beans::XPropertySet >& rSet );
412 
413 	/** This method tries to append a single property value contained in a
414 	  * property set to the value set.
415 	  *
416  	  *	@param  rSet is a property set containing the property values.
417  	  *	@param  rProperty is the property for that the value shall be obtained
418 	  *	        from the given property set.
419  	  *	@return False, if the property value cannot be obtained	from the
420 	  *         given property pet. True, otherwise.
421  	  */
422 	sal_Bool appendPropertySetValue(
423 						const ::com::sun::star::uno::Reference<
424 							::com::sun::star::beans::XPropertySet >& rSet,
425 						const ::com::sun::star::beans::Property& rProperty );
426 };
427 
428 }
429 
430 #endif /* !_UCBHELPER_PROPERTYVALUESET_HXX */
431