From a119839f5b71127ce786370c8e24d45033ecf8c5 Mon Sep 17 00:00:00 2001 From: Jeremy Paul Whiting Date: Mon, 23 Jul 2007 22:10:45 +0000 Subject: [PATCH] writer updates now identifiers and articles are written in the new format svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=691556 --- kdeeducore/keduvockvtml2writer.cpp | 179 +++++++++++++---------------- kdeeducore/keduvockvtml2writer.h | 13 ++- 2 files changed, 92 insertions(+), 100 deletions(-) diff --git a/kdeeducore/keduvockvtml2writer.cpp b/kdeeducore/keduvockvtml2writer.cpp index 409cb07..57c5562 100644 --- a/kdeeducore/keduvockvtml2writer.cpp +++ b/kdeeducore/keduvockvtml2writer.cpp @@ -50,14 +50,15 @@ bool KEduVocKvtml2Writer::writeDoc(KEduVocDocument *doc, const QString &generato writeInformation(currentElement, generator); domElementKvtml.appendChild(currentElement); + // identifiers + currentElement = m_domDoc.createElement(KVTML_IDENTIFIERS); + writeIdentifiers(currentElement); + domElementKvtml.appendChild(currentElement); //** NOTE: everything below this point has not been updated to use kvtml2 format**** if (!writeLesson(m_domDoc, domElementKvtml)) return false; - if (!writeArticle(m_domDoc, domElementKvtml)) - return false; - QList conjugations; for (int i = 0; i < m_doc->conjugationCount(); i++) conjugations.append(m_doc->conjugation(i)); @@ -338,6 +339,39 @@ bool KEduVocKvtml2Writer::writeInformation(QDomElement &informationElement, cons return true; } + +bool KEduVocKvtml2Writer::writeIdentifiers(QDomElement &identifiersElement) +{ + for (int i = 0; i < m_doc->identifierCount(); ++i) + { + // create the node + QDomElement identifier = m_domDoc.createElement(KVTML_IDENTIFIER); + + // set the id + identifier.setAttribute(KVTML_ID, QString::number(i)); + + // record the identifier as the locale for now + // TODO: when support for more parts of the identifier is in the document class (name, type, etc.) store those here as well + QDomElement locale = m_domDoc.createElement(KVTML_LOCALE); + QDomText textNode = m_domDoc.createTextNode(m_doc->identifier(i)); + locale.appendChild(textNode); + identifier.appendChild(locale); + + // record articles + QDomElement article = m_domDoc.createElement(KVTML_ARTICLE); + writeArticle(article, i); + if (article.hasChildNodes()) + { + identifier.appendChild(article); + } + + // record personalpronouns + + // add this identifier to the group + identifiersElement.appendChild(identifier); + } +} + bool KEduVocKvtml2Writer::writeLesson(QDomDocument &domDoc, QDomElement &domElementParent) { if (m_doc->lessonDescriptions().count() == 0) @@ -371,106 +405,55 @@ bool KEduVocKvtml2Writer::writeLesson(QDomDocument &domDoc, QDomElement &domElem } -bool KEduVocKvtml2Writer::writeArticle(QDomDocument &domDoc, QDomElement &domElementParent) -/* -
- lang determines also lang order in entries !! - eine which must NOT differ - die - ein - der - ein - das - -
-*/ +bool KEduVocKvtml2Writer::writeArticle(QDomElement &articleElement, int article) { - if (m_doc->articleCount() == 0) - return true; - - QDomElement domElementArticle = domDoc.createElement(KV_ARTICLE_GRP); + QDomElement definite = m_domDoc.createElement(KVTML_DEFINITE); + QDomElement indefinite = m_domDoc.createElement(KVTML_INDEFINITE); QString def; QString indef; - QString s; - - for (int lfn = 0; lfn < qMin(m_doc->articleCount(), m_doc->identifierCount()); lfn++) - { - QDomElement domElementEntry = domDoc.createElement(KV_ART_ENTRY); - if (lfn == 0) - { - s = m_doc->identifier(0).simplified(); - if (s.isEmpty()) - s = "original"; - } - else - { - s = m_doc->identifier(lfn).simplified(); - if (s.isEmpty()) - { - s.setNum(lfn); - s.prepend("translation "); - } - } - domElementEntry.setAttribute(KV_LANG, s); - - m_doc->article(lfn).getFemale(&def, &indef); - if (!def.isEmpty()) - { - QDomElement domElementFD = domDoc.createElement(KV_ART_FD); - QDomText domTextFD = domDoc.createTextNode(def); - - domElementFD.appendChild(domTextFD); - domElementEntry.appendChild(domElementFD); - } - if (!indef.isEmpty()) - { - QDomElement domElementFI = domDoc.createElement(KV_ART_FI); - QDomText domTextFI = domDoc.createTextNode(indef); - - domElementFI.appendChild(domTextFI); - domElementEntry.appendChild(domElementFI); - } - - m_doc->article(lfn).getMale(&def, &indef); - if (!def.isEmpty()) - { - QDomElement domElementMD = domDoc.createElement(KV_ART_MD); - QDomText domTextMD = domDoc.createTextNode(def); - - domElementMD.appendChild(domTextMD); - domElementEntry.appendChild(domElementMD); - } - if (!indef.isEmpty()) - { - QDomElement domElementMI = domDoc.createElement(KV_ART_MI); - QDomText domTextMI = domDoc.createTextNode(indef); - - domElementMI.appendChild(domTextMI); - domElementEntry.appendChild(domElementMI); - } - - m_doc->article(lfn).getNatural(&def, &indef); - if (!def.isEmpty()) - { - QDomElement domElementND = domDoc.createElement(KV_ART_ND); - QDomText domTextND = domDoc.createTextNode(def); - - domElementND.appendChild(domTextND); - domElementEntry.appendChild(domElementND); - } - if (!indef.isEmpty()) - { - QDomElement domElementNI = domDoc.createElement(KV_ART_NI); - QDomText domTextNI = domDoc.createTextNode(indef); - - domElementNI.appendChild(domTextNI); - domElementEntry.appendChild(domElementNI); - } + QDomElement currentElement; + QDomText textNode; + + // male + m_doc->article(article).getMale(&def, &indef); - domElementArticle.appendChild(domElementEntry); - } + currentElement = m_domDoc.createElement(KVTML_MALE); + textNode = m_domDoc.createTextNode(def); + currentElement.appendChild(textNode); + definite.appendChild(currentElement); + + textNode = m_domDoc.createTextNode(indef); + currentElement = m_domDoc.createElement(KVTML_MALE); + currentElement.appendChild(textNode); + indefinite.appendChild(currentElement); + + // female + m_doc->article(article).getFemale(&def, &indef); + currentElement = m_domDoc.createElement(KVTML_FEMALE); + textNode = m_domDoc.createTextNode(def); + currentElement.appendChild(textNode); + definite.appendChild(currentElement); + + textNode = m_domDoc.createTextNode(indef); + currentElement = m_domDoc.createElement(KVTML_FEMALE); + currentElement.appendChild(textNode); + indefinite.appendChild(currentElement); + + // neutral + m_doc->article(article).getNatural(&def, &indef); + currentElement = m_domDoc.createElement(KVTML_NEUTRAL); + textNode = m_domDoc.createTextNode(def); + currentElement.appendChild(textNode); + definite.appendChild(currentElement); + + textNode = m_domDoc.createTextNode(indef); + currentElement = m_domDoc.createElement(KVTML_NEUTRAL); + currentElement.appendChild(textNode); + indefinite.appendChild(currentElement); + - domElementParent.appendChild(domElementArticle); + articleElement.appendChild(definite); + articleElement.appendChild(indefinite); return true; } diff --git a/kdeeducore/keduvockvtml2writer.h b/kdeeducore/keduvockvtml2writer.h index aae083c..66cba20 100644 --- a/kdeeducore/keduvockvtml2writer.h +++ b/kdeeducore/keduvockvtml2writer.h @@ -38,13 +38,22 @@ public: */ bool writeInformation(QDomElement &informationElement, const QString &generator); - + /** write identifiers group + * @param identifiersElement QDomElement to write to + */ + bool writeIdentifiers(QDomElement &identifiersElement); + + /** write article + * @param articleElement QDomElement
to write to + * @param article the article number to write + */ + bool writeArticle(QDomElement &articleElement, int article); + bool writeLesson(QDomDocument &domDoc, QDomElement &domElementParent); bool writeType(QDomDocument &domDoc, QDomElement &domElementParent); bool writeTense(QDomDocument &domDoc, QDomElement &domElementParent); bool writeUsage(QDomDocument &domDoc, QDomElement &domElementParent); bool writeOption(QDomDocument &domDoc, QDomElement &domElementParent); - bool writeArticle (QDomDocument &domDoc, QDomElement &domElementParent); bool writeConjugHeader(QDomDocument &domDoc, QDomElement &domElementParent, QList &curr_conjug); bool writeConjug(QDomDocument &domDoc, QDomElement &domElementParent, const KEduVocConjugation &curr_conjug, const QString &type); bool writeConjugEntry(QDomDocument &domDoc, QDomElement &domElementParent, KEduVocConjugation &curr_conjug); -- 2.47.3