LibreOffice Module ucb (master)  1
cmis_content.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #pragma once
11 
12 #include <sal/config.h>
13 
14 #include <string_view>
15 
16 #include "cmis_url.hxx"
17 #include "children_provider.hxx"
18 
19 #include <com/sun/star/io/XInputStream.hpp>
20 #include <com/sun/star/io/XOutputStream.hpp>
21 #include <com/sun/star/ucb/CheckinArgument.hpp>
22 #include <com/sun/star/ucb/CommandFailedException.hpp>
23 #include <com/sun/star/ucb/ContentCreationException.hpp>
24 #include <com/sun/star/ucb/OpenCommandArgument2.hpp>
25 #include <com/sun/star/ucb/TransferInfo.hpp>
26 #include <com/sun/star/ucb/XContentCreator.hpp>
27 #include <com/sun/star/document/CmisVersion.hpp>
29 
30 #if defined __GNUC__ && !defined __clang__
31 #pragma GCC diagnostic push
32 #pragma GCC diagnostic ignored "-Wdeprecated"
33 #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
34 #endif
35 #include <libcmis/libcmis.hxx>
36 #if defined __GNUC__ && !defined __clang__
37 #pragma GCC diagnostic pop
38 #endif
39 
40 namespace com::sun::star {
41  namespace beans {
42  struct Property;
43  struct PropertyValue;
44  }
45  namespace sdbc {
46  class XRow;
47  }
48 }
49 namespace ucbhelper
50 {
51  class Content;
52 }
53 
54 
55 namespace cmis
56 {
57 
58 inline constexpr OUStringLiteral CMIS_FILE_TYPE = u"application/vnd.libreoffice.cmis-file";
59 inline constexpr OUStringLiteral CMIS_FOLDER_TYPE = u"application/vnd.libreoffice.cmis-folder";
60 
61 class ContentProvider;
63  public css::ucb::XContentCreator,
64  public ChildrenProvider
65 {
66 private:
68  libcmis::Session* m_pSession;
69  libcmis::ObjectPtr m_pObject;
70  OUString m_sObjectPath;
71  OUString m_sObjectId;
72  OUString m_sURL;
74 
75  // Members to be set for non-persistent content
78  libcmis::ObjectTypePtr m_pObjectType;
79  std::map< std::string, libcmis::PropertyPtr > m_pObjectProps;
80 
81  bool isFolder( const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
82  void setCmisProperty(const std::string& rName, const std::string& rValue,
83  const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
84 
85  css::uno::Any getBadArgExcept();
86 
87  css::uno::Reference< css::sdbc::XRow >
89  const css::uno::Sequence< css::beans::Property >& rProperties,
90  const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
91 
92  libcmis::Session* getSession( const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
93  libcmis::ObjectTypePtr const & getObjectType( const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
94 
95 private:
97  typedef std::vector< ContentRef > ContentRefList;
98 
101  css::uno::Any open(const css::ucb::OpenCommandArgument2 & rArg,
102  const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv );
103 
105  void transfer( const css::ucb::TransferInfo& rTransferInfo,
106  const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv );
107 
109  void insert( const css::uno::Reference< css::io::XInputStream > & xInputStream,
110  bool bReplaceExisting, std::u16string_view rMimeType,
111  const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
112 
114  OUString checkIn( const css::ucb::CheckinArgument& rArg,
115  const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv );
116 
118  OUString checkOut( const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv );
119 
121  OUString cancelCheckOut( const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv );
122 
123  static void copyData( const css::uno::Reference< css::io::XInputStream >& xIn,
124  const css::uno::Reference< css::io::XOutputStream >& xOut );
125 
126  css::uno::Sequence< css::uno::Any >
127  setPropertyValues( const css::uno::Sequence< css::beans::PropertyValue >& rValues,
128  const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
129 
131  css::uno::Sequence< css::document::CmisVersion >
132  getAllVersions( const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv );
133 
134  bool feedSink( const css::uno::Reference< css::uno::XInterface>& aSink,
135  const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
136 
137 public:
139  Content( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
140  ContentProvider *pProvider,
141  const css::uno::Reference< css::ucb::XContentIdentifier >& Identifier,
142  libcmis::ObjectPtr const & pObject = libcmis::ObjectPtr( ) );
143 
145  Content( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
146  ContentProvider *pProvider,
147  const css::uno::Reference< css::ucb::XContentIdentifier >& Identifier,
148  bool bIsFolder);
149 
150  virtual ~Content() override;
151 
152  virtual css::uno::Sequence< css::beans::Property >
153  getProperties( const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv ) override;
154 
155  libcmis::ObjectPtr updateProperties(
156  const css::uno::Any& iCmisProps,
157  const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv);
158 
159  virtual css::uno::Sequence< css::ucb::CommandInfo >
160  getCommands( const css::uno::Reference< css::ucb::XCommandEnvironment > & xEnv ) override;
161 
162  virtual OUString getParentURL() override;
163 
164  // XInterface
165  virtual css::uno::Any SAL_CALL queryInterface( const css::uno::Type & rType ) override;
166  virtual void SAL_CALL acquire()
167  noexcept override;
168  virtual void SAL_CALL release()
169  noexcept override;
170 
171  virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override;
172  virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override;
173 
174  virtual OUString SAL_CALL
175  getImplementationName() override;
176 
177  virtual css::uno::Sequence< OUString > SAL_CALL
178  getSupportedServiceNames() override;
179 
180  virtual OUString SAL_CALL
181  getContentType() override;
182 
183  virtual css::uno::Any SAL_CALL
184  execute( const css::ucb::Command& aCommand,
185  sal_Int32 CommandId,
186  const css::uno::Reference< css::ucb::XCommandEnvironment >& Environment ) override;
187 
188  virtual void SAL_CALL abort( sal_Int32 CommandId ) override;
189 
190  virtual css::uno::Sequence< css::ucb::ContentInfo >
191  SAL_CALL queryCreatableContentsInfo() override;
192 
193  virtual css::uno::Reference< css::ucb::XContent >
194  SAL_CALL createNewContent( const css::ucb::ContentInfo& Info ) override;
195 
197  css::uno::Sequence< css::ucb::ContentInfo >
198  queryCreatableContentsInfo( const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
199 
200  virtual std::vector< css::uno::Reference< css::ucb::XContent > > getChildren( ) override;
201 
205  libcmis::ObjectPtr const & getObject( const css::uno::Reference< css::ucb::XCommandEnvironment >& xEnv );
206 };
207 
208 }
209 
210 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual css::uno::Sequence< css::ucb::CommandInfo > getCommands(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv) override
Type
css::uno::Any open(const css::ucb::OpenCommandArgument2 &rArg, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
libcmis::ObjectPtr m_pObject
exports com.sun.star. sdbc
virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() override
OUString m_sURL
virtual void SAL_CALL acquire() noexcept override
bool feedSink(const css::uno::Reference< css::uno::XInterface > &aSink, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
signed char sal_Int8
virtual std::vector< css::uno::Reference< css::ucb::XContent > > getChildren() override
void transfer(const css::ucb::TransferInfo &rTransferInfo, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
virtual css::uno::Any SAL_CALL execute(const css::ucb::Command &aCommand, sal_Int32 CommandId, const css::uno::Reference< css::ucb::XCommandEnvironment > &Environment) override
constexpr OUStringLiteral CMIS_FILE_TYPE
Content(const css::uno::Reference< css::uno::XComponentContext > &rxContext, ContentProvider *pProvider, const css::uno::Reference< css::ucb::XContentIdentifier > &Identifier, libcmis::ObjectPtr const &pObject=libcmis::ObjectPtr())
libcmis::ObjectPtr const & getObject(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
libcmis::ObjectPtr updateProperties(const css::uno::Any &iCmisProps, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
virtual OUString getParentURL() override
libcmis::Session * getSession(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
void insert(const css::uno::Reference< css::io::XInputStream > &xInputStream, bool bReplaceExisting, std::u16string_view rMimeType, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
libcmis::ObjectTypePtr m_pObjectType
css::uno::Any getBadArgExcept()
constexpr OUStringLiteral CMIS_FOLDER_TYPE
void setCmisProperty(const std::string &rName, const std::string &rValue, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
OUString cancelCheckOut(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
OUString m_sObjectId
bool isFolder(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
css::uno::Reference< css::sdbc::XRow > getPropertyValues(const css::uno::Sequence< css::beans::Property > &rProperties, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
std::vector< ContentRef > ContentRefList
float u
libcmis::ObjectTypePtr const & getObjectType(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
virtual css::uno::Sequence< css::beans::Property > getProperties(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv) override
virtual OUString SAL_CALL getContentType() override
ContentProvider * m_pProvider
css::uno::Sequence< css::document::CmisVersion > getAllVersions(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
exports com.sun.star. beans
virtual ~Content() override
std::map< std::string, libcmis::PropertyPtr > m_pObjectProps
virtual void SAL_CALL release() noexcept override
virtual css::uno::Reference< css::ucb::XContent > SAL_CALL createNewContent(const css::ucb::ContentInfo &Info) override
libcmis::Session * m_pSession
virtual css::uno::Any SAL_CALL queryInterface(const css::uno::Type &rType) override
virtual OUString SAL_CALL getImplementationName() override
OUString checkOut(const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
OUString checkIn(const css::ucb::CheckinArgument &rArg, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
virtual void SAL_CALL abort(sal_Int32 CommandId) override
cmis::URL m_aURL
virtual css::uno::Sequence< css::uno::Type > SAL_CALL getTypes() override
rtl::Reference< Content > ContentRef
css::uno::Sequence< css::uno::Any > setPropertyValues(const css::uno::Sequence< css::beans::PropertyValue > &rValues, const css::uno::Reference< css::ucb::XCommandEnvironment > &xEnv)
static void copyData(const css::uno::Reference< css::io::XInputStream > &xIn, const css::uno::Reference< css::io::XOutputStream > &xOut)
virtual css::uno::Sequence< css::ucb::ContentInfo > SAL_CALL queryCreatableContentsInfo() override
OUString m_sObjectPath