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 }