kitchensync

xmldiffalgo.h

00001 /*
00002     This file is part of KitchenSync 
00003 
00004     Copyright (c) 2006 Daniel Gollub <dgollub@suse.de>
00005 
00006     This program is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public License
00017     along with this library; see the file COPYING.LIB.  If not, write to
00018     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00019     Boston, MA 02110-1301, USA.
00020 */
00021 
00022 #ifndef KSYNC_XMLDIFFALGO_H
00023 #define KSYNC_XMLDIFFALGO_H
00024 
00025 #include <tqdom.h>
00026 
00027 #include <libtdepim/diffalgo.h>
00028 
00029 using namespace KPIM;
00030 
00031 namespace KSync {
00032 
00033 class XmlDiffAlgo : public DiffAlgo
00034 {
00035   public:
00036     XmlDiffAlgo( const TQString &leftXml, const TQString &rightXml );
00037     XmlDiffAlgo( const TQDomDocument &leftXml, const TQDomDocument &rightXml );
00038 
00039     void run();
00040 
00041   private:
00042     void appendConflictNodes(TQDomElement &leftElement, TQDomElement &rightElement);
00043     void appendSingleNodes(TQDomElement &element, bool isLeft);
00044 
00045 
00046     void compareNode(TQDomElement &leftElement, TQDomElement &rightElement);
00047 
00048     TQDomDocument mLeftXml;
00049     TQDomDocument mRightXml;
00050 };
00051 
00052 }
00053 
00054 #endif