
/**
 *   @Author   : Marco Mistroni
 *   @Date      : 2001/01/08
 *   @Version : 0.2
 *   Changes: Now the class implements a Thread
 */
 

import org.xml.sax.helpers.*;
import com.sun.xslt.dom.DOMImpl;
import com.sun.xslt.*;
import com.sun.xslt.runtime.TextOutput;
import com.sun.xml.parser.Resolver;
import com.sun.xml.parser.Parser;
import com.sun.xslt.runtime.*;
import com.sun.xslt.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import org.xml.sax.InputSource;
import org.xml.sax.HandlerBase;
import org.xml.sax.SAXException;
import java.io.*;


class XSLTWorkerSun  {

    //private static final Translet translet;
    //private static final Class clazz;
    
    static ByteArrayOutputStream _writer;
    static TextOutput _handler;
    static Parser _parser;
    static AbstractTranslet _translet;
    
    
                
    public static void init() throws Exception {
                try {
                    final Class transletClass = Class.forName("ICE");
                    final Translet translet = (Translet)transletClass.newInstance();
                    _translet = (AbstractTranslet)translet; 
                    _parser = new Parser();        
                    _writer = new ByteArrayOutputStream();
                    //DefaultSAXOutputHandler saxHandler = new DefaultSAXOutputHandler(_writer, "utf-8");
                  MySAXOutputHandler saxHandler = new MySAXOutputHandler();  
			_handler = new TextOutput(saxHandler, "UTF-8");
            
                } catch(Exception e) {
                    System.out.println("Error in intialization");
                    e.printStackTrace();
                }
            
           }
    
    public static void main(String[] args) throws Exception {
        try {
            init();
                long start = System.currentTimeMillis();
            
            for(int i=0;i<100;i++) {
                long loop_start = System.currentTimeMillis();
		    
                DOMImpl dom = new DOMImpl();
                _parser.setDocumentHandler(dom.getBuilder());
                _parser.parse(new InputSource(new FileReader(args[0])));
		    long interm = System.currentTimeMillis();
		    //System.out.println("First part took: " + (interm-loop_start));
		    long intermediate = System.currentTimeMillis();
                _translet.transform(dom, _handler);
		    long end_intermediate = System.currentTimeMillis();
                //System.out.println("Transforming took: " + (end_intermediate-intermediate));
		    //System.out.println("Whole job took: " + (end_intermediate - loop_start));
		    dom = null;
                
            //System.out.println(_writer.toString());
           } 
           long end = System.currentTimeMillis();
           System.out.println("it took " + (end - start)/1000);
                  
        } catch (Exception e) {
            System.out.println("Error in main!");
            e.printStackTrace();
        }  
    }    
}
    