From 15318cad33835e4e2dc620d033e43cd930676cdd Mon Sep 17 00:00:00 2001 From: kergoth Date: Fri, 25 Jan 2002 22:14:26 +0000 Subject: Initial revision --- (limited to 'noncore/apps/tableviewer/db/xmlsource.h') diff --git a/noncore/apps/tableviewer/db/xmlsource.h b/noncore/apps/tableviewer/db/xmlsource.h new file mode 100644 index 0000000..ec267a6 --- a/dev/null +++ b/noncore/apps/tableviewer/db/xmlsource.h @@ -0,0 +1,119 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +/* A Class to parse an xml docment of the form + * + *
+ * Displayed Name + * key2name + * Key 3 + * key 4 + *
+ * + * string + * int + * string + * + * + * .... + * + * .... + *
+ * + * There is some room for improvment mostly around using better checking + * and the use of more advanced xml features. + */ + +#ifndef __XMLSOURCE_H__ +#define __XMLSOURCE_H__ + +#include +#include +#include +#include +#include +#include "datacache.h" +#include "common.h" + + +class DBXml : public DBAccess +{ +public: + /* create connection and either open or initialize */ + DBXml(DBStore *d); + QString type(); + bool openSource(QIODevice *); + bool saveSource(QIODevice *); + /* does a db write */ + ~DBXml(); +}; + + +class DBXmlHandler : public QXmlDefaultHandler +{ + +public: + DBXmlHandler(DBStore *ds); + virtual ~DBXmlHandler(); + + // return the error protocol if parsing failed + QString errorProtocol(); + + // overloaded handler functions + bool startDocument(); + bool startElement(const QString& namespaceURI, const QString& localName, + const QString& qName, const QXmlAttributes& atts); + bool endElement(const QString& namespaceURI, const QString& localName, + const QString& qName); + bool characters(const QString& ch); + + QString errorString(); + + bool warning(const QXmlParseException& exception); + bool error(const QXmlParseException& exception); + bool fatalError(const QXmlParseException& exception); + +private: + + QStack stack; + KeyList *current_keyrep; + DataElem *current_data; + TVVariant::KeyType last_key_type; + + QString errorProt; + DBStore *data_store; + + enum State { + StateInit, + StateHeader, + StateKey, + StateDocument, + StateRecord, + StateField + }; + + State state; + + QDict keyIndexList; + int keyIndex; + QString key; +}; + +#endif -- cgit v0.9.0.2