1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef _SVT_SHARECONTROLFILE_HXX 25 #define _SVT_SHARECONTROLFILE_HXX 26 27 #include <svl/svldllapi.h> 28 29 #include <com/sun/star/io/XStream.hpp> 30 #include <com/sun/star/io/XInputStream.hpp> 31 #include <com/sun/star/io/XOutputStream.hpp> 32 #include <com/sun/star/io/XSeekable.hpp> 33 #include <com/sun/star/io/XTruncate.hpp> 34 #include <com/sun/star/lang/XMultiServiceFactory.hpp> 35 36 #include <svl/lockfilecommon.hxx> 37 38 #define SHARED_OOOUSERNAME_ID LOCKFILE_OOOUSERNAME_ID 39 #define SHARED_SYSUSERNAME_ID LOCKFILE_SYSUSERNAME_ID 40 #define SHARED_LOCALHOST_ID LOCKFILE_LOCALHOST_ID 41 #define SHARED_EDITTIME_ID LOCKFILE_EDITTIME_ID 42 #define SHARED_USERURL_ID LOCKFILE_USERURL_ID 43 #define SHARED_ENTRYSIZE LOCKFILE_ENTRYSIZE 44 45 namespace svt { 46 47 class SVL_DLLPUBLIC ShareControlFile : public LockFileCommon 48 { 49 ::com::sun::star::uno::Reference< ::com::sun::star::io::XStream > m_xStream; 50 ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > m_xInputStream; 51 ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > m_xOutputStream; 52 ::com::sun::star::uno::Reference< ::com::sun::star::io::XSeekable > m_xSeekable; 53 ::com::sun::star::uno::Reference< ::com::sun::star::io::XTruncate > m_xTruncate; 54 55 ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > > m_aUsersData; 56 57 void OpenStream(); 58 void Close(); IsValid()59 sal_Bool IsValid() 60 { 61 return ( m_xFactory.is() && m_xStream.is() && m_xInputStream.is() && m_xOutputStream.is() && m_xSeekable.is() && m_xTruncate.is() ); 62 } 63 64 public: 65 66 // The constructor will throw exception in case the stream can not be opened 67 ShareControlFile( const ::rtl::OUString& aOrigURL, const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xFactory = ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >() ); 68 ~ShareControlFile(); 69 70 ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > > GetUsersData(); 71 void SetUsersDataAndStore( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > >& aUserNames ); 72 ::com::sun::star::uno::Sequence< ::rtl::OUString > InsertOwnEntry(); 73 bool HasOwnEntry(); 74 void RemoveEntry( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aOptionalSpecification = ::com::sun::star::uno::Sequence< ::rtl::OUString >() ); 75 void RemoveFile(); 76 }; 77 78 } 79 80 #endif 81 82