home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / xml4j.jar / com / ibm / xml / internal / DefaultValidationHandler.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-08-30  |  3.9 KB  |  165 lines

  1. package com.ibm.xml.internal;
  2.  
  3. import com.ibm.xml.framework.AttrPool;
  4. import com.ibm.xml.framework.ContentModel;
  5. import com.ibm.xml.framework.ContentSpecNode;
  6. import com.ibm.xml.framework.ElementDeclPool;
  7. import com.ibm.xml.framework.InsertableElementsInfo;
  8. import com.ibm.xml.framework.ParserState;
  9. import com.ibm.xml.framework.StringPool;
  10. import com.ibm.xml.framework.XMLErrorHandler;
  11. import com.ibm.xml.framework.XMLValidationHandler;
  12.  
  13. public class DefaultValidationHandler implements XMLValidationHandler {
  14.    private ElementDeclPool fDeclPool;
  15.    private XMLErrorHandler fErrHandler;
  16.    private AttrPool fAttrPool;
  17.    private StringPool fStringPool;
  18.    private ParserState fParserState;
  19.    private static final boolean DEBUG_PRINT_ATTRIBUTES = false;
  20.    private static final boolean DEBUG_PRINT_CONTENT = false;
  21.  
  22.    public DefaultValidationHandler(ParserState var1) {
  23.       this.fDeclPool = var1.cacheElementDeclPool();
  24.       this.fErrHandler = var1.getErrorHandler();
  25.       this.fAttrPool = var1.cacheAttrPool();
  26.       this.fStringPool = var1.cacheStringPool();
  27.       this.fParserState = var1;
  28.       if (this.fDeclPool != null && this.fErrHandler != null && this.fAttrPool != null && this.fStringPool != null && this.fParserState != null) {
  29.          boolean var2 = false;
  30.       } else {
  31.          boolean var10000 = true;
  32.       }
  33.  
  34.    }
  35.  
  36.    public void reset(ParserState var1) {
  37.       this.fDeclPool = var1.cacheElementDeclPool();
  38.       this.fErrHandler = var1.getErrorHandler();
  39.       this.fAttrPool = var1.cacheAttrPool();
  40.       this.fStringPool = var1.cacheStringPool();
  41.       this.fParserState = var1;
  42.    }
  43.  
  44.    public void checkRootElementName(int var1) throws Exception {
  45.       int var2 = this.fDeclPool.getRootElement();
  46.       if (var2 != -1) {
  47.          int var3 = this.fDeclPool.getElementName(var2);
  48.          if (var1 != var3) {
  49.             this.fErrHandler.error2(126, var3, var1);
  50.          }
  51.  
  52.       }
  53.    }
  54.  
  55.    public void checkAttributes(int var1, int var2) throws Exception {
  56.       if (this.fParserState.getCheckNamespace()) {
  57.          this.fDeclPool.checkNamespace(var1, var2);
  58.       }
  59.  
  60.    }
  61.  
  62.    public int checkContent(int var1, int var2, int[] var3) throws Exception {
  63.       int var4 = this.fDeclPool.getElementName(var1);
  64.       int var5 = this.fDeclPool.getContentSpecType(var1);
  65.       if (var5 == 1) {
  66.          if (var2 != 0) {
  67.             return 0;
  68.          }
  69.       } else if (var5 != 2) {
  70.          if (var5 != 3 && var5 != 4) {
  71.             if (var5 == 0) {
  72.                this.fErrHandler.error1(166, var4);
  73.             } else {
  74.                this.fErrHandler.error(152);
  75.             }
  76.          } else {
  77.             Object var6 = null;
  78.  
  79.             try {
  80.                ContentModel var9 = this.getContentModel(var1);
  81.                return var9.validateContent(var2, var3);
  82.             } catch (CMException var8) {
  83.                var8.send(this.fErrHandler);
  84.             }
  85.          }
  86.       }
  87.  
  88.       return -1;
  89.    }
  90.  
  91.    public void checkIDRefNames() throws Exception {
  92.       this.fDeclPool.checkIdRefs();
  93.    }
  94.  
  95.    public int whatCanGoHere(int var1, boolean var2, InsertableElementsInfo var3) throws Exception {
  96.       if (var3.insertAt > var3.childCount || var3.curChildren == null || var3.childCount < 1 || var3.childCount > var3.curChildren.length) {
  97.          this.fErrHandler.error(158);
  98.       }
  99.  
  100.       int var4 = 0;
  101.  
  102.       try {
  103.          ContentModel var5 = this.getContentModel(var1);
  104.          var4 = var5.whatCanGoHere(var2, var3);
  105.       } catch (CMException var6) {
  106.          var6.send(this.fErrHandler);
  107.       }
  108.  
  109.       return var4;
  110.    }
  111.  
  112.    private final ContentModel createChildModel(int var1) throws CMException {
  113.       ContentSpecNode var2 = new ContentSpecNode();
  114.       this.fDeclPool.getContentSpecNode(this.fDeclPool.getContentSpec(var1), var2);
  115.       if (var2.value == -1) {
  116.          throw new CMException(159);
  117.       } else if (var2.type == 0) {
  118.          return new SimpleContentModel(var2.value, -1, var2.type);
  119.       } else {
  120.          if (var2.type != 4 && var2.type != 5) {
  121.             if (var2.type != 1 && var2.type != 2 && var2.type != 3) {
  122.                throw new CMException(152);
  123.             }
  124.  
  125.             ContentSpecNode var5 = new ContentSpecNode();
  126.             this.fDeclPool.getContentSpecNode(var2.value, var5);
  127.             if (var5.type == 0) {
  128.                return new SimpleContentModel(var5.value, -1, var2.type);
  129.             }
  130.          } else {
  131.             ContentSpecNode var3 = new ContentSpecNode();
  132.             ContentSpecNode var4 = new ContentSpecNode();
  133.             this.fDeclPool.getContentSpecNode(var2.value, var3);
  134.             this.fDeclPool.getContentSpecNode(var2.otherValue, var4);
  135.             if (var3.type == 0 && var4.type == 0) {
  136.                return new SimpleContentModel(var3.value, var4.value, var2.type);
  137.             }
  138.          }
  139.  
  140.          return new DFAContentModel(var1, this.fStringPool, this.fDeclPool);
  141.       }
  142.    }
  143.  
  144.    ContentModel getContentModel(int var1) throws CMException {
  145.       ContentModel var2 = this.fDeclPool.getContentModel(var1);
  146.       if (var2 != null) {
  147.          return var2;
  148.       } else {
  149.          int var3 = this.fDeclPool.getContentSpecType(var1);
  150.          if (var3 == 3) {
  151.             var2 = new MixedContentModel(this.fDeclPool, var1);
  152.          } else {
  153.             if (var3 != 4) {
  154.                throw new CMException(152);
  155.             }
  156.  
  157.             var2 = this.createChildModel(var1);
  158.          }
  159.  
  160.          this.fDeclPool.setContentModel(var1, var2);
  161.          return var2;
  162.       }
  163.    }
  164. }
  165.