view src/de/mpiwg/itgroup/metadataManager/validation/IndexMetaValidator.java @ 1:2267d8c80a99

intial
author dwinter
date Sun, 23 Oct 2011 21:29:45 +0200
parents
children
line wrap: on
line source

package de.mpiwg.itgroup.metadataManager.validation;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;

import org.apache.log4j.Logger;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;

public class IndexMetaValidator {
	
	private Logger logger = Logger.getRootLogger();
	
	public static boolean validate(String indexMeta) throws UnsupportedEncodingException{
		IndexMetaValidator iv = new IndexMetaValidator();
		InputStream is = new ByteArrayInputStream(indexMeta.getBytes("utf-8"));
		
		String schemaUrl="/Users/dwinter/Documents/Projekte/ECHO-eSciDoc-MPDL/escidocMPIWG/MetaDataManager/src/de/mpiwg/itgroup/metadataManager/validation/data/index_meta.xsd";
		
		iv.validateSchema(schemaUrl, is);
	return false;}
	
	
	
	public boolean validateSchema(String SchemaUrl, InputStream xmlDocumentStream) {
		try {      //Create SAXBuilder object
			SAXBuilder saxBuilder = new SAXBuilder(
					"org.apache.xerces.parsers.SAXParser", true);

                                      //Set SAXBuilder parser to be a validating parser 
			saxBuilder.setValidation(true);
			saxBuilder.setFeature(
				"http://apache.org/xml/features/validation/schema", true);
			saxBuilder.setFeature(
					"http://apache.org/xml/features/validation/schema-full-checking",true);
			saxBuilder.setProperty(
					"http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",SchemaUrl);

                                      //Create a ErrorHandler and set ErrorHandler on parser.
			Validator handler = new Validator();
			saxBuilder.setErrorHandler(handler);
                                       //Parse XML Document
			saxBuilder.build(xmlDocumentStream);
                                      //Output Validation Errors
			if (handler.validationError == true){
				logger.debug("XML Document has Error:"
						+ handler.validationError + " "
						+ handler.saxParseException.getMessage());
			return false;}
			else{
				logger.debug("XML Document is valid");
			return true;}
			
		} catch (JDOMException jde) {
			logger.debug(jde);
		}

		catch (IOException ioe) {
		}
		return false;

	}

            //Error Handler class
	private class Validator extends DefaultHandler {
		public boolean validationError = false;

		public SAXParseException saxParseException = null;

		public void error(SAXParseException exception) throws SAXException {
			validationError = true;
			saxParseException = exception;
		}

		public void fatalError(SAXParseException exception) throws SAXException {
			validationError = true;
			saxParseException = exception;
		}

		public void warning(SAXParseException exception) throws SAXException {
		}
	}

	

}