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

intial
author dwinter
date Sun, 23 Oct 2011 21:29:45 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
dwinter
parents:
diff changeset
1 package de.mpiwg.itgroup.metadataManager.validation;
dwinter
parents:
diff changeset
2
dwinter
parents:
diff changeset
3 import java.io.ByteArrayInputStream;
dwinter
parents:
diff changeset
4 import java.io.IOException;
dwinter
parents:
diff changeset
5 import java.io.InputStream;
dwinter
parents:
diff changeset
6 import java.io.StringReader;
dwinter
parents:
diff changeset
7 import java.io.UnsupportedEncodingException;
dwinter
parents:
diff changeset
8
dwinter
parents:
diff changeset
9 import org.apache.log4j.Logger;
dwinter
parents:
diff changeset
10 import org.jdom.JDOMException;
dwinter
parents:
diff changeset
11 import org.jdom.input.SAXBuilder;
dwinter
parents:
diff changeset
12 import org.xml.sax.SAXException;
dwinter
parents:
diff changeset
13 import org.xml.sax.SAXParseException;
dwinter
parents:
diff changeset
14 import org.xml.sax.helpers.DefaultHandler;
dwinter
parents:
diff changeset
15
dwinter
parents:
diff changeset
16 public class IndexMetaValidator {
dwinter
parents:
diff changeset
17
dwinter
parents:
diff changeset
18 private Logger logger = Logger.getRootLogger();
dwinter
parents:
diff changeset
19
dwinter
parents:
diff changeset
20 public static boolean validate(String indexMeta) throws UnsupportedEncodingException{
dwinter
parents:
diff changeset
21 IndexMetaValidator iv = new IndexMetaValidator();
dwinter
parents:
diff changeset
22 InputStream is = new ByteArrayInputStream(indexMeta.getBytes("utf-8"));
dwinter
parents:
diff changeset
23
dwinter
parents:
diff changeset
24 String schemaUrl="/Users/dwinter/Documents/Projekte/ECHO-eSciDoc-MPDL/escidocMPIWG/MetaDataManager/src/de/mpiwg/itgroup/metadataManager/validation/data/index_meta.xsd";
dwinter
parents:
diff changeset
25
dwinter
parents:
diff changeset
26 iv.validateSchema(schemaUrl, is);
dwinter
parents:
diff changeset
27 return false;}
dwinter
parents:
diff changeset
28
dwinter
parents:
diff changeset
29
dwinter
parents:
diff changeset
30
dwinter
parents:
diff changeset
31 public boolean validateSchema(String SchemaUrl, InputStream xmlDocumentStream) {
dwinter
parents:
diff changeset
32 try { //Create SAXBuilder object
dwinter
parents:
diff changeset
33 SAXBuilder saxBuilder = new SAXBuilder(
dwinter
parents:
diff changeset
34 "org.apache.xerces.parsers.SAXParser", true);
dwinter
parents:
diff changeset
35
dwinter
parents:
diff changeset
36 //Set SAXBuilder parser to be a validating parser
dwinter
parents:
diff changeset
37 saxBuilder.setValidation(true);
dwinter
parents:
diff changeset
38 saxBuilder.setFeature(
dwinter
parents:
diff changeset
39 "http://apache.org/xml/features/validation/schema", true);
dwinter
parents:
diff changeset
40 saxBuilder.setFeature(
dwinter
parents:
diff changeset
41 "http://apache.org/xml/features/validation/schema-full-checking",true);
dwinter
parents:
diff changeset
42 saxBuilder.setProperty(
dwinter
parents:
diff changeset
43 "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",SchemaUrl);
dwinter
parents:
diff changeset
44
dwinter
parents:
diff changeset
45 //Create a ErrorHandler and set ErrorHandler on parser.
dwinter
parents:
diff changeset
46 Validator handler = new Validator();
dwinter
parents:
diff changeset
47 saxBuilder.setErrorHandler(handler);
dwinter
parents:
diff changeset
48 //Parse XML Document
dwinter
parents:
diff changeset
49 saxBuilder.build(xmlDocumentStream);
dwinter
parents:
diff changeset
50 //Output Validation Errors
dwinter
parents:
diff changeset
51 if (handler.validationError == true){
dwinter
parents:
diff changeset
52 logger.debug("XML Document has Error:"
dwinter
parents:
diff changeset
53 + handler.validationError + " "
dwinter
parents:
diff changeset
54 + handler.saxParseException.getMessage());
dwinter
parents:
diff changeset
55 return false;}
dwinter
parents:
diff changeset
56 else{
dwinter
parents:
diff changeset
57 logger.debug("XML Document is valid");
dwinter
parents:
diff changeset
58 return true;}
dwinter
parents:
diff changeset
59
dwinter
parents:
diff changeset
60 } catch (JDOMException jde) {
dwinter
parents:
diff changeset
61 logger.debug(jde);
dwinter
parents:
diff changeset
62 }
dwinter
parents:
diff changeset
63
dwinter
parents:
diff changeset
64 catch (IOException ioe) {
dwinter
parents:
diff changeset
65 }
dwinter
parents:
diff changeset
66 return false;
dwinter
parents:
diff changeset
67
dwinter
parents:
diff changeset
68 }
dwinter
parents:
diff changeset
69
dwinter
parents:
diff changeset
70 //Error Handler class
dwinter
parents:
diff changeset
71 private class Validator extends DefaultHandler {
dwinter
parents:
diff changeset
72 public boolean validationError = false;
dwinter
parents:
diff changeset
73
dwinter
parents:
diff changeset
74 public SAXParseException saxParseException = null;
dwinter
parents:
diff changeset
75
dwinter
parents:
diff changeset
76 public void error(SAXParseException exception) throws SAXException {
dwinter
parents:
diff changeset
77 validationError = true;
dwinter
parents:
diff changeset
78 saxParseException = exception;
dwinter
parents:
diff changeset
79 }
dwinter
parents:
diff changeset
80
dwinter
parents:
diff changeset
81 public void fatalError(SAXParseException exception) throws SAXException {
dwinter
parents:
diff changeset
82 validationError = true;
dwinter
parents:
diff changeset
83 saxParseException = exception;
dwinter
parents:
diff changeset
84 }
dwinter
parents:
diff changeset
85
dwinter
parents:
diff changeset
86 public void warning(SAXParseException exception) throws SAXException {
dwinter
parents:
diff changeset
87 }
dwinter
parents:
diff changeset
88 }
dwinter
parents:
diff changeset
89
dwinter
parents:
diff changeset
90
dwinter
parents:
diff changeset
91
dwinter
parents:
diff changeset
92 }