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

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 057856cf81a2
children
rev   line source
lbajardsilogic@143 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@143 2
lbajardsilogic@143 3 /* Sound Access
lbajardsilogic@143 4 EASAIER client application.
lbajardsilogic@143 5 Silogic 2007. Laure Bajard.
lbajardsilogic@143 6
lbajardsilogic@143 7 This program is free software; you can redistribute it and/or
lbajardsilogic@143 8 modify it under the terms of the GNU General Public License as
lbajardsilogic@143 9 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@143 10 License, or (at your option) any later version. See the file
lbajardsilogic@143 11 COPYING included with this distribution for more information.
lbajardsilogic@143 12 */
lbajardsilogic@143 13
lbajardsilogic@143 14 #include "SparqlRelatedMediaReader.h"
lbajardsilogic@143 15
lbajardsilogic@143 16 #include <iostream>
lbajardsilogic@143 17
lbajardsilogic@257 18 SparqlRelatedMediaReader::SparqlRelatedMediaReader(std::map<QString, QString> *relMediaList) :
lbajardsilogic@143 19 m_relMediaList(relMediaList)
lbajardsilogic@143 20 {}
lbajardsilogic@143 21
lbajardsilogic@143 22 bool SparqlRelatedMediaReader::parse(const QString & filename)
lbajardsilogic@143 23 {
lbajardsilogic@143 24 SparqlRelatedMediaHandler handler(m_relMediaList);
lbajardsilogic@143 25 QXmlSimpleReader reader;
lbajardsilogic@143 26 reader.setContentHandler(&handler);
lbajardsilogic@143 27 reader.setErrorHandler(&handler);
lbajardsilogic@143 28
lbajardsilogic@143 29 QFile file(filename);
lbajardsilogic@143 30
lbajardsilogic@143 31 if (!file.open(QFile::ReadOnly | QFile::Text)) {
lbajardsilogic@143 32 return false;
lbajardsilogic@143 33 }
lbajardsilogic@143 34
lbajardsilogic@143 35 QXmlInputSource xmlInputSource(&file);
lbajardsilogic@143 36 if (reader.parse(xmlInputSource))
lbajardsilogic@143 37 {
lbajardsilogic@143 38 return true;
lbajardsilogic@143 39 }
lbajardsilogic@143 40
lbajardsilogic@143 41 return false;
lbajardsilogic@143 42 }
lbajardsilogic@143 43
lbajardsilogic@257 44 SparqlRelatedMediaHandler::SparqlRelatedMediaHandler(std::map<QString, QString> *relMediaList) : QXmlDefaultHandler(),
lbajardsilogic@143 45 m_relMediaList(relMediaList),
lbajardsilogic@257 46 m_inUriBinding(false),
lbajardsilogic@257 47 m_inLiteralBinding(false),
lbajardsilogic@257 48 m_curUriName("")
lbajardsilogic@143 49 {}
lbajardsilogic@143 50
lbajardsilogic@143 51 bool SparqlRelatedMediaHandler::startElement(const QString &namespaceURI, const QString &localName,
lbajardsilogic@143 52 const QString &qName, const QXmlAttributes &attributes)
lbajardsilogic@143 53 {
lbajardsilogic@143 54
lbajardsilogic@143 55 QString name = qName.toLower();
lbajardsilogic@143 56
lbajardsilogic@143 57 bool ok = false;
lbajardsilogic@143 58
lbajardsilogic@143 59 // Valid element names:
lbajardsilogic@143 60 //
lbajardsilogic@143 61 // sparql
lbajardsilogic@143 62 // head
lbajardsilogic@143 63 // variable
lbajardsilogic@143 64 // results
lbajardsilogic@143 65 // result
lbajardsilogic@143 66 // binding
lbajardsilogic@143 67
lbajardsilogic@143 68 if (name == "sparql") {
lbajardsilogic@143 69
lbajardsilogic@143 70 // nothing needed
lbajardsilogic@143 71 ok = true;
lbajardsilogic@143 72
lbajardsilogic@143 73 } else if (name == "head") {
lbajardsilogic@143 74
lbajardsilogic@143 75 // nothing needed
lbajardsilogic@143 76 ok = true;
lbajardsilogic@143 77
lbajardsilogic@143 78 } else if (name == "variable") {
lbajardsilogic@143 79
lbajardsilogic@143 80 // nothing needed
lbajardsilogic@143 81 ok = true;
lbajardsilogic@143 82
lbajardsilogic@143 83 } else if (name == "results") {
lbajardsilogic@143 84
lbajardsilogic@143 85 // nothing needed
lbajardsilogic@143 86 ok = true;
lbajardsilogic@143 87
lbajardsilogic@143 88 } else if (name == "result") {
lbajardsilogic@143 89
lbajardsilogic@143 90 // nothing needed
lbajardsilogic@143 91 ok = true;
lbajardsilogic@143 92
lbajardsilogic@143 93 } else if (name == "binding") {
lbajardsilogic@143 94
lbajardsilogic@143 95 // nothing needed
lbajardsilogic@143 96 ok = true;
lbajardsilogic@143 97
lbajardsilogic@257 98 //} else if ( (name == "uri") || (name == "literal") ) {
lbajardsilogic@257 99 } else if (name == "uri") {
lbajardsilogic@257 100 m_inUriBinding = true;
lbajardsilogic@257 101 ok = true;
lbajardsilogic@257 102 } else if (name == "literal") {
lbajardsilogic@257 103 m_inLiteralBinding = true;
lbajardsilogic@143 104 ok = true;
lbajardsilogic@143 105 }
lbajardsilogic@143 106
lbajardsilogic@143 107 if (!ok) {
lbajardsilogic@143 108 std::cerr << "WARNING: SparqlResultsHandler-XML: Failed to completely process element \""
lbajardsilogic@143 109 << name.toLocal8Bit().data() << "\"" << std::endl;
lbajardsilogic@143 110 }
lbajardsilogic@143 111
lbajardsilogic@143 112 return true;
lbajardsilogic@143 113 }
lbajardsilogic@143 114
lbajardsilogic@143 115 bool SparqlRelatedMediaHandler::endElement(const QString &namespaceURI, const QString &localName,
lbajardsilogic@143 116 const QString &qName)
lbajardsilogic@143 117 {
lbajardsilogic@143 118 QString name = qName.toLower();
lbajardsilogic@143 119
lbajardsilogic@257 120 //if ( (name == "uri") || (name == "literal") )
lbajardsilogic@257 121 if (name == "uri")
lbajardsilogic@143 122 {
lbajardsilogic@257 123 m_inUriBinding = false;
lbajardsilogic@257 124 }
lbajardsilogic@257 125 if (name == "literal")
lbajardsilogic@257 126 {
lbajardsilogic@257 127 m_inLiteralBinding = false;
lbajardsilogic@143 128 }
lbajardsilogic@143 129
lbajardsilogic@143 130 return true;
lbajardsilogic@143 131 }
lbajardsilogic@143 132
lbajardsilogic@143 133 bool SparqlRelatedMediaHandler::characters(const QString &str)
lbajardsilogic@143 134 {
lbajardsilogic@257 135 if (m_inUriBinding)
lbajardsilogic@143 136 {
lbajardsilogic@257 137 m_curUriName = str;
lbajardsilogic@257 138
lbajardsilogic@257 139 } else if (m_inLiteralBinding)
lbajardsilogic@257 140 {
lbajardsilogic@257 141 m_relMediaList->insert(std::make_pair(m_curUriName,str));
lbajardsilogic@143 142 }
lbajardsilogic@143 143
lbajardsilogic@143 144 return true;
lbajardsilogic@143 145 }
lbajardsilogic@143 146
lbajardsilogic@143 147 bool SparqlRelatedMediaHandler::error(const QXmlParseException &exception)
lbajardsilogic@143 148 {
lbajardsilogic@143 149 QString errorString;
lbajardsilogic@143 150 errorString += QString("ERROR: SparqlRelatedMediaHandler-XML: %1 at line %2, column %3")
lbajardsilogic@143 151 .arg(exception.message())
lbajardsilogic@143 152 .arg(exception.lineNumber())
lbajardsilogic@143 153 .arg(exception.columnNumber());
lbajardsilogic@143 154 std::cerr << errorString.toLocal8Bit().data() << std::endl;
lbajardsilogic@143 155 return QXmlDefaultHandler::error(exception);
lbajardsilogic@143 156 }
lbajardsilogic@143 157
lbajardsilogic@143 158 bool SparqlRelatedMediaHandler::fatalError(const QXmlParseException &exception)
lbajardsilogic@143 159 {
lbajardsilogic@143 160 QString errorString;
lbajardsilogic@143 161 errorString += QString("FATAL ERROR: SparqlRelatedMediaHandler-XML: %1 at line %2, column %3")
lbajardsilogic@143 162 .arg(exception.message())
lbajardsilogic@143 163 .arg(exception.lineNumber())
lbajardsilogic@143 164 .arg(exception.columnNumber());
lbajardsilogic@143 165 std::cerr << errorString.toLocal8Bit().data() << std::endl;
lbajardsilogic@143 166 return QXmlDefaultHandler::fatalError(exception);
lbajardsilogic@143 167 }