001    package com.thaiopensource.validate.nrl;
002    
003    import com.thaiopensource.validate.Schema;
004    import com.thaiopensource.validate.nrl.Mode;
005    import com.thaiopensource.validate.nrl.ModeUsage;
006    import com.thaiopensource.validate.nrl.NoResultAction;
007    import com.thaiopensource.validate.nrl.SectionState;
008    import org.xml.sax.SAXException;
009    
010    class ValidateAction extends NoResultAction {
011      private final Schema schema;
012    
013      ValidateAction(ModeUsage modeUsage, Schema schema) {
014        super(modeUsage);
015        this.schema = schema;
016      }
017    
018      void perform(SectionState state) throws SAXException {
019        state.addValidator(schema, getModeUsage());
020      }
021    
022      NoResultAction changeCurrentMode(Mode mode) {
023        return new ValidateAction(getModeUsage().changeCurrentMode(mode), schema);
024      }
025    
026      public boolean equals(Object obj) {
027        return super.equals(obj) && schema.equals(((ValidateAction)obj).schema);
028      }
029    
030      public int hashCode() {
031        return super.hashCode() ^ schema.hashCode();
032      }
033    }