lbajardsilogic@15
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@15
|
2
|
lbajardsilogic@15
|
3 /* Sound Access
|
lbajardsilogic@15
|
4 EASAIER client application.
|
lbajardsilogic@15
|
5 Silogic 2007. Laure Bajard.
|
lbajardsilogic@15
|
6
|
lbajardsilogic@15
|
7 This program is free software; you can redistribute it and/or
|
lbajardsilogic@15
|
8 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@15
|
9 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@15
|
10 License, or (at your option) any later version. See the file
|
lbajardsilogic@15
|
11 COPYING included with this distribution for more information.
|
lbajardsilogic@15
|
12 */
|
lbajardsilogic@15
|
13
|
lbajardsilogic@15
|
14 #include "AudioSourceInfoReader.h"
|
lbajardsilogic@15
|
15
|
lbajardsilogic@15
|
16
|
lbajardsilogic@15
|
17 #include <iostream>
|
lbajardsilogic@15
|
18
|
lbajardsilogic@15
|
19 AudioSourceInfoReader::AudioSourceInfoReader(AudioSourceInfoModel* model)
|
lbajardsilogic@15
|
20 {
|
lbajardsilogic@15
|
21 m_model = model;
|
lbajardsilogic@15
|
22 }
|
lbajardsilogic@15
|
23
|
lbajardsilogic@15
|
24 bool AudioSourceInfoReader::parse(const QString & filename)
|
lbajardsilogic@15
|
25 {
|
lbajardsilogic@15
|
26 AudioSourceInfoHandler handler(m_model);
|
lbajardsilogic@15
|
27 QXmlSimpleReader reader;
|
lbajardsilogic@15
|
28 reader.setContentHandler(&handler);
|
lbajardsilogic@15
|
29 reader.setErrorHandler(&handler);
|
lbajardsilogic@15
|
30
|
lbajardsilogic@15
|
31 QFile file(filename);
|
lbajardsilogic@15
|
32
|
lbajardsilogic@15
|
33 if (!file.open(QFile::ReadOnly | QFile::Text)) {
|
lbajardsilogic@15
|
34 return false;
|
lbajardsilogic@15
|
35 }
|
lbajardsilogic@15
|
36
|
lbajardsilogic@15
|
37 QXmlInputSource xmlInputSource(&file);
|
lbajardsilogic@15
|
38 if (reader.parse(xmlInputSource))
|
lbajardsilogic@15
|
39 {
|
lbajardsilogic@15
|
40 return true;
|
lbajardsilogic@15
|
41 }
|
lbajardsilogic@15
|
42
|
lbajardsilogic@15
|
43 return false;
|
lbajardsilogic@15
|
44 }
|
lbajardsilogic@15
|
45
|
lbajardsilogic@90
|
46 AudioSourceInfoHandler::AudioSourceInfoHandler(AudioSourceInfoModel* model) : QXmlDefaultHandler(),
|
lbajardsilogic@90
|
47 m_model(model),
|
lbajardsilogic@90
|
48 m_inBinding(false),
|
lbajardsilogic@90
|
49 m_curBindingName("")
|
lbajardsilogic@90
|
50 {}
|
lbajardsilogic@15
|
51
|
lbajardsilogic@15
|
52 bool AudioSourceInfoHandler::startElement(const QString &namespaceURI, const QString &localName,
|
lbajardsilogic@15
|
53 const QString &qName, const QXmlAttributes &attributes)
|
lbajardsilogic@15
|
54 {
|
lbajardsilogic@90
|
55 /*QString name = qName.toLower();
|
lbajardsilogic@15
|
56 bool ok = false;
|
lbajardsilogic@15
|
57
|
lbajardsilogic@15
|
58 // Valid element names:
|
lbajardsilogic@15
|
59 // easaierResource
|
lbajardsilogic@15
|
60 // dc:identifier
|
lbajardsilogic@15
|
61 // dc:title
|
lbajardsilogic@15
|
62 // dc:creator...
|
lbajardsilogic@15
|
63
|
lbajardsilogic@15
|
64 if (name == "easaierresource") {
|
lbajardsilogic@15
|
65 // nothing needed
|
lbajardsilogic@15
|
66 ok = true;
|
lbajardsilogic@15
|
67
|
lbajardsilogic@15
|
68 } else {
|
lbajardsilogic@15
|
69 ok = true;
|
lbajardsilogic@15
|
70 QString id = attributes.value("id");
|
lbajardsilogic@15
|
71 name.append(id);
|
lbajardsilogic@15
|
72 m_model->addInfo(name, attributes.value("value"));
|
lbajardsilogic@15
|
73
|
lbajardsilogic@15
|
74 }
|
lbajardsilogic@15
|
75
|
lbajardsilogic@15
|
76 if (!ok) {
|
lbajardsilogic@15
|
77 std::cerr << "WARNING: connexion config-XML: Failed to completely process element \""
|
lbajardsilogic@15
|
78 << name.toLocal8Bit().data() << "\"" << std::endl;
|
lbajardsilogic@15
|
79 }
|
lbajardsilogic@15
|
80
|
lbajardsilogic@90
|
81 return true;*/
|
lbajardsilogic@90
|
82 QString name = qName.toLower();
|
lbajardsilogic@90
|
83
|
lbajardsilogic@90
|
84 bool ok = false;
|
lbajardsilogic@90
|
85
|
lbajardsilogic@90
|
86 // Valid element names:
|
lbajardsilogic@90
|
87 //
|
lbajardsilogic@90
|
88 // sparql
|
lbajardsilogic@90
|
89 // head
|
lbajardsilogic@90
|
90 // variable
|
lbajardsilogic@90
|
91 // results
|
lbajardsilogic@90
|
92 // result
|
lbajardsilogic@90
|
93 // binding
|
lbajardsilogic@90
|
94
|
lbajardsilogic@90
|
95 if (name == "sparql") {
|
lbajardsilogic@90
|
96
|
lbajardsilogic@90
|
97 // nothing needed
|
lbajardsilogic@90
|
98 ok = true;
|
lbajardsilogic@90
|
99
|
lbajardsilogic@90
|
100 } else if (name == "head") {
|
lbajardsilogic@90
|
101
|
lbajardsilogic@90
|
102 // nothing needed
|
lbajardsilogic@90
|
103 ok = true;
|
lbajardsilogic@90
|
104
|
lbajardsilogic@90
|
105 } else if (name == "variable") {
|
lbajardsilogic@90
|
106
|
lbajardsilogic@90
|
107 // nothing needed
|
lbajardsilogic@90
|
108 ok = true;
|
lbajardsilogic@90
|
109
|
lbajardsilogic@90
|
110 } else if (name == "results") {
|
lbajardsilogic@90
|
111
|
lbajardsilogic@90
|
112 // nothing needed
|
lbajardsilogic@90
|
113 ok = true;
|
lbajardsilogic@90
|
114
|
lbajardsilogic@90
|
115 } else if (name == "result") {
|
lbajardsilogic@90
|
116
|
lbajardsilogic@90
|
117 ok = true;
|
lbajardsilogic@90
|
118
|
lbajardsilogic@90
|
119 } else if (name == "binding") {
|
lbajardsilogic@90
|
120
|
lbajardsilogic@90
|
121 m_curBindingName = attributes.value("name");
|
lbajardsilogic@90
|
122 ok = true;
|
lbajardsilogic@90
|
123
|
lbajardsilogic@90
|
124 } else if ( (name == "uri") || (name == "literal") ) {
|
lbajardsilogic@90
|
125 m_inBinding = true;
|
lbajardsilogic@90
|
126 ok = true;
|
lbajardsilogic@90
|
127 }
|
lbajardsilogic@90
|
128
|
lbajardsilogic@90
|
129 if (!ok) {
|
lbajardsilogic@244
|
130 std::cerr << "WARNING: AudioSourceInfoHandler-XML: Failed to completely process element \""
|
lbajardsilogic@90
|
131 << name.toLocal8Bit().data() << "\"" << std::endl;
|
lbajardsilogic@90
|
132 }
|
lbajardsilogic@90
|
133
|
lbajardsilogic@15
|
134 return true;
|
lbajardsilogic@15
|
135 }
|
lbajardsilogic@15
|
136
|
lbajardsilogic@15
|
137 bool AudioSourceInfoHandler::endElement(const QString &namespaceURI, const QString &localName,
|
lbajardsilogic@15
|
138 const QString &qName)
|
lbajardsilogic@15
|
139 {
|
lbajardsilogic@90
|
140 QString name = qName.toLower();
|
lbajardsilogic@90
|
141
|
lbajardsilogic@90
|
142 if ( (name == "uri") || (name == "literal") )
|
lbajardsilogic@90
|
143 {
|
lbajardsilogic@90
|
144 m_inBinding = false;
|
lbajardsilogic@90
|
145 m_curBindingName = "";
|
lbajardsilogic@90
|
146
|
lbajardsilogic@90
|
147 } else if (name == "result")
|
lbajardsilogic@90
|
148 {
|
lbajardsilogic@251
|
149 /*m_model->addInfo("composer", m_composer);
|
lbajardsilogic@244
|
150 m_model->addInfo("arranger", m_arranger);
|
lbajardsilogic@244
|
151 m_composer.clear();
|
lbajardsilogic@244
|
152 m_arranger.clear();
|
lbajardsilogic@244
|
153 m_composer.append(" -");
|
lbajardsilogic@251
|
154 m_arranger.append(" -");*/
|
lbajardsilogic@90
|
155 }
|
lbajardsilogic@90
|
156
|
lbajardsilogic@15
|
157 return true;
|
lbajardsilogic@15
|
158 }
|
lbajardsilogic@15
|
159
|
lbajardsilogic@15
|
160 bool AudioSourceInfoHandler::characters(const QString &str)
|
lbajardsilogic@15
|
161 {
|
lbajardsilogic@90
|
162 if (m_inBinding)
|
lbajardsilogic@90
|
163 {
|
lbajardsilogic@244
|
164 if (m_curBindingName.contains("composer"))
|
lbajardsilogic@90
|
165 {
|
lbajardsilogic@244
|
166 m_composer.append(" " + str);
|
lbajardsilogic@90
|
167 }
|
lbajardsilogic@244
|
168 else if (m_curBindingName.contains("arranger"))
|
lbajardsilogic@90
|
169 {
|
lbajardsilogic@244
|
170 m_arranger.append(" " + str);
|
lbajardsilogic@90
|
171 }
|
lbajardsilogic@90
|
172 else
|
lbajardsilogic@90
|
173 {
|
lbajardsilogic@90
|
174 m_model->addInfo(m_curBindingName, str);
|
lbajardsilogic@90
|
175 }
|
lbajardsilogic@90
|
176 }
|
lbajardsilogic@90
|
177
|
lbajardsilogic@90
|
178 return true;
|
lbajardsilogic@15
|
179 }
|
lbajardsilogic@15
|
180
|
lbajardsilogic@15
|
181 bool AudioSourceInfoHandler::error(const QXmlParseException &exception)
|
lbajardsilogic@15
|
182 {
|
lbajardsilogic@15
|
183 QString errorString;
|
lbajardsilogic@244
|
184 errorString += QString("ERROR: connexion AudioSourceInfoHandler-XML: %1 at line %2, column %3")
|
lbajardsilogic@15
|
185 .arg(exception.message())
|
lbajardsilogic@15
|
186 .arg(exception.lineNumber())
|
lbajardsilogic@15
|
187 .arg(exception.columnNumber());
|
lbajardsilogic@15
|
188 std::cerr << errorString.toLocal8Bit().data() << std::endl;
|
lbajardsilogic@15
|
189 return QXmlDefaultHandler::error(exception);
|
lbajardsilogic@15
|
190 }
|
lbajardsilogic@15
|
191
|
lbajardsilogic@15
|
192 bool AudioSourceInfoHandler::fatalError(const QXmlParseException &exception)
|
lbajardsilogic@15
|
193 {
|
lbajardsilogic@15
|
194 QString errorString;
|
lbajardsilogic@244
|
195 errorString += QString("FATAL ERROR: connexion AudioSourceInfoHandler-XML: %1 at line %2, column %3")
|
lbajardsilogic@15
|
196 .arg(exception.message())
|
lbajardsilogic@15
|
197 .arg(exception.lineNumber())
|
lbajardsilogic@15
|
198 .arg(exception.columnNumber());
|
lbajardsilogic@15
|
199 std::cerr << errorString.toLocal8Bit().data() << std::endl;
|
lbajardsilogic@15
|
200 return QXmlDefaultHandler::fatalError(exception);
|
lbajardsilogic@15
|
201 } |