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_ucbhelper.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski /**************************************************************************
28*b1cdbd2cSJim Jagielski TODO
29*b1cdbd2cSJim Jagielski **************************************************************************
30*b1cdbd2cSJim Jagielski
31*b1cdbd2cSJim Jagielski *************************************************************************/
32*b1cdbd2cSJim Jagielski #include <osl/diagnose.h>
33*b1cdbd2cSJim Jagielski #include <osl/mutex.hxx>
34*b1cdbd2cSJim Jagielski #include <salhelper/simplereferenceobject.hxx>
35*b1cdbd2cSJim Jagielski #include <cppuhelper/weak.hxx>
36*b1cdbd2cSJim Jagielski
37*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase1.hxx>
38*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/ContentCreationError.hpp>
39*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XCommandEnvironment.hpp>
40*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XCommandInfo.hpp>
41*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XCommandProcessor.hpp>
42*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/Command.hpp>
43*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/CommandInfo.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/ContentAction.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/OpenCommandArgument2.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/InsertCommandArgument.hpp>
47*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/GlobalTransferCommandArgument.hpp>
48*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/NameClash.hpp>
49*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/OpenMode.hpp>
50*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XContentCreator.hpp>
51*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XContentEventListener.hpp>
52*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XContentIdentifierFactory.hpp>
53*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XContentProvider.hpp>
54*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XContentProviderManager.hpp>
55*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XDynamicResultSet.hpp>
56*b1cdbd2cSJim Jagielski #include <com/sun/star/ucb/XSortedDynamicResultSetFactory.hpp>
57*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySetInfo.hpp>
58*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/Property.hpp>
59*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyValue.hpp>
60*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XResultSet.hpp>
61*b1cdbd2cSJim Jagielski #include <com/sun/star/sdbc/XRow.hpp>
62*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/IllegalArgumentException.hpp>
63*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/UnknownPropertyException.hpp>
64*b1cdbd2cSJim Jagielski #include <ucbhelper/macros.hxx>
65*b1cdbd2cSJim Jagielski #include <ucbhelper/content.hxx>
66*b1cdbd2cSJim Jagielski #include <ucbhelper/contentbroker.hxx>
67*b1cdbd2cSJim Jagielski #include <ucbhelper/activedatasink.hxx>
68*b1cdbd2cSJim Jagielski #include <ucbhelper/activedatastreamer.hxx>
69*b1cdbd2cSJim Jagielski #include <ucbhelper/interactionrequest.hxx>
70*b1cdbd2cSJim Jagielski #include <ucbhelper/cancelcommandexecution.hxx>
71*b1cdbd2cSJim Jagielski
72*b1cdbd2cSJim Jagielski using namespace com::sun::star::container;
73*b1cdbd2cSJim Jagielski using namespace com::sun::star::beans;
74*b1cdbd2cSJim Jagielski using namespace com::sun::star::io;
75*b1cdbd2cSJim Jagielski using namespace com::sun::star::lang;
76*b1cdbd2cSJim Jagielski using namespace com::sun::star::sdbc;
77*b1cdbd2cSJim Jagielski using namespace com::sun::star::task;
78*b1cdbd2cSJim Jagielski using namespace com::sun::star::ucb;
79*b1cdbd2cSJim Jagielski using namespace com::sun::star::uno;
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski namespace ucbhelper
82*b1cdbd2cSJim Jagielski {
83*b1cdbd2cSJim Jagielski
84*b1cdbd2cSJim Jagielski class EmptyInputStream : public ::cppu::WeakImplHelper1< XInputStream >
85*b1cdbd2cSJim Jagielski {
86*b1cdbd2cSJim Jagielski public:
87*b1cdbd2cSJim Jagielski virtual sal_Int32 SAL_CALL readBytes(
88*b1cdbd2cSJim Jagielski Sequence< sal_Int8 > & data, sal_Int32 nBytesToRead )
89*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException);
90*b1cdbd2cSJim Jagielski virtual sal_Int32 SAL_CALL readSomeBytes(
91*b1cdbd2cSJim Jagielski Sequence< sal_Int8 > & data, sal_Int32 nMaxBytesToRead )
92*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException);
93*b1cdbd2cSJim Jagielski virtual void SAL_CALL skipBytes( sal_Int32 nBytesToSkip )
94*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException);
95*b1cdbd2cSJim Jagielski virtual sal_Int32 SAL_CALL available()
96*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException);
97*b1cdbd2cSJim Jagielski virtual void SAL_CALL closeInput()
98*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException);
99*b1cdbd2cSJim Jagielski };
100*b1cdbd2cSJim Jagielski
readBytes(Sequence<sal_Int8> & data,sal_Int32)101*b1cdbd2cSJim Jagielski sal_Int32 EmptyInputStream::readBytes(
102*b1cdbd2cSJim Jagielski Sequence< sal_Int8 > & data, sal_Int32 )
103*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException)
104*b1cdbd2cSJim Jagielski {
105*b1cdbd2cSJim Jagielski data.realloc( 0 );
106*b1cdbd2cSJim Jagielski return 0;
107*b1cdbd2cSJim Jagielski }
108*b1cdbd2cSJim Jagielski
readSomeBytes(Sequence<sal_Int8> & data,sal_Int32)109*b1cdbd2cSJim Jagielski sal_Int32 EmptyInputStream::readSomeBytes(
110*b1cdbd2cSJim Jagielski Sequence< sal_Int8 > & data, sal_Int32 )
111*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException)
112*b1cdbd2cSJim Jagielski {
113*b1cdbd2cSJim Jagielski data.realloc( 0 );
114*b1cdbd2cSJim Jagielski return 0;
115*b1cdbd2cSJim Jagielski }
116*b1cdbd2cSJim Jagielski
skipBytes(sal_Int32)117*b1cdbd2cSJim Jagielski void EmptyInputStream::skipBytes( sal_Int32 )
118*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException)
119*b1cdbd2cSJim Jagielski {
120*b1cdbd2cSJim Jagielski }
121*b1cdbd2cSJim Jagielski
available()122*b1cdbd2cSJim Jagielski sal_Int32 EmptyInputStream::available()
123*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException)
124*b1cdbd2cSJim Jagielski {
125*b1cdbd2cSJim Jagielski return 0;
126*b1cdbd2cSJim Jagielski }
127*b1cdbd2cSJim Jagielski
closeInput()128*b1cdbd2cSJim Jagielski void EmptyInputStream::closeInput()
129*b1cdbd2cSJim Jagielski throw (IOException, RuntimeException)
130*b1cdbd2cSJim Jagielski {
131*b1cdbd2cSJim Jagielski }
132*b1cdbd2cSJim Jagielski
133*b1cdbd2cSJim Jagielski
134*b1cdbd2cSJim Jagielski //=========================================================================
135*b1cdbd2cSJim Jagielski //=========================================================================
136*b1cdbd2cSJim Jagielski //
137*b1cdbd2cSJim Jagielski // class ContentEventListener_Impl.
138*b1cdbd2cSJim Jagielski //
139*b1cdbd2cSJim Jagielski //=========================================================================
140*b1cdbd2cSJim Jagielski //=========================================================================
141*b1cdbd2cSJim Jagielski
142*b1cdbd2cSJim Jagielski class ContentEventListener_Impl : public cppu::OWeakObject,
143*b1cdbd2cSJim Jagielski public XContentEventListener
144*b1cdbd2cSJim Jagielski {
145*b1cdbd2cSJim Jagielski Content_Impl& m_rContent;
146*b1cdbd2cSJim Jagielski
147*b1cdbd2cSJim Jagielski public:
ContentEventListener_Impl(Content_Impl & rContent)148*b1cdbd2cSJim Jagielski ContentEventListener_Impl( Content_Impl& rContent )
149*b1cdbd2cSJim Jagielski : m_rContent( rContent ) {}
150*b1cdbd2cSJim Jagielski
151*b1cdbd2cSJim Jagielski // XInterface
152*b1cdbd2cSJim Jagielski XINTERFACE_DECL()
153*b1cdbd2cSJim Jagielski
154*b1cdbd2cSJim Jagielski // XContentEventListener
155*b1cdbd2cSJim Jagielski virtual void SAL_CALL contentEvent( const ContentEvent& evt )
156*b1cdbd2cSJim Jagielski throw( RuntimeException );
157*b1cdbd2cSJim Jagielski
158*b1cdbd2cSJim Jagielski // XEventListener ( base of XContentEventListener )
159*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing( const EventObject& Source )
160*b1cdbd2cSJim Jagielski throw( RuntimeException );
161*b1cdbd2cSJim Jagielski };
162*b1cdbd2cSJim Jagielski
163*b1cdbd2cSJim Jagielski //=========================================================================
164*b1cdbd2cSJim Jagielski //=========================================================================
165*b1cdbd2cSJim Jagielski //
166*b1cdbd2cSJim Jagielski // class Content_Impl.
167*b1cdbd2cSJim Jagielski //
168*b1cdbd2cSJim Jagielski //=========================================================================
169*b1cdbd2cSJim Jagielski //=========================================================================
170*b1cdbd2cSJim Jagielski
171*b1cdbd2cSJim Jagielski class Content_Impl : public salhelper::SimpleReferenceObject
172*b1cdbd2cSJim Jagielski {
173*b1cdbd2cSJim Jagielski friend class ContentEventListener_Impl;
174*b1cdbd2cSJim Jagielski
175*b1cdbd2cSJim Jagielski mutable rtl::OUString m_aURL;
176*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > m_xSMgr;
177*b1cdbd2cSJim Jagielski Reference< XContent > m_xContent;
178*b1cdbd2cSJim Jagielski Reference< XCommandProcessor > m_xCommandProcessor;
179*b1cdbd2cSJim Jagielski Reference< XCommandEnvironment > m_xEnv;
180*b1cdbd2cSJim Jagielski Reference< XContentEventListener > m_xContentEventListener;
181*b1cdbd2cSJim Jagielski mutable osl::Mutex m_aMutex;
182*b1cdbd2cSJim Jagielski sal_Int32 m_nCommandId;
183*b1cdbd2cSJim Jagielski
184*b1cdbd2cSJim Jagielski private:
185*b1cdbd2cSJim Jagielski void reinit( const Reference< XContent >& xContent );
186*b1cdbd2cSJim Jagielski void disposing(const EventObject& Source);
187*b1cdbd2cSJim Jagielski
188*b1cdbd2cSJim Jagielski public:
Content_Impl()189*b1cdbd2cSJim Jagielski Content_Impl() : m_nCommandId( 0 ) {};
190*b1cdbd2cSJim Jagielski Content_Impl( const Reference< XMultiServiceFactory >& rSMgr,
191*b1cdbd2cSJim Jagielski const Reference< XContent >& rContent,
192*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& rEnv );
193*b1cdbd2cSJim Jagielski
194*b1cdbd2cSJim Jagielski virtual ~Content_Impl();
195*b1cdbd2cSJim Jagielski
196*b1cdbd2cSJim Jagielski const rtl::OUString& getURL() const;
197*b1cdbd2cSJim Jagielski Reference< XContent > getContent();
198*b1cdbd2cSJim Jagielski Reference< XCommandProcessor > getCommandProcessor();
199*b1cdbd2cSJim Jagielski sal_Int32 getCommandId();
getServiceManager()200*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > getServiceManager() { return m_xSMgr; }
201*b1cdbd2cSJim Jagielski
202*b1cdbd2cSJim Jagielski Any executeCommand( const Command& rCommand );
203*b1cdbd2cSJim Jagielski void abortCommand();
204*b1cdbd2cSJim Jagielski
205*b1cdbd2cSJim Jagielski inline const Reference< XCommandEnvironment >& getEnvironment() const;
206*b1cdbd2cSJim Jagielski inline void setEnvironment(
207*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& xNewEnv );
208*b1cdbd2cSJim Jagielski
209*b1cdbd2cSJim Jagielski void inserted();
210*b1cdbd2cSJim Jagielski };
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski //=========================================================================
213*b1cdbd2cSJim Jagielski // Helpers.
214*b1cdbd2cSJim Jagielski //=========================================================================
215*b1cdbd2cSJim Jagielski
ensureContentProviderForURL(const ContentBroker & rBroker,const rtl::OUString & rURL)216*b1cdbd2cSJim Jagielski static void ensureContentProviderForURL( const ContentBroker & rBroker,
217*b1cdbd2cSJim Jagielski const rtl::OUString & rURL )
218*b1cdbd2cSJim Jagielski throw ( ContentCreationException, RuntimeException )
219*b1cdbd2cSJim Jagielski {
220*b1cdbd2cSJim Jagielski Reference< XContentProviderManager > xMgr
221*b1cdbd2cSJim Jagielski = rBroker.getContentProviderManagerInterface();
222*b1cdbd2cSJim Jagielski if ( !xMgr.is() )
223*b1cdbd2cSJim Jagielski {
224*b1cdbd2cSJim Jagielski throw RuntimeException(
225*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
226*b1cdbd2cSJim Jagielski "UCB does not implement mandatory interface "
227*b1cdbd2cSJim Jagielski "XContentProviderManager!" ),
228*b1cdbd2cSJim Jagielski Reference< XInterface >() );
229*b1cdbd2cSJim Jagielski }
230*b1cdbd2cSJim Jagielski else
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski Reference< XContentProvider > xProv
233*b1cdbd2cSJim Jagielski = xMgr->queryContentProvider( rURL );
234*b1cdbd2cSJim Jagielski if ( !xProv.is() )
235*b1cdbd2cSJim Jagielski {
236*b1cdbd2cSJim Jagielski throw ContentCreationException(
237*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
238*b1cdbd2cSJim Jagielski "No Content Provider available for given URL!" ),
239*b1cdbd2cSJim Jagielski Reference< XInterface >(),
240*b1cdbd2cSJim Jagielski ContentCreationError_NO_CONTENT_PROVIDER );
241*b1cdbd2cSJim Jagielski }
242*b1cdbd2cSJim Jagielski }
243*b1cdbd2cSJim Jagielski }
244*b1cdbd2cSJim Jagielski
245*b1cdbd2cSJim Jagielski //=========================================================================
getContentBroker(bool bThrow)246*b1cdbd2cSJim Jagielski static ContentBroker* getContentBroker( bool bThrow )
247*b1cdbd2cSJim Jagielski throw ( ContentCreationException, RuntimeException )
248*b1cdbd2cSJim Jagielski {
249*b1cdbd2cSJim Jagielski ContentBroker* pBroker = ContentBroker::get();
250*b1cdbd2cSJim Jagielski
251*b1cdbd2cSJim Jagielski if ( !pBroker )
252*b1cdbd2cSJim Jagielski {
253*b1cdbd2cSJim Jagielski if ( bThrow )
254*b1cdbd2cSJim Jagielski throw RuntimeException(
255*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii( "No Content Broker!" ),
256*b1cdbd2cSJim Jagielski Reference< XInterface >() );
257*b1cdbd2cSJim Jagielski }
258*b1cdbd2cSJim Jagielski else
259*b1cdbd2cSJim Jagielski {
260*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
261*b1cdbd2cSJim Jagielski Reference< XContentProviderManager > xMgr
262*b1cdbd2cSJim Jagielski = pBroker->getContentProviderManagerInterface();
263*b1cdbd2cSJim Jagielski if ( !xMgr.is() )
264*b1cdbd2cSJim Jagielski {
265*b1cdbd2cSJim Jagielski if ( bThrow )
266*b1cdbd2cSJim Jagielski throw RuntimeException(
267*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
268*b1cdbd2cSJim Jagielski "UCB does not implement mandatory interface "
269*b1cdbd2cSJim Jagielski "XContentProviderManager!" ),
270*b1cdbd2cSJim Jagielski Reference< XInterface >() );
271*b1cdbd2cSJim Jagielski }
272*b1cdbd2cSJim Jagielski else
273*b1cdbd2cSJim Jagielski {
274*b1cdbd2cSJim Jagielski OSL_ENSURE( xMgr->queryContentProviders().getLength(),
275*b1cdbd2cSJim Jagielski "Content Broker not configured (no providers)!" );
276*b1cdbd2cSJim Jagielski }
277*b1cdbd2cSJim Jagielski #endif
278*b1cdbd2cSJim Jagielski }
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski return pBroker;
281*b1cdbd2cSJim Jagielski }
282*b1cdbd2cSJim Jagielski
283*b1cdbd2cSJim Jagielski //=========================================================================
getContentIdentifier(const ContentBroker & rBroker,const rtl::OUString & rURL,bool bThrow)284*b1cdbd2cSJim Jagielski static Reference< XContentIdentifier > getContentIdentifier(
285*b1cdbd2cSJim Jagielski const ContentBroker & rBroker,
286*b1cdbd2cSJim Jagielski const rtl::OUString & rURL,
287*b1cdbd2cSJim Jagielski bool bThrow )
288*b1cdbd2cSJim Jagielski throw ( ContentCreationException, RuntimeException )
289*b1cdbd2cSJim Jagielski {
290*b1cdbd2cSJim Jagielski Reference< XContentIdentifierFactory > xIdFac
291*b1cdbd2cSJim Jagielski = rBroker.getContentIdentifierFactoryInterface();
292*b1cdbd2cSJim Jagielski if ( xIdFac.is() )
293*b1cdbd2cSJim Jagielski {
294*b1cdbd2cSJim Jagielski Reference< XContentIdentifier > xId
295*b1cdbd2cSJim Jagielski = xIdFac->createContentIdentifier( rURL );
296*b1cdbd2cSJim Jagielski
297*b1cdbd2cSJim Jagielski if ( xId.is() )
298*b1cdbd2cSJim Jagielski return xId;
299*b1cdbd2cSJim Jagielski
300*b1cdbd2cSJim Jagielski if ( bThrow )
301*b1cdbd2cSJim Jagielski {
302*b1cdbd2cSJim Jagielski ensureContentProviderForURL( rBroker, rURL );
303*b1cdbd2cSJim Jagielski
304*b1cdbd2cSJim Jagielski throw ContentCreationException(
305*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
306*b1cdbd2cSJim Jagielski "Unable to create Content Identifier!" ),
307*b1cdbd2cSJim Jagielski Reference< XInterface >(),
308*b1cdbd2cSJim Jagielski ContentCreationError_IDENTIFIER_CREATION_FAILED );
309*b1cdbd2cSJim Jagielski }
310*b1cdbd2cSJim Jagielski }
311*b1cdbd2cSJim Jagielski else
312*b1cdbd2cSJim Jagielski {
313*b1cdbd2cSJim Jagielski if ( bThrow )
314*b1cdbd2cSJim Jagielski throw RuntimeException(
315*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
316*b1cdbd2cSJim Jagielski "UCB does not implement mandatory interface "
317*b1cdbd2cSJim Jagielski "XContentIdentifierFactory!" ),
318*b1cdbd2cSJim Jagielski Reference< XInterface >() );
319*b1cdbd2cSJim Jagielski }
320*b1cdbd2cSJim Jagielski
321*b1cdbd2cSJim Jagielski return Reference< XContentIdentifier >();
322*b1cdbd2cSJim Jagielski }
323*b1cdbd2cSJim Jagielski
324*b1cdbd2cSJim Jagielski //=========================================================================
getContent(const ContentBroker & rBroker,const Reference<XContentIdentifier> & xId,bool bThrow)325*b1cdbd2cSJim Jagielski static Reference< XContent > getContent(
326*b1cdbd2cSJim Jagielski const ContentBroker & rBroker,
327*b1cdbd2cSJim Jagielski const Reference< XContentIdentifier > & xId,
328*b1cdbd2cSJim Jagielski bool bThrow )
329*b1cdbd2cSJim Jagielski throw ( ContentCreationException, RuntimeException )
330*b1cdbd2cSJim Jagielski {
331*b1cdbd2cSJim Jagielski Reference< XContentProvider > xProvider
332*b1cdbd2cSJim Jagielski = rBroker.getContentProviderInterface();
333*b1cdbd2cSJim Jagielski if ( xProvider.is() )
334*b1cdbd2cSJim Jagielski {
335*b1cdbd2cSJim Jagielski Reference< XContent > xContent;
336*b1cdbd2cSJim Jagielski rtl::OUString msg;
337*b1cdbd2cSJim Jagielski try
338*b1cdbd2cSJim Jagielski {
339*b1cdbd2cSJim Jagielski xContent = xProvider->queryContent( xId );
340*b1cdbd2cSJim Jagielski }
341*b1cdbd2cSJim Jagielski catch ( IllegalIdentifierException const & e )
342*b1cdbd2cSJim Jagielski {
343*b1cdbd2cSJim Jagielski msg = e.Message;
344*b1cdbd2cSJim Jagielski // handled below.
345*b1cdbd2cSJim Jagielski }
346*b1cdbd2cSJim Jagielski
347*b1cdbd2cSJim Jagielski if ( xContent.is() )
348*b1cdbd2cSJim Jagielski return xContent;
349*b1cdbd2cSJim Jagielski
350*b1cdbd2cSJim Jagielski if ( bThrow )
351*b1cdbd2cSJim Jagielski {
352*b1cdbd2cSJim Jagielski ensureContentProviderForURL( rBroker, xId->getContentIdentifier() );
353*b1cdbd2cSJim Jagielski
354*b1cdbd2cSJim Jagielski throw ContentCreationException(
355*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
356*b1cdbd2cSJim Jagielski "Unable to create Content! " ) + msg,
357*b1cdbd2cSJim Jagielski Reference< XInterface >(),
358*b1cdbd2cSJim Jagielski ContentCreationError_CONTENT_CREATION_FAILED );
359*b1cdbd2cSJim Jagielski }
360*b1cdbd2cSJim Jagielski }
361*b1cdbd2cSJim Jagielski else
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski if ( bThrow )
364*b1cdbd2cSJim Jagielski throw RuntimeException(
365*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
366*b1cdbd2cSJim Jagielski "UCB does not implement mandatory interface "
367*b1cdbd2cSJim Jagielski "XContentProvider!" ),
368*b1cdbd2cSJim Jagielski Reference< XInterface >() );
369*b1cdbd2cSJim Jagielski }
370*b1cdbd2cSJim Jagielski
371*b1cdbd2cSJim Jagielski return Reference< XContent >();
372*b1cdbd2cSJim Jagielski }
373*b1cdbd2cSJim Jagielski
374*b1cdbd2cSJim Jagielski //=========================================================================
375*b1cdbd2cSJim Jagielski //=========================================================================
376*b1cdbd2cSJim Jagielski //
377*b1cdbd2cSJim Jagielski // Content Implementation.
378*b1cdbd2cSJim Jagielski //
379*b1cdbd2cSJim Jagielski //=========================================================================
380*b1cdbd2cSJim Jagielski //=========================================================================
381*b1cdbd2cSJim Jagielski
Content()382*b1cdbd2cSJim Jagielski Content::Content()
383*b1cdbd2cSJim Jagielski : m_xImpl( new Content_Impl )
384*b1cdbd2cSJim Jagielski {
385*b1cdbd2cSJim Jagielski }
386*b1cdbd2cSJim Jagielski
387*b1cdbd2cSJim Jagielski //=========================================================================
Content(const rtl::OUString & rURL,const Reference<XCommandEnvironment> & rEnv)388*b1cdbd2cSJim Jagielski Content::Content( const rtl::OUString& rURL,
389*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& rEnv )
390*b1cdbd2cSJim Jagielski throw ( ContentCreationException, RuntimeException )
391*b1cdbd2cSJim Jagielski {
392*b1cdbd2cSJim Jagielski ContentBroker* pBroker = getContentBroker( true );
393*b1cdbd2cSJim Jagielski
394*b1cdbd2cSJim Jagielski Reference< XContentIdentifier > xId
395*b1cdbd2cSJim Jagielski = getContentIdentifier( *pBroker, rURL, true );
396*b1cdbd2cSJim Jagielski
397*b1cdbd2cSJim Jagielski Reference< XContent > xContent = getContent( *pBroker, xId, true );
398*b1cdbd2cSJim Jagielski
399*b1cdbd2cSJim Jagielski m_xImpl = new Content_Impl( pBroker->getServiceManager(), xContent, rEnv );
400*b1cdbd2cSJim Jagielski }
401*b1cdbd2cSJim Jagielski
402*b1cdbd2cSJim Jagielski //=========================================================================
Content(const Reference<XContentIdentifier> & rId,const Reference<XCommandEnvironment> & rEnv)403*b1cdbd2cSJim Jagielski Content::Content( const Reference< XContentIdentifier >& rId,
404*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& rEnv )
405*b1cdbd2cSJim Jagielski throw ( ContentCreationException, RuntimeException )
406*b1cdbd2cSJim Jagielski {
407*b1cdbd2cSJim Jagielski ContentBroker* pBroker = getContentBroker( true );
408*b1cdbd2cSJim Jagielski
409*b1cdbd2cSJim Jagielski Reference< XContent > xContent = getContent( *pBroker, rId, true );
410*b1cdbd2cSJim Jagielski
411*b1cdbd2cSJim Jagielski m_xImpl = new Content_Impl( pBroker->getServiceManager(), xContent, rEnv );
412*b1cdbd2cSJim Jagielski }
413*b1cdbd2cSJim Jagielski
414*b1cdbd2cSJim Jagielski //=========================================================================
Content(const Reference<XContent> & rContent,const Reference<XCommandEnvironment> & rEnv)415*b1cdbd2cSJim Jagielski Content::Content( const Reference< XContent >& rContent,
416*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& rEnv )
417*b1cdbd2cSJim Jagielski throw ( ContentCreationException, RuntimeException )
418*b1cdbd2cSJim Jagielski {
419*b1cdbd2cSJim Jagielski ContentBroker* pBroker = getContentBroker( true );
420*b1cdbd2cSJim Jagielski
421*b1cdbd2cSJim Jagielski m_xImpl = new Content_Impl( pBroker->getServiceManager(), rContent, rEnv );
422*b1cdbd2cSJim Jagielski }
423*b1cdbd2cSJim Jagielski
424*b1cdbd2cSJim Jagielski //=========================================================================
Content(const Content & rOther)425*b1cdbd2cSJim Jagielski Content::Content( const Content& rOther )
426*b1cdbd2cSJim Jagielski {
427*b1cdbd2cSJim Jagielski m_xImpl = rOther.m_xImpl;
428*b1cdbd2cSJim Jagielski }
429*b1cdbd2cSJim Jagielski
430*b1cdbd2cSJim Jagielski //=========================================================================
431*b1cdbd2cSJim Jagielski // static
create(const rtl::OUString & rURL,const Reference<XCommandEnvironment> & rEnv,Content & rContent)432*b1cdbd2cSJim Jagielski sal_Bool Content::create( const rtl::OUString& rURL,
433*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& rEnv,
434*b1cdbd2cSJim Jagielski Content& rContent )
435*b1cdbd2cSJim Jagielski {
436*b1cdbd2cSJim Jagielski ContentBroker* pBroker = getContentBroker( false );
437*b1cdbd2cSJim Jagielski if ( !pBroker )
438*b1cdbd2cSJim Jagielski return sal_False;
439*b1cdbd2cSJim Jagielski
440*b1cdbd2cSJim Jagielski Reference< XContentIdentifier > xId
441*b1cdbd2cSJim Jagielski = getContentIdentifier( *pBroker, rURL, false );
442*b1cdbd2cSJim Jagielski if ( !xId.is() )
443*b1cdbd2cSJim Jagielski return sal_False;
444*b1cdbd2cSJim Jagielski
445*b1cdbd2cSJim Jagielski Reference< XContent > xContent = getContent( *pBroker, xId, false );
446*b1cdbd2cSJim Jagielski if ( !xContent.is() )
447*b1cdbd2cSJim Jagielski return sal_False;
448*b1cdbd2cSJim Jagielski
449*b1cdbd2cSJim Jagielski rContent.m_xImpl
450*b1cdbd2cSJim Jagielski = new Content_Impl( pBroker->getServiceManager(), xContent, rEnv );
451*b1cdbd2cSJim Jagielski
452*b1cdbd2cSJim Jagielski return sal_True;
453*b1cdbd2cSJim Jagielski }
454*b1cdbd2cSJim Jagielski
455*b1cdbd2cSJim Jagielski //=========================================================================
456*b1cdbd2cSJim Jagielski // static
create(const Reference<XContentIdentifier> & rId,const Reference<XCommandEnvironment> & rEnv,Content & rContent)457*b1cdbd2cSJim Jagielski sal_Bool Content::create( const Reference< XContentIdentifier >& rId,
458*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& rEnv,
459*b1cdbd2cSJim Jagielski Content& rContent )
460*b1cdbd2cSJim Jagielski {
461*b1cdbd2cSJim Jagielski ContentBroker* pBroker = getContentBroker( false );
462*b1cdbd2cSJim Jagielski if ( !pBroker )
463*b1cdbd2cSJim Jagielski return sal_False;
464*b1cdbd2cSJim Jagielski
465*b1cdbd2cSJim Jagielski Reference< XContent > xContent = getContent( *pBroker, rId, false );
466*b1cdbd2cSJim Jagielski if ( !xContent.is() )
467*b1cdbd2cSJim Jagielski return sal_False;
468*b1cdbd2cSJim Jagielski
469*b1cdbd2cSJim Jagielski rContent.m_xImpl
470*b1cdbd2cSJim Jagielski = new Content_Impl( pBroker->getServiceManager(), xContent, rEnv );
471*b1cdbd2cSJim Jagielski
472*b1cdbd2cSJim Jagielski return sal_True;
473*b1cdbd2cSJim Jagielski }
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski //=========================================================================
476*b1cdbd2cSJim Jagielski // static
create(const Reference<XContent> & xContent,const Reference<XCommandEnvironment> & rEnv,Content & rContent)477*b1cdbd2cSJim Jagielski sal_Bool Content::create( const Reference< XContent >& xContent,
478*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& rEnv,
479*b1cdbd2cSJim Jagielski Content& rContent )
480*b1cdbd2cSJim Jagielski {
481*b1cdbd2cSJim Jagielski ContentBroker* pBroker = getContentBroker( false );
482*b1cdbd2cSJim Jagielski if ( !pBroker )
483*b1cdbd2cSJim Jagielski return sal_False;
484*b1cdbd2cSJim Jagielski
485*b1cdbd2cSJim Jagielski rContent.m_xImpl
486*b1cdbd2cSJim Jagielski = new Content_Impl( pBroker->getServiceManager(), xContent, rEnv );
487*b1cdbd2cSJim Jagielski
488*b1cdbd2cSJim Jagielski return sal_True;
489*b1cdbd2cSJim Jagielski }
490*b1cdbd2cSJim Jagielski
491*b1cdbd2cSJim Jagielski //=========================================================================
~Content()492*b1cdbd2cSJim Jagielski Content::~Content()
493*b1cdbd2cSJim Jagielski {
494*b1cdbd2cSJim Jagielski }
495*b1cdbd2cSJim Jagielski
496*b1cdbd2cSJim Jagielski //=========================================================================
operator =(const Content & rOther)497*b1cdbd2cSJim Jagielski Content& Content::operator=( const Content& rOther )
498*b1cdbd2cSJim Jagielski {
499*b1cdbd2cSJim Jagielski m_xImpl = rOther.m_xImpl;
500*b1cdbd2cSJim Jagielski return *this;
501*b1cdbd2cSJim Jagielski }
502*b1cdbd2cSJim Jagielski
503*b1cdbd2cSJim Jagielski //=========================================================================
get() const504*b1cdbd2cSJim Jagielski Reference< XContent > Content::get() const
505*b1cdbd2cSJim Jagielski {
506*b1cdbd2cSJim Jagielski return m_xImpl->getContent();
507*b1cdbd2cSJim Jagielski }
508*b1cdbd2cSJim Jagielski
509*b1cdbd2cSJim Jagielski //=========================================================================
getURL() const510*b1cdbd2cSJim Jagielski const rtl::OUString& Content::getURL() const
511*b1cdbd2cSJim Jagielski {
512*b1cdbd2cSJim Jagielski return m_xImpl->getURL();
513*b1cdbd2cSJim Jagielski }
514*b1cdbd2cSJim Jagielski
515*b1cdbd2cSJim Jagielski //=========================================================================
getCommandEnvironment() const516*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& Content::getCommandEnvironment() const
517*b1cdbd2cSJim Jagielski {
518*b1cdbd2cSJim Jagielski return m_xImpl->getEnvironment();
519*b1cdbd2cSJim Jagielski }
520*b1cdbd2cSJim Jagielski
521*b1cdbd2cSJim Jagielski //=========================================================================
setCommandEnvironment(const Reference<XCommandEnvironment> & xNewEnv)522*b1cdbd2cSJim Jagielski void Content::setCommandEnvironment(
523*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& xNewEnv )
524*b1cdbd2cSJim Jagielski {
525*b1cdbd2cSJim Jagielski m_xImpl->setEnvironment( xNewEnv );
526*b1cdbd2cSJim Jagielski }
527*b1cdbd2cSJim Jagielski
528*b1cdbd2cSJim Jagielski //=========================================================================
getCommands()529*b1cdbd2cSJim Jagielski Reference< XCommandInfo > Content::getCommands()
530*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
531*b1cdbd2cSJim Jagielski {
532*b1cdbd2cSJim Jagielski Command aCommand;
533*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "getCommandInfo" );
534*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
535*b1cdbd2cSJim Jagielski aCommand.Argument = Any();
536*b1cdbd2cSJim Jagielski
537*b1cdbd2cSJim Jagielski Any aResult = m_xImpl->executeCommand( aCommand );
538*b1cdbd2cSJim Jagielski
539*b1cdbd2cSJim Jagielski Reference< XCommandInfo > xInfo;
540*b1cdbd2cSJim Jagielski aResult >>= xInfo;
541*b1cdbd2cSJim Jagielski return xInfo;
542*b1cdbd2cSJim Jagielski }
543*b1cdbd2cSJim Jagielski
544*b1cdbd2cSJim Jagielski //=========================================================================
getProperties()545*b1cdbd2cSJim Jagielski Reference< XPropertySetInfo > Content::getProperties()
546*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
547*b1cdbd2cSJim Jagielski {
548*b1cdbd2cSJim Jagielski Command aCommand;
549*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "getPropertySetInfo" );
550*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
551*b1cdbd2cSJim Jagielski aCommand.Argument = Any();
552*b1cdbd2cSJim Jagielski
553*b1cdbd2cSJim Jagielski Any aResult = m_xImpl->executeCommand( aCommand );
554*b1cdbd2cSJim Jagielski
555*b1cdbd2cSJim Jagielski Reference< XPropertySetInfo > xInfo;
556*b1cdbd2cSJim Jagielski aResult >>= xInfo;
557*b1cdbd2cSJim Jagielski return xInfo;
558*b1cdbd2cSJim Jagielski }
559*b1cdbd2cSJim Jagielski
560*b1cdbd2cSJim Jagielski //=========================================================================
getPropertyValue(const rtl::OUString & rPropertyName)561*b1cdbd2cSJim Jagielski Any Content::getPropertyValue( const rtl::OUString& rPropertyName )
562*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
563*b1cdbd2cSJim Jagielski {
564*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > aNames( 1 );
565*b1cdbd2cSJim Jagielski aNames.getArray()[ 0 ] = rPropertyName;
566*b1cdbd2cSJim Jagielski
567*b1cdbd2cSJim Jagielski Sequence< Any > aRet = getPropertyValues( aNames );
568*b1cdbd2cSJim Jagielski return aRet.getConstArray()[ 0 ];
569*b1cdbd2cSJim Jagielski }
570*b1cdbd2cSJim Jagielski
571*b1cdbd2cSJim Jagielski //=========================================================================
getPropertyValue(sal_Int32 nPropertyHandle)572*b1cdbd2cSJim Jagielski Any Content::getPropertyValue( sal_Int32 nPropertyHandle )
573*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
574*b1cdbd2cSJim Jagielski {
575*b1cdbd2cSJim Jagielski Sequence< sal_Int32 > aHandles( 1 );
576*b1cdbd2cSJim Jagielski aHandles.getArray()[ 0 ] = nPropertyHandle;
577*b1cdbd2cSJim Jagielski
578*b1cdbd2cSJim Jagielski Sequence< Any > aRet = getPropertyValues( aHandles );
579*b1cdbd2cSJim Jagielski return aRet.getConstArray()[ 0 ];
580*b1cdbd2cSJim Jagielski }
581*b1cdbd2cSJim Jagielski
582*b1cdbd2cSJim Jagielski //=========================================================================
setPropertyValue(const rtl::OUString & rName,const Any & rValue)583*b1cdbd2cSJim Jagielski Any Content::setPropertyValue( const rtl::OUString& rName,
584*b1cdbd2cSJim Jagielski const Any& rValue )
585*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
586*b1cdbd2cSJim Jagielski {
587*b1cdbd2cSJim Jagielski Sequence< rtl::OUString > aNames( 1 );
588*b1cdbd2cSJim Jagielski aNames.getArray()[ 0 ] = rName;
589*b1cdbd2cSJim Jagielski
590*b1cdbd2cSJim Jagielski Sequence< Any > aValues( 1 );
591*b1cdbd2cSJim Jagielski aValues.getArray()[ 0 ] = rValue;
592*b1cdbd2cSJim Jagielski
593*b1cdbd2cSJim Jagielski Sequence< Any > aErrors = setPropertyValues( aNames, aValues );
594*b1cdbd2cSJim Jagielski return aErrors.getConstArray()[ 0 ];
595*b1cdbd2cSJim Jagielski }
596*b1cdbd2cSJim Jagielski
597*b1cdbd2cSJim Jagielski //=========================================================================
setPropertyValue(const sal_Int32 nPropertyHandle,const Any & rValue)598*b1cdbd2cSJim Jagielski Any Content::setPropertyValue( const sal_Int32 nPropertyHandle,
599*b1cdbd2cSJim Jagielski const Any& rValue )
600*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
601*b1cdbd2cSJim Jagielski {
602*b1cdbd2cSJim Jagielski Sequence< sal_Int32 > aHandles( 1 );
603*b1cdbd2cSJim Jagielski aHandles.getArray()[ 0 ] = nPropertyHandle;
604*b1cdbd2cSJim Jagielski
605*b1cdbd2cSJim Jagielski Sequence< Any > aValues( 1 );
606*b1cdbd2cSJim Jagielski aValues.getArray()[ 0 ] = rValue;
607*b1cdbd2cSJim Jagielski
608*b1cdbd2cSJim Jagielski Sequence< Any > aErrors = setPropertyValues( aHandles, aValues );
609*b1cdbd2cSJim Jagielski return aErrors.getConstArray()[ 0 ];
610*b1cdbd2cSJim Jagielski }
611*b1cdbd2cSJim Jagielski
612*b1cdbd2cSJim Jagielski //=========================================================================
getPropertyValues(const Sequence<rtl::OUString> & rPropertyNames)613*b1cdbd2cSJim Jagielski Sequence< Any > Content::getPropertyValues(
614*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >& rPropertyNames )
615*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
616*b1cdbd2cSJim Jagielski {
617*b1cdbd2cSJim Jagielski Reference< XRow > xRow = getPropertyValuesInterface( rPropertyNames );
618*b1cdbd2cSJim Jagielski
619*b1cdbd2cSJim Jagielski sal_Int32 nCount = rPropertyNames.getLength();
620*b1cdbd2cSJim Jagielski Sequence< Any > aValues( nCount );
621*b1cdbd2cSJim Jagielski
622*b1cdbd2cSJim Jagielski if ( xRow.is() )
623*b1cdbd2cSJim Jagielski {
624*b1cdbd2cSJim Jagielski Any* pValues = aValues.getArray();
625*b1cdbd2cSJim Jagielski
626*b1cdbd2cSJim Jagielski for ( sal_Int32 n = 0; n < nCount; ++n )
627*b1cdbd2cSJim Jagielski pValues[ n ] = xRow->getObject( n + 1, Reference< XNameAccess >() );
628*b1cdbd2cSJim Jagielski }
629*b1cdbd2cSJim Jagielski
630*b1cdbd2cSJim Jagielski return aValues;
631*b1cdbd2cSJim Jagielski }
632*b1cdbd2cSJim Jagielski
633*b1cdbd2cSJim Jagielski //=========================================================================
getPropertyValues(const Sequence<sal_Int32> & nPropertyHandles)634*b1cdbd2cSJim Jagielski Sequence< Any > Content::getPropertyValues(
635*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >& nPropertyHandles )
636*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
637*b1cdbd2cSJim Jagielski {
638*b1cdbd2cSJim Jagielski Reference< XRow > xRow = getPropertyValuesInterface( nPropertyHandles );
639*b1cdbd2cSJim Jagielski
640*b1cdbd2cSJim Jagielski sal_Int32 nCount = nPropertyHandles.getLength();
641*b1cdbd2cSJim Jagielski Sequence< Any > aValues( nCount );
642*b1cdbd2cSJim Jagielski
643*b1cdbd2cSJim Jagielski if ( xRow.is() )
644*b1cdbd2cSJim Jagielski {
645*b1cdbd2cSJim Jagielski Any* pValues = aValues.getArray();
646*b1cdbd2cSJim Jagielski
647*b1cdbd2cSJim Jagielski for ( sal_Int32 n = 0; n < nCount; ++n )
648*b1cdbd2cSJim Jagielski pValues[ n ] = xRow->getObject( n + 1, Reference< XNameAccess >() );
649*b1cdbd2cSJim Jagielski }
650*b1cdbd2cSJim Jagielski
651*b1cdbd2cSJim Jagielski return aValues;
652*b1cdbd2cSJim Jagielski }
653*b1cdbd2cSJim Jagielski
654*b1cdbd2cSJim Jagielski //=========================================================================
getPropertyValuesInterface(const Sequence<rtl::OUString> & rPropertyNames)655*b1cdbd2cSJim Jagielski Reference< XRow > Content::getPropertyValuesInterface(
656*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >& rPropertyNames )
657*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
658*b1cdbd2cSJim Jagielski {
659*b1cdbd2cSJim Jagielski sal_Int32 nCount = rPropertyNames.getLength();
660*b1cdbd2cSJim Jagielski Sequence< Property > aProps( nCount );
661*b1cdbd2cSJim Jagielski Property* pProps = aProps.getArray();
662*b1cdbd2cSJim Jagielski
663*b1cdbd2cSJim Jagielski const rtl::OUString* pNames = rPropertyNames.getConstArray();
664*b1cdbd2cSJim Jagielski
665*b1cdbd2cSJim Jagielski for ( sal_Int32 n = 0; n< nCount; ++n )
666*b1cdbd2cSJim Jagielski {
667*b1cdbd2cSJim Jagielski Property& rProp = pProps[ n ];
668*b1cdbd2cSJim Jagielski
669*b1cdbd2cSJim Jagielski rProp.Name = pNames[ n ];
670*b1cdbd2cSJim Jagielski rProp.Handle = -1; // n/a
671*b1cdbd2cSJim Jagielski // rProp.Type =
672*b1cdbd2cSJim Jagielski // rProp.Attributes = ;
673*b1cdbd2cSJim Jagielski }
674*b1cdbd2cSJim Jagielski
675*b1cdbd2cSJim Jagielski Command aCommand;
676*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "getPropertyValues" );
677*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
678*b1cdbd2cSJim Jagielski aCommand.Argument <<= aProps;
679*b1cdbd2cSJim Jagielski
680*b1cdbd2cSJim Jagielski Any aResult = m_xImpl->executeCommand( aCommand );
681*b1cdbd2cSJim Jagielski
682*b1cdbd2cSJim Jagielski Reference< XRow > xRow;
683*b1cdbd2cSJim Jagielski aResult >>= xRow;
684*b1cdbd2cSJim Jagielski return xRow;
685*b1cdbd2cSJim Jagielski }
686*b1cdbd2cSJim Jagielski
687*b1cdbd2cSJim Jagielski //=========================================================================
getPropertyValuesInterface(const Sequence<sal_Int32> & nPropertyHandles)688*b1cdbd2cSJim Jagielski Reference< XRow > Content::getPropertyValuesInterface(
689*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >& nPropertyHandles )
690*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
691*b1cdbd2cSJim Jagielski {
692*b1cdbd2cSJim Jagielski sal_Int32 nCount = nPropertyHandles.getLength();
693*b1cdbd2cSJim Jagielski Sequence< Property > aProps( nCount );
694*b1cdbd2cSJim Jagielski Property* pProps = aProps.getArray();
695*b1cdbd2cSJim Jagielski
696*b1cdbd2cSJim Jagielski const sal_Int32* pHandles = nPropertyHandles.getConstArray();
697*b1cdbd2cSJim Jagielski
698*b1cdbd2cSJim Jagielski for ( sal_Int32 n = 0; n< nCount; ++n )
699*b1cdbd2cSJim Jagielski {
700*b1cdbd2cSJim Jagielski Property& rProp = pProps[ n ];
701*b1cdbd2cSJim Jagielski
702*b1cdbd2cSJim Jagielski rProp.Name = rtl::OUString(); // n/a
703*b1cdbd2cSJim Jagielski rProp.Handle = pHandles[ n ];
704*b1cdbd2cSJim Jagielski // rProp.Type =
705*b1cdbd2cSJim Jagielski // rProp.Attributes = ;
706*b1cdbd2cSJim Jagielski }
707*b1cdbd2cSJim Jagielski
708*b1cdbd2cSJim Jagielski Command aCommand;
709*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "getPropertyValues" );
710*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
711*b1cdbd2cSJim Jagielski aCommand.Argument <<= aProps;
712*b1cdbd2cSJim Jagielski
713*b1cdbd2cSJim Jagielski Any aResult = m_xImpl->executeCommand( aCommand );
714*b1cdbd2cSJim Jagielski
715*b1cdbd2cSJim Jagielski Reference< XRow > xRow;
716*b1cdbd2cSJim Jagielski aResult >>= xRow;
717*b1cdbd2cSJim Jagielski return xRow;
718*b1cdbd2cSJim Jagielski }
719*b1cdbd2cSJim Jagielski
720*b1cdbd2cSJim Jagielski //=========================================================================
setPropertyValues(const Sequence<rtl::OUString> & rPropertyNames,const Sequence<Any> & rValues)721*b1cdbd2cSJim Jagielski Sequence< Any > Content::setPropertyValues(
722*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >& rPropertyNames,
723*b1cdbd2cSJim Jagielski const Sequence< Any >& rValues )
724*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
725*b1cdbd2cSJim Jagielski {
726*b1cdbd2cSJim Jagielski if ( rPropertyNames.getLength() != rValues.getLength() )
727*b1cdbd2cSJim Jagielski {
728*b1cdbd2cSJim Jagielski ucbhelper::cancelCommandExecution(
729*b1cdbd2cSJim Jagielski makeAny( IllegalArgumentException(
730*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
731*b1cdbd2cSJim Jagielski "Length of property names sequence and value "
732*b1cdbd2cSJim Jagielski "sequence are unequal!" ),
733*b1cdbd2cSJim Jagielski get(),
734*b1cdbd2cSJim Jagielski -1 ) ),
735*b1cdbd2cSJim Jagielski m_xImpl->getEnvironment() );
736*b1cdbd2cSJim Jagielski // Unreachable
737*b1cdbd2cSJim Jagielski }
738*b1cdbd2cSJim Jagielski
739*b1cdbd2cSJim Jagielski sal_Int32 nCount = rValues.getLength();
740*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aProps( nCount );
741*b1cdbd2cSJim Jagielski PropertyValue* pProps = aProps.getArray();
742*b1cdbd2cSJim Jagielski
743*b1cdbd2cSJim Jagielski const rtl::OUString* pNames = rPropertyNames.getConstArray();
744*b1cdbd2cSJim Jagielski const Any* pValues = rValues.getConstArray();
745*b1cdbd2cSJim Jagielski
746*b1cdbd2cSJim Jagielski for ( sal_Int32 n = 0; n< nCount; ++n )
747*b1cdbd2cSJim Jagielski {
748*b1cdbd2cSJim Jagielski PropertyValue& rProp = pProps[ n ];
749*b1cdbd2cSJim Jagielski
750*b1cdbd2cSJim Jagielski rProp.Name = pNames[ n ];
751*b1cdbd2cSJim Jagielski rProp.Handle = -1; // n/a
752*b1cdbd2cSJim Jagielski rProp.Value = pValues[ n ];
753*b1cdbd2cSJim Jagielski // rProp.State = ;
754*b1cdbd2cSJim Jagielski }
755*b1cdbd2cSJim Jagielski
756*b1cdbd2cSJim Jagielski Command aCommand;
757*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "setPropertyValues" );
758*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
759*b1cdbd2cSJim Jagielski aCommand.Argument <<= aProps;
760*b1cdbd2cSJim Jagielski
761*b1cdbd2cSJim Jagielski Any aResult = m_xImpl->executeCommand( aCommand );
762*b1cdbd2cSJim Jagielski
763*b1cdbd2cSJim Jagielski Sequence< Any > aErrors;
764*b1cdbd2cSJim Jagielski aResult >>= aErrors;
765*b1cdbd2cSJim Jagielski return aErrors;
766*b1cdbd2cSJim Jagielski }
767*b1cdbd2cSJim Jagielski
768*b1cdbd2cSJim Jagielski //=========================================================================
setPropertyValues(const Sequence<sal_Int32> & nPropertyHandles,const Sequence<Any> & rValues)769*b1cdbd2cSJim Jagielski Sequence< Any > Content::setPropertyValues(
770*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >& nPropertyHandles,
771*b1cdbd2cSJim Jagielski const Sequence< Any >& rValues )
772*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
773*b1cdbd2cSJim Jagielski {
774*b1cdbd2cSJim Jagielski if ( nPropertyHandles.getLength() != rValues.getLength() )
775*b1cdbd2cSJim Jagielski {
776*b1cdbd2cSJim Jagielski ucbhelper::cancelCommandExecution(
777*b1cdbd2cSJim Jagielski makeAny( IllegalArgumentException(
778*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
779*b1cdbd2cSJim Jagielski "Length of property handles sequence and value "
780*b1cdbd2cSJim Jagielski "sequence are unequal!" ),
781*b1cdbd2cSJim Jagielski get(),
782*b1cdbd2cSJim Jagielski -1 ) ),
783*b1cdbd2cSJim Jagielski m_xImpl->getEnvironment() );
784*b1cdbd2cSJim Jagielski // Unreachable
785*b1cdbd2cSJim Jagielski }
786*b1cdbd2cSJim Jagielski
787*b1cdbd2cSJim Jagielski sal_Int32 nCount = rValues.getLength();
788*b1cdbd2cSJim Jagielski Sequence< PropertyValue > aProps( nCount );
789*b1cdbd2cSJim Jagielski PropertyValue* pProps = aProps.getArray();
790*b1cdbd2cSJim Jagielski
791*b1cdbd2cSJim Jagielski const sal_Int32* pHandles = nPropertyHandles.getConstArray();
792*b1cdbd2cSJim Jagielski const Any* pValues = rValues.getConstArray();
793*b1cdbd2cSJim Jagielski
794*b1cdbd2cSJim Jagielski for ( sal_Int32 n = 0; n< nCount; ++n )
795*b1cdbd2cSJim Jagielski {
796*b1cdbd2cSJim Jagielski PropertyValue& rProp = pProps[ n ];
797*b1cdbd2cSJim Jagielski
798*b1cdbd2cSJim Jagielski rProp.Name = rtl::OUString(); // n/a
799*b1cdbd2cSJim Jagielski rProp.Handle = pHandles[ n ];
800*b1cdbd2cSJim Jagielski rProp.Value = pValues[ n ];
801*b1cdbd2cSJim Jagielski // rProp.State = ;
802*b1cdbd2cSJim Jagielski }
803*b1cdbd2cSJim Jagielski
804*b1cdbd2cSJim Jagielski Command aCommand;
805*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "setPropertyValues" );
806*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
807*b1cdbd2cSJim Jagielski aCommand.Argument <<= aProps;
808*b1cdbd2cSJim Jagielski
809*b1cdbd2cSJim Jagielski Any aResult = m_xImpl->executeCommand( aCommand );
810*b1cdbd2cSJim Jagielski
811*b1cdbd2cSJim Jagielski Sequence< Any > aErrors;
812*b1cdbd2cSJim Jagielski aResult >>= aErrors;
813*b1cdbd2cSJim Jagielski return aErrors;
814*b1cdbd2cSJim Jagielski }
815*b1cdbd2cSJim Jagielski
816*b1cdbd2cSJim Jagielski //=========================================================================
executeCommand(const rtl::OUString & rCommandName,const Any & rCommandArgument)817*b1cdbd2cSJim Jagielski Any Content::executeCommand( const rtl::OUString& rCommandName,
818*b1cdbd2cSJim Jagielski const Any& rCommandArgument )
819*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
820*b1cdbd2cSJim Jagielski {
821*b1cdbd2cSJim Jagielski Command aCommand;
822*b1cdbd2cSJim Jagielski aCommand.Name = rCommandName;
823*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
824*b1cdbd2cSJim Jagielski aCommand.Argument = rCommandArgument;
825*b1cdbd2cSJim Jagielski
826*b1cdbd2cSJim Jagielski return m_xImpl->executeCommand( aCommand );
827*b1cdbd2cSJim Jagielski }
828*b1cdbd2cSJim Jagielski
829*b1cdbd2cSJim Jagielski //=========================================================================
executeCommand(sal_Int32 nCommandHandle,const Any & rCommandArgument)830*b1cdbd2cSJim Jagielski Any Content::executeCommand( sal_Int32 nCommandHandle,
831*b1cdbd2cSJim Jagielski const Any& rCommandArgument )
832*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
833*b1cdbd2cSJim Jagielski {
834*b1cdbd2cSJim Jagielski Command aCommand;
835*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString(); // n/a
836*b1cdbd2cSJim Jagielski aCommand.Handle = nCommandHandle;
837*b1cdbd2cSJim Jagielski aCommand.Argument = rCommandArgument;
838*b1cdbd2cSJim Jagielski
839*b1cdbd2cSJim Jagielski return m_xImpl->executeCommand( aCommand );
840*b1cdbd2cSJim Jagielski }
841*b1cdbd2cSJim Jagielski
842*b1cdbd2cSJim Jagielski //=========================================================================
abortCommand()843*b1cdbd2cSJim Jagielski void Content::abortCommand()
844*b1cdbd2cSJim Jagielski {
845*b1cdbd2cSJim Jagielski m_xImpl->abortCommand();
846*b1cdbd2cSJim Jagielski }
847*b1cdbd2cSJim Jagielski
848*b1cdbd2cSJim Jagielski //=========================================================================
createCursorAny(const Sequence<rtl::OUString> & rPropertyNames,ResultSetInclude eMode)849*b1cdbd2cSJim Jagielski Any Content::createCursorAny( const Sequence< rtl::OUString >& rPropertyNames,
850*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
851*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
852*b1cdbd2cSJim Jagielski {
853*b1cdbd2cSJim Jagielski sal_Int32 nCount = rPropertyNames.getLength();
854*b1cdbd2cSJim Jagielski Sequence< Property > aProps( nCount );
855*b1cdbd2cSJim Jagielski Property* pProps = aProps.getArray();
856*b1cdbd2cSJim Jagielski const rtl::OUString* pNames = rPropertyNames.getConstArray();
857*b1cdbd2cSJim Jagielski for ( sal_Int32 n = 0; n < nCount; ++n )
858*b1cdbd2cSJim Jagielski {
859*b1cdbd2cSJim Jagielski Property& rProp = pProps[ n ];
860*b1cdbd2cSJim Jagielski rProp.Name = pNames[ n ];
861*b1cdbd2cSJim Jagielski rProp.Handle = -1; // n/a
862*b1cdbd2cSJim Jagielski }
863*b1cdbd2cSJim Jagielski
864*b1cdbd2cSJim Jagielski OpenCommandArgument2 aArg;
865*b1cdbd2cSJim Jagielski aArg.Mode = ( eMode == INCLUDE_FOLDERS_ONLY )
866*b1cdbd2cSJim Jagielski ? OpenMode::FOLDERS
867*b1cdbd2cSJim Jagielski : ( eMode == INCLUDE_DOCUMENTS_ONLY )
868*b1cdbd2cSJim Jagielski ? OpenMode::DOCUMENTS : OpenMode::ALL;
869*b1cdbd2cSJim Jagielski aArg.Priority = 0; // unused
870*b1cdbd2cSJim Jagielski aArg.Sink = Reference< XInterface >(); // unused
871*b1cdbd2cSJim Jagielski aArg.Properties = aProps;
872*b1cdbd2cSJim Jagielski
873*b1cdbd2cSJim Jagielski Command aCommand;
874*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "open" );
875*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
876*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
877*b1cdbd2cSJim Jagielski
878*b1cdbd2cSJim Jagielski return m_xImpl->executeCommand( aCommand );
879*b1cdbd2cSJim Jagielski }
880*b1cdbd2cSJim Jagielski
881*b1cdbd2cSJim Jagielski //=========================================================================
createCursorAny(const Sequence<sal_Int32> & rPropertyHandles,ResultSetInclude eMode)882*b1cdbd2cSJim Jagielski Any Content::createCursorAny( const Sequence< sal_Int32 >& rPropertyHandles,
883*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
884*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
885*b1cdbd2cSJim Jagielski {
886*b1cdbd2cSJim Jagielski sal_Int32 nCount = rPropertyHandles.getLength();
887*b1cdbd2cSJim Jagielski Sequence< Property > aProps( nCount );
888*b1cdbd2cSJim Jagielski Property* pProps = aProps.getArray();
889*b1cdbd2cSJim Jagielski const sal_Int32* pHandles = rPropertyHandles.getConstArray();
890*b1cdbd2cSJim Jagielski for ( sal_Int32 n = 0; n < nCount; ++n )
891*b1cdbd2cSJim Jagielski {
892*b1cdbd2cSJim Jagielski Property& rProp = pProps[ n ];
893*b1cdbd2cSJim Jagielski rProp.Name = rtl::OUString(); // n/a
894*b1cdbd2cSJim Jagielski rProp.Handle = pHandles[ n ];
895*b1cdbd2cSJim Jagielski }
896*b1cdbd2cSJim Jagielski
897*b1cdbd2cSJim Jagielski OpenCommandArgument2 aArg;
898*b1cdbd2cSJim Jagielski aArg.Mode = ( eMode == INCLUDE_FOLDERS_ONLY )
899*b1cdbd2cSJim Jagielski ? OpenMode::FOLDERS
900*b1cdbd2cSJim Jagielski : ( eMode == INCLUDE_DOCUMENTS_ONLY )
901*b1cdbd2cSJim Jagielski ? OpenMode::DOCUMENTS : OpenMode::ALL;
902*b1cdbd2cSJim Jagielski aArg.Priority = 0; // unused
903*b1cdbd2cSJim Jagielski aArg.Sink = Reference< XInterface >(); // unused
904*b1cdbd2cSJim Jagielski aArg.Properties = aProps;
905*b1cdbd2cSJim Jagielski
906*b1cdbd2cSJim Jagielski Command aCommand;
907*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "open" );
908*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
909*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
910*b1cdbd2cSJim Jagielski
911*b1cdbd2cSJim Jagielski return m_xImpl->executeCommand( aCommand );
912*b1cdbd2cSJim Jagielski }
913*b1cdbd2cSJim Jagielski
914*b1cdbd2cSJim Jagielski //=========================================================================
createCursor(const Sequence<rtl::OUString> & rPropertyNames,ResultSetInclude eMode)915*b1cdbd2cSJim Jagielski Reference< XResultSet > Content::createCursor(
916*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >& rPropertyNames,
917*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
918*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
919*b1cdbd2cSJim Jagielski {
920*b1cdbd2cSJim Jagielski Any aCursorAny = createCursorAny( rPropertyNames, eMode );
921*b1cdbd2cSJim Jagielski
922*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > xDynSet;
923*b1cdbd2cSJim Jagielski Reference< XResultSet > aResult;
924*b1cdbd2cSJim Jagielski
925*b1cdbd2cSJim Jagielski aCursorAny >>= xDynSet;
926*b1cdbd2cSJim Jagielski if ( xDynSet.is() )
927*b1cdbd2cSJim Jagielski aResult = xDynSet->getStaticResultSet();
928*b1cdbd2cSJim Jagielski
929*b1cdbd2cSJim Jagielski OSL_ENSURE( aResult.is(), "Content::createCursor - no cursor!" );
930*b1cdbd2cSJim Jagielski
931*b1cdbd2cSJim Jagielski if ( !aResult.is() )
932*b1cdbd2cSJim Jagielski {
933*b1cdbd2cSJim Jagielski // Former, the open command directly returned a XResultSet.
934*b1cdbd2cSJim Jagielski aCursorAny >>= aResult;
935*b1cdbd2cSJim Jagielski
936*b1cdbd2cSJim Jagielski OSL_ENSURE( !aResult.is(),
937*b1cdbd2cSJim Jagielski "Content::createCursor - open-Command must "
938*b1cdbd2cSJim Jagielski "return a Reference< XDynnamicResultSet >!" );
939*b1cdbd2cSJim Jagielski }
940*b1cdbd2cSJim Jagielski
941*b1cdbd2cSJim Jagielski return aResult;
942*b1cdbd2cSJim Jagielski }
943*b1cdbd2cSJim Jagielski
944*b1cdbd2cSJim Jagielski //=========================================================================
createCursor(const Sequence<sal_Int32> & rPropertyHandles,ResultSetInclude eMode)945*b1cdbd2cSJim Jagielski Reference< XResultSet > Content::createCursor(
946*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >& rPropertyHandles,
947*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
948*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
949*b1cdbd2cSJim Jagielski {
950*b1cdbd2cSJim Jagielski Any aCursorAny = createCursorAny( rPropertyHandles, eMode );
951*b1cdbd2cSJim Jagielski
952*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > xDynSet;
953*b1cdbd2cSJim Jagielski Reference< XResultSet > aResult;
954*b1cdbd2cSJim Jagielski
955*b1cdbd2cSJim Jagielski aCursorAny >>= xDynSet;
956*b1cdbd2cSJim Jagielski if ( xDynSet.is() )
957*b1cdbd2cSJim Jagielski aResult = xDynSet->getStaticResultSet();
958*b1cdbd2cSJim Jagielski
959*b1cdbd2cSJim Jagielski OSL_ENSURE( aResult.is(), "Content::createCursor - no cursor!" );
960*b1cdbd2cSJim Jagielski
961*b1cdbd2cSJim Jagielski if ( !aResult.is() )
962*b1cdbd2cSJim Jagielski {
963*b1cdbd2cSJim Jagielski // Former, the open command directly returned a XResultSet.
964*b1cdbd2cSJim Jagielski aCursorAny >>= aResult;
965*b1cdbd2cSJim Jagielski
966*b1cdbd2cSJim Jagielski OSL_ENSURE( !aResult.is(),
967*b1cdbd2cSJim Jagielski "Content::createCursor - open-Command must "
968*b1cdbd2cSJim Jagielski "return a Reference< XDynnamicResultSet >!" );
969*b1cdbd2cSJim Jagielski }
970*b1cdbd2cSJim Jagielski
971*b1cdbd2cSJim Jagielski return aResult;
972*b1cdbd2cSJim Jagielski }
973*b1cdbd2cSJim Jagielski
974*b1cdbd2cSJim Jagielski //=========================================================================
createDynamicCursor(const Sequence<rtl::OUString> & rPropertyNames,ResultSetInclude eMode)975*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > Content::createDynamicCursor(
976*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >& rPropertyNames,
977*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
978*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
979*b1cdbd2cSJim Jagielski {
980*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aResult;
981*b1cdbd2cSJim Jagielski createCursorAny( rPropertyNames, eMode ) >>= aResult;
982*b1cdbd2cSJim Jagielski
983*b1cdbd2cSJim Jagielski OSL_ENSURE( aResult.is(), "Content::createDynamicCursor - no cursor!" );
984*b1cdbd2cSJim Jagielski
985*b1cdbd2cSJim Jagielski return aResult;
986*b1cdbd2cSJim Jagielski }
987*b1cdbd2cSJim Jagielski
988*b1cdbd2cSJim Jagielski //=========================================================================
createDynamicCursor(const Sequence<sal_Int32> & rPropertyHandles,ResultSetInclude eMode)989*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > Content::createDynamicCursor(
990*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >& rPropertyHandles,
991*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
992*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
993*b1cdbd2cSJim Jagielski {
994*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aResult;
995*b1cdbd2cSJim Jagielski createCursorAny( rPropertyHandles, eMode ) >>= aResult;
996*b1cdbd2cSJim Jagielski
997*b1cdbd2cSJim Jagielski OSL_ENSURE( aResult.is(), "Content::createDynamicCursor - no cursor!" );
998*b1cdbd2cSJim Jagielski
999*b1cdbd2cSJim Jagielski return aResult;
1000*b1cdbd2cSJim Jagielski }
1001*b1cdbd2cSJim Jagielski
1002*b1cdbd2cSJim Jagielski //=========================================================================
createSortedDynamicCursor(const Sequence<rtl::OUString> & rPropertyNames,const Sequence<NumberedSortingInfo> & rSortInfo,Reference<XAnyCompareFactory> rAnyCompareFactory,ResultSetInclude eMode)1003*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > Content::createSortedDynamicCursor(
1004*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >& rPropertyNames,
1005*b1cdbd2cSJim Jagielski const Sequence< NumberedSortingInfo >& rSortInfo,
1006*b1cdbd2cSJim Jagielski Reference< XAnyCompareFactory > rAnyCompareFactory,
1007*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
1008*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1009*b1cdbd2cSJim Jagielski {
1010*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aResult;
1011*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aOrigCursor = createDynamicCursor( rPropertyNames, eMode );
1012*b1cdbd2cSJim Jagielski
1013*b1cdbd2cSJim Jagielski if( aOrigCursor.is() )
1014*b1cdbd2cSJim Jagielski {
1015*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > aServiceManager = m_xImpl->getServiceManager();
1016*b1cdbd2cSJim Jagielski
1017*b1cdbd2cSJim Jagielski if( aServiceManager.is() )
1018*b1cdbd2cSJim Jagielski {
1019*b1cdbd2cSJim Jagielski Reference< XSortedDynamicResultSetFactory > aSortFactory( aServiceManager->createInstance(
1020*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii( "com.sun.star.ucb.SortedDynamicResultSetFactory" )),
1021*b1cdbd2cSJim Jagielski UNO_QUERY );
1022*b1cdbd2cSJim Jagielski
1023*b1cdbd2cSJim Jagielski aResult = aSortFactory->createSortedDynamicResultSet( aOrigCursor,
1024*b1cdbd2cSJim Jagielski rSortInfo,
1025*b1cdbd2cSJim Jagielski rAnyCompareFactory );
1026*b1cdbd2cSJim Jagielski }
1027*b1cdbd2cSJim Jagielski
1028*b1cdbd2cSJim Jagielski OSL_ENSURE( aResult.is(), "Content::createSortedDynamicCursor - no sorted cursor!\n" );
1029*b1cdbd2cSJim Jagielski
1030*b1cdbd2cSJim Jagielski if( !aResult.is() )
1031*b1cdbd2cSJim Jagielski aResult = aOrigCursor;
1032*b1cdbd2cSJim Jagielski }
1033*b1cdbd2cSJim Jagielski
1034*b1cdbd2cSJim Jagielski return aResult;
1035*b1cdbd2cSJim Jagielski }
1036*b1cdbd2cSJim Jagielski
1037*b1cdbd2cSJim Jagielski //=========================================================================
createSortedDynamicCursor(const Sequence<sal_Int32> & rPropertyHandles,const Sequence<NumberedSortingInfo> & rSortInfo,Reference<XAnyCompareFactory> rAnyCompareFactory,ResultSetInclude eMode)1038*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > Content::createSortedDynamicCursor(
1039*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >& rPropertyHandles,
1040*b1cdbd2cSJim Jagielski const Sequence< NumberedSortingInfo >& rSortInfo,
1041*b1cdbd2cSJim Jagielski Reference< XAnyCompareFactory > rAnyCompareFactory,
1042*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
1043*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1044*b1cdbd2cSJim Jagielski {
1045*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aResult;
1046*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aOrigCursor = createDynamicCursor( rPropertyHandles, eMode );
1047*b1cdbd2cSJim Jagielski
1048*b1cdbd2cSJim Jagielski if( aOrigCursor.is() )
1049*b1cdbd2cSJim Jagielski {
1050*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > aServiceManager = m_xImpl->getServiceManager();
1051*b1cdbd2cSJim Jagielski
1052*b1cdbd2cSJim Jagielski if( aServiceManager.is() )
1053*b1cdbd2cSJim Jagielski {
1054*b1cdbd2cSJim Jagielski Reference< XSortedDynamicResultSetFactory > aSortFactory( aServiceManager->createInstance(
1055*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii( "com.sun.star.ucb.SortedDynamicResultSetFactory" )),
1056*b1cdbd2cSJim Jagielski UNO_QUERY );
1057*b1cdbd2cSJim Jagielski
1058*b1cdbd2cSJim Jagielski aResult = aSortFactory->createSortedDynamicResultSet( aOrigCursor,
1059*b1cdbd2cSJim Jagielski rSortInfo,
1060*b1cdbd2cSJim Jagielski rAnyCompareFactory );
1061*b1cdbd2cSJim Jagielski }
1062*b1cdbd2cSJim Jagielski
1063*b1cdbd2cSJim Jagielski OSL_ENSURE( aResult.is(), "Content::createSortedDynamicCursor - no sorted cursor!\n" );
1064*b1cdbd2cSJim Jagielski
1065*b1cdbd2cSJim Jagielski if( !aResult.is() )
1066*b1cdbd2cSJim Jagielski aResult = aOrigCursor;
1067*b1cdbd2cSJim Jagielski }
1068*b1cdbd2cSJim Jagielski
1069*b1cdbd2cSJim Jagielski return aResult;
1070*b1cdbd2cSJim Jagielski }
1071*b1cdbd2cSJim Jagielski
1072*b1cdbd2cSJim Jagielski //=========================================================================
createSortedCursor(const Sequence<rtl::OUString> & rPropertyNames,const Sequence<NumberedSortingInfo> & rSortInfo,Reference<XAnyCompareFactory> rAnyCompareFactory,ResultSetInclude eMode)1073*b1cdbd2cSJim Jagielski Reference< XResultSet > Content::createSortedCursor(
1074*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >& rPropertyNames,
1075*b1cdbd2cSJim Jagielski const Sequence< NumberedSortingInfo >& rSortInfo,
1076*b1cdbd2cSJim Jagielski Reference< XAnyCompareFactory > rAnyCompareFactory,
1077*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
1078*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1079*b1cdbd2cSJim Jagielski {
1080*b1cdbd2cSJim Jagielski Reference< XResultSet > aResult;
1081*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aDynSet;
1082*b1cdbd2cSJim Jagielski
1083*b1cdbd2cSJim Jagielski Any aCursorAny = createCursorAny( rPropertyNames, eMode );
1084*b1cdbd2cSJim Jagielski
1085*b1cdbd2cSJim Jagielski aCursorAny >>= aDynSet;
1086*b1cdbd2cSJim Jagielski
1087*b1cdbd2cSJim Jagielski if( aDynSet.is() )
1088*b1cdbd2cSJim Jagielski {
1089*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aDynResult;
1090*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > aServiceManager = m_xImpl->getServiceManager();
1091*b1cdbd2cSJim Jagielski
1092*b1cdbd2cSJim Jagielski if( aServiceManager.is() )
1093*b1cdbd2cSJim Jagielski {
1094*b1cdbd2cSJim Jagielski Reference< XSortedDynamicResultSetFactory > aSortFactory( aServiceManager->createInstance(
1095*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii( "com.sun.star.ucb.SortedDynamicResultSetFactory" )),
1096*b1cdbd2cSJim Jagielski UNO_QUERY );
1097*b1cdbd2cSJim Jagielski
1098*b1cdbd2cSJim Jagielski aDynResult = aSortFactory->createSortedDynamicResultSet( aDynSet,
1099*b1cdbd2cSJim Jagielski rSortInfo,
1100*b1cdbd2cSJim Jagielski rAnyCompareFactory );
1101*b1cdbd2cSJim Jagielski }
1102*b1cdbd2cSJim Jagielski
1103*b1cdbd2cSJim Jagielski OSL_ENSURE( aDynResult.is(), "Content::createSortedCursor - no sorted cursor!\n" );
1104*b1cdbd2cSJim Jagielski
1105*b1cdbd2cSJim Jagielski if( aDynResult.is() )
1106*b1cdbd2cSJim Jagielski aResult = aDynResult->getStaticResultSet();
1107*b1cdbd2cSJim Jagielski else
1108*b1cdbd2cSJim Jagielski aResult = aDynSet->getStaticResultSet();
1109*b1cdbd2cSJim Jagielski }
1110*b1cdbd2cSJim Jagielski
1111*b1cdbd2cSJim Jagielski OSL_ENSURE( aResult.is(), "Content::createSortedCursor - no cursor!" );
1112*b1cdbd2cSJim Jagielski
1113*b1cdbd2cSJim Jagielski if ( !aResult.is() )
1114*b1cdbd2cSJim Jagielski {
1115*b1cdbd2cSJim Jagielski // Former, the open command directly returned a XResultSet.
1116*b1cdbd2cSJim Jagielski aCursorAny >>= aResult;
1117*b1cdbd2cSJim Jagielski
1118*b1cdbd2cSJim Jagielski OSL_ENSURE( !aResult.is(),
1119*b1cdbd2cSJim Jagielski "Content::createCursor - open-Command must "
1120*b1cdbd2cSJim Jagielski "return a Reference< XDynnamicResultSet >!" );
1121*b1cdbd2cSJim Jagielski }
1122*b1cdbd2cSJim Jagielski
1123*b1cdbd2cSJim Jagielski return aResult;
1124*b1cdbd2cSJim Jagielski }
1125*b1cdbd2cSJim Jagielski
1126*b1cdbd2cSJim Jagielski //=========================================================================
createSortedCursor(const Sequence<sal_Int32> & rPropertyHandles,const Sequence<NumberedSortingInfo> & rSortInfo,Reference<XAnyCompareFactory> rAnyCompareFactory,ResultSetInclude eMode)1127*b1cdbd2cSJim Jagielski Reference< XResultSet > Content::createSortedCursor(
1128*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >& rPropertyHandles,
1129*b1cdbd2cSJim Jagielski const Sequence< NumberedSortingInfo >& rSortInfo,
1130*b1cdbd2cSJim Jagielski Reference< XAnyCompareFactory > rAnyCompareFactory,
1131*b1cdbd2cSJim Jagielski ResultSetInclude eMode )
1132*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1133*b1cdbd2cSJim Jagielski {
1134*b1cdbd2cSJim Jagielski Reference< XResultSet > aResult;
1135*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aDynSet;
1136*b1cdbd2cSJim Jagielski
1137*b1cdbd2cSJim Jagielski Any aCursorAny = createCursorAny( rPropertyHandles, eMode );
1138*b1cdbd2cSJim Jagielski
1139*b1cdbd2cSJim Jagielski aCursorAny >>= aDynSet;
1140*b1cdbd2cSJim Jagielski
1141*b1cdbd2cSJim Jagielski if( aDynSet.is() )
1142*b1cdbd2cSJim Jagielski {
1143*b1cdbd2cSJim Jagielski Reference< XDynamicResultSet > aDynResult;
1144*b1cdbd2cSJim Jagielski Reference< XMultiServiceFactory > aServiceManager = m_xImpl->getServiceManager();
1145*b1cdbd2cSJim Jagielski
1146*b1cdbd2cSJim Jagielski if( aServiceManager.is() )
1147*b1cdbd2cSJim Jagielski {
1148*b1cdbd2cSJim Jagielski Reference< XSortedDynamicResultSetFactory > aSortFactory( aServiceManager->createInstance(
1149*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii( "com.sun.star.ucb.SortedDynamicResultSetFactory" )),
1150*b1cdbd2cSJim Jagielski UNO_QUERY );
1151*b1cdbd2cSJim Jagielski
1152*b1cdbd2cSJim Jagielski aDynResult = aSortFactory->createSortedDynamicResultSet( aDynSet,
1153*b1cdbd2cSJim Jagielski rSortInfo,
1154*b1cdbd2cSJim Jagielski rAnyCompareFactory );
1155*b1cdbd2cSJim Jagielski }
1156*b1cdbd2cSJim Jagielski
1157*b1cdbd2cSJim Jagielski OSL_ENSURE( aDynResult.is(), "Content::createSortedCursor - no sorted cursor!\n" );
1158*b1cdbd2cSJim Jagielski
1159*b1cdbd2cSJim Jagielski if( aDynResult.is() )
1160*b1cdbd2cSJim Jagielski aResult = aDynResult->getStaticResultSet();
1161*b1cdbd2cSJim Jagielski else
1162*b1cdbd2cSJim Jagielski aResult = aDynSet->getStaticResultSet();
1163*b1cdbd2cSJim Jagielski }
1164*b1cdbd2cSJim Jagielski
1165*b1cdbd2cSJim Jagielski OSL_ENSURE( aResult.is(), "Content::createSortedCursor - no cursor!" );
1166*b1cdbd2cSJim Jagielski
1167*b1cdbd2cSJim Jagielski if ( !aResult.is() )
1168*b1cdbd2cSJim Jagielski {
1169*b1cdbd2cSJim Jagielski // Former, the open command directly returned a XResultSet.
1170*b1cdbd2cSJim Jagielski aCursorAny >>= aResult;
1171*b1cdbd2cSJim Jagielski
1172*b1cdbd2cSJim Jagielski OSL_ENSURE( !aResult.is(),
1173*b1cdbd2cSJim Jagielski "Content::createCursor - open-Command must "
1174*b1cdbd2cSJim Jagielski "return a Reference< XDynnamicResultSet >!" );
1175*b1cdbd2cSJim Jagielski }
1176*b1cdbd2cSJim Jagielski
1177*b1cdbd2cSJim Jagielski return aResult;
1178*b1cdbd2cSJim Jagielski }
1179*b1cdbd2cSJim Jagielski
1180*b1cdbd2cSJim Jagielski //=========================================================================
openStream()1181*b1cdbd2cSJim Jagielski Reference< XInputStream > Content::openStream()
1182*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1183*b1cdbd2cSJim Jagielski {
1184*b1cdbd2cSJim Jagielski if ( !isDocument() )
1185*b1cdbd2cSJim Jagielski return Reference< XInputStream >();
1186*b1cdbd2cSJim Jagielski
1187*b1cdbd2cSJim Jagielski Reference< XActiveDataSink > xSink = new ActiveDataSink;
1188*b1cdbd2cSJim Jagielski
1189*b1cdbd2cSJim Jagielski OpenCommandArgument2 aArg;
1190*b1cdbd2cSJim Jagielski aArg.Mode = OpenMode::DOCUMENT;
1191*b1cdbd2cSJim Jagielski aArg.Priority = 0; // unused
1192*b1cdbd2cSJim Jagielski aArg.Sink = xSink;
1193*b1cdbd2cSJim Jagielski aArg.Properties = Sequence< Property >( 0 ); // unused
1194*b1cdbd2cSJim Jagielski
1195*b1cdbd2cSJim Jagielski Command aCommand;
1196*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "open" );
1197*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1198*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
1199*b1cdbd2cSJim Jagielski
1200*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1201*b1cdbd2cSJim Jagielski
1202*b1cdbd2cSJim Jagielski return xSink->getInputStream();
1203*b1cdbd2cSJim Jagielski }
1204*b1cdbd2cSJim Jagielski
1205*b1cdbd2cSJim Jagielski //=========================================================================
openStreamNoLock()1206*b1cdbd2cSJim Jagielski Reference< XInputStream > Content::openStreamNoLock()
1207*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1208*b1cdbd2cSJim Jagielski {
1209*b1cdbd2cSJim Jagielski if ( !isDocument() )
1210*b1cdbd2cSJim Jagielski return Reference< XInputStream >();
1211*b1cdbd2cSJim Jagielski
1212*b1cdbd2cSJim Jagielski Reference< XActiveDataSink > xSink = new ActiveDataSink;
1213*b1cdbd2cSJim Jagielski
1214*b1cdbd2cSJim Jagielski OpenCommandArgument2 aArg;
1215*b1cdbd2cSJim Jagielski aArg.Mode = OpenMode::DOCUMENT_SHARE_DENY_NONE;
1216*b1cdbd2cSJim Jagielski aArg.Priority = 0; // unused
1217*b1cdbd2cSJim Jagielski aArg.Sink = xSink;
1218*b1cdbd2cSJim Jagielski aArg.Properties = Sequence< Property >( 0 ); // unused
1219*b1cdbd2cSJim Jagielski
1220*b1cdbd2cSJim Jagielski Command aCommand;
1221*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "open" );
1222*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1223*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
1224*b1cdbd2cSJim Jagielski
1225*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1226*b1cdbd2cSJim Jagielski
1227*b1cdbd2cSJim Jagielski return xSink->getInputStream();
1228*b1cdbd2cSJim Jagielski }
1229*b1cdbd2cSJim Jagielski
1230*b1cdbd2cSJim Jagielski //=========================================================================
openWriteableStream()1231*b1cdbd2cSJim Jagielski Reference< XStream > Content::openWriteableStream()
1232*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1233*b1cdbd2cSJim Jagielski {
1234*b1cdbd2cSJim Jagielski if ( !isDocument() )
1235*b1cdbd2cSJim Jagielski return Reference< XStream >();
1236*b1cdbd2cSJim Jagielski
1237*b1cdbd2cSJim Jagielski Reference< XActiveDataStreamer > xStreamer = new ActiveDataStreamer;
1238*b1cdbd2cSJim Jagielski
1239*b1cdbd2cSJim Jagielski OpenCommandArgument2 aArg;
1240*b1cdbd2cSJim Jagielski aArg.Mode = OpenMode::DOCUMENT;
1241*b1cdbd2cSJim Jagielski aArg.Priority = 0; // unused
1242*b1cdbd2cSJim Jagielski aArg.Sink = xStreamer;
1243*b1cdbd2cSJim Jagielski aArg.Properties = Sequence< Property >( 0 ); // unused
1244*b1cdbd2cSJim Jagielski
1245*b1cdbd2cSJim Jagielski Command aCommand;
1246*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "open" );
1247*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1248*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
1249*b1cdbd2cSJim Jagielski
1250*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1251*b1cdbd2cSJim Jagielski
1252*b1cdbd2cSJim Jagielski return xStreamer->getStream();
1253*b1cdbd2cSJim Jagielski }
1254*b1cdbd2cSJim Jagielski
1255*b1cdbd2cSJim Jagielski //=========================================================================
openWriteableStreamNoLock()1256*b1cdbd2cSJim Jagielski Reference< XStream > Content::openWriteableStreamNoLock()
1257*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1258*b1cdbd2cSJim Jagielski {
1259*b1cdbd2cSJim Jagielski if ( !isDocument() )
1260*b1cdbd2cSJim Jagielski return Reference< XStream >();
1261*b1cdbd2cSJim Jagielski
1262*b1cdbd2cSJim Jagielski Reference< XActiveDataStreamer > xStreamer = new ActiveDataStreamer;
1263*b1cdbd2cSJim Jagielski
1264*b1cdbd2cSJim Jagielski OpenCommandArgument2 aArg;
1265*b1cdbd2cSJim Jagielski aArg.Mode = OpenMode::DOCUMENT_SHARE_DENY_NONE;
1266*b1cdbd2cSJim Jagielski aArg.Priority = 0; // unused
1267*b1cdbd2cSJim Jagielski aArg.Sink = xStreamer;
1268*b1cdbd2cSJim Jagielski aArg.Properties = Sequence< Property >( 0 ); // unused
1269*b1cdbd2cSJim Jagielski
1270*b1cdbd2cSJim Jagielski Command aCommand;
1271*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "open" );
1272*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1273*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
1274*b1cdbd2cSJim Jagielski
1275*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1276*b1cdbd2cSJim Jagielski
1277*b1cdbd2cSJim Jagielski return xStreamer->getStream();
1278*b1cdbd2cSJim Jagielski }
1279*b1cdbd2cSJim Jagielski
1280*b1cdbd2cSJim Jagielski //=========================================================================
openStream(const Reference<XActiveDataSink> & rSink)1281*b1cdbd2cSJim Jagielski sal_Bool Content::openStream( const Reference< XActiveDataSink >& rSink )
1282*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1283*b1cdbd2cSJim Jagielski {
1284*b1cdbd2cSJim Jagielski if ( !isDocument() )
1285*b1cdbd2cSJim Jagielski return sal_False;
1286*b1cdbd2cSJim Jagielski
1287*b1cdbd2cSJim Jagielski OpenCommandArgument2 aArg;
1288*b1cdbd2cSJim Jagielski aArg.Mode = OpenMode::DOCUMENT;
1289*b1cdbd2cSJim Jagielski aArg.Priority = 0; // unused
1290*b1cdbd2cSJim Jagielski aArg.Sink = rSink;
1291*b1cdbd2cSJim Jagielski aArg.Properties = Sequence< Property >( 0 ); // unused
1292*b1cdbd2cSJim Jagielski
1293*b1cdbd2cSJim Jagielski Command aCommand;
1294*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "open" );
1295*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1296*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
1297*b1cdbd2cSJim Jagielski
1298*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1299*b1cdbd2cSJim Jagielski
1300*b1cdbd2cSJim Jagielski return sal_True;
1301*b1cdbd2cSJim Jagielski }
1302*b1cdbd2cSJim Jagielski
1303*b1cdbd2cSJim Jagielski //=========================================================================
openStream(const Reference<XOutputStream> & rStream)1304*b1cdbd2cSJim Jagielski sal_Bool Content::openStream( const Reference< XOutputStream >& rStream )
1305*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1306*b1cdbd2cSJim Jagielski {
1307*b1cdbd2cSJim Jagielski if ( !isDocument() )
1308*b1cdbd2cSJim Jagielski return sal_False;
1309*b1cdbd2cSJim Jagielski
1310*b1cdbd2cSJim Jagielski OpenCommandArgument2 aArg;
1311*b1cdbd2cSJim Jagielski aArg.Mode = OpenMode::DOCUMENT;
1312*b1cdbd2cSJim Jagielski aArg.Priority = 0; // unused
1313*b1cdbd2cSJim Jagielski aArg.Sink = rStream;
1314*b1cdbd2cSJim Jagielski aArg.Properties = Sequence< Property >( 0 ); // unused
1315*b1cdbd2cSJim Jagielski
1316*b1cdbd2cSJim Jagielski Command aCommand;
1317*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "open" );
1318*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1319*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
1320*b1cdbd2cSJim Jagielski
1321*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1322*b1cdbd2cSJim Jagielski
1323*b1cdbd2cSJim Jagielski return sal_True;
1324*b1cdbd2cSJim Jagielski }
1325*b1cdbd2cSJim Jagielski
1326*b1cdbd2cSJim Jagielski //=========================================================================
writeStream(const Reference<XInputStream> & rStream,sal_Bool bReplaceExisting)1327*b1cdbd2cSJim Jagielski void Content::writeStream( const Reference< XInputStream >& rStream,
1328*b1cdbd2cSJim Jagielski sal_Bool bReplaceExisting )
1329*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1330*b1cdbd2cSJim Jagielski {
1331*b1cdbd2cSJim Jagielski InsertCommandArgument aArg;
1332*b1cdbd2cSJim Jagielski aArg.Data = rStream.is() ? rStream : new EmptyInputStream;
1333*b1cdbd2cSJim Jagielski aArg.ReplaceExisting = bReplaceExisting;
1334*b1cdbd2cSJim Jagielski
1335*b1cdbd2cSJim Jagielski Command aCommand;
1336*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "insert" );
1337*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1338*b1cdbd2cSJim Jagielski aCommand.Argument <<= aArg;
1339*b1cdbd2cSJim Jagielski
1340*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1341*b1cdbd2cSJim Jagielski
1342*b1cdbd2cSJim Jagielski m_xImpl->inserted();
1343*b1cdbd2cSJim Jagielski }
1344*b1cdbd2cSJim Jagielski
1345*b1cdbd2cSJim Jagielski //=========================================================================
queryCreatableContentsInfo()1346*b1cdbd2cSJim Jagielski Sequence< ContentInfo > Content::queryCreatableContentsInfo()
1347*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1348*b1cdbd2cSJim Jagielski {
1349*b1cdbd2cSJim Jagielski // First, try it using "CreatableContentsInfo" property -> the "new" way.
1350*b1cdbd2cSJim Jagielski Sequence< ContentInfo > aInfo;
1351*b1cdbd2cSJim Jagielski if ( getPropertyValue(
1352*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii( "CreatableContentsInfo" ) )
1353*b1cdbd2cSJim Jagielski >>= aInfo )
1354*b1cdbd2cSJim Jagielski return aInfo;
1355*b1cdbd2cSJim Jagielski
1356*b1cdbd2cSJim Jagielski // Second, try it using XContentCreator interface -> the "old" way (not
1357*b1cdbd2cSJim Jagielski // providing the chance to supply an XCommandEnvironment.
1358*b1cdbd2cSJim Jagielski Reference< XContentCreator > xCreator( m_xImpl->getContent(), UNO_QUERY );
1359*b1cdbd2cSJim Jagielski if ( xCreator.is() )
1360*b1cdbd2cSJim Jagielski aInfo = xCreator->queryCreatableContentsInfo();
1361*b1cdbd2cSJim Jagielski
1362*b1cdbd2cSJim Jagielski return aInfo;
1363*b1cdbd2cSJim Jagielski }
1364*b1cdbd2cSJim Jagielski
1365*b1cdbd2cSJim Jagielski //=========================================================================
insertNewContent(const rtl::OUString & rContentType,const Sequence<rtl::OUString> & rPropertyNames,const Sequence<Any> & rPropertyValues,Content & rNewContent)1366*b1cdbd2cSJim Jagielski sal_Bool Content::insertNewContent( const rtl::OUString& rContentType,
1367*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >&
1368*b1cdbd2cSJim Jagielski rPropertyNames,
1369*b1cdbd2cSJim Jagielski const Sequence< Any >& rPropertyValues,
1370*b1cdbd2cSJim Jagielski Content& rNewContent )
1371*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1372*b1cdbd2cSJim Jagielski {
1373*b1cdbd2cSJim Jagielski return insertNewContent( rContentType,
1374*b1cdbd2cSJim Jagielski rPropertyNames,
1375*b1cdbd2cSJim Jagielski rPropertyValues,
1376*b1cdbd2cSJim Jagielski new EmptyInputStream,
1377*b1cdbd2cSJim Jagielski rNewContent );
1378*b1cdbd2cSJim Jagielski }
1379*b1cdbd2cSJim Jagielski
1380*b1cdbd2cSJim Jagielski //=========================================================================
insertNewContent(const rtl::OUString & rContentType,const Sequence<sal_Int32> & nPropertyHandles,const Sequence<Any> & rPropertyValues,Content & rNewContent)1381*b1cdbd2cSJim Jagielski sal_Bool Content::insertNewContent( const rtl::OUString& rContentType,
1382*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >&
1383*b1cdbd2cSJim Jagielski nPropertyHandles,
1384*b1cdbd2cSJim Jagielski const Sequence< Any >& rPropertyValues,
1385*b1cdbd2cSJim Jagielski Content& rNewContent )
1386*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1387*b1cdbd2cSJim Jagielski {
1388*b1cdbd2cSJim Jagielski return insertNewContent( rContentType,
1389*b1cdbd2cSJim Jagielski nPropertyHandles,
1390*b1cdbd2cSJim Jagielski rPropertyValues,
1391*b1cdbd2cSJim Jagielski new EmptyInputStream,
1392*b1cdbd2cSJim Jagielski rNewContent );
1393*b1cdbd2cSJim Jagielski }
1394*b1cdbd2cSJim Jagielski
1395*b1cdbd2cSJim Jagielski //=========================================================================
insertNewContent(const rtl::OUString & rContentType,const Sequence<rtl::OUString> & rPropertyNames,const Sequence<Any> & rPropertyValues,const Reference<XInputStream> & rData,Content & rNewContent)1396*b1cdbd2cSJim Jagielski sal_Bool Content::insertNewContent( const rtl::OUString& rContentType,
1397*b1cdbd2cSJim Jagielski const Sequence< rtl::OUString >&
1398*b1cdbd2cSJim Jagielski rPropertyNames,
1399*b1cdbd2cSJim Jagielski const Sequence< Any >& rPropertyValues,
1400*b1cdbd2cSJim Jagielski const Reference< XInputStream >& rData,
1401*b1cdbd2cSJim Jagielski Content& rNewContent )
1402*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1403*b1cdbd2cSJim Jagielski {
1404*b1cdbd2cSJim Jagielski if ( rContentType.getLength() == 0 )
1405*b1cdbd2cSJim Jagielski return sal_False;
1406*b1cdbd2cSJim Jagielski
1407*b1cdbd2cSJim Jagielski // First, try it using "createNewContent" command -> the "new" way.
1408*b1cdbd2cSJim Jagielski ContentInfo aInfo;
1409*b1cdbd2cSJim Jagielski aInfo.Type = rContentType;
1410*b1cdbd2cSJim Jagielski aInfo.Attributes = 0;
1411*b1cdbd2cSJim Jagielski
1412*b1cdbd2cSJim Jagielski Command aCommand;
1413*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "createNewContent" );
1414*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1415*b1cdbd2cSJim Jagielski aCommand.Argument <<= aInfo;
1416*b1cdbd2cSJim Jagielski
1417*b1cdbd2cSJim Jagielski Reference< XContent > xNew;
1418*b1cdbd2cSJim Jagielski try
1419*b1cdbd2cSJim Jagielski {
1420*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand ) >>= xNew;
1421*b1cdbd2cSJim Jagielski }
1422*b1cdbd2cSJim Jagielski catch ( RuntimeException const & )
1423*b1cdbd2cSJim Jagielski {
1424*b1cdbd2cSJim Jagielski throw;
1425*b1cdbd2cSJim Jagielski }
1426*b1cdbd2cSJim Jagielski catch ( Exception const & )
1427*b1cdbd2cSJim Jagielski {
1428*b1cdbd2cSJim Jagielski }
1429*b1cdbd2cSJim Jagielski
1430*b1cdbd2cSJim Jagielski if ( !xNew.is() )
1431*b1cdbd2cSJim Jagielski {
1432*b1cdbd2cSJim Jagielski // Second, try it using XContentCreator interface -> the "old"
1433*b1cdbd2cSJim Jagielski // way (not providing the chance to supply an XCommandEnvironment.
1434*b1cdbd2cSJim Jagielski Reference< XContentCreator > xCreator( m_xImpl->getContent(), UNO_QUERY );
1435*b1cdbd2cSJim Jagielski
1436*b1cdbd2cSJim Jagielski if ( !xCreator.is() )
1437*b1cdbd2cSJim Jagielski return sal_False;
1438*b1cdbd2cSJim Jagielski
1439*b1cdbd2cSJim Jagielski xNew = xCreator->createNewContent( aInfo );
1440*b1cdbd2cSJim Jagielski
1441*b1cdbd2cSJim Jagielski if ( !xNew.is() )
1442*b1cdbd2cSJim Jagielski return sal_False;
1443*b1cdbd2cSJim Jagielski }
1444*b1cdbd2cSJim Jagielski
1445*b1cdbd2cSJim Jagielski Content aNewContent( xNew, m_xImpl->getEnvironment() );
1446*b1cdbd2cSJim Jagielski aNewContent.setPropertyValues( rPropertyNames, rPropertyValues );
1447*b1cdbd2cSJim Jagielski aNewContent.executeCommand( rtl::OUString::createFromAscii( "insert" ),
1448*b1cdbd2cSJim Jagielski makeAny(
1449*b1cdbd2cSJim Jagielski InsertCommandArgument(
1450*b1cdbd2cSJim Jagielski rData.is() ? rData : new EmptyInputStream,
1451*b1cdbd2cSJim Jagielski sal_False /* ReplaceExisting */ ) ) );
1452*b1cdbd2cSJim Jagielski aNewContent.m_xImpl->inserted();
1453*b1cdbd2cSJim Jagielski
1454*b1cdbd2cSJim Jagielski rNewContent = aNewContent;
1455*b1cdbd2cSJim Jagielski return sal_True;
1456*b1cdbd2cSJim Jagielski }
1457*b1cdbd2cSJim Jagielski
1458*b1cdbd2cSJim Jagielski //=========================================================================
insertNewContent(const rtl::OUString & rContentType,const Sequence<sal_Int32> & nPropertyHandles,const Sequence<Any> & rPropertyValues,const Reference<XInputStream> & rData,Content & rNewContent)1459*b1cdbd2cSJim Jagielski sal_Bool Content::insertNewContent( const rtl::OUString& rContentType,
1460*b1cdbd2cSJim Jagielski const Sequence< sal_Int32 >&
1461*b1cdbd2cSJim Jagielski nPropertyHandles,
1462*b1cdbd2cSJim Jagielski const Sequence< Any >& rPropertyValues,
1463*b1cdbd2cSJim Jagielski const Reference< XInputStream >& rData,
1464*b1cdbd2cSJim Jagielski Content& rNewContent )
1465*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1466*b1cdbd2cSJim Jagielski {
1467*b1cdbd2cSJim Jagielski if ( rContentType.getLength() == 0 )
1468*b1cdbd2cSJim Jagielski return sal_False;
1469*b1cdbd2cSJim Jagielski
1470*b1cdbd2cSJim Jagielski // First, try it using "createNewContent" command -> the "new" way.
1471*b1cdbd2cSJim Jagielski ContentInfo aInfo;
1472*b1cdbd2cSJim Jagielski aInfo.Type = rContentType;
1473*b1cdbd2cSJim Jagielski aInfo.Attributes = 0;
1474*b1cdbd2cSJim Jagielski
1475*b1cdbd2cSJim Jagielski Command aCommand;
1476*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "createNewContent" );
1477*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1478*b1cdbd2cSJim Jagielski aCommand.Argument <<= aInfo;
1479*b1cdbd2cSJim Jagielski
1480*b1cdbd2cSJim Jagielski Reference< XContent > xNew;
1481*b1cdbd2cSJim Jagielski try
1482*b1cdbd2cSJim Jagielski {
1483*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand ) >>= xNew;
1484*b1cdbd2cSJim Jagielski }
1485*b1cdbd2cSJim Jagielski catch ( RuntimeException const & )
1486*b1cdbd2cSJim Jagielski {
1487*b1cdbd2cSJim Jagielski throw;
1488*b1cdbd2cSJim Jagielski }
1489*b1cdbd2cSJim Jagielski catch ( Exception const & )
1490*b1cdbd2cSJim Jagielski {
1491*b1cdbd2cSJim Jagielski }
1492*b1cdbd2cSJim Jagielski
1493*b1cdbd2cSJim Jagielski if ( !xNew.is() )
1494*b1cdbd2cSJim Jagielski {
1495*b1cdbd2cSJim Jagielski // Second, try it using XContentCreator interface -> the "old"
1496*b1cdbd2cSJim Jagielski // way (not providing the chance to supply an XCommandEnvironment.
1497*b1cdbd2cSJim Jagielski Reference< XContentCreator > xCreator( m_xImpl->getContent(), UNO_QUERY );
1498*b1cdbd2cSJim Jagielski
1499*b1cdbd2cSJim Jagielski if ( !xCreator.is() )
1500*b1cdbd2cSJim Jagielski return sal_False;
1501*b1cdbd2cSJim Jagielski
1502*b1cdbd2cSJim Jagielski xNew = xCreator->createNewContent( aInfo );
1503*b1cdbd2cSJim Jagielski
1504*b1cdbd2cSJim Jagielski if ( !xNew.is() )
1505*b1cdbd2cSJim Jagielski return sal_False;
1506*b1cdbd2cSJim Jagielski }
1507*b1cdbd2cSJim Jagielski
1508*b1cdbd2cSJim Jagielski Content aNewContent( xNew, m_xImpl->getEnvironment() );
1509*b1cdbd2cSJim Jagielski aNewContent.setPropertyValues( nPropertyHandles, rPropertyValues );
1510*b1cdbd2cSJim Jagielski aNewContent.executeCommand( rtl::OUString::createFromAscii( "insert" ),
1511*b1cdbd2cSJim Jagielski makeAny(
1512*b1cdbd2cSJim Jagielski InsertCommandArgument(
1513*b1cdbd2cSJim Jagielski rData.is() ? rData : new EmptyInputStream,
1514*b1cdbd2cSJim Jagielski sal_False /* ReplaceExisting */ ) ) );
1515*b1cdbd2cSJim Jagielski aNewContent.m_xImpl->inserted();
1516*b1cdbd2cSJim Jagielski
1517*b1cdbd2cSJim Jagielski rNewContent = aNewContent;
1518*b1cdbd2cSJim Jagielski return sal_True;
1519*b1cdbd2cSJim Jagielski }
1520*b1cdbd2cSJim Jagielski
1521*b1cdbd2cSJim Jagielski //=========================================================================
transferContent(const Content & rSourceContent,InsertOperation eOperation,const rtl::OUString & rTitle,const sal_Int32 nNameClashAction)1522*b1cdbd2cSJim Jagielski sal_Bool Content::transferContent( const Content& rSourceContent,
1523*b1cdbd2cSJim Jagielski InsertOperation eOperation,
1524*b1cdbd2cSJim Jagielski const rtl::OUString & rTitle,
1525*b1cdbd2cSJim Jagielski const sal_Int32 nNameClashAction )
1526*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1527*b1cdbd2cSJim Jagielski {
1528*b1cdbd2cSJim Jagielski ContentBroker* pBroker = ContentBroker::get();
1529*b1cdbd2cSJim Jagielski if ( !pBroker )
1530*b1cdbd2cSJim Jagielski {
1531*b1cdbd2cSJim Jagielski OSL_ENSURE( sal_False,
1532*b1cdbd2cSJim Jagielski "Content::transferContent - No Content Broker!" );
1533*b1cdbd2cSJim Jagielski return sal_False;
1534*b1cdbd2cSJim Jagielski }
1535*b1cdbd2cSJim Jagielski
1536*b1cdbd2cSJim Jagielski Reference< XCommandProcessor > xCmdProc(
1537*b1cdbd2cSJim Jagielski pBroker->getCommandProcessorInterface() );
1538*b1cdbd2cSJim Jagielski if ( !xCmdProc.is() )
1539*b1cdbd2cSJim Jagielski {
1540*b1cdbd2cSJim Jagielski OSL_ENSURE( sal_False,
1541*b1cdbd2cSJim Jagielski "Content::transferContent - No XCommandProcessor!" );
1542*b1cdbd2cSJim Jagielski return sal_False;
1543*b1cdbd2cSJim Jagielski }
1544*b1cdbd2cSJim Jagielski
1545*b1cdbd2cSJim Jagielski // Execute command "globalTransfer" at UCB.
1546*b1cdbd2cSJim Jagielski
1547*b1cdbd2cSJim Jagielski TransferCommandOperation eTransOp = TransferCommandOperation();
1548*b1cdbd2cSJim Jagielski switch ( eOperation )
1549*b1cdbd2cSJim Jagielski {
1550*b1cdbd2cSJim Jagielski case InsertOperation_COPY:
1551*b1cdbd2cSJim Jagielski eTransOp = TransferCommandOperation_COPY;
1552*b1cdbd2cSJim Jagielski break;
1553*b1cdbd2cSJim Jagielski
1554*b1cdbd2cSJim Jagielski case InsertOperation_MOVE:
1555*b1cdbd2cSJim Jagielski eTransOp = TransferCommandOperation_MOVE;
1556*b1cdbd2cSJim Jagielski break;
1557*b1cdbd2cSJim Jagielski
1558*b1cdbd2cSJim Jagielski case InsertOperation_LINK:
1559*b1cdbd2cSJim Jagielski eTransOp = TransferCommandOperation_LINK;
1560*b1cdbd2cSJim Jagielski break;
1561*b1cdbd2cSJim Jagielski
1562*b1cdbd2cSJim Jagielski default:
1563*b1cdbd2cSJim Jagielski ucbhelper::cancelCommandExecution(
1564*b1cdbd2cSJim Jagielski makeAny( IllegalArgumentException(
1565*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
1566*b1cdbd2cSJim Jagielski "Unknown transfer operation!" ),
1567*b1cdbd2cSJim Jagielski get(),
1568*b1cdbd2cSJim Jagielski -1 ) ),
1569*b1cdbd2cSJim Jagielski m_xImpl->getEnvironment() );
1570*b1cdbd2cSJim Jagielski // Unreachable
1571*b1cdbd2cSJim Jagielski }
1572*b1cdbd2cSJim Jagielski
1573*b1cdbd2cSJim Jagielski GlobalTransferCommandArgument aTransferArg(
1574*b1cdbd2cSJim Jagielski eTransOp,
1575*b1cdbd2cSJim Jagielski rSourceContent.getURL(), // SourceURL
1576*b1cdbd2cSJim Jagielski getURL(), // TargetFolderURL,
1577*b1cdbd2cSJim Jagielski rTitle,
1578*b1cdbd2cSJim Jagielski nNameClashAction );
1579*b1cdbd2cSJim Jagielski Command aCommand;
1580*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "globalTransfer" );
1581*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1582*b1cdbd2cSJim Jagielski aCommand.Argument <<= aTransferArg;
1583*b1cdbd2cSJim Jagielski
1584*b1cdbd2cSJim Jagielski xCmdProc->execute( aCommand, 0, m_xImpl->getEnvironment() );
1585*b1cdbd2cSJim Jagielski return sal_True;
1586*b1cdbd2cSJim Jagielski }
1587*b1cdbd2cSJim Jagielski
1588*b1cdbd2cSJim Jagielski //=========================================================================
isFolder()1589*b1cdbd2cSJim Jagielski sal_Bool Content::isFolder()
1590*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1591*b1cdbd2cSJim Jagielski {
1592*b1cdbd2cSJim Jagielski sal_Bool bFolder = sal_False;
1593*b1cdbd2cSJim Jagielski if ( getPropertyValue( rtl::OUString::createFromAscii( "IsFolder" ) )
1594*b1cdbd2cSJim Jagielski >>= bFolder )
1595*b1cdbd2cSJim Jagielski return bFolder;
1596*b1cdbd2cSJim Jagielski
1597*b1cdbd2cSJim Jagielski ucbhelper::cancelCommandExecution(
1598*b1cdbd2cSJim Jagielski makeAny( UnknownPropertyException(
1599*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
1600*b1cdbd2cSJim Jagielski "Unable to retreive value of property 'IsFolder'!" ),
1601*b1cdbd2cSJim Jagielski get() ) ),
1602*b1cdbd2cSJim Jagielski m_xImpl->getEnvironment() );
1603*b1cdbd2cSJim Jagielski
1604*b1cdbd2cSJim Jagielski // Unreachable - cancelCommandExecution always throws an exception.
1605*b1cdbd2cSJim Jagielski // But some compilers complain...
1606*b1cdbd2cSJim Jagielski return sal_False;
1607*b1cdbd2cSJim Jagielski }
1608*b1cdbd2cSJim Jagielski
1609*b1cdbd2cSJim Jagielski //=========================================================================
isDocument()1610*b1cdbd2cSJim Jagielski sal_Bool Content::isDocument()
1611*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1612*b1cdbd2cSJim Jagielski {
1613*b1cdbd2cSJim Jagielski sal_Bool bDoc = sal_False;
1614*b1cdbd2cSJim Jagielski if ( getPropertyValue( rtl::OUString::createFromAscii( "IsDocument" ) )
1615*b1cdbd2cSJim Jagielski >>= bDoc )
1616*b1cdbd2cSJim Jagielski return bDoc;
1617*b1cdbd2cSJim Jagielski
1618*b1cdbd2cSJim Jagielski ucbhelper::cancelCommandExecution(
1619*b1cdbd2cSJim Jagielski makeAny( UnknownPropertyException(
1620*b1cdbd2cSJim Jagielski rtl::OUString::createFromAscii(
1621*b1cdbd2cSJim Jagielski "Unable to retreive value of property 'IsDocument'!" ),
1622*b1cdbd2cSJim Jagielski get() ) ),
1623*b1cdbd2cSJim Jagielski m_xImpl->getEnvironment() );
1624*b1cdbd2cSJim Jagielski
1625*b1cdbd2cSJim Jagielski // Unreachable - cancelCommandExecution always throws an exception,
1626*b1cdbd2cSJim Jagielski // But some compilers complain...
1627*b1cdbd2cSJim Jagielski return sal_False;
1628*b1cdbd2cSJim Jagielski }
1629*b1cdbd2cSJim Jagielski
1630*b1cdbd2cSJim Jagielski //->i126305 ===============================================================
lock()1631*b1cdbd2cSJim Jagielski void Content::lock()
1632*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1633*b1cdbd2cSJim Jagielski {
1634*b1cdbd2cSJim Jagielski Command aCommand;
1635*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "lock" );
1636*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1637*b1cdbd2cSJim Jagielski // aCommand.Argument <<= aArg;
1638*b1cdbd2cSJim Jagielski
1639*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1640*b1cdbd2cSJim Jagielski
1641*b1cdbd2cSJim Jagielski // return xSink->getInputStream();
1642*b1cdbd2cSJim Jagielski }
1643*b1cdbd2cSJim Jagielski
1644*b1cdbd2cSJim Jagielski //=========================================================================
unlock()1645*b1cdbd2cSJim Jagielski void Content::unlock()
1646*b1cdbd2cSJim Jagielski throw( CommandAbortedException, RuntimeException, Exception )
1647*b1cdbd2cSJim Jagielski {
1648*b1cdbd2cSJim Jagielski
1649*b1cdbd2cSJim Jagielski // OpenCommandArgument2 aArg;
1650*b1cdbd2cSJim Jagielski //aArg.Mode = OpenMode::DOCUMENT_SHARE_DENY_NONE;
1651*b1cdbd2cSJim Jagielski //aArg.Priority = 0; // unused
1652*b1cdbd2cSJim Jagielski //aArg.Sink = xSink;
1653*b1cdbd2cSJim Jagielski //aArg.Properties = Sequence< Property >( 0 ); // unused
1654*b1cdbd2cSJim Jagielski
1655*b1cdbd2cSJim Jagielski Command aCommand;
1656*b1cdbd2cSJim Jagielski aCommand.Name = rtl::OUString::createFromAscii( "unlock" );
1657*b1cdbd2cSJim Jagielski aCommand.Handle = -1; // n/a
1658*b1cdbd2cSJim Jagielski // aCommand.Argument <<= aArg;
1659*b1cdbd2cSJim Jagielski
1660*b1cdbd2cSJim Jagielski m_xImpl->executeCommand( aCommand );
1661*b1cdbd2cSJim Jagielski
1662*b1cdbd2cSJim Jagielski }
1663*b1cdbd2cSJim Jagielski //<-i126305
1664*b1cdbd2cSJim Jagielski
1665*b1cdbd2cSJim Jagielski //=========================================================================
1666*b1cdbd2cSJim Jagielski //=========================================================================
1667*b1cdbd2cSJim Jagielski //
1668*b1cdbd2cSJim Jagielski // Content_Impl Implementation.
1669*b1cdbd2cSJim Jagielski //
1670*b1cdbd2cSJim Jagielski //=========================================================================
1671*b1cdbd2cSJim Jagielski //=========================================================================
1672*b1cdbd2cSJim Jagielski
Content_Impl(const Reference<XMultiServiceFactory> & rSMgr,const Reference<XContent> & rContent,const Reference<XCommandEnvironment> & rEnv)1673*b1cdbd2cSJim Jagielski Content_Impl::Content_Impl( const Reference< XMultiServiceFactory >& rSMgr,
1674*b1cdbd2cSJim Jagielski const Reference< XContent >& rContent,
1675*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& rEnv )
1676*b1cdbd2cSJim Jagielski : m_xSMgr( rSMgr ),
1677*b1cdbd2cSJim Jagielski m_xContent( rContent ),
1678*b1cdbd2cSJim Jagielski m_xEnv( rEnv ),
1679*b1cdbd2cSJim Jagielski m_nCommandId( 0 )
1680*b1cdbd2cSJim Jagielski {
1681*b1cdbd2cSJim Jagielski if ( m_xContent.is() )
1682*b1cdbd2cSJim Jagielski {
1683*b1cdbd2cSJim Jagielski m_xContentEventListener = new ContentEventListener_Impl( *this );
1684*b1cdbd2cSJim Jagielski m_xContent->addContentEventListener( m_xContentEventListener );
1685*b1cdbd2cSJim Jagielski
1686*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
1687*b1cdbd2cSJim Jagielski // Only done on demand in product version for performance reasons,
1688*b1cdbd2cSJim Jagielski // but a nice debug helper.
1689*b1cdbd2cSJim Jagielski getURL();
1690*b1cdbd2cSJim Jagielski #endif
1691*b1cdbd2cSJim Jagielski }
1692*b1cdbd2cSJim Jagielski }
1693*b1cdbd2cSJim Jagielski
1694*b1cdbd2cSJim Jagielski //=========================================================================
reinit(const Reference<XContent> & xContent)1695*b1cdbd2cSJim Jagielski void Content_Impl::reinit( const Reference< XContent >& xContent )
1696*b1cdbd2cSJim Jagielski {
1697*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1698*b1cdbd2cSJim Jagielski
1699*b1cdbd2cSJim Jagielski m_xCommandProcessor = 0;
1700*b1cdbd2cSJim Jagielski m_nCommandId = 0;
1701*b1cdbd2cSJim Jagielski
1702*b1cdbd2cSJim Jagielski // #92581# - Don't reset m_aURL!!!
1703*b1cdbd2cSJim Jagielski
1704*b1cdbd2cSJim Jagielski if ( m_xContent.is() )
1705*b1cdbd2cSJim Jagielski {
1706*b1cdbd2cSJim Jagielski try
1707*b1cdbd2cSJim Jagielski {
1708*b1cdbd2cSJim Jagielski m_xContent->removeContentEventListener( m_xContentEventListener );
1709*b1cdbd2cSJim Jagielski }
1710*b1cdbd2cSJim Jagielski catch ( RuntimeException const & )
1711*b1cdbd2cSJim Jagielski {
1712*b1cdbd2cSJim Jagielski }
1713*b1cdbd2cSJim Jagielski }
1714*b1cdbd2cSJim Jagielski
1715*b1cdbd2cSJim Jagielski if ( xContent.is() )
1716*b1cdbd2cSJim Jagielski {
1717*b1cdbd2cSJim Jagielski m_xContent = xContent;
1718*b1cdbd2cSJim Jagielski m_xContent->addContentEventListener( m_xContentEventListener );
1719*b1cdbd2cSJim Jagielski
1720*b1cdbd2cSJim Jagielski #if OSL_DEBUG_LEVEL > 1
1721*b1cdbd2cSJim Jagielski // Only done on demand in product version for performance reasons,
1722*b1cdbd2cSJim Jagielski // but a nice debug helper.
1723*b1cdbd2cSJim Jagielski getURL();
1724*b1cdbd2cSJim Jagielski #endif
1725*b1cdbd2cSJim Jagielski }
1726*b1cdbd2cSJim Jagielski else
1727*b1cdbd2cSJim Jagielski {
1728*b1cdbd2cSJim Jagielski // We need m_xContent's URL in order to be able to create the
1729*b1cdbd2cSJim Jagielski // content object again if demanded ( --> Content_Impl::getContent() )
1730*b1cdbd2cSJim Jagielski getURL();
1731*b1cdbd2cSJim Jagielski
1732*b1cdbd2cSJim Jagielski m_xContent = 0;
1733*b1cdbd2cSJim Jagielski }
1734*b1cdbd2cSJim Jagielski }
1735*b1cdbd2cSJim Jagielski
1736*b1cdbd2cSJim Jagielski //=========================================================================
1737*b1cdbd2cSJim Jagielski // virtual
~Content_Impl()1738*b1cdbd2cSJim Jagielski Content_Impl::~Content_Impl()
1739*b1cdbd2cSJim Jagielski {
1740*b1cdbd2cSJim Jagielski if ( m_xContent.is() )
1741*b1cdbd2cSJim Jagielski {
1742*b1cdbd2cSJim Jagielski try
1743*b1cdbd2cSJim Jagielski {
1744*b1cdbd2cSJim Jagielski m_xContent->removeContentEventListener( m_xContentEventListener );
1745*b1cdbd2cSJim Jagielski }
1746*b1cdbd2cSJim Jagielski catch ( RuntimeException const & )
1747*b1cdbd2cSJim Jagielski {
1748*b1cdbd2cSJim Jagielski }
1749*b1cdbd2cSJim Jagielski }
1750*b1cdbd2cSJim Jagielski }
1751*b1cdbd2cSJim Jagielski
1752*b1cdbd2cSJim Jagielski //=========================================================================
disposing(const EventObject & Source)1753*b1cdbd2cSJim Jagielski void Content_Impl::disposing( const EventObject& Source )
1754*b1cdbd2cSJim Jagielski {
1755*b1cdbd2cSJim Jagielski Reference<XContent> xContent;
1756*b1cdbd2cSJim Jagielski
1757*b1cdbd2cSJim Jagielski {
1758*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1759*b1cdbd2cSJim Jagielski if(Source.Source != m_xContent)
1760*b1cdbd2cSJim Jagielski return;
1761*b1cdbd2cSJim Jagielski
1762*b1cdbd2cSJim Jagielski xContent = m_xContent;
1763*b1cdbd2cSJim Jagielski
1764*b1cdbd2cSJim Jagielski m_nCommandId = 0;
1765*b1cdbd2cSJim Jagielski m_aURL = rtl::OUString();
1766*b1cdbd2cSJim Jagielski m_xCommandProcessor = 0;
1767*b1cdbd2cSJim Jagielski m_xContent = 0;
1768*b1cdbd2cSJim Jagielski }
1769*b1cdbd2cSJim Jagielski
1770*b1cdbd2cSJim Jagielski if ( xContent.is() )
1771*b1cdbd2cSJim Jagielski {
1772*b1cdbd2cSJim Jagielski try
1773*b1cdbd2cSJim Jagielski {
1774*b1cdbd2cSJim Jagielski xContent->removeContentEventListener( m_xContentEventListener );
1775*b1cdbd2cSJim Jagielski }
1776*b1cdbd2cSJim Jagielski catch ( RuntimeException const & )
1777*b1cdbd2cSJim Jagielski {
1778*b1cdbd2cSJim Jagielski }
1779*b1cdbd2cSJim Jagielski }
1780*b1cdbd2cSJim Jagielski }
1781*b1cdbd2cSJim Jagielski
1782*b1cdbd2cSJim Jagielski //=========================================================================
getURL() const1783*b1cdbd2cSJim Jagielski const rtl::OUString& Content_Impl::getURL() const
1784*b1cdbd2cSJim Jagielski {
1785*b1cdbd2cSJim Jagielski if ( !m_aURL.getLength() && m_xContent.is() )
1786*b1cdbd2cSJim Jagielski {
1787*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1788*b1cdbd2cSJim Jagielski
1789*b1cdbd2cSJim Jagielski if ( !m_aURL.getLength() && m_xContent.is() )
1790*b1cdbd2cSJim Jagielski {
1791*b1cdbd2cSJim Jagielski Reference< XContentIdentifier > xId = m_xContent->getIdentifier();
1792*b1cdbd2cSJim Jagielski if ( xId.is() )
1793*b1cdbd2cSJim Jagielski m_aURL = xId->getContentIdentifier();
1794*b1cdbd2cSJim Jagielski }
1795*b1cdbd2cSJim Jagielski }
1796*b1cdbd2cSJim Jagielski
1797*b1cdbd2cSJim Jagielski return m_aURL;
1798*b1cdbd2cSJim Jagielski }
1799*b1cdbd2cSJim Jagielski
1800*b1cdbd2cSJim Jagielski //=========================================================================
getContent()1801*b1cdbd2cSJim Jagielski Reference< XContent > Content_Impl::getContent()
1802*b1cdbd2cSJim Jagielski {
1803*b1cdbd2cSJim Jagielski if ( !m_xContent.is() && m_aURL.getLength() )
1804*b1cdbd2cSJim Jagielski {
1805*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1806*b1cdbd2cSJim Jagielski
1807*b1cdbd2cSJim Jagielski if ( !m_xContent.is() && m_aURL.getLength() )
1808*b1cdbd2cSJim Jagielski {
1809*b1cdbd2cSJim Jagielski ContentBroker* pBroker = ContentBroker::get();
1810*b1cdbd2cSJim Jagielski
1811*b1cdbd2cSJim Jagielski OSL_ENSURE( pBroker, "No Content Broker!" );
1812*b1cdbd2cSJim Jagielski
1813*b1cdbd2cSJim Jagielski if ( pBroker )
1814*b1cdbd2cSJim Jagielski {
1815*b1cdbd2cSJim Jagielski OSL_ENSURE( pBroker->getContentProviderManagerInterface()
1816*b1cdbd2cSJim Jagielski ->queryContentProviders().getLength(),
1817*b1cdbd2cSJim Jagielski "Content Broker not configured (no providers)!" );
1818*b1cdbd2cSJim Jagielski
1819*b1cdbd2cSJim Jagielski Reference< XContentIdentifierFactory > xIdFac
1820*b1cdbd2cSJim Jagielski = pBroker->getContentIdentifierFactoryInterface();
1821*b1cdbd2cSJim Jagielski
1822*b1cdbd2cSJim Jagielski OSL_ENSURE( xIdFac.is(), "No Content Identifier factory!" );
1823*b1cdbd2cSJim Jagielski
1824*b1cdbd2cSJim Jagielski if ( xIdFac.is() )
1825*b1cdbd2cSJim Jagielski {
1826*b1cdbd2cSJim Jagielski Reference< XContentIdentifier > xId
1827*b1cdbd2cSJim Jagielski = xIdFac->createContentIdentifier( m_aURL );
1828*b1cdbd2cSJim Jagielski
1829*b1cdbd2cSJim Jagielski OSL_ENSURE( xId.is(), "No Content Identifier!" );
1830*b1cdbd2cSJim Jagielski
1831*b1cdbd2cSJim Jagielski if ( xId.is() )
1832*b1cdbd2cSJim Jagielski {
1833*b1cdbd2cSJim Jagielski Reference< XContentProvider > xProvider
1834*b1cdbd2cSJim Jagielski = pBroker->getContentProviderInterface();
1835*b1cdbd2cSJim Jagielski
1836*b1cdbd2cSJim Jagielski OSL_ENSURE( xProvider.is(), "No Content Provider!" );
1837*b1cdbd2cSJim Jagielski
1838*b1cdbd2cSJim Jagielski if ( xProvider.is() )
1839*b1cdbd2cSJim Jagielski {
1840*b1cdbd2cSJim Jagielski try
1841*b1cdbd2cSJim Jagielski {
1842*b1cdbd2cSJim Jagielski m_xContent = xProvider->queryContent( xId );
1843*b1cdbd2cSJim Jagielski }
1844*b1cdbd2cSJim Jagielski catch ( IllegalIdentifierException const & )
1845*b1cdbd2cSJim Jagielski {
1846*b1cdbd2cSJim Jagielski }
1847*b1cdbd2cSJim Jagielski
1848*b1cdbd2cSJim Jagielski if ( m_xContent.is() )
1849*b1cdbd2cSJim Jagielski m_xContent->addContentEventListener(
1850*b1cdbd2cSJim Jagielski m_xContentEventListener );
1851*b1cdbd2cSJim Jagielski }
1852*b1cdbd2cSJim Jagielski }
1853*b1cdbd2cSJim Jagielski }
1854*b1cdbd2cSJim Jagielski }
1855*b1cdbd2cSJim Jagielski }
1856*b1cdbd2cSJim Jagielski }
1857*b1cdbd2cSJim Jagielski
1858*b1cdbd2cSJim Jagielski return m_xContent;
1859*b1cdbd2cSJim Jagielski }
1860*b1cdbd2cSJim Jagielski
1861*b1cdbd2cSJim Jagielski //=========================================================================
getCommandProcessor()1862*b1cdbd2cSJim Jagielski Reference< XCommandProcessor > Content_Impl::getCommandProcessor()
1863*b1cdbd2cSJim Jagielski {
1864*b1cdbd2cSJim Jagielski if ( !m_xCommandProcessor.is() )
1865*b1cdbd2cSJim Jagielski {
1866*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1867*b1cdbd2cSJim Jagielski
1868*b1cdbd2cSJim Jagielski if ( !m_xCommandProcessor.is() )
1869*b1cdbd2cSJim Jagielski m_xCommandProcessor
1870*b1cdbd2cSJim Jagielski = Reference< XCommandProcessor >( getContent(), UNO_QUERY );
1871*b1cdbd2cSJim Jagielski }
1872*b1cdbd2cSJim Jagielski
1873*b1cdbd2cSJim Jagielski return m_xCommandProcessor;
1874*b1cdbd2cSJim Jagielski }
1875*b1cdbd2cSJim Jagielski
1876*b1cdbd2cSJim Jagielski //=========================================================================
getCommandId()1877*b1cdbd2cSJim Jagielski sal_Int32 Content_Impl::getCommandId()
1878*b1cdbd2cSJim Jagielski {
1879*b1cdbd2cSJim Jagielski if ( m_nCommandId == 0 )
1880*b1cdbd2cSJim Jagielski {
1881*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1882*b1cdbd2cSJim Jagielski
1883*b1cdbd2cSJim Jagielski if ( m_nCommandId == 0 )
1884*b1cdbd2cSJim Jagielski {
1885*b1cdbd2cSJim Jagielski Reference< XCommandProcessor > xProc = getCommandProcessor();
1886*b1cdbd2cSJim Jagielski if ( xProc.is() )
1887*b1cdbd2cSJim Jagielski m_nCommandId = xProc->createCommandIdentifier();
1888*b1cdbd2cSJim Jagielski }
1889*b1cdbd2cSJim Jagielski }
1890*b1cdbd2cSJim Jagielski
1891*b1cdbd2cSJim Jagielski return m_nCommandId;
1892*b1cdbd2cSJim Jagielski }
1893*b1cdbd2cSJim Jagielski
1894*b1cdbd2cSJim Jagielski //=========================================================================
executeCommand(const Command & rCommand)1895*b1cdbd2cSJim Jagielski Any Content_Impl::executeCommand( const Command& rCommand )
1896*b1cdbd2cSJim Jagielski {
1897*b1cdbd2cSJim Jagielski Reference< XCommandProcessor > xProc = getCommandProcessor();
1898*b1cdbd2cSJim Jagielski if ( !xProc.is() )
1899*b1cdbd2cSJim Jagielski return Any();
1900*b1cdbd2cSJim Jagielski
1901*b1cdbd2cSJim Jagielski // Execute command
1902*b1cdbd2cSJim Jagielski return xProc->execute( rCommand, getCommandId(), m_xEnv );
1903*b1cdbd2cSJim Jagielski }
1904*b1cdbd2cSJim Jagielski
1905*b1cdbd2cSJim Jagielski //=========================================================================
abortCommand()1906*b1cdbd2cSJim Jagielski void Content_Impl::abortCommand()
1907*b1cdbd2cSJim Jagielski {
1908*b1cdbd2cSJim Jagielski sal_Int32 nCommandId;
1909*b1cdbd2cSJim Jagielski Reference< XCommandProcessor > xCommandProcessor;
1910*b1cdbd2cSJim Jagielski {
1911*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1912*b1cdbd2cSJim Jagielski nCommandId = m_nCommandId;
1913*b1cdbd2cSJim Jagielski xCommandProcessor = m_xCommandProcessor;
1914*b1cdbd2cSJim Jagielski }
1915*b1cdbd2cSJim Jagielski
1916*b1cdbd2cSJim Jagielski if ( ( nCommandId != 0 ) && xCommandProcessor.is() )
1917*b1cdbd2cSJim Jagielski xCommandProcessor->abort( nCommandId );
1918*b1cdbd2cSJim Jagielski }
1919*b1cdbd2cSJim Jagielski
1920*b1cdbd2cSJim Jagielski //=========================================================================
1921*b1cdbd2cSJim Jagielski inline const Reference< XCommandEnvironment >&
getEnvironment() const1922*b1cdbd2cSJim Jagielski Content_Impl::getEnvironment() const
1923*b1cdbd2cSJim Jagielski {
1924*b1cdbd2cSJim Jagielski return m_xEnv;
1925*b1cdbd2cSJim Jagielski }
1926*b1cdbd2cSJim Jagielski
1927*b1cdbd2cSJim Jagielski //=========================================================================
setEnvironment(const Reference<XCommandEnvironment> & xNewEnv)1928*b1cdbd2cSJim Jagielski inline void Content_Impl::setEnvironment(
1929*b1cdbd2cSJim Jagielski const Reference< XCommandEnvironment >& xNewEnv )
1930*b1cdbd2cSJim Jagielski {
1931*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1932*b1cdbd2cSJim Jagielski m_xEnv = xNewEnv;
1933*b1cdbd2cSJim Jagielski }
1934*b1cdbd2cSJim Jagielski
1935*b1cdbd2cSJim Jagielski //=========================================================================
inserted()1936*b1cdbd2cSJim Jagielski void Content_Impl::inserted()
1937*b1cdbd2cSJim Jagielski {
1938*b1cdbd2cSJim Jagielski // URL might have changed during 'insert' => recalculate in next getURL()
1939*b1cdbd2cSJim Jagielski osl::MutexGuard aGuard( m_aMutex );
1940*b1cdbd2cSJim Jagielski m_aURL = ::rtl::OUString();
1941*b1cdbd2cSJim Jagielski }
1942*b1cdbd2cSJim Jagielski
1943*b1cdbd2cSJim Jagielski //=========================================================================
1944*b1cdbd2cSJim Jagielski //=========================================================================
1945*b1cdbd2cSJim Jagielski //
1946*b1cdbd2cSJim Jagielski // ContentEventListener_Impl Implementation.
1947*b1cdbd2cSJim Jagielski //
1948*b1cdbd2cSJim Jagielski //=========================================================================
1949*b1cdbd2cSJim Jagielski //=========================================================================
1950*b1cdbd2cSJim Jagielski
1951*b1cdbd2cSJim Jagielski //=========================================================================
1952*b1cdbd2cSJim Jagielski //
1953*b1cdbd2cSJim Jagielski // XInterface methods.
1954*b1cdbd2cSJim Jagielski //
1955*b1cdbd2cSJim Jagielski //=========================================================================
1956*b1cdbd2cSJim Jagielski
1957*b1cdbd2cSJim Jagielski XINTERFACE_IMPL_2( ContentEventListener_Impl,
1958*b1cdbd2cSJim Jagielski XContentEventListener,
1959*b1cdbd2cSJim Jagielski XEventListener ); /* base of XContentEventListener */
1960*b1cdbd2cSJim Jagielski
1961*b1cdbd2cSJim Jagielski //=========================================================================
1962*b1cdbd2cSJim Jagielski //
1963*b1cdbd2cSJim Jagielski // XContentEventListener methods.
1964*b1cdbd2cSJim Jagielski //
1965*b1cdbd2cSJim Jagielski //=========================================================================
1966*b1cdbd2cSJim Jagielski
1967*b1cdbd2cSJim Jagielski // virtual
contentEvent(const ContentEvent & evt)1968*b1cdbd2cSJim Jagielski void SAL_CALL ContentEventListener_Impl::contentEvent( const ContentEvent& evt )
1969*b1cdbd2cSJim Jagielski throw( RuntimeException )
1970*b1cdbd2cSJim Jagielski {
1971*b1cdbd2cSJim Jagielski if ( evt.Source == m_rContent.m_xContent )
1972*b1cdbd2cSJim Jagielski {
1973*b1cdbd2cSJim Jagielski switch ( evt.Action )
1974*b1cdbd2cSJim Jagielski {
1975*b1cdbd2cSJim Jagielski case ContentAction::DELETED:
1976*b1cdbd2cSJim Jagielski m_rContent.reinit( Reference< XContent >() );
1977*b1cdbd2cSJim Jagielski break;
1978*b1cdbd2cSJim Jagielski
1979*b1cdbd2cSJim Jagielski case ContentAction::EXCHANGED:
1980*b1cdbd2cSJim Jagielski m_rContent.reinit( evt.Content );
1981*b1cdbd2cSJim Jagielski break;
1982*b1cdbd2cSJim Jagielski
1983*b1cdbd2cSJim Jagielski default:
1984*b1cdbd2cSJim Jagielski break;
1985*b1cdbd2cSJim Jagielski }
1986*b1cdbd2cSJim Jagielski }
1987*b1cdbd2cSJim Jagielski }
1988*b1cdbd2cSJim Jagielski
1989*b1cdbd2cSJim Jagielski //=========================================================================
1990*b1cdbd2cSJim Jagielski //
1991*b1cdbd2cSJim Jagielski // XEventListenr methods.
1992*b1cdbd2cSJim Jagielski //
1993*b1cdbd2cSJim Jagielski //=========================================================================
1994*b1cdbd2cSJim Jagielski
1995*b1cdbd2cSJim Jagielski // virtual
disposing(const EventObject & Source)1996*b1cdbd2cSJim Jagielski void SAL_CALL ContentEventListener_Impl::disposing( const EventObject& Source )
1997*b1cdbd2cSJim Jagielski throw( RuntimeException )
1998*b1cdbd2cSJim Jagielski {
1999*b1cdbd2cSJim Jagielski m_rContent.disposing(Source);
2000*b1cdbd2cSJim Jagielski }
2001*b1cdbd2cSJim Jagielski
2002*b1cdbd2cSJim Jagielski } /* namespace ucbhelper */
2003*b1cdbd2cSJim Jagielski
2004