annotate data/fileio/AudioSourceInfoReader.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 2ea04b3f9141
children
rev   line source
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 }