package com.thaiopensource.relaxng.util;
import com.thaiopensource.util.PropertyMap;
import com.thaiopensource.util.PropertyMapBuilder;
import com.thaiopensource.validate.ValidateProperty;
import com.thaiopensource.validate.ValidationDriver;
import com.thaiopensource.validate.prop.rng.RngProperty;
import com.thaiopensource.validate.rng.CompactSchemaReader;
import com.thaiopensource.xml.sax.XMLReaderCreator;
import com.thaiopensource.xml.sax.Sax2XMLReaderCreator;
import org.xml.sax.ErrorHandler;
/**
* Provides a compatibility wrapper around ValidationDriver. New applications
* should use ValidationDriver directly.
*
* @author <a href="mailto:jjc@jclark.com">James Clark</a>
* @see ValidationDriver
* @deprecated
*/
public class ValidationEngine extends ValidationDriver {
/**
* Flag indicating that ID/IDREF/IDREFS should be checked.
* @see RngProperty#CHECK_ID_IDREF
*/
public static final int CHECK_ID_IDREF = 01;
/**
* Flag indicating that the schema is in the RELAX NG compact syntax rather than the XML syntax.
* @see CompactSchemaReader
*/
public static final int COMPACT_SYNTAX = 02;
/**
* @see RngProperty#FEASIBLE
*/
public static final int FEASIBLE = 04;
/**
* Default constructor. Equivalent to <code>ValidationEngine(null, null, CHECK_ID_IDREF)</code>.
*/
public ValidationEngine() {
this(null, null, CHECK_ID_IDREF);
}
/**
* Constructs a <code>ValidationEngine</code>.
*
* @param xrc the <code>XMLReaderCreator</code> to be used for constructing <code>XMLReader</code>s;
* if <code>null</code> uses <code>Sax2XMLReaderCreator</code>
* @param eh the <code>ErrorHandler</code> to be used for reporting errors; if <code>null</code>
* uses <code>DraconianErrorHandler</code>
* @param flags bitwise OR of flags selected from <code>CHECK_ID_IDREF</code>, <code>COMPACT_SYNTAX</code>,
* <code>FEASIBLE</code>, <code>MNS</code>
* @see com.thaiopensource.xml.sax.DraconianErrorHandler
* @see com.thaiopensource.xml.sax.Sax2XMLReaderCreator
* @see #CHECK_ID_IDREF
* @see #COMPACT_SYNTAX
* @see #FEASIBLE
*/
public ValidationEngine(XMLReaderCreator xrc,
ErrorHandler eh,
int flags) {
super(makePropertyMap(xrc, eh, flags),
(flags & COMPACT_SYNTAX) == 0 ? null : CompactSchemaReader.getInstance());
}
private static PropertyMap makePropertyMap(XMLReaderCreator xrc, ErrorHandler eh, int flags) {
PropertyMapBuilder builder = new PropertyMapBuilder();
if (xrc == null)
xrc = new Sax2XMLReaderCreator();
builder.put(ValidateProperty.XML_READER_CREATOR, xrc);
if (eh != null)
builder.put(ValidateProperty.ERROR_HANDLER, eh);
if ((flags & CHECK_ID_IDREF) != 0)
RngProperty.CHECK_ID_IDREF.add(builder);
if ((flags & FEASIBLE) != 0)
RngProperty.FEASIBLE.add(builder);
return builder.toPropertyMap();
}
/**
* Constructs a <code>ValidationEngine</code>.
*
* @param xrc the <code>XMLReaderCreator</code> to be used for constructing <code>XMLReader</code>s;
* if <code>null</code> uses <code>Sax2XMLReaderCreator</code>
* @param eh the <code>ErrorHandler</code> to be used for reporting errors; if <code>null</code>
* uses <code>DraconianErrorHandler</code>
* @param checkIdIdref <code>true</code> if ID/IDREF/IDREFS should be checked; <code>false</code> otherwise
* @see com.thaiopensource.xml.sax.DraconianErrorHandler
* @see com.thaiopensource.xml.sax.Sax2XMLReaderCreator
*/
public ValidationEngine(XMLReaderCreator xrc,
ErrorHandler eh,
boolean checkIdIdref) {
this(xrc, eh, checkIdIdref ? CHECK_ID_IDREF : 0);
}
/**
* Constructs a <code>ValidationEngine</code>.
*
* @param xrc the <code>XMLReaderCreator</code> to be used for constructing <code>XMLReader</code>s;
* if <code>null</code> uses <code>Sax2XMLReaderCreator</code>
* @param eh the <code>ErrorHandler</code> to be used for reporting errors; if <code>null</code>
* uses <code>DraconianErrorHandler</code>
* @param checkIdIdref <code>true</code> if ID/IDREF/IDREFS should be checked; <code>false</code> otherwise
* @param compactSyntax <code>true</code> if the RELAX NG compact syntax should be used to parse the schema;
* <code>false</code> if the XML syntax should be used
* @see com.thaiopensource.xml.sax.DraconianErrorHandler
* @see com.thaiopensource.xml.sax.Sax2XMLReaderCreator
*/
public ValidationEngine(XMLReaderCreator xrc, ErrorHandler eh, boolean checkIdIdref, boolean compactSyntax) {
this(xrc,
eh,
(checkIdIdref ? CHECK_ID_IDREF : 0)
| (compactSyntax ? COMPACT_SYNTAX : 0));
}
public ValidationEngine(XMLReaderCreator xrc, ErrorHandler eh, boolean checkIdIdref, boolean compactSyntax,
boolean feasible) {
this(xrc,
eh,
(checkIdIdref ? CHECK_ID_IDREF : 0)
| (compactSyntax ? COMPACT_SYNTAX : 0)
| (feasible ? FEASIBLE : 0));
}
}