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 {
+		}
+	}
+
+	
+
+}