package com.bluemartini.test;

import java.io.*;
import org.w3c.dom.*;
import com.bluemartini.xml.*;

import javax.xml.parsers.*;

/**
* Sample test case.
* Eva Flora
**/


public class Validate {
    static final String JAXP_SCHEMA_LANGUAGE =
              "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
    static final String W3C_XML_SCHEMA =
              "http://www.w3.org/2001/XMLSchema";
    static final String JAXP_SCHEMA_SOURCE =
            "http://java.sun.com/xml/jaxp/properties/schemaSource";

    public static void main(String[] argv) {
        try {
            String schemaSource = "d:\\dev\\bmsrc\\packages\\validate.xsd";
            System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");

            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(true);
            factory.setValidating(true);
            //factory.setAttribute("http://xml.org/sax/features/validation", Boolean.TRUE);
            //factory.setAttribute("http://apache.org/xml/features/validation/schema", Boolean.TRUE);

            try {
                File fSchemaSource = new File(schemaSource);
                factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
                factory.setAttribute(JAXP_SCHEMA_SOURCE, fSchemaSource );

                if(fSchemaSource.canRead()){
                    System.out.println("Can read..." + fSchemaSource);
                } else {
                    System.out.println("Can't read..." + fSchemaSource);
                }

            }
            catch (IllegalArgumentException x) {
            // Happens if the parser does not support JAXP 1.2
                System.out.println("Parser does not support JAXP 1.2");
            }

            DocumentBuilder builder = factory.newDocumentBuilder();
            BMDefaultHandler bmErrorHandler = new BMDefaultHandler();
            builder.setErrorHandler(bmErrorHandler);

            File temp = new File("validate.xml");
            Document doc = builder.parse(temp);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
