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 } |