/* * @(#)$Id: FacetState.java,v 1.8 2002/10/06 18:07:05 kk122374 Exp $ * * Copyright 2001 Sun Microsystems, Inc. All Rights Reserved. * * This software is the proprietary information of Sun Microsystems, Inc. * Use is subject to license terms. * */ package com.sun.msv.reader.datatype.xsd; import com.sun.msv.reader.ChildlessState; import com.sun.msv.reader.GrammarReader; import org.relaxng.datatype.DatatypeException; import java.util.Set; /** * state that reads facets. * * @author <a href="mailto:kohsuke.kawaguchi@eng.sun.com">Kohsuke KAWAGUCHI</a> */ public class FacetState extends ChildlessState { /** set of recognizable facet names */ public static final Set facetNames = initFacetNames(); static private Set initFacetNames() { Set s = new java.util.HashSet(); s.add("length"); s.add("minLength"); s.add("maxLength"); s.add("pattern"); s.add("enumeration"); s.add("maxInclusive"); s.add("minInclusive"); s.add("maxExclusive"); s.add("minExclusive"); s.add("whiteSpace"); s.add("fractionDigits"); s.add("totalDigits"); return s; } protected void startSelf() { super.startSelf(); final String value = startTag.getAttribute("value"); if( value==null ) { reader.reportError( GrammarReader.ERR_MISSING_ATTRIBUTE, startTag.localName, "value" ); // recover by ignoring this facet. } else { try { ((FacetStateParent)parentState).getIncubator().addFacet( startTag.localName, value, reader ); } catch( DatatypeException e ) { reader.reportError( e, GrammarReader.ERR_BAD_TYPE, e.getMessage() ); // recover by ignoring this facet } } } }