[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Cashew-s-auto] Changes to cashews/src/nongnu/cashews/rdf/XMLParser.java
From: |
Andrew John Hughes |
Subject: |
[Cashew-s-auto] Changes to cashews/src/nongnu/cashews/rdf/XMLParser.java |
Date: |
Fri, 08 Apr 2005 21:29:48 -0400 |
Index: cashews/src/nongnu/cashews/rdf/XMLParser.java
diff -u cashews/src/nongnu/cashews/rdf/XMLParser.java:1.6
cashews/src/nongnu/cashews/rdf/XMLParser.java:1.7
--- cashews/src/nongnu/cashews/rdf/XMLParser.java:1.6 Tue Apr 5 16:48:53 2005
+++ cashews/src/nongnu/cashews/rdf/XMLParser.java Sat Apr 9 01:29:47 2005
@@ -32,11 +32,12 @@
import java.util.logging.Level;
import java.util.logging.Logger;
+import nongnu.cashews.xml.XmlBaseHandler;
+
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
/**
@@ -70,7 +71,14 @@
* @serial the graph of RDF triples.
*/
private Graph graph;
-
+
+ /**
+ * The handler for the XML.
+ *
+ * @serial the XML handler.
+ */
+ private RDFHandler rdfHandler;
+
/**
* Constructs a new XML-based RDF parser, using the specified handler
* for messages.
@@ -82,8 +90,9 @@
public XMLParser(Handler handler)
throws SAXException
{
- reader = XMLReaderFactory.createXMLReader();
- reader.setContentHandler(new RDFHandler(handler));
+ reader = XMLReaderFactory.createXMLReader();
+ rdfHandler = new RDFHandler(handler);
+ reader.setContentHandler(rdfHandler);
}
/**
@@ -97,9 +106,7 @@
public Graph parse(String systemId)
throws IOException, SAXException
{
- graph = new Graph();
- reader.parse(systemId);
- return graph;
+ return parse(new InputSource(systemId));
}
/**
@@ -114,6 +121,7 @@
throws IOException, SAXException
{
graph = new Graph();
+ rdfHandler.setBaseURI(source.getSystemId());
reader.parse(source);
return graph;
}
@@ -160,14 +168,14 @@
* @author Andrew John Hughes (address@hidden)
*/
private class RDFHandler
- extends DefaultHandler
+ extends XmlBaseHandler
{
/**
* A <code>Logger</code> instance to log events generated by the
* parsing process.
*/
- private Logger logger;
+ private Logger rdfLogger;
/**
* Flag to indicate whether we are inside an RDF document
@@ -230,9 +238,10 @@
*/
public RDFHandler(Handler handler)
{
- logger = Logger.getLogger("nongnu.cashews.rdf.XMLParser");
- logger.addHandler(handler);
- logger.setLevel(handler.getLevel());
+ super(handler);
+ rdfLogger = Logger.getLogger("nongnu.cashews.rdf.XMLParser");
+ rdfLogger.addHandler(handler);
+ rdfLogger.setLevel(handler.getLevel());
}
/**
@@ -241,6 +250,7 @@
*/
public void startDocument()
{
+ super.startDocument();
inSubject = false;
inRDF = false;
inPredicate = false;
@@ -263,18 +273,19 @@
String qName, Attributes attributes)
throws SAXException
{
+ super.startElement(uri, localName, qName, attributes);
if (uri.equals(RDF_NAMESPACE))
{
if (localName.equals("RDF"))
{
/* rdf:RDF */
inRDF = true;
- logger.finer("Start of RDF block");
+ rdfLogger.finer("Start of RDF block");
}
else if (localName.equals("Description"))
{
/* rdf:Description */
- logger.finer("Start of RDF description block");
+ rdfLogger.finer("Start of RDF description block");
inRDF = true;
if (!inSubject)
{
@@ -289,13 +300,14 @@
if (value != null)
subject = new Blank(value);
else
- logger.warning("No subject found in RDF description.");
+ rdfLogger.warning("No subject found in RDF " +
+ "description.");
}
inSubject = true;
- logger.fine("Created subject: " + subject);
+ rdfLogger.fine("Created subject: " + subject);
}
else
- logger.warning("Invalid use of RDF namespace: " + uri +
+ rdfLogger.warning("Invalid use of RDF namespace: " + uri +
localName);
}
}
@@ -307,9 +319,9 @@
{
/* Predicate element */
predicateURI = uri + localName;
- logger.finer("Start of predicate: " + predicateURI);
+ rdfLogger.finer("Start of predicate: " + predicateURI);
predicate = parseRDFURI(predicateURI);
- logger.fine("Created predicate: " + predicate);
+ rdfLogger.fine("Created predicate: " + predicate);
inSubject = false;
inPredicate = true;
/* Check for RDF URI object */
@@ -318,7 +330,7 @@
if (value != null)
{
object = parseRDFURI(value);
- logger.fine("Created object: " + object);
+ rdfLogger.fine("Created object: " + object);
}
else
{
@@ -327,7 +339,7 @@
if (value != null)
{
object = new Blank(value);
- logger.fine("Created object: " + object);
+ rdfLogger.fine("Created object: " + object);
}
}
/* Check for a type */
@@ -371,17 +383,18 @@
public void characters(char[] ch, int start, int length)
throws SAXException
{
+ super.characters(ch, start, length);
String value = new String(ch, start, length).trim();
if (value.length() == 0)
return;
- logger.finer("Characters: " + value);
+ rdfLogger.finer("Characters: " + value);
if (inPredicate)
{
if (type == null)
object = new Literal(value);
else
object = new Literal(value, type);
- logger.fine("Created object: " + object);
+ rdfLogger.fine("Created object: " + object);
}
}
@@ -399,16 +412,17 @@
String qName)
throws SAXException
{
+ super.endElement(uri, localName, qName);
if (uri.equals(RDF_NAMESPACE))
{
if (localName.equals("RDF"))
{
inRDF = false;
- logger.finer("End of RDF block");
+ rdfLogger.finer("End of RDF block");
}
else if (localName.equals("Description"))
{
- logger.finer("End of description block");
+ rdfLogger.finer("End of description block");
inSubject = false;
}
}
@@ -419,9 +433,9 @@
predicateURI = null;
type = null;
triple = new Triple(subject, predicate, object);
- logger.fine("Created triple: " + triple);
+ rdfLogger.fine("Created triple: " + triple);
graph.addTriple(triple);
- logger.finer("End of predicate block");
+ rdfLogger.finer("End of predicate block");
}
}