From 586884a00b6aa99fa68c19f1fa3202a739bc7ec1 Mon Sep 17 00:00:00 2001 From: Peter Hedlund Date: Tue, 20 Feb 2007 20:46:55 +0000 Subject: [PATCH] Work on import filters. The Pauker filter now works well. svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=635759 --- kdeeducore/keduvocdocument.cpp | 22 +++--- kdeeducore/keduvockvtmlreader.cpp | 6 +- kdeeducore/keduvockvtmlreader.h | 79 ++++++++++----------- kdeeducore/keduvocpaukerreader.cpp | 110 +++++------------------------ kdeeducore/keduvocpaukerreader.h | 41 ++--------- kdeeducore/keduvocwqlreader.cpp | 6 +- kdeeducore/keduvocwqlreader.h | 7 +- 7 files changed, 79 insertions(+), 192 deletions(-) diff --git a/kdeeducore/keduvocdocument.cpp b/kdeeducore/keduvocdocument.cpp index febbb35..6dbb099 100644 --- a/kdeeducore/keduvocdocument.cpp +++ b/kdeeducore/keduvocdocument.cpp @@ -187,9 +187,9 @@ bool KEduVocDocument::open(const KUrl& url, bool /*append*/) if (KIO::NetAccess::download(url, temporaryFile, 0)) { ///@todo We need to work with the QIODevice directly for the compressed Pauker files - //QIODevice * fDev = KFilterDev::deviceForFile(temporaryFile); - QFile f(temporaryFile); - if (!f.open(QIODevice::ReadOnly)) + QIODevice * f = KFilterDev::deviceForFile(temporaryFile); + //QFile f(temporaryFile); + if (!f->open(QIODevice::ReadOnly)) { KMessageBox::error(0, errorMessage); return false; @@ -203,14 +203,14 @@ bool KEduVocDocument::open(const KUrl& url, bool /*append*/) switch (ft) { case kvtml: { - KEduVocKvtmlReader kvtmlReader(&f); + KEduVocKvtmlReader kvtmlReader(f); read = kvtmlReader.readDoc(this); } break; case wql: { - KEduVocWqlReader wqlReader(&f); + KEduVocWqlReader wqlReader(f); read = wqlReader.readDoc(this); if (!read) errorMessage = wqlReader.errorMessage(); @@ -219,7 +219,7 @@ bool KEduVocDocument::open(const KUrl& url, bool /*append*/) case pauker: { - KEduVocPaukerReader paukerReader(&f); + KEduVocPaukerReader paukerReader(f); read = paukerReader.readDoc(this); if (!read) errorMessage = paukerReader.errorMessage(); @@ -227,28 +227,28 @@ bool KEduVocDocument::open(const KUrl& url, bool /*append*/) case vt_lex: { - QTextStream is (&f); + //QTextStream is (&f); //TODO read = loadFromLex (is); } break; case vt_vcb: { - QTextStream is (&f); + //QTextStream is (&f); //TODO read = loadFromVcb (is); } break; case csv: { - QTextStream is(&f); + //QTextStream is(&f); //TODO read = loadFromCsv(is); } break; default: { - KEduVocKvtmlReader kvtmlReader(&f); + KEduVocKvtmlReader kvtmlReader(f); read = kvtmlReader.readDoc(this); } } @@ -268,7 +268,7 @@ bool KEduVocDocument::open(const KUrl& url, bool /*append*/) } } } - f.close(); + f->close(); KIO::NetAccess::removeTempFile(temporaryFile); } return true; diff --git a/kdeeducore/keduvockvtmlreader.cpp b/kdeeducore/keduvockvtmlreader.cpp index c2c0294..4d306b5 100644 --- a/kdeeducore/keduvockvtmlreader.cpp +++ b/kdeeducore/keduvockvtmlreader.cpp @@ -27,16 +27,12 @@ #include "keduvockvtmlreader.h" #include "keduvocdocument.h" -KEduVocKvtmlReader::KEduVocKvtmlReader(QFile *file) +KEduVocKvtmlReader::KEduVocKvtmlReader(QIODevice *file) { // the file must be already open m_inputFile = file; } -KEduVocKvtmlReader::~KEduVocKvtmlReader() -{ -} - bool KEduVocKvtmlReader::readLesson(QDomElement &domElementParent) { diff --git a/kdeeducore/keduvockvtmlreader.h b/kdeeducore/keduvockvtmlreader.h index 0889906..1ad5257 100644 --- a/kdeeducore/keduvockvtmlreader.h +++ b/kdeeducore/keduvockvtmlreader.h @@ -3,7 +3,7 @@ ----------------------------------------------------------------------- copyright : (C) 1999-2001 Ewald Arnold (C) 2001 The KDE-EDU team - (C) 2005 Eric Pignet + (C) 2005 Eric Pignet email : eric at erixpage.com ***************************************************************************/ @@ -21,7 +21,7 @@ #include -#include +#include #include #include @@ -74,46 +74,45 @@ class KEduVocDocument; class KDEEDUCORE_EXPORT KEduVocKvtmlReader : public QObject { public: - KEduVocKvtmlReader(QFile *file); - ~KEduVocKvtmlReader(); - - bool readDoc(KEduVocDocument *doc); - - bool readLesson(QDomElement &domElementParent); - bool readArticle(QDomElement &domElementParent); - bool readConjug(QDomElement &domElementParent, QList &curr_conjug, const QString &entry_tag); - bool readOptions(QDomElement &domElementParent); - bool readType(QDomElement &domElementParent); - bool readTense(QDomElement &domElementParent); - bool readUsage(QDomElement &domElementParent); - bool readComparison(QDomElement &domElementParent, KEduVocComparison &comp); - bool readMultipleChoice(QDomElement &domElementParent, KEduVocMultipleChoice &mc); - bool readExpressionChildAttributes( QDomElement &domElementExpressionChild, - QString &lang, - grade_t &grade, grade_t &rev_grade, - int &count, int &rev_count, - QDateTime &date, QDateTime &rev_date, - QString &remark, - int &bcount, int &rev_bcount, - QString &query_id, - QString &pronunce, - int &width, - QString &type, - QString &faux_ami_f, - QString &faux_ami_t, - QString &synonym, - QString &example, - QString &antonym, - QString &usage, - QString ¶phrase); - bool readExpression(QDomElement &domElementParent); - bool readBody(QDomElement &domElementParent); - - void domErrorUnknownElement(const QString &elem); - void domError(const QString &text ); + KEduVocKvtmlReader(QIODevice *file); + + bool readDoc(KEduVocDocument *doc); + + bool readLesson(QDomElement &domElementParent); + bool readArticle(QDomElement &domElementParent); + bool readConjug(QDomElement &domElementParent, QList &curr_conjug, const QString &entry_tag); + bool readOptions(QDomElement &domElementParent); + bool readType(QDomElement &domElementParent); + bool readTense(QDomElement &domElementParent); + bool readUsage(QDomElement &domElementParent); + bool readComparison(QDomElement &domElementParent, KEduVocComparison &comp); + bool readMultipleChoice(QDomElement &domElementParent, KEduVocMultipleChoice &mc); + bool readExpressionChildAttributes(QDomElement &domElementExpressionChild, + QString &lang, + grade_t &grade, grade_t &rev_grade, + int &count, int &rev_count, + QDateTime &date, QDateTime &rev_date, + QString &remark, + int &bcount, int &rev_bcount, + QString &query_id, + QString &pronunce, + int &width, + QString &type, + QString &faux_ami_f, + QString &faux_ami_t, + QString &synonym, + QString &example, + QString &antonym, + QString &usage, + QString ¶phrase); + bool readExpression(QDomElement &domElementParent); + bool readBody(QDomElement &domElementParent); + + void domErrorUnknownElement(const QString &elem); + void domError(const QString &text ); private: - QFile *m_inputFile; + QIODevice *m_inputFile; KEduVocDocument *m_doc; }; diff --git a/kdeeducore/keduvocpaukerreader.cpp b/kdeeducore/keduvocpaukerreader.cpp index c60a5fb..ee4d330 100644 --- a/kdeeducore/keduvocpaukerreader.cpp +++ b/kdeeducore/keduvocpaukerreader.cpp @@ -20,84 +20,7 @@ #include "keduvocexpression.h" #include "keduvocdocument.h" -/* -PaukerDataItem::PaukerDataItem() -{ -} - -PaukerDataItem::PaukerDataItem(QDomElement &entry) -{ - domElement = entry; -} - -PaukerDataItem::~PaukerDataItem() -{ -} - -QString PaukerDataItem::frontSide() const -{ - return getText("FrontSide"); -} - -QString PaukerDataItem::backSide() const -{ - return getText("BackSide"); -} - -QString PaukerDataItem::getText(const QString &tagName) const -{ - if(!domElement.isNull()) { - - QDomNodeList list = domElement.elementsByTagName(tagName); - - if(list.count() > 0) { - - QDomElement element = list.item(0).toElement(); - - if(!element.isNull()) { - return element.text(); - } - else - return QString::null; - } - else - return QString::null; - } - else - return QString::null; -} - -PaukerData::PaukerData() -{ - document = new QDomDocument(); -} - -PaukerDataItemList PaukerData::parse(const QString &fileName) -{ - PaukerDataItemList list; - - QIODevice * file = KFilterDev::deviceForFile(fileName); - document->setContent(file); - - QDomNodeList entries = document->elementsByTagName("Card"); - - // loop through the "Card" tags looking for data - for(uint i = 0 ; i < entries.count() ; i++) { - - // get an entry to operate on - QDomElement entry = entries.item(i).toElement(); - - // if the "node" is in fact an element -- i.e. not null - if(!entry.isNull()) { - PaukerDataItem item(entry); - list.append(item); - } - } - delete file; - return list; -} -*/ -KEduVocPaukerReader::KEduVocPaukerReader(QFile * file) +KEduVocPaukerReader::KEduVocPaukerReader(QIODevice * file) { // the file must be already open m_inputFile = file; @@ -115,6 +38,10 @@ bool KEduVocPaukerReader::readDoc(KEduVocDocument * doc) if (!domDoc.setContent(m_inputFile, &m_errorMessage)) return false; + QDomElement description = domDoc.documentElement().firstChildElement("Description"); + if(!description.isNull()) + m_doc->setDocRemark(description.text()); + QDomNodeList entries = domDoc.elementsByTagName("Card"); if (entries.count() <= 0) { @@ -122,11 +49,15 @@ bool KEduVocPaukerReader::readDoc(KEduVocDocument * doc) return false; } - for (int i = 0; entries.count() - 1; i++) { - QDomElement entry = entries.at(i).toElement(); + ///Pauker does not provide any column titles + m_doc->appendIdentifier(i18n("Front Side")); + m_doc->appendIdentifier(i18n("Reverse Side")); + + for (int i = 0; i < entries.count(); i++) { + QDomNode entry = entries.at(i); if(!entry.isNull()) { front = cardText(entry, "FrontSide"); - back = cardText(entry, "BackSide"); + back = cardText(entry, "ReverseSide"); KEduVocExpression expr = KEduVocExpression(front); expr.setTranslation(1, back); m_doc->appendEntry(&expr); @@ -136,22 +67,13 @@ bool KEduVocPaukerReader::readDoc(KEduVocDocument * doc) } -QString KEduVocPaukerReader::cardText(const QDomElement & entry, const QString & tagName) const +QString KEduVocPaukerReader::cardText(const QDomNode & entry, const QString & tagName) const { - QDomNodeList list = entry.elementsByTagName(tagName); + QDomElement element = entry.firstChildElement(tagName); - if(list.count() > 0) { - QDomElement element = list.item(0).toElement(); - - if(!element.isNull()) { - return element.text(); - } - else - return QString::null; - } + if(!element.isNull()) + return element.text(); else return QString::null; - } - diff --git a/kdeeducore/keduvocpaukerreader.h b/kdeeducore/keduvocpaukerreader.h index dedf907..8704773 100644 --- a/kdeeducore/keduvocpaukerreader.h +++ b/kdeeducore/keduvocpaukerreader.h @@ -20,56 +20,25 @@ #include #include -#include +#include class KEduVocDocument; class KDEEDUCORE_EXPORT KEduVocPaukerReader : public QObject { public: - KEduVocPaukerReader(QFile *file); + KEduVocPaukerReader(QIODevice *file); bool readDoc(KEduVocDocument *doc); QString errorMessage() const {return m_errorMessage;}; + private: - QString cardText(const QDomElement &entry, const QString &tagName) const; + QString cardText(const QDomNode &entry, const QString &tagName) const; - QFile *m_inputFile; + QIODevice *m_inputFile; KEduVocDocument *m_doc; QString m_errorMessage; }; -/* -class PaukerDataItem -{ -public: - PaukerDataItem(); - PaukerDataItem(QDomElement &entry); - virtual ~PaukerDataItem(); - - QString frontSide() const; - QString backSide() const; - -protected: - QString getText(const QString &tagName) const; - -private: - QDomElement domElement; -}; - -typedef QValueList PaukerDataItemList; -class PaukerData -{ -public: - PaukerData(); - PaukerDataItemList parse(const QString &fileName); - int colWidth(int col); - int numRows(); - QString language(int col); - -private: - QDomDocument* document; -}; -*/ #endif diff --git a/kdeeducore/keduvocwqlreader.cpp b/kdeeducore/keduvocwqlreader.cpp index 4f7d971..7d310ac 100644 --- a/kdeeducore/keduvocwqlreader.cpp +++ b/kdeeducore/keduvocwqlreader.cpp @@ -22,7 +22,7 @@ #include "keduvocwqlreader.h" #include "keduvocdocument.h" -KEduVocWqlReader::KEduVocWqlReader(QFile *file) +KEduVocWqlReader::KEduVocWqlReader(QIODevice *file) { // the file must be already open m_inputFile = file; @@ -140,8 +140,8 @@ bool KEduVocWqlReader::readDoc(KEduVocDocument *doc) p = s.indexOf(" [", 0); s = s.left(p); s = s.simplified(); - m_doc->m_identifiers.append(s); - m_doc->m_identifiers.append(inputStream.readLine()); + m_doc->appendIdentifier(s); + m_doc->appendIdentifier(inputStream.readLine()); while (!s.isNull()) { diff --git a/kdeeducore/keduvocwqlreader.h b/kdeeducore/keduvocwqlreader.h index a7a47cd..40ebfc7 100644 --- a/kdeeducore/keduvocwqlreader.h +++ b/kdeeducore/keduvocwqlreader.h @@ -20,20 +20,21 @@ #include -#include +#include class KEduVocDocument; class KDEEDUCORE_EXPORT KEduVocWqlReader : public QObject { public: - KEduVocWqlReader(QFile *file); + KEduVocWqlReader(QIODevice *file); bool readDoc(KEduVocDocument *doc); QString errorMessage() const {return m_errorMessage;}; + private: - QFile *m_inputFile; + QIODevice *m_inputFile; KEduVocDocument *m_doc; QString m_errorMessage; }; -- 2.47.3