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 #ifndef DBACCESS_MIGRATIONLOG_HXX 25*b1cdbd2cSJim Jagielski #define DBACCESS_MIGRATIONLOG_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include "dbmm_types.hxx" 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski /** === begin UNO includes === **/ 30*b1cdbd2cSJim Jagielski /** === end UNO includes === **/ 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx> 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski #include <memory> 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski //........................................................................ 37*b1cdbd2cSJim Jagielski namespace dbmm 38*b1cdbd2cSJim Jagielski { 39*b1cdbd2cSJim Jagielski //........................................................................ 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski typedef sal_Int16 DocumentID; 42*b1cdbd2cSJim Jagielski struct MigrationError; 43*b1cdbd2cSJim Jagielski 44*b1cdbd2cSJim Jagielski //==================================================================== 45*b1cdbd2cSJim Jagielski //= MigrationLog 46*b1cdbd2cSJim Jagielski //==================================================================== 47*b1cdbd2cSJim Jagielski struct MigrationLog_Data; 48*b1cdbd2cSJim Jagielski class MigrationLog 49*b1cdbd2cSJim Jagielski { 50*b1cdbd2cSJim Jagielski public: 51*b1cdbd2cSJim Jagielski MigrationLog(); 52*b1cdbd2cSJim Jagielski ~MigrationLog(); 53*b1cdbd2cSJim Jagielski 54*b1cdbd2cSJim Jagielski //---------------------------------------------------------------- 55*b1cdbd2cSJim Jagielski //- event logging 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski /** logs an unrecoverable error during the migration process 58*b1cdbd2cSJim Jagielski */ 59*b1cdbd2cSJim Jagielski void logFailure( const MigrationError& _rError ); 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski /** logs a recoverable (or at least ignorable) error during the migration process 62*b1cdbd2cSJim Jagielski */ 63*b1cdbd2cSJim Jagielski void logRecoverable( const MigrationError& _rError ); 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski /// checks whether logFailure has been called 66*b1cdbd2cSJim Jagielski bool hadFailure() const; 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski /// logs the fact that the database document has been backed up 69*b1cdbd2cSJim Jagielski void backedUpDocument( const ::rtl::OUString& _rNewDocumentLocation ); 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski /** logs that the migration for a certain sub document has been started, returns 72*b1cdbd2cSJim Jagielski a unique ID for this sub document which is to be used in later calls 73*b1cdbd2cSJim Jagielski */ 74*b1cdbd2cSJim Jagielski DocumentID startedDocument( const SubDocumentType _eType, const ::rtl::OUString& _rName ); 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski /** logs the event that a macro or script library has been moved from within a 77*b1cdbd2cSJim Jagielski sub document to the database document 78*b1cdbd2cSJim Jagielski */ 79*b1cdbd2cSJim Jagielski void movedLibrary( 80*b1cdbd2cSJim Jagielski const DocumentID _nDocID, 81*b1cdbd2cSJim Jagielski const ScriptType _eScriptType, 82*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rOriginalLibName, 83*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rNewLibName 84*b1cdbd2cSJim Jagielski ); 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski /** logs that the migration for a certain document has been finished 87*b1cdbd2cSJim Jagielski */ 88*b1cdbd2cSJim Jagielski void finishedDocument( const DocumentID _nDocID ); 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski //---------------------------------------------------------------- 91*b1cdbd2cSJim Jagielski //- information retrieval 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski /** retrieves the new name of a library 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski The new library name must previously have been logger by calling 96*b1cdbd2cSJim Jagielski <member>movedLibrary</member>. If not, an assertion will be raised in 97*b1cdbd2cSJim Jagielski the non-product builds, and an empty string will be returned. 98*b1cdbd2cSJim Jagielski */ 99*b1cdbd2cSJim Jagielski const ::rtl::OUString& 100*b1cdbd2cSJim Jagielski getNewLibraryName( 101*b1cdbd2cSJim Jagielski DocumentID _nDocID, 102*b1cdbd2cSJim Jagielski ScriptType _eScriptType, 103*b1cdbd2cSJim Jagielski const ::rtl::OUString& _rOriginalLibName 104*b1cdbd2cSJim Jagielski ) const; 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski /** determines whether for the given document, any library needed to be (and was) moved 107*b1cdbd2cSJim Jagielski */ 108*b1cdbd2cSJim Jagielski bool movedAnyLibrary( const DocumentID ); 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski /** provides a human-readable version of the log, explaining a user what happened during 111*b1cdbd2cSJim Jagielski the migration. 112*b1cdbd2cSJim Jagielski */ 113*b1cdbd2cSJim Jagielski ::rtl::OUString 114*b1cdbd2cSJim Jagielski getCompleteLog() const; 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski private: 117*b1cdbd2cSJim Jagielski ::std::auto_ptr< MigrationLog_Data > m_pData; 118*b1cdbd2cSJim Jagielski }; 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski //........................................................................ 121*b1cdbd2cSJim Jagielski } // namespace dbmm 122*b1cdbd2cSJim Jagielski //........................................................................ 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski #endif // DBACCESS_MIGRATIONLOG_HXX 125