import junit.framework.*;
import junit.extensions.*;
import java.util.*;
// import org.springframework.context.support.ClassPathXmlApplicationContext;
// import org.springframework.context.*;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.Serializable;
import org.marc4j.MarcHandler;
import org.marc4j.MarcReader;
import org.marc4j.MarcReaderException;
import org.marc4j.marc.*;
import org.marc4j.marcxml.*;
import org.marc4j.util.*;
import java.io.*;


public class DomFromMarcTest extends TestCase {

  // private static ApplicationContext app_context = null;

  public DomFromMarcTest(String name) {
    super (name);
  }

  // public static void main(String[] args) {
  //   app_context = new ClassPathXmlApplicationContext( "TestApplicationContext.xml" );
  // }

  public void testUsmarc1() throws Exception {
    System.err.println("\n\ntestUsmarc1\n\n");

    org.w3c.dom.Document retval = null;

    try {
      // Source
      InputStream mis = DomFromMarcTest.class.getResourceAsStream("test1.usmarc");

      System.err.println("mis="+mis);
      System.err.println("is an instance of: "+mis.getClass().getName());

      MarcXmlReader producer = new MarcXmlReader();
      org.xml.sax.InputSource in = new org.xml.sax.InputSource( mis );
      javax.xml.transform.Source source = new javax.xml.transform.sax.SAXSource(producer, in);

      DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
      dfactory.setNamespaceAware(true);

      // Result
      // DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
      // retval = docBuilder.newDocument();
      // System.err.println("Root: "+retval.getDocumentElement());
      // javax.xml.transform.Result result = new javax.xml.transform.dom.DOMResult(retval);
      javax.xml.transform.dom.DOMResult result = new javax.xml.transform.dom.DOMResult();

      // Transform
      org.marc4j.marcxml.Converter converter = new org.marc4j.marcxml.Converter();
      converter.convert(source, result);

      retval = (Document)(result.getNode());
      System.err.println("Root: "+retval.getDocumentElement());
    }
    catch ( Exception e ) {
      e.printStackTrace();
    }

    System.err.println("Done");
  }
}
