Mercurial > hg > MetaDataManager
diff 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 diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/de/mpiwg/itgroup/metadataManager/validation/IndexMetaValidator.java Sun Oct 23 21:29:45 2011 +0200 @@ -0,0 +1,92 @@ +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 { + } + } + + + +}