2 * Copyright (C) 2009 Sakari Poussa
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, version 2.
10 #include "xml-dom-parser.h"
12 ScoreXmlHandler::ScoreXmlHandler(QList<Score *> &list) : list(list)
16 int ScoreXmlHandler::parse(QString &fileName)
20 if (!file.open(QFile::ReadOnly)) {
21 qWarning() << "Unable to open :" << fileName;
24 else if (!doc.setContent(&file)) {
26 qWarning() << "Unable set content :" << fileName;
31 qDebug() << "File ready for XML : " << fileName;
34 root = doc.documentElement(); // this is for reading
36 QDomElement scoreElement = root.firstChildElement("score");
37 while (!scoreElement.isNull()) {
38 Score *score = new Score(scoreElement);
39 QDomElement holeElement = scoreElement.firstChildElement("hole");
41 while (!holeElement.isNull()) {
42 Hole *hole = new Hole(holeElement);
44 holeElement = holeElement.nextSiblingElement("hole");
47 scoreElement = scoreElement.nextSiblingElement("score");
52 int ScoreXmlHandler::save(QString &fileName)
56 root = doc.createElement("data");
57 doc.appendChild(root);
59 for (int i = 0; i < list.size(); i++) {
60 Score *score = list.at(i);
61 root.appendChild(score->toElement(doc));
64 if (!file.open(QFile::WriteOnly))
67 QTextStream ts(&file);
74 // ==========================================================
76 // ==========================================================
78 ClubXmlHandler::ClubXmlHandler(QList<Club *> &list) : list(list)
82 int ClubXmlHandler::parse(QString &fileName, bool readOnly)
86 if (!file.open(QFile::ReadOnly)) {
87 qWarning() << "Unable to open :" << fileName;
90 else if (!doc.setContent(&file)) {
92 qWarning() << "Unable set content :" << fileName;
97 qDebug() << "File ready for XML :" << fileName;
100 root = doc.documentElement(); // this is for reading
102 QDomElement clubElement = root.firstChildElement("club");
103 while (!clubElement.isNull()) {
105 Club *club = new Club(clubElement, readOnly);
107 QDomElement courseElement = clubElement.firstChildElement("course");
108 while (!courseElement.isNull()) {
110 Course *course = new Course(courseElement, club);
111 club->addCourse(course);
113 QDomElement holeElement = courseElement.firstChildElement("hole");
114 while (!holeElement.isNull()) {
115 Hole *hole = new Hole(holeElement);
116 course->addHole(hole);
118 holeElement = holeElement.nextSiblingElement("hole");
120 courseElement = courseElement.nextSiblingElement("course");
123 clubElement = clubElement.nextSiblingElement("club");
128 int ClubXmlHandler::save(QString &fileName)
130 QFile file(fileName);
132 root = doc.createElement("data");
133 doc.appendChild(root);
135 for (int i = 0; i < list.size(); i++) {
136 Club *club = list.at(i);
137 if (!club->isReadOnly())
138 root.appendChild(club->toElement(doc));
141 if (!file.open(QFile::WriteOnly))
144 QTextStream ts(&file);
145 ts << doc.toString();