summaryrefslogtreecommitdiffstats
path: root/ucb/source/ucp/cmis/cmis_repo_content.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'ucb/source/ucp/cmis/cmis_repo_content.hxx')
-rw-r--r--ucb/source/ucp/cmis/cmis_repo_content.hxx146
1 files changed, 146 insertions, 0 deletions
diff --git a/ucb/source/ucp/cmis/cmis_repo_content.hxx b/ucb/source/ucp/cmis/cmis_repo_content.hxx
new file mode 100644
index 000000000000..b40ad69a1f89
--- /dev/null
+++ b/ucb/source/ucp/cmis/cmis_repo_content.hxx
@@ -0,0 +1,146 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * [ Copyright (C) 2011 SUSE <cbosdonnat@suse.com> (initial developer) ]
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#ifndef CMIS_REPO_CONTENT_HXX
+#define CMIS_REPO_CONTENT_HXX
+
+#include "cmis_url.hxx"
+#include "children_provider.hxx"
+
+#include <com/sun/star/io/XInputStream.hpp>
+#include <com/sun/star/io/XOutputStream.hpp>
+#include <com/sun/star/ucb/ContentCreationException.hpp>
+#include <com/sun/star/ucb/OpenCommandArgument2.hpp>
+#include <com/sun/star/ucb/TransferInfo.hpp>
+#include <com/sun/star/ucb/XContentCreator.hpp>
+#include <ucbhelper/contenthelper.hxx>
+#include <libcmis/session-factory.hxx>
+
+#include <list>
+
+namespace com { namespace sun { namespace star {
+ namespace beans {
+ struct Property;
+ struct PropertyValue;
+ }
+ namespace sdbc {
+ class XRow;
+ }
+}}}
+namespace ucbhelper
+{
+ class Content;
+}
+
+
+namespace cmis
+{
+#define CMIS_REPO_TYPE "application/vnd.sun.staroffice.cmis-repository"
+
+class ContentProvider;
+class RepoContent : public ::ucbhelper::ContentImplHelper,
+ public ChildrenProvider
+{
+private:
+ ContentProvider* m_pProvider;
+ libcmis::Session* m_pSession;
+ URL m_aURL;
+ rtl::OUString m_sRepositoryId;
+
+ std::list< libcmis::RepositoryPtr > m_aRepositories;
+
+private:
+
+ com::sun::star::uno::Any getBadArgExcept();
+
+ com::sun::star::uno::Reference< com::sun::star::sdbc::XRow >
+ getPropertyValues(
+ const com::sun::star::uno::Sequence< com::sun::star::beans::Property >& rProperties,
+ const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& xEnv );
+
+ /*
+ * Call me to ensure the repositories have been fetched
+ */
+ void getRepositories( const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& xEnv );
+
+ libcmis::RepositoryPtr getRepository( const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& xEnv );
+
+public:
+ RepoContent( const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory >& rxSMgr, ContentProvider *pProvider,
+ const com::sun::star::uno::Reference< com::sun::star::ucb::XContentIdentifier >& Identifier,
+ std::list< libcmis::RepositoryPtr > aRepos = std::list< libcmis::RepositoryPtr > ( ) )
+ throw ( com::sun::star::ucb::ContentCreationException );
+
+ virtual ~RepoContent();
+
+ virtual com::sun::star::uno::Sequence< com::sun::star::beans::Property >
+ getProperties( const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv );
+
+ virtual com::sun::star::uno::Sequence< com::sun::star::ucb::CommandInfo >
+ getCommands( const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv );
+
+ virtual ::rtl::OUString getParentURL();
+
+ XINTERFACE_DECL()
+
+ XTYPEPROVIDER_DECL()
+
+ virtual ::rtl::OUString SAL_CALL
+ getImplementationName()
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames()
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual rtl::OUString SAL_CALL
+ getContentType()
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual com::sun::star::uno::Any SAL_CALL
+ execute( const com::sun::star::ucb::Command& aCommand,
+ sal_Int32 CommandId,
+ const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment )
+ throw( com::sun::star::uno::Exception, com::sun::star::ucb::CommandAbortedException, com::sun::star::uno::RuntimeException );
+
+ virtual void SAL_CALL abort( sal_Int32 CommandId )
+ throw( com::sun::star::uno::RuntimeException );
+
+ virtual std::list< com::sun::star::uno::Reference< com::sun::star::ucb::XContent > > getChildren( );
+};
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */