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 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_connectivity.hxx" 30 31 #include "macaborder.hxx" 32 #include "MacabHeader.hxx" 33 #include "MacabRecord.hxx" 34 35 using namespace ::connectivity::macab; 36 37 MacabOrder::~MacabOrder() 38 { 39 } 40 // ----------------------------------------------------------------------------- 41 MacabSimpleOrder::MacabSimpleOrder(MacabHeader *header, ::rtl::OUString &sColumnName, sal_Bool bAscending) 42 : MacabOrder(), 43 m_nFieldNumber(header->getColumnNumber(sColumnName)), 44 m_bAscending(bAscending) 45 { 46 } 47 // ----------------------------------------------------------------------------- 48 sal_Int32 MacabSimpleOrder::compare(const MacabRecord *record1, const MacabRecord *record2) const 49 { 50 sal_Int32 result; 51 52 result = MacabRecord::compareFields(record1->get(m_nFieldNumber), record2->get(m_nFieldNumber)); 53 54 if (!m_bAscending) result = -result; 55 56 return result; 57 } 58 // ----------------------------------------------------------------------------- 59 MacabComplexOrder::MacabComplexOrder() 60 : MacabOrder(), 61 m_aOrders() 62 { 63 } 64 // ----------------------------------------------------------------------------- 65 MacabComplexOrder::~MacabComplexOrder() 66 { 67 for (sal_uInt32 i = 0; i < m_aOrders.size(); i++) 68 delete m_aOrders[i]; 69 } 70 // ----------------------------------------------------------------------------- 71 void MacabComplexOrder::addOrder(MacabOrder *pOrder) 72 { 73 m_aOrders.push_back(pOrder); 74 } 75 // ----------------------------------------------------------------------------- 76 sal_Int32 MacabComplexOrder::compare(const MacabRecord *record1, const MacabRecord *record2) const 77 { 78 for (sal_uInt32 i = 0; i < m_aOrders.size(); i++) 79 { 80 const MacabOrder *pOrder = m_aOrders[i]; 81 sal_Int32 result = pOrder->compare(record1, record2); 82 83 if (result) return result; 84 } 85 return 0; 86 } 87