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

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 427272bfec3b
children
rev   line source
benoitrigolleau@279 1 #include "SparqlResultsHandler.h"
benoitrigolleau@279 2
benoitrigolleau@279 3 #include <iostream>
benoitrigolleau@279 4 #include <windows.h>
benoitrigolleau@279 5
benoitrigolleau@279 6 SparqlResultsHandler::SparqlResultsHandler() : QXmlDefaultHandler(),
benoitrigolleau@279 7 m_inBinding(false),
benoitrigolleau@279 8 m_curBindingName("")
benoitrigolleau@279 9 {}
benoitrigolleau@279 10
benoitrigolleau@279 11 bool SparqlResultsHandler::startElement(const QString &namespaceURI, const QString &localName,
benoitrigolleau@279 12 const QString &qName, const QXmlAttributes &attributes)
benoitrigolleau@279 13 {
benoitrigolleau@279 14
benoitrigolleau@279 15 QString name = qName.toLower();
benoitrigolleau@279 16
benoitrigolleau@279 17 bool ok = false;
benoitrigolleau@279 18
benoitrigolleau@279 19 // Valid element names:
benoitrigolleau@279 20 //
benoitrigolleau@279 21 // sparql
benoitrigolleau@279 22 // head
benoitrigolleau@279 23 // variable
benoitrigolleau@279 24 // results
benoitrigolleau@279 25 // result
benoitrigolleau@279 26 // binding
benoitrigolleau@279 27
benoitrigolleau@279 28 if (name == "sparql") {
benoitrigolleau@279 29
benoitrigolleau@279 30 // nothing needed
benoitrigolleau@279 31 ok = true;
benoitrigolleau@279 32
benoitrigolleau@279 33 } else if (name == "head") {
benoitrigolleau@279 34
benoitrigolleau@279 35 // nothing needed
benoitrigolleau@279 36 ok = true;
benoitrigolleau@279 37
benoitrigolleau@279 38 } else if (name == "variable") {
benoitrigolleau@279 39
benoitrigolleau@279 40 // nothing needed
benoitrigolleau@279 41 ok = true;
benoitrigolleau@279 42
benoitrigolleau@279 43 } else if (name == "results") {
benoitrigolleau@279 44
benoitrigolleau@279 45 // nothing needed
benoitrigolleau@279 46 ok = true;
benoitrigolleau@279 47
benoitrigolleau@279 48 } else if (name == "result") {
benoitrigolleau@279 49
benoitrigolleau@279 50 emit(newResultDetected());
benoitrigolleau@279 51 ok = true;
benoitrigolleau@279 52
benoitrigolleau@279 53 } else if (name == "binding") {
benoitrigolleau@279 54
benoitrigolleau@279 55 m_curBindingName = attributes.value("name");
benoitrigolleau@279 56 ok = true;
benoitrigolleau@279 57
benoitrigolleau@279 58 } else if ( (name == "uri") || (name == "literal") ) {
benoitrigolleau@279 59 m_inBinding = true;
benoitrigolleau@279 60 ok = true;
benoitrigolleau@279 61 }
benoitrigolleau@279 62
benoitrigolleau@279 63 if (!ok) {
benoitrigolleau@279 64 std::cerr << "WARNING: SparqlResultsHandler-XML: Failed to completely process element \""
benoitrigolleau@279 65 << name.toLocal8Bit().data() << "\"" << std::endl;
benoitrigolleau@279 66 }
benoitrigolleau@279 67
benoitrigolleau@279 68 return true;
benoitrigolleau@279 69 }
benoitrigolleau@279 70
benoitrigolleau@279 71 bool SparqlResultsHandler::endElement(const QString &namespaceURI, const QString &localName,
benoitrigolleau@279 72 const QString &qName)
benoitrigolleau@279 73 {
benoitrigolleau@279 74 QString name = qName.toLower();
benoitrigolleau@279 75
benoitrigolleau@279 76 if ( (name == "uri") || (name == "literal") )
benoitrigolleau@279 77 {
benoitrigolleau@279 78 m_inBinding = false;
benoitrigolleau@279 79 m_curBindingName = "";
benoitrigolleau@279 80
benoitrigolleau@279 81 } else if (name == "result")
benoitrigolleau@279 82 {
benoitrigolleau@279 83 /*m_resultsWidget->addInfo("composer", m_composer);
benoitrigolleau@279 84 m_resultsWidget->addInfo("arranger", m_arranger);
benoitrigolleau@279 85 m_composer.clear();
benoitrigolleau@279 86 m_arranger.clear();
benoitrigolleau@279 87 m_composer.append(" -");
benoitrigolleau@279 88 m_arranger.append(" -");*/
benoitrigolleau@279 89
benoitrigolleau@279 90 //Sleep(500);
benoitrigolleau@279 91 emit endOfResultDetected();
benoitrigolleau@279 92
benoitrigolleau@279 93 }
benoitrigolleau@279 94 return true;
benoitrigolleau@279 95 }
benoitrigolleau@279 96
benoitrigolleau@279 97 bool SparqlResultsHandler::characters(const QString &str)
benoitrigolleau@279 98 {
benoitrigolleau@279 99 if (m_inBinding)
benoitrigolleau@279 100 {
benoitrigolleau@279 101 /*if (m_curBindingName.contains("composer"))
benoitrigolleau@279 102 {
benoitrigolleau@279 103 m_composer.append(" " + str);
benoitrigolleau@279 104 }
benoitrigolleau@279 105 else if (m_curBindingName.contains("arranger"))
benoitrigolleau@279 106 {
benoitrigolleau@279 107 m_arranger.append(" " + str);
benoitrigolleau@279 108 }
benoitrigolleau@279 109 else
benoitrigolleau@279 110 {*/
benoitrigolleau@279 111 emit newInfoResultDetected(m_curBindingName,str);
benoitrigolleau@279 112
benoitrigolleau@279 113 //}
benoitrigolleau@279 114 }
benoitrigolleau@279 115
benoitrigolleau@279 116 return true;
benoitrigolleau@279 117 }
benoitrigolleau@279 118
benoitrigolleau@279 119 bool SparqlResultsHandler::error(const QXmlParseException &exception)
benoitrigolleau@279 120 {
benoitrigolleau@279 121 QString errorString;
benoitrigolleau@279 122 errorString += QString("ERROR: SparqlResultsHandler-XML: %1 at line %2, column %3")
benoitrigolleau@279 123 .arg(exception.message())
benoitrigolleau@279 124 .arg(exception.lineNumber())
benoitrigolleau@279 125 .arg(exception.columnNumber());
benoitrigolleau@279 126 std::cerr << errorString.toLocal8Bit().data() << std::endl;
benoitrigolleau@279 127 return QXmlDefaultHandler::error(exception);
benoitrigolleau@279 128 }
benoitrigolleau@279 129
benoitrigolleau@279 130 bool SparqlResultsHandler::fatalError(const QXmlParseException &exception)
benoitrigolleau@279 131 {
benoitrigolleau@279 132 QString errorString;
benoitrigolleau@279 133 errorString += QString("FATAL ERROR: SparqlResultsHandler-XML: %1 at line %2, column %3")
benoitrigolleau@279 134 .arg(exception.message())
benoitrigolleau@279 135 .arg(exception.lineNumber())
benoitrigolleau@279 136 .arg(exception.columnNumber());
benoitrigolleau@279 137 std::cerr << errorString.toLocal8Bit().data() << std::endl;
benoitrigolleau@279 138 return QXmlDefaultHandler::fatalError(exception);
benoitrigolleau@279 139 }
benoitrigolleau@279 140
benoitrigolleau@279 141 bool SparqlResultsHandler::endDocument(){
benoitrigolleau@279 142 emit endOfDocumentDetected();
benoitrigolleau@279 143 return true;
benoitrigolleau@279 144 }