/*
 * UseOfSax2.java
 *
 * Created on March 18, 2001, 10:00 PM
 */

package ccnycs.lec04.xml;

/**
 *
 * @author  unknown
 * @version
 */

import java.io.*;
import java.net.*;
import java.util.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
/**
 * Builds a simple HTML page which lists tip titles
 * and provides links to HTML and text versions
 */
public class UseOfSax2 extends DefaultHandler {
StringBuffer htmlOut;


    public String toString() {
        if (htmlOut != null)
            return htmlOut.toString();
        return super.toString();
    }

    public void startElement(String namespace,
                            String localName,
                            String qName,
                            Attributes atts) {
        if (localName.equals("book"))
        {
            String title = atts.getValue("title");
            String author = atts.getValue("author");
            String isbn = atts.getValue("ISBN");
            String html = atts.getValue("htmlURL");
            String text = atts.getValue("textURL");
            htmlOut.append("<br>");
            htmlOut.append("<A HREF=");
            htmlOut.append(html);
            htmlOut.append(">Link To Publisher</A> <A HREF=");
            htmlOut.append(text);
            htmlOut.append(">  Link To The Abstract </A> ");
            htmlOut.append(title);
            htmlOut.append(isbn);
            htmlOut.append(author);
        }
    }

    public void processWithSAX(String urlString) throws Exception {
        System.out.println("Processing URL " + urlString);
        htmlOut = new StringBuffer("<HTML><BODY><H1>MY BOOK STORE is beeing processed with SAX2</H1>");
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        ParserAdapter pa = new ParserAdapter(sp.getParser());
        pa.setContentHandler(this);
        pa.parse(urlString);
        htmlOut.append("</BODY></HTML>");
    }


    public static void main(String[] args) {
        try {
            UseOfSax2 us = new UseOfSax2();
            us.processWithSAX("file:./data/"+ args[0]);
            String output = us.toString();
            System.out.println("Saving result to " + args[1]);
            FileWriter fw = new FileWriter(new File("./data/",args[1]));
            fw.write(output, 0, output.length());
            fw.flush();
        }
        catch (Throwable t) {
            t.printStackTrace();
        }
    }
}

