diff data/fileio/AudioSourceInfoReader.cpp @ 90:87495ac7710a

support audio source info from boca
author lbajardsilogic
date Thu, 28 Jun 2007 16:57:29 +0000
parents 11e298cdb9e7
children ec2ca3fbd957
line wrap: on
line diff
--- a/data/fileio/AudioSourceInfoReader.cpp	Thu Jun 28 16:19:29 2007 +0000
+++ b/data/fileio/AudioSourceInfoReader.cpp	Thu Jun 28 16:57:29 2007 +0000
@@ -43,15 +43,16 @@
 	return false;
 }
 
-AudioSourceInfoHandler::AudioSourceInfoHandler(AudioSourceInfoModel* model) : QXmlDefaultHandler()
-{
-	m_model = model;
-}
+AudioSourceInfoHandler::AudioSourceInfoHandler(AudioSourceInfoModel* model) : QXmlDefaultHandler(),
+	m_model(model),
+	m_inBinding(false),
+	m_curBindingName("")
+{}
 
 bool AudioSourceInfoHandler::startElement(const QString &namespaceURI, const QString &localName,
 						  const QString &qName, const QXmlAttributes &attributes)
 {
-	QString name = qName.toLower();
+	/*QString name = qName.toLower();
     bool ok = false;
 
     // Valid element names:
@@ -77,18 +78,99 @@
 		  << name.toLocal8Bit().data() << "\"" << std::endl;
     }
 
+    return true;*/
+	QString name = qName.toLower();
+
+    bool ok = false;
+
+    // Valid element names:
+    //
+    // sparql
+    // head
+    // variable
+    // results
+	// result
+	// binding
+    
+    if (name == "sparql") {
+
+		// nothing needed
+		ok = true;
+
+    } else if (name == "head") {
+
+		// nothing needed
+		ok = true;
+
+    } else if (name == "variable") {
+
+		// nothing needed
+		ok = true;
+    
+    } else if (name == "results") {
+	
+		// nothing needed
+		ok = true;
+
+    } else if (name == "result") {
+	
+		ok = true;
+
+    } else if (name == "binding") {
+	
+		m_curBindingName = attributes.value("name");
+		ok = true;
+
+    } else if ( (name == "uri") || (name == "literal") ) {
+		m_inBinding = true;	
+		ok = true;
+	}
+
+    if (!ok) {
+		std::cerr << "WARNING: SparqlResultsHandler-XML: Failed to completely process element \""
+		  << name.toLocal8Bit().data() << "\"" << std::endl;
+    }
+
     return true;
 }
 
 bool AudioSourceInfoHandler::endElement(const QString &namespaceURI, const QString &localName,
 						const QString &qName)
 {
+	QString name = qName.toLower();
+
+	if ( (name == "uri") || (name == "literal") )
+	{
+		m_inBinding = false;
+		m_curBindingName = "";
+
+	} else if (name == "result")
+	{
+		m_model->addInfo(m_property, m_value);
+	}
+
 	return true;
 }
 
 bool AudioSourceInfoHandler::characters(const QString &str)
 {
-	return true;
+	if (m_inBinding)
+	{
+		if (m_curBindingName == "value")
+		{
+			m_value = str;
+		}
+		else if (m_curBindingName == "property")
+		{
+			m_property = str;
+		}
+		else 
+		{
+			m_model->addInfo(m_curBindingName, str);
+		}
+	}
+
+    return true;
 }
 
 bool AudioSourceInfoHandler::error(const QXmlParseException &exception)