// CS 468: Database Management Systems
// 
// SAX Parser Test: content handler class
// Alex Dekhtyar

import org.xml.sax.*;
import  org.xml.sax.helpers.*;
import java.util.*;

// Content Handler Class, extends DefaultHandler, no need to override
// every method

public class MyContentHandler extends DefaultHandler {

Stack elementStack;  // declare a stack variable (Stack is in java.util)
	
	
	MyContentHandler()   // constructor - use default
	{
		super();
	}
	
	
         // handler for start document message

	public void startDocument() 
	{
		
		elementStack = new Stack();
		System.out.println("Start Document");
		return;
	}
	
	
       // handler for end document message
  
	public void endDocument() 
	{
		System.out.println("End Document");
		return;
	}

       // handler for content message
	
	public void characters(char[] ch, int start, int length)
	{
        String tag =  elementStack.peek().toString()	;
        System.out.print("Tag: ");
        System.out.print(tag);
        System.out.print(" ----> ");
        for (int i= start; i< start+length; i++)
		{
		   System.out.print(ch[i]);
		}
		System.out.println();
//		System.out.println(start);
//		System.out.println(length);
		
	} // characters
	
	public void ignorableWhitespace(char[] ch, int start, int length) 
	{
		return;
	}
	
        
        // Handler for opening tag message
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) 
	{
		
		elementStack.push(qName);
		System.out.println(qName);
		
	}
	
        // handler for closing tag message

	public void endElement(String uri, String localName, String qName) 
	{
		elementStack.pop();
		System.out.print("/"); 
		System.out.println(qName);
	}
	
	
	
	
}