-#include "remotedbparser.h"
-
-#include <QFile>
-#include <QDomElement>
-#include <QDomNodeList>
-#include <QDebug>
-
-RemoteDbParser::RemoteDbParser()
- : valid(false)
-{
-}
-
-RemoteDbParser::RemoteDbParser(const RemoteDbParser &r)
- : valid(r.valid)
- , mfgMap(r.mfgMap)
- , modelMap(r.modelMap)
-{
-}
-
-RemoteDbParser::RemoteDbParser(QDomDocument &doc)
-{
- parse(doc);
-}
-
-RemoteDbParser::~RemoteDbParser()
-{
-}
-
-void RemoteDbParser::setContent(QDomDocument &doc)
-{
- mfgMap.clear();
- modelMap.clear();
- parse(doc);
-}
-
-bool RemoteDbParser::isValid()
-{
- return valid;
-}
-
-QStringList RemoteDbParser::letters()
-{
- return mfgMap.keys();
-}
-
-QStringList RemoteDbParser::manufacturers(const QString &letter)
-{
- return mfgMap.value(letter);
-}
-
-QList<Model> RemoteDbParser::models(const QString &manufacturer)
-{
- return modelMap.value(manufacturer);
-}
-
-void RemoteDbParser::parse(QDomDocument &doc)
-{
- QDomNodeList chars = doc.elementsByTagName("char");
-
- for (int i = 0; i < chars.size(); ++i)
- {
- QDomElement charEl = chars.at(i).toElement();
- if (!charEl.isNull())
- {
- if (charEl.hasAttribute("id"))
- mfgMap.insert(charEl.attribute("id").at(0), parseMfgs(charEl));
- }
- }
-
- // TODO: more error handling
- valid = (mfgMap.size() > 0 &&
- modelMap.size() > 0);
-}
-
-QStringList RemoteDbParser::parseMfgs(QDomElement &charEl)
-{
- QStringList mfgStrings;
- QDomNodeList mfgs = charEl.elementsByTagName("mfg");
-
- for (int i = 0; i < mfgs.size(); ++i)
- {
- QDomElement mfgEl = mfgs.at(i).toElement();
- if (!mfgEl.isNull())
- {
- if (mfgEl.hasAttribute("id"))
- {
- mfgStrings.append(mfgEl.attribute("id"));
- modelMap.insert(mfgStrings.last(), parseModels(mfgEl));
- }
- }
- }
- return mfgStrings;
-}
-
-QList<Model> RemoteDbParser::parseModels(QDomElement &mfgEl)
-{
- QList<Model> modelList;
- QDomNodeList models = mfgEl.elementsByTagName("model");
-
- for (int i = 0; i < models.size(); ++i)
- {
- QDomElement modelEl = models.at(i).toElement();
- if (!modelEl.isNull())
- {
- if (modelEl.hasAttribute("name") && modelEl.hasAttribute("id"))
- {
- modelList.append(Model(modelEl.attribute("name"),
- modelEl.attribute("id")));
- }
- }
- }
- return modelList;
-}
-