package xml;

import futils.Futil;
import net.Cart;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
import java.io.File;

import org.xml.sax.SAXParseException;
import org.xml.sax.SAXException;
/**
* xml.Xml2Address reads AML and makes address books.
*/

public class Xml2Address {
  public static AddressBook read(String uri)
      throws
      SAXParseException,
      SAXException,
      ParserConfigurationException,
      IOException {

    SAXParserFactory spf
        = SAXParserFactory.newInstance();
    spf.setValidating(true);
    
    SAXParser sp = spf.newSAXParser();
 
    ParseAml dh = new ParseAml();
    sp.parse(uri,dh); 
    return dh.getAddressBook();
  }

  public static void main(String argv [])
      throws IOException {
    try {

      AddressBook ab = read("file:" +
                    Futil.getReadFile(
                        "select an XML file").getAbsolutePath());
      System.out.println("AB (csv)=" + ab.toCsv());
      //System.out.println("AB (xml)=" + ab.toXml());
      AddressBook ab2 = ab.search("yan");
      ab.merge(ab2);
    System.out.println("html="+ab.toHtmlCsv());
     gui.html.HtmlViewer hv =
        new gui.html.HtmlViewer();
        hv.setHtml(ab.toHtmlCsv());
        ab.saveAsXml(new File("c:\\lyon\\doug.xml"));

    } catch (SAXParseException e) {
      System.out.println(
          "** Parsing error"
          + ", line " + e.getLineNumber()
          + ", uri " + e.getSystemId()
          + "   " + e.getMessage()
      );

    } catch (SAXException e) {
      e.printStackTrace();
    } catch (ParserConfigurationException e) {
      e.printStackTrace();
    }
  }
}