1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #include "oox/xls/querytablefragment.hxx" 29 30 #include "oox/xls/biffinputstream.hxx" 31 #include "oox/xls/querytablebuffer.hxx" 32 33 namespace oox { 34 namespace xls { 35 36 // ============================================================================ 37 38 using namespace ::oox::core; 39 40 using ::rtl::OUString; 41 42 // ============================================================================ 43 44 QueryTableFragment::QueryTableFragment( const WorksheetHelper& rHelper, const OUString& rFragmentPath ) : 45 WorksheetFragmentBase( rHelper, rFragmentPath ), 46 mrQueryTable( getQueryTables().createQueryTable() ) 47 { 48 } 49 50 ContextHandlerRef QueryTableFragment::onCreateContext( sal_Int32 nElement, const AttributeList& rAttribs ) 51 { 52 switch( getCurrentElement() ) 53 { 54 case XML_ROOT_CONTEXT: 55 if( nElement == XLS_TOKEN( queryTable ) ) 56 mrQueryTable.importQueryTable( rAttribs ); 57 break; 58 } 59 return 0; 60 } 61 62 ContextHandlerRef QueryTableFragment::onCreateRecordContext( sal_Int32 nRecId, SequenceInputStream& rStrm ) 63 { 64 switch( getCurrentElement() ) 65 { 66 case XML_ROOT_CONTEXT: 67 if( nRecId == BIFF12_ID_QUERYTABLE ) 68 mrQueryTable.importQueryTable( rStrm ); 69 break; 70 } 71 return 0; 72 } 73 74 const RecordInfo* QueryTableFragment::getRecordInfos() const 75 { 76 static const RecordInfo spRecInfos[] = 77 { 78 { BIFF12_ID_QUERYTABLE, BIFF12_ID_QUERYTABLE + 1 }, 79 { BIFF12_ID_QUERYTABLEREFRESH, BIFF12_ID_QUERYTABLEREFRESH + 1 }, 80 { -1, -1 } 81 }; 82 return spRecInfos; 83 } 84 85 // ============================================================================ 86 87 BiffQueryTableContext::BiffQueryTableContext( const WorksheetHelper& rHelper ) : 88 BiffWorksheetContextBase( rHelper ), 89 mrQueryTable( getQueryTables().createQueryTable() ) 90 { 91 } 92 93 void BiffQueryTableContext::importRecord( BiffInputStream& rStrm ) 94 { 95 switch( rStrm.getRecId() ) 96 { 97 case BIFF_ID_QUERYTABLE: mrQueryTable.importQueryTable( rStrm ); break; 98 case BIFF_ID_QUERYTABLEREFRESH: mrQueryTable.importQueryTableRefresh( rStrm ); break; 99 case BIFF_ID_QUERYTABLESETTINGS: mrQueryTable.importQueryTableSettings( rStrm ); break; 100 } 101 } 102 103 // ============================================================================ 104 105 } // namespace xls 106 } // namespace oox 107