bodhidharma.xml_parsing
Class ParseRecordingsFileHandler

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by bodhidharma.xml_parsing.ParseFileHandler
          extended by bodhidharma.xml_parsing.ParseRecordingsFileHandler
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

public class ParseRecordingsFileHandler
extends ParseFileHandler

An extension of the Xerces XML DefaultHandler class that implements the SAX ContentHandler. The methods of this class are called by an instance of an XMLReader while it is parsing an XML document.

This particular implementation is custom designed to parse XML files of the recordings_file type used by the Bodhidharma music classification system. A custom exceptions is thrown if the file is not of this type. At the end of parsing, the contents of the files elements are stored in the parsed_file_contents field.

After parsing, the parsed_file_contents field will hold an array of objects. All of the objects will be Recording objects with fields filled based on the tags in the parsed document.

The leaf_categories fields of these Recording objects will be filled, but the ancestor_categories fields will not (set to null). If a lear category is not specified in the file, it will be filled in with "Unknown". The file_path fields will be filled with a concatonation of the file_path tag of the parsed file and the filename tag for each recording, with the result being a path relative to the recordings_file file that has been parsed.

See Also:
Bodhidharma, Recording, RecordingsPanel, ParseFileHandler, XMLDocumentParser, DefaultHandler, ContentHandler, XMLReader, LinkedList
Author:
Cory McKay

Field Summary
 
Fields inherited from class bodhidharma.xml_parsing.ParseFileHandler
parsed_file_contents
 
Constructor Summary
ParseRecordingsFileHandler()
           
 
Method Summary
 void characters(char[] ch, int start, int length)
          This method responds to the contents of tags in a way determined by the name of the tag (as determined by the startElement method).
 void endDocument()
          This method is called when the end tag of an XML element is encountered.
 void endElement(java.lang.String namespace, java.lang.String name, java.lang.String qName)
          This method is called when the end tag of an XML element is encountered.
 void startDocument()
          This method is called when the start of the XML file to be parsed is reached.
 void startElement(java.lang.String namespace, java.lang.String name, java.lang.String qName, org.xml.sax.Attributes atts)
          This method is called when the start of an XML element is encountered.
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startPrefixMapping, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ParseRecordingsFileHandler

public ParseRecordingsFileHandler()
Method Detail

startDocument

public void startDocument()
This method is called when the start of the XML file to be parsed is reached. Instantiates the recordings_list field and the file_path fields and sets count to 0.

Specified by:
startDocument in interface org.xml.sax.ContentHandler
Overrides:
startDocument in class org.xml.sax.helpers.DefaultHandler

startElement

public void startElement(java.lang.String namespace,
                         java.lang.String name,
                         java.lang.String qName,
                         org.xml.sax.Attributes atts)
                  throws org.xml.sax.SAXException
This method is called when the start of an XML element is encountered. Instantiates a new Recording if a recording tag was encountered or a new list of leaf categories if a model_genres tag was encountered. Otherwise lets the characters method know what kind of action to take.

Specified by:
startElement in interface org.xml.sax.ContentHandler
Overrides:
startElement in class org.xml.sax.helpers.DefaultHandler
Parameters:
name - Name of the element that is encountered.
Throws:
org.xml.sax.SAXException - Exception thrown if is wrong type of XML file.

characters

public void characters(char[] ch,
                       int start,
                       int length)
This method responds to the contents of tags in a way determined by the name of the tag (as determined by the startElement method).

Simply stores the names of the piece title or artist in a Recording object if the title or artist tags were just encountered. Stores the concatonation of the contents of the file_path and filename tags in the Recording object. Sets the appropriate boolean fields of the Recording object based on the contents of the role tag (the acceptable values are training, testing or classification). Stores the contents of genre tags in a list that is later converted to an array and stored in the Recording object by the endElement method.

Specified by:
characters in interface org.xml.sax.ContentHandler
Overrides:
characters in class org.xml.sax.helpers.DefaultHandler

endElement

public void endElement(java.lang.String namespace,
                       java.lang.String name,
                       java.lang.String qName)
This method is called when the end tag of an XML element is encountered. Adds the current recording to the list of recordings when its end tag is encountered and adds the leaf categories to the current recording when the model_genres end tag is encountered.

Specified by:
endElement in interface org.xml.sax.ContentHandler
Overrides:
endElement in class org.xml.sax.helpers.DefaultHandler
Parameters:
name - Name of the element that is encountered.

endDocument

public void endDocument()
This method is called when the end tag of an XML element is encountered. Fills the parsed_file_contents field with the recordings_list LinkedList.

If a lear category is not specified, fills it in with "Unknown".

Specified by:
endDocument in interface org.xml.sax.ContentHandler
Overrides:
endDocument in class org.xml.sax.helpers.DefaultHandler