You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by je...@locus.apache.org on 2000/10/27 03:45:19 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes DatatypeValidatorFactoryImpl.java IDREFDatatypeValidator.java

jeffreyr    00/10/26 18:45:19

  Modified:    java/src/org/apache/xerces/impl/validation/datatypes Tag:
                        xerces_j_2 DatatypeValidatorFactoryImpl.java
                        IDREFDatatypeValidator.java
  Log:
  added IDREF, IDREFS Datatype Validator
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.7   +20 -1     xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes/Attic/DatatypeValidatorFactoryImpl.java
  
  Index: DatatypeValidatorFactoryImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes/Attic/DatatypeValidatorFactoryImpl.java,v
  retrieving revision 1.1.2.6
  retrieving revision 1.1.2.7
  diff -u -r1.1.2.6 -r1.1.2.7
  --- DatatypeValidatorFactoryImpl.java	2000/10/27 01:14:24	1.1.2.6
  +++ DatatypeValidatorFactoryImpl.java	2000/10/27 01:45:18	1.1.2.7
  @@ -83,7 +83,7 @@
    * method to get a validator.
    * 
    * @author Jeffrey Rodriguez
  - * @version $Id: DatatypeValidatorFactoryImpl.java,v 1.1.2.6 2000/10/27 01:14:24 jeffreyr Exp $
  + * @version $Id: DatatypeValidatorFactoryImpl.java,v 1.1.2.7 2000/10/27 01:45:18 jeffreyr Exp $
    */
   public class DatatypeValidatorFactoryImpl implements DatatypeValidatorFactory {
      private static final boolean                   fDebug               = false;
  @@ -441,13 +441,32 @@
            if (tst != null) {
               System.out.println("Table of ID = " + tst.toString());
            }
  +         /*
            try {
               idData.validate( "a1", null );
            } catch ( Exception ex ) {
               ex.printStackTrace();// Should throw a unique exception
            }
  +         */
   
         }
  +
  +      DatatypeValidator idRefData = tstRegistry.getDatatypeValidator("IDREF" );
  +      if( idRefData != null ){
  +         IDREFDatatypeValidator refData = (IDREFDatatypeValidator) idRefData;
  +         refData.initialize( ((IDDatatypeValidator) idData).getTableIds());
  +         try {
  +            refData.validate( "a1", null );
  +            refData.validate( "a2", null );
  +            //refData.validate( "a3", null );//Should throw exception at validate()
  +            refData.validate();
  +         } catch( Exception ex ){
  +            ex.printStackTrace();
  +         }
  +      }
  +
  +
  +
   
      }
   
  
  
  
  1.1.2.3   +145 -211  xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes/Attic/IDREFDatatypeValidator.java
  
  Index: IDREFDatatypeValidator.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/validation/datatypes/Attic/IDREFDatatypeValidator.java,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- IDREFDatatypeValidator.java	2000/10/17 02:01:04	1.1.2.2
  +++ IDREFDatatypeValidator.java	2000/10/27 01:45:18	1.1.2.3
  @@ -79,229 +79,163 @@
    * standalone code as well as plugins to the validator architecture.
    * 
    * @author Jeffrey Rodriguez-
  - * @version $Id: IDREFDatatypeValidator.java,v 1.1.2.2 2000/10/17 02:01:04 jeffreyr Exp $
  + * @version $Id: IDREFDatatypeValidator.java,v 1.1.2.3 2000/10/27 01:45:18 jeffreyr Exp $
    */
   public class IDREFDatatypeValidator extends AbstractDatatypeValidator {
  -    private DatatypeValidator fBaseValidator    = null;
  -    private Hashtable              fTableOfId   = null; //This is pass to us through the state object
  -    private Hashtable              fTableIDRefs = null;
  -    private Object                   fNullValue = null;
  -    private Locale            fLocale           = null;
  -    private DatatypeMessageProvider fMessageProvider = new DatatypeMessageProvider();
  +   private DatatypeValidator fBaseValidator    = null;
  +   private Hashtable              fTableOfId   = null; //This is pass to us through the state object
  +   private Hashtable              fTableIDRefs = null;
  +   private Object                   fNullValue = null;
  +   private Locale            fLocale           = null;
  +   private DatatypeMessageProvider fMessageProvider = new DatatypeMessageProvider();
  +
  +   public static final  int       IDREF_STORE    = 0;
  +   public static final  int       IDREF_CLEAR    = 1;
  +   public static final  int       IDREF_VALIDATE = 2; 
   
  -    public static final  int       IDREF_STORE    = 0;
  -    public static final  int       IDREF_CLEAR    = 1;
  -    public static final  int       IDREF_VALIDATE = 2; 
   
   
  +   public IDREFDatatypeValidator () throws InvalidDatatypeFacetException {
  +      this( null, null, false ); // Native, No Facets defined, Restriction
  +   }
  +
  +   public IDREFDatatypeValidator ( DatatypeValidator base, Hashtable facets, 
  +                                   boolean derivedByList ) throws InvalidDatatypeFacetException { 
  +
  +      setBasetype( base ); // Set base type 
  +
  +   }
  +
  +
  +   /**
  +    * Checks that "content" string is valid 
  +    * datatype.
  +    * If invalid a Datatype validation exception is thrown.
  +    * 
  +    * @param content A string containing the content to be validated
  +    * @param derivedBylist
  +    *                Flag which is true when type
  +    *                is derived by list otherwise it
  +    *                it is derived by extension.
  +    *                
  +    * @exception throws InvalidDatatypeException if the content is
  +    *                   invalid according to the rules for the validators
  +    * @exception InvalidDatatypeValueException
  +    * @see         org.apache.xerces.validators.datatype.InvalidDatatypeValueException
  +    */
  +   public void validate(String content, Object state ) throws InvalidDatatypeValueException{
  +      //Pass content as a String
  +      if (!XMLChar.isValidName(content)) {//Check if is valid key
  +         InvalidDatatypeValueException error = new InvalidDatatypeValueException( "IDREF is not valid" );//Need Message
  +         throw error;//Need Message
  +      }
  +      //System.out.println("Content REF = " + content );
  +      addIdRef( content, state);// We are storing IDs 
  +   }
  +
  +   public void validate() throws InvalidDatatypeValueException{
  +      checkIdRefs();
  +   }
  +
  +
  +   public void initialize( Object tableOfIDs ){
  +      if ( this.fTableIDRefs != null) {
  +         this.fTableIDRefs.clear();
  +      } else {
  +         this.fTableIDRefs = new Hashtable();
  +      }
  +      this.fTableOfId = (Hashtable) tableOfIDs; //set reference to table of Ids.
  +   }
   
  -    public IDREFDatatypeValidator () throws InvalidDatatypeFacetException {
  -        this( null, null, false ); // Native, No Facets defined, Restriction
  -    }
  -
  -    public IDREFDatatypeValidator ( DatatypeValidator base, Hashtable facets, 
  -                                    boolean derivedByList ) throws InvalidDatatypeFacetException { 
   
  -        setBasetype( base ); // Set base type 
   
  -    }
  +   /**
  +    * REVISIT
  +    * Compares two Datatype for order
  +    * 
  +    * @param o1
  +    * @param o2
  +    * @return 
  +    */
  +   public int compare( String content1, String content2){
  +      return -1;
  +   }
   
   
  -    /**
  -     * Checks that "content" string is valid 
  -     * datatype.
  -     * If invalid a Datatype validation exception is thrown.
  -     * 
  -     * @param content A string containing the content to be validated
  -     * @param derivedBylist
  -     *                Flag which is true when type
  -     *                is derived by list otherwise it
  -     *                it is derived by extension.
  -     *                
  -     * @exception throws InvalidDatatypeException if the content is
  -     *                   invalid according to the rules for the validators
  -     * @exception InvalidDatatypeValueException
  -     * @see         org.apache.xerces.validators.datatype.InvalidDatatypeValueException
  -     */
  -    public void validate(String content, Object state ) throws InvalidDatatypeValueException{
  -        /*
  -        //Pass content as a String
  -        //System.out.println( "base = " + this.fBaseValidator );
  -
  -        //if( this.fBaseValidator != null ){
  -          //  this.fBaseValidator.validate( content, state );
  -        //}
  -        StateMessageDatatype message;
  -            //System.out.println("conten = " + content );
  -            if (state!= null){
  -                message = (StateMessageDatatype) state;    
  -                if (message.getDatatypeState() == IDREFDatatypeValidator.IDREF_CLEAR ){
  -                    if ( this.fTableOfId != null ){
  -                        fTableOfId.clear(); //This is pass to us through the state object
  -                    }
  -                    if ( this.fTableIDRefs != null ){
  -                        fTableIDRefs.clear(); 
  -                    }
  -                    return null;
  -                } else if ( message.getDatatypeState() == IDREFDatatypeValidator.IDREF_VALIDATE ){
  -                    this.checkIdRefs();//Validate that all keyRef is a keyIds
  -                } else if ( message.getDatatypeState() == IDREFDatatypeValidator.IDREF_STORE ) {
  -                    this.fTableOfId = (Hashtable) message.getDatatypeObject();
  -                    if (!XMLCharacterProperties.validName(content)) {//Check if is valid key
  -
  -                        InvalidDatatypeValueException error = new InvalidDatatypeValueException( "IDREF is not valid" );//Need Message
  -
  -                        error.setMinorCode(XMLMessages.MSG_IDREF_INVALID );
  -                        error.setMajorCode(XMLMessages.VC_IDREF);
  -                        throw error;//Need Message
  -                    }
  -                    //System.out.println("Content REF = " + content );
  -                    addIdRef( content, state);// We are storing IDs 
  -                }
  -            }
  -         } else {
  -            //System.out.println("list = " + content );
  -            if (state!= null){
  -                message = (StateMessageDatatype) state;    
  -                if (message.getDatatypeState() == IDREFDatatypeValidator.IDREF_CLEAR ){
  -                    if ( this.fTableOfId != null ){
  -                        fTableOfId.clear(); //This is pass to us through the state object
  -                    }
  -                    if ( this.fTableIDRefs != null ){
  -                        fTableIDRefs.clear(); 
  -                    }
  -                    return null;
  -
  -                } else if ( message.getDatatypeState() == IDREFDatatypeValidator.IDREF_VALIDATE ){
  -                    //System.out.println("Call to Validate IDREFS" );
  -                    this.checkIdRefs();//Validate that all keyRef is a keyIds
  -                } else if ( message.getDatatypeState() == IDREFDatatypeValidator.IDREF_STORE ) {
  -                    //System.out.println("IDREFS = " + content );
  -                    StringTokenizer   tokenizer = new StringTokenizer( content );
  -                    this.fTableOfId = (Hashtable) message.getDatatypeObject();
  -                    while ( tokenizer.hasMoreTokens() ) {
  -                        String idName = tokenizer.nextToken(); 
  -                        //System.out.println("idName here = " + idName );
  -                        if( this.fBaseValidator != null ){
  -                               this.fBaseValidator.validate( idName, state );
  -                        }
  -                        addIdRef( idName, state);// We are storing IDs 
  -                    }
  -                }
  -
  -            }
  -
  -        }
  -        return null;
  -        */
  -    }
  -
  -
  -    /**
  -     * REVISIT
  -     * Compares two Datatype for order
  +   public Hashtable getFacets(){
  +      return null;
  +   }
  +   /**
  +      * Returns a copy of this object.
  +      */
  +   public Object clone() throws CloneNotSupportedException {
  +      throw new CloneNotSupportedException("clone() is not supported in "+this.getClass().getName());
  +   }
  +
  +   /**
  +     * Name of base type as a string.
  +     * A Native datatype has the string "native"  as its
  +     * base type.
        * 
  -     * @param o1
  -     * @param o2
  -     * @return 
  +     * @param base   the validator for this type's base type
        */
  -    public int compare( String content1, String content2){
  -        return -1;
  -    }
  -
  -
  -    public Hashtable getFacets(){
  -        return null;
  -    }
  -    /**
  -       * Returns a copy of this object.
  -       */
  -    public Object clone() throws CloneNotSupportedException {
  -        throw new CloneNotSupportedException("clone() is not supported in "+this.getClass().getName());
  -    }
  -
  -    /**
  -      * Name of base type as a string.
  -      * A Native datatype has the string "native"  as its
  -      * base type.
  -      * 
  -      * @param base   the validator for this type's base type
  -      */
  -    private void setBasetype(DatatypeValidator base){
  -        fBaseValidator = base;
  -    }
  -
  -    /** addId. */
  -    private void addIdRef(String content, Object state) {
  -        //System.out.println("this.fTableOfId = " + content );
  -        //System.out.println("state =  " + state  );
  -        //System.out.println("table = " + this.fTableOfId );
  -
  -
  -        if ( this.fTableOfId != null &&  this.fTableOfId.containsKey( content ) ){
  -            //System.out.println("It already contains key = " + content );
  -            return;
  -        }
  -        //System.out.println("Table of IDRefs = " + this.fTableIDRefs );
  -        if ( this.fTableIDRefs == null ){
  -            this.fTableIDRefs = new Hashtable();
  -        } else if ( fTableIDRefs.containsKey( content ) ){
  -            return;
  -        }
  -
  -
  -        if ( this.fNullValue == null ){
  -            fNullValue = new Object();
  -        }
  -        //System.out.println("tabl IDREFs = " + this.fTableIDRefs );
  -        try {
  -            this.fTableIDRefs.put( content, fNullValue ); 
  -        } catch( OutOfMemoryError ex ){
  -            System.out.println( "Out of Memory: Hashtable of ID's has " + this.fTableIDRefs.size() + " Elements" );
  -            ex.printStackTrace();
  -        }
  -    } // addId(int):boolean
  -
  -
  -    private void checkIdRefs() throws InvalidDatatypeValueException {
  -
  -        if ( this.fTableIDRefs == null)
  -            return;
  -        
  -        Enumeration en = this.fTableIDRefs.keys();
  -        //System.out.println("TabIDREFs=  " + this.fTableIDRefs );
  -
  -        while (en.hasMoreElements()) {
  -            String key = (String)en.nextElement();
  -            //System.out.println( "Key here = x>>" + key + "<<" );
  -            //System.out.println("Tab Ids = " + this.fTableOfId );
  -            if ( this.fTableOfId == null || ! this.fTableOfId.containsKey(key)) {
  -                
  -                InvalidDatatypeValueException error =  new
  -                            InvalidDatatypeValueException( key );
  -                /* TODO in Xerces 2
  -                error.setMinorCode(XMLMessages.MSG_ELEMENT_WITH_ID_REQUIRED);
  -                error.setMajorCode(XMLMessages.VC_IDREF);
  -                */
  -                throw error;
  -            }
  -        }
  -
  -    } // checkIdRefs()
  -
  -
  -    /**
  -    * set the locate to be used for error messages
  -    */
  -    public void setLocale(Locale locale) {
  -        fLocale = locale;
  -    }
  -
  -
  -    private String getErrorString(int major, int minor, Object args[]) {
  -        //return fMessageProvider.createMessage(fLocale, major, minor, args);
  -        return fMessageProvider.formatMessage( fLocale, null, null);
  -    }
  +   private void setBasetype(DatatypeValidator base){
  +      fBaseValidator = base;
  +   }
  +
  +   /** addId. */
  +   private void addIdRef(String content, Object state) {
  +      if ( fTableOfId != null &&  fTableOfId.containsKey( content ) ) {
  +         return;
  +      }
  +      if ( fTableIDRefs == null ) {
  +         fTableIDRefs = new Hashtable();
  +      } else if ( fTableIDRefs.containsKey( content ) ) {
  +         return;
  +      }
  +      if ( this.fNullValue == null ) {
  +         fNullValue = new Object();
  +      }
  +      try {
  +         this.fTableIDRefs.put( content, fNullValue ); 
  +      } catch ( OutOfMemoryError ex ) {
  +         System.out.println( "Out of Memory: Hashtable of ID's has " + this.fTableIDRefs.size() + " Elements" );
  +         ex.printStackTrace();
  +      }
  +   } // addId(int):boolean
  +
  +
  +   private void checkIdRefs() throws InvalidDatatypeValueException {
  +
  +      if ( fTableIDRefs == null)
  +         return;
  +
  +      Enumeration en = this.fTableIDRefs.keys();
  +
  +      while (en.hasMoreElements()) {
  +         String key = (String)en.nextElement();
  +         if ( this.fTableOfId == null || ! this.fTableOfId.containsKey(key)) {
  +
  +            InvalidDatatypeValueException error =  new
  +                                                   InvalidDatatypeValueException( key );
  +            throw error;
  +         }
  +      }
  +
  +   } // checkIdRefs()
  +
  +
  +   /**
  +   * set the locate to be used for error messages
  +   */
  +   public void setLocale(Locale locale) {
  +      fLocale = locale;
  +   }
  +
  +   private String getErrorString(int major, int minor, Object args[]) {
  +      //return fMessageProvider.createMessage(fLocale, major, minor, args);
  +      return fMessageProvider.formatMessage( fLocale, null, null);
  +   }
   
   
   }