home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.extensibility.xml; import com.extensibility.xml.dt.DataType; import com.extensibility.xml.dt.DataTypeFactory; import com.extensibility.xml.dt.DataTypeIntf; import com.extensibility.xml.dt.Facet; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Reader; import java.net.UnknownHostException; import java.util.Hashtable; import java.util.Stack; import java.util.Vector; import org.xml.sax.AttributeList; import org.xml.sax.HandlerBase; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.Parser; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.LocatorImpl; public final class XSDLReader extends HandlerBase implements XSDLTags { private Hashtable elemDecls; private Hashtable dtElemNames; private Hashtable currentAttrs; private ElementDeclaration currentElemDecl; private DataTypeDeclaration currentDataTypeDecl; private String topLevelElemName; private String currentElemName; private AttributeDeclaration currentAttrDecl; private Vector attrChoices; private Vector elemDeclAttrs; private Hashtable namespaces; private SchemaIntf schema; private ContentModel currentCM; private boolean isFirstLevelCM; private boolean cmClosed; private Stack cmConnectors; private Stack contentModels; private Object commentKind; private StringBuffer commentContent; private boolean commentStart; private boolean optionStart; private boolean defaultStart; private String defaultContent; private Stack currentContentIPEs; private Hashtable savedContentIPEs; private Stack currentAttrIPEs; private Hashtable savedAttrIPEs; private InternalPEDeclaration currentIPEDecl; private NotationDeclaration currentNotationDecl; private boolean inProlog = true; private Locator locator; public URI logicalURI; public XSDLReader(SchemaIntf var1) { this.schema = var1; } public void error(String var1, int var2, int var3, int var4) { ParserException var5 = new ParserException(var2, var1); var5.setSource(String.valueOf(String.valueOf(String.valueOf(String.valueOf("See Line: ").concat(String.valueOf(var3))).concat(String.valueOf(" Column:"))).concat(String.valueOf(var4))).concat(String.valueOf(" in file."))); var5.setSourceLinePos(var3); this.schema.addError(var5); } public void error(SAXParseException var1) { this.error(((SAXException)var1).getMessage(), 240, this.locator.getLineNumber(), this.locator.getColumnNumber()); } public void fatalError(SAXParseException var1) { this.error(var1); } public void setDocumentLocator(Locator var1) { this.locator = var1; } public void parse(URI var1, URI var2) throws IOException { this.logicalURI = var2; Reader var4 = null; try { Parser var3 = SchemaUtilities.getParser(); this.setDocumentLocator(new LocatorImpl()); var3.setEntityResolver(this); var3.setErrorHandler(this); var3.setDocumentHandler(this); var4 = var1.createReader(); var3.parse(new InputSource(var4)); } catch (IOException var16) { throw var16; } catch (Exception var17) { if (!(var17 instanceof IOException)) { } } finally { try { if (var4 != null) { var4.close(); } } catch (IOException var15) { } } } public void startDocument() { this.elemDecls = new Hashtable(); this.dtElemNames = new Hashtable(); this.currentAttrs = new Hashtable(); this.currentElemDecl = null; this.currentDataTypeDecl = null; this.topLevelElemName = null; this.currentAttrDecl = null; this.attrChoices = new Vector(); this.elemDeclAttrs = new Vector(); this.namespaces = new Hashtable(); this.isFirstLevelCM = true; this.cmClosed = true; this.cmConnectors = new Stack(); this.contentModels = new Stack(); this.commentKind = null; this.commentContent = new StringBuffer(); this.commentStart = false; this.optionStart = false; this.defaultStart = false; this.defaultContent = null; this.currentContentIPEs = new Stack(); this.savedContentIPEs = new Hashtable(); this.currentAttrIPEs = new Stack(); this.savedAttrIPEs = new Hashtable(); this.currentIPEDecl = null; } public void endDocument() { } public void processingInstruction(String var1, String var2) throws SAXException { ProcessingInstruction var3 = new ProcessingInstruction(var1, var2); if (this.inProlog) { ((BaseDeclaration)var3).setIsInProlog(true); } this.schema.insertDeclaration(var3, (BaseDeclaration)null); } private char getCurrentConnection() { return (Character)this.cmConnectors.peek(); } private ContentModelTerm getCurrentParent() { return (ContentModelTerm)this.contentModels.peek(); } public void startElement(String var1, AttributeList var2) { this.inProlog = false; this.parseElement(var1, var2); } private void saveNamespaceInfo(String var1, String var2) { int var4 = var1.indexOf(":"); if (var4 != -1) { String var5 = var1.substring(var4 + 1); if (var5 != null && var5.length() > 0) { NamespaceDeclaration var3 = new NamespaceDeclaration(var5, var2); this.schema.insertDeclaration(var3, (BaseDeclaration)null); this.namespaces.put(var2, var3); } } } private void doSchema(AttributeList var1) { String var2 = null; Object var3 = null; Object var4 = null; Object var5 = null; Object var6 = null; Object var7 = null; Object var8 = null; Object var9 = null; for(int var10 = 0; var10 < var1.getLength(); ++var10) { String var11 = var1.getName(var10); if (var11.equals("xmlns")) { var1.getValue(var10); } else if (var11.equals("version")) { var1.getValue(var10); } else if (var11.equals("targetNamespace")) { var2 = var1.getValue(var10); } else if (var11.equals("finalDefault")) { var1.getValue(var10); } else if (var11.equals("blockDefault")) { var1.getValue(var10); } else if (var11.equals("elementFormDefault")) { var1.getValue(var10); } else if (var11.equals("attributeFormDefault")) { var1.getValue(var10); } else if (var11.equals("id")) { var1.getValue(var10); } else if (var11.startsWith("xmlns:")) { this.saveNamespaceInfo(var11, var1.getValue(var10)); } else { this.error(String.valueOf("Unrecognized attribute for 'schema' : ").concat(String.valueOf(var11)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var2 != null) { this.schema.setNamespace(new URI((URI)null, var2)); } } private void doImport(AttributeList var1) { String var2 = null; String var3 = null; for(int var4 = 0; var4 < var1.getLength(); ++var4) { String var5 = var1.getName(var4); if (var5.equals("schemaLocation")) { var2 = var1.getValue(var4); } else if (var5.equals("namespace")) { var3 = var1.getValue(var4); } else { this.error(String.valueOf("Unrecognized attribute for 'import' : ").concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } Object var7 = null; Object var6 = null; if (var3 != null) { NamespaceDeclaration var8 = (NamespaceDeclaration)this.namespaces.get(var3); if (var8 == null) { this.error(String.valueOf("Namespace not declared :").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); var8 = new NamespaceDeclaration("undefinedPrefix", var3); this.schema.insertDeclaration(var8, (BaseDeclaration)null); this.namespaces.put(var3, var8); } URI var9; if (var2 != null) { var9 = new URI((URI)null, var2); } else { var9 = new URI((URI)null, var3); } var8.setSchemaLoc(var9); } else { this.error("Namespace required for 'import'", 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doInclude(AttributeList var1) { String var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("schemaLocation")) { var2 = var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'include' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var2 == null) { this.error("The 'schemaLocation' attribute is required for 'include'.", 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } else { new URI((URI)null, var2); URI var12 = new URI(this.logicalURI, var2); String var5 = DTDUtilities.makeValidName(var12.getShortName()); if (this.schema.getNamedDeclaration(var5, Class.forName("com.extensibility.xml.ParameterEntityDeclaration")) == null) { ExternalPEDeclaration var6 = new ExternalPEDeclaration(var5, (String)null, var12); ((BaseDeclaration)var6).setURI(this.logicalURI); this.schema.insertDeclaration(var6, (BaseDeclaration)null); try { int var7 = this.schema.insertSubset(var6); if (var7 > 0) { this.error(((BaseDeclaration)var6).getName(), 246, this.locator.getLineNumber(), this.locator.getColumnNumber()); } ExternalSubset var10000 = (ExternalSubset)this.schema.getNamedDeclaration(var5, Class.forName("com.extensibility.xml.ExternalSubset")); } catch (UnknownHostException var9) { this.error(var12.getFullName(), 245, this.locator.getLineNumber(), this.locator.getColumnNumber()); } catch (FileNotFoundException var10) { this.error(var12.getShortName(), 244, this.locator.getLineNumber(), this.locator.getColumnNumber()); } catch (IOException var11) { this.error(((Throwable)var11).getMessage(), 247, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } } private void doType(AttributeList var1) { Object var2 = null; String var3 = null; Object var4 = null; String var5 = null; Object var6 = null; Object var7 = null; Object var8 = null; String var9 = null; Object var10 = null; for(int var11 = 0; var11 < var1.getLength(); ++var11) { String var12 = var1.getName(var11); if (var12.equals("abstract")) { var1.getValue(var11); } else if (var12.equals("base")) { var3 = var1.getValue(var11); } else if (var12.equals("block")) { var1.getValue(var11); } else if (var12.equals("content")) { var5 = var1.getValue(var11); } else if (var12.equals("derivedBy")) { var1.getValue(var11); } else if (var12.equals("exact")) { var1.getValue(var11); } else if (var12.equals("final")) { var1.getValue(var11); } else if (var12.equals("name")) { var9 = var1.getValue(var11); } else if (var12.equals("id")) { var1.getValue(var11); } else { this.error(String.valueOf("Unrecognized attribute for 'complexType' : ").concat(String.valueOf(var12)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var5 == null) { var5 = "mixed"; } byte var13 = 0; this.cmClosed = false; if (var5.equals("empty")) { var13 = 3; this.cmClosed = true; } else if (var5.equals("mixed")) { var13 = 4; } else if (var5.equals("textOnly")) { var13 = 5; this.cmClosed = true; } else if (var5.equals("elementOnly")) { var13 = 6; } else { var13 = 3; } if (this.currentElemDecl == null) { if (this.elemDecls.containsKey(var9)) { this.currentElemDecl = (ElementDeclaration)this.elemDecls.get(var9); } else { this.currentElemDecl = new ElementDeclaration(var9, 3); this.currentElemDecl.setURI(this.logicalURI); this.elemDecls.put(var9, this.currentElemDecl); } this.topLevelElemName = var9; } this.currentCM = this.currentElemDecl.getContentModel(); this.currentCM.setContentModel(var13); this.isFirstLevelCM = true; if (var3 != null && this.currentElemDecl != null) { this.currentElemDecl.setDataType(this.convertDataType(var3)); } this.cmConnectors.push(new Character(',')); this.contentModels.push(this.currentCM.getRootGroup()); } private void doAnnotation(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); this.error(String.valueOf("Unrecognized attribute for 'annotation' : ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doAttrGroup(AttributeList var1) { Object var2 = null; String var3 = null; String var4 = null; for(int var5 = 0; var5 < var1.getLength(); ++var5) { String var6 = var1.getName(var5); if (var6.equals("name")) { var3 = var1.getValue(var5); } else if (var6.equals("id")) { var1.getValue(var5); } else if (var6.equals("ref")) { var4 = var1.getValue(var5); } else { this.error(String.valueOf("Unrecognized attribute for 'attributeGroup' : ").concat(String.valueOf(var6)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var4 != null) { if (!this.savedAttrIPEs.containsKey(var4)) { this.savedAttrIPEs.put(var4, new InternalPEDeclaration(var4, Class.forName("com.extensibility.xml.AttributeGroup"))); } InternalPEDeclaration var7 = (InternalPEDeclaration)this.savedAttrIPEs.get(var4); if (!this.currentAttrIPEs.isEmpty()) { ((InternalPEDeclaration)this.currentAttrIPEs.peek()).add(var7.getAttributeGroup()); } else if (this.currentElemDecl != null) { this.currentElemDecl.add(var7.getAttributeGroup()); } } else if (var3 != null) { if (this.savedAttrIPEs.containsKey(var3)) { this.currentIPEDecl = (InternalPEDeclaration)this.savedAttrIPEs.get(var3); } else { this.currentIPEDecl = new InternalPEDeclaration(var3, Class.forName("com.extensibility.xml.AttributeGroup")); this.savedAttrIPEs.put(var3, this.currentIPEDecl); } this.currentIPEDecl.setURI(this.logicalURI); this.currentAttrIPEs.push(this.currentIPEDecl); } } private void doDataType(AttributeList var1) { String var2 = null; String var3 = null; for(int var4 = 0; var4 < var1.getLength(); ++var4) { String var5 = var1.getName(var4); if (var5.equals("base")) { var2 = var1.getValue(var4); } else if (var5.equals("name")) { var3 = var1.getValue(var4); } else { this.error(String.valueOf("Unrecognized attribute for 'simpleType' : ").concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } DataType var6; if (var2 != null) { var6 = this.convertDataType(var2); } else { var6 = this.convertDataType("string"); } if (this.currentAttrDecl != null) { this.currentAttrDecl.setDataType(var6); } else if (var3 != null) { this.currentDataTypeDecl = new DataTypeDeclaration(var3, var6); this.currentDataTypeDecl.setURI(this.logicalURI); if (this.dtElemNames.containsKey(var3)) { this.error(String.valueOf("datatype name used more than once: ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } else { this.dtElemNames.put(var3, this.currentDataTypeDecl); } } } private void doElement(AttributeList var1) { Object var2 = null; Object var3 = null; Object var4 = null; Object var5 = null; Object var6 = null; Object var7 = null; Object var8 = null; Object var9 = null; String var10 = null; String var11 = null; String var12 = null; Object var13 = null; String var14 = null; String var15 = null; for(int var16 = 0; var16 < var1.getLength(); ++var16) { String var17 = var1.getName(var16); if (var17.equals("abstract")) { var1.getValue(var16); } else if (var17.equals("block")) { var1.getValue(var16); } else if (var17.equals("default")) { var1.getValue(var16); } else if (var17.equals("equivClass")) { var1.getValue(var16); } else if (var17.equals("final")) { var1.getValue(var16); } else if (var17.equals("fixed")) { var1.getValue(var16); } else if (var17.equals("form")) { var1.getValue(var16); } else if (var17.equals("id")) { var1.getValue(var16); } else if (var17.equals("maxOccurs")) { var11 = var1.getValue(var16); } else if (var17.equals("minOccurs")) { var10 = var1.getValue(var16); } else if (var17.equals("name")) { var12 = var1.getValue(var16); } else if (var17.equals("nullable")) { var1.getValue(var16); } else if (var17.equals("ref")) { var14 = var1.getValue(var16); } else if (var17.equals("type")) { var15 = var1.getValue(var16); } else { this.error(String.valueOf("Unrecognized attribute for 'element' : ").concat(String.valueOf(var17)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } Object var24 = null; String var18 = null; boolean var19 = false; String var25; if (var14 != null) { var25 = var14; if (var12 != null) { var18 = var12; } this.currentElemName = null; var19 = true; } else if (var12 != null) { var25 = var12; this.currentElemName = var12; } else { var25 = "undefined"; if (this.currentElemDecl == null) { this.currentElemName = var25; } else { this.currentElemName = null; } this.error("Must have name or ref for 'element' : ", 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } ElementDeclaration var20; if (this.elemDecls.containsKey(var25)) { var20 = (ElementDeclaration)this.elemDecls.get(var25); } else { var20 = new ElementDeclaration(var25, 3); ((BaseDeclaration)var20).setURI(this.logicalURI); this.elemDecls.put(var25, var20); } if (this.contentModels.isEmpty() && this.currentElemDecl == null) { this.currentElemDecl = var20; if (var15 != null) { ContentModel var26 = var20.getContentModel(); var20.setDataType(this.convertDataType(var15)); } this.topLevelElemName = var12; } else { char var21 = this.getCurrentConnection(); ContentModelTerm var22 = this.getCurrentParent(); ContentModelTerm var23 = new ContentModelTerm(new TypeRef(var25), '\u0000', var21); if (var19 && var18 != null) { var23.setLocalTag(var18); } this.setOccurance(var23, var10, var11); var22.addTerm(var23); } } private void doGroup(String var1, AttributeList var2) { Object var3 = null; String var4 = null; String var5 = null; String var6 = null; String var7 = null; for(int var8 = 0; var8 < var2.getLength(); ++var8) { String var9 = var2.getName(var8); if (var9.equals("id")) { var2.getValue(var8); } else if (var9.equals("maxOccurs")) { var4 = var2.getValue(var8); } else if (var9.equals("minOccurs")) { var5 = var2.getValue(var8); } else if (var9.equals("name")) { var6 = var2.getValue(var8); if (!var1.equals("group")) { this.error(String.valueOf(String.valueOf(String.valueOf("Unrecognized attribute for '").concat(String.valueOf(var1))).concat(String.valueOf("' : "))).concat(String.valueOf(var9)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } else if (var9.equals("ref")) { var7 = var2.getValue(var8); if (!var1.equals("group")) { this.error(String.valueOf(String.valueOf(String.valueOf("Unrecognized attribute for '").concat(String.valueOf(var1))).concat(String.valueOf("' : "))).concat(String.valueOf(var9)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } else { this.error(String.valueOf(String.valueOf(String.valueOf("Unrecognized attribute for '").concat(String.valueOf(var1))).concat(String.valueOf("' : "))).concat(String.valueOf(var9)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (this.contentModels.isEmpty()) { if (var1.equals("group")) { if (var6 == null) { this.error(String.valueOf(String.valueOf("Name is required for schema-level '").concat(String.valueOf(var1))).concat(String.valueOf("' -- setting to 'undefined'.")), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); var6 = "undefined"; } if (this.savedContentIPEs.containsKey(var6)) { this.currentIPEDecl = (InternalPEDeclaration)this.savedContentIPEs.get(var6); } else { this.currentIPEDecl = new InternalPEDeclaration(var6, Class.forName("com.extensibility.xml.ContentModelTerm")); this.savedContentIPEs.put(var6, this.currentIPEDecl); } this.currentIPEDecl.setURI(this.logicalURI); this.currentContentIPEs.push(this.currentIPEDecl); this.currentCM = this.currentIPEDecl.createContentModel(); this.currentCM.setContentModel(6); this.cmClosed = false; this.isFirstLevelCM = true; this.cmConnectors.push(new Character(',')); this.contentModels.push(this.currentCM.getRootGroup()); } else { this.error(String.valueOf(String.valueOf("Element not allowed at schema-level: '").concat(String.valueOf(var1))).concat(String.valueOf("'")), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } else if (var7 != null && var1.equals("group")) { if (!this.savedContentIPEs.containsKey(var7)) { this.savedContentIPEs.put(var7, new InternalPEDeclaration(var7, Class.forName("com.extensibility.xml.ContentModelTerm"))); } InternalPEDeclaration var14 = (InternalPEDeclaration)this.savedContentIPEs.get(var7); ContentModelTerm var15 = this.getCurrentParent(); ContentModel var11 = var14.getContentModel(); var15.addTerm(var11); } else { if (var7 != null && !var1.equals("group")) { this.error(String.valueOf(String.valueOf("'ref' not allowed for: '").concat(String.valueOf(var1))).concat(String.valueOf("'")), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } char var12 = ','; if (var1.equals("all")) { var12 = ','; } else if (var1.equals("choice")) { var12 = '|'; } else if (var1.equals("sequence")) { var12 = ','; } else { var12 = ','; } ContentModelTerm var10 = new ContentModelTerm(); this.setOccurance(var10, var5, var4); var10.setConnection(this.getCurrentConnection()); if (this.isFirstLevelCM) { this.getCurrentParent().setLocalTag(var6); this.getCurrentParent().setOccurance(var10.getMinOccurance(), var10.getMaxOccurance()); this.getCurrentParent().setConnection(var10.getConnection()); this.cmConnectors.pop(); this.cmConnectors.push(new Character(var12)); } else { this.getCurrentParent().addTerm(var10); this.contentModels.push(var10); this.cmConnectors.push(new Character(var12)); } this.isFirstLevelCM = false; } } private void doNotation(AttributeList var1) { Object var2 = null; String var3 = null; String var4 = null; String var5 = null; for(int var6 = 0; var6 < var1.getLength(); ++var6) { String var7 = var1.getName(var6); if (var7.equals("id")) { var1.getValue(var6); } else if (var7.equals("name")) { var3 = var1.getValue(var6); } else if (var7.equals("public")) { var4 = var1.getValue(var6); } else if (var7.equals("system")) { var5 = var1.getValue(var6); } else { this.error(String.valueOf("Unrecognized attribute for 'notation' : ").concat(String.valueOf(var7)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } NotationDeclaration var8 = new NotationDeclaration(var3, var4, new URI((URI)null, var5)); this.schema.insertDeclaration(var8, (BaseDeclaration)null); this.currentNotationDecl = var8; } private void doKey(AttributeList var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("name")) { var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'key' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doKeyRef(AttributeList var1) { Object var2 = null; Object var3 = null; for(int var4 = 0; var4 < var1.getLength(); ++var4) { String var5 = var1.getName(var4); if (var5.equals("name")) { var1.getValue(var4); } else if (var5.equals("refer")) { var1.getValue(var4); } else { this.error(String.valueOf("Unrecognized attribute for 'keyref' : ").concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doUnique(AttributeList var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("name")) { var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'unique' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doAny(AttributeList var1) { Object var2 = null; Object var3 = null; Object var4 = null; for(int var5 = 0; var5 < var1.getLength(); ++var5) { String var6 = var1.getName(var5); if (var6.equals("maxOccurs")) { var1.getValue(var5); } else if (var6.equals("minOccurs")) { var1.getValue(var5); } else if (var6.equals("namespace")) { var1.getValue(var5); } else { this.error(String.valueOf("Unrecognized attribute for 'any' : ").concat(String.valueOf(var6)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doAnyAttribute(AttributeList var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("namespace")) { var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'anyAttribute' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } } private void doAppInfo(AttributeList var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("source")) { var1.getValue(var3); } else { this.error(String.valueOf("Unrecognized attribute for 'appinfo' : ").concat(String.valueOf(var4)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } this.commentStart = true; } private void doAttribute(AttributeList var1) { String var2 = null; String var3 = null; String var4 = null; String var5 = null; Object var6 = null; Object var7 = null; Object var8 = null; for(int var9 = 0; var9 < var1.getLength(); ++var9) { String var10 = var1.getName(var9); if (var10.equals("value")) { var3 = var1.getValue(var9); } else if (var10.equals("use")) { var2 = var1.getValue(var9); } else if (var10.equals("name")) { var4 = var1.getValue(var9); } else if (var10.equals("type")) { var5 = var1.getValue(var9); } else if (var10.equals("id")) { var1.getValue(var9); } else if (var10.equals("form")) { var1.getValue(var9); } else if (var10.equals("ref")) { var1.getValue(var9); } else { this.error(String.valueOf("Unrecognized attribute for 'attribute' : ").concat(String.valueOf(var10)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } DataType var13; if (var5 != null) { var13 = this.convertDataType(var5); } else { var13 = this.convertDataType("string"); } boolean var11 = false; if (var2 != null && (var2.equals("required") || var2.equals("fixed"))) { var11 = true; } if (!this.currentAttrIPEs.isEmpty()) { InternalPEDeclaration var12 = (InternalPEDeclaration)this.currentAttrIPEs.peek(); this.currentAttrDecl = new AttributeDeclaration(var12, var4, var13, (Vector)null, var11, var3); this.currentAttrDecl.setURI(((BaseDeclaration)var12).getURI()); var12.add(this.currentAttrDecl); } else if (this.currentElemDecl != null) { this.currentAttrDecl = new AttributeDeclaration(this.currentElemDecl, var4, var13, (Vector)null, var11, var3); this.currentAttrDecl.setURI(this.currentElemDecl.getURI()); this.elemDeclAttrs.addElement(this.currentAttrDecl); this.currentAttrs.put(var4, this.currentAttrDecl); } } private void doField(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); this.error(String.valueOf("Unrecognized attribute for 'field' : ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doDocumentation(AttributeList var1) { Object var2 = null; Object var3 = null; for(int var4 = 0; var4 < var1.getLength(); ++var4) { String var5 = var1.getName(var4); if (var5.equals("source")) { var1.getValue(var4); } else if (var5.equals("xml:lang")) { var1.getValue(var4); } else { this.error(String.valueOf("Unrecognized attribute for 'documentation' : ").concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } this.commentStart = true; this.commentKind = "USAGE"; } private void doSelector(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); this.error(String.valueOf("Unrecognized attribute for 'selector' : ").concat(String.valueOf(var3)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private boolean isFacetTag(String var1) { return var1.equals("encoding") || var1.equals("enumeration") || var1.equals("length") || var1.equals("maxExclusive") || var1.equals("maxInclusive") || var1.equals("maxLength") || var1.equals("minExclusive") || var1.equals("minInclusive") || var1.equals("minLength") || var1.equals("pattern") || var1.equals("period") || var1.equals("precision") || var1.equals("scale"); } private void doFacet(String var1, AttributeList var2) { String var3 = null; for(int var4 = 0; var4 < var2.getLength(); ++var4) { String var5 = var2.getName(var4); if (var5.equals("value")) { var3 = var2.getValue(var4); } else { this.error(String.valueOf(String.valueOf(String.valueOf("Unrecognized attribute for '").concat(String.valueOf(var1))).concat(String.valueOf("' facet element : "))).concat(String.valueOf(var5)), 999, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } Object var8 = null; DataType var9; if (this.currentAttrDecl != null) { var9 = this.currentAttrDecl.getDataType(); } else { if (this.currentDataTypeDecl == null) { return; } var9 = this.currentDataTypeDecl.getDataType(); } Object var6 = null; Facet var7 = null; if (var1.equals("enumeration")) { this.attrChoices.addElement(var3); } else { Facet var10; if (var1.equals("encoding")) { var10 = new Facet(Facet.FACET_ENCODING_NAME, var3); } else if (var1.equals("length")) { var10 = new Facet(Facet.FACET_LENGTH_NAME, var3); } else if (var1.equals("maxExclusive")) { var10 = new Facet(Facet.FACET_MAX_NAME, var3); var7 = new Facet(Facet.FACET_MAXEX_NAME, "true"); } else if (var1.equals("maxInclusive")) { var10 = new Facet(Facet.FACET_MAX_NAME, var3); } else if (var1.equals("maxLength")) { var10 = new Facet(Facet.FACET_MAXLENGTH_NAME, var3); } else if (var1.equals("minExclusive")) { var10 = new Facet(Facet.FACET_MIN_NAME, var3); var7 = new Facet(Facet.FACET_MINEX_NAME, "true"); } else if (var1.equals("minInclusive")) { var10 = new Facet(Facet.FACET_MIN_NAME, var3); } else if (var1.equals("minLength")) { var10 = new Facet(Facet.FACET_MINLENGTH_NAME, var3); } else if (var1.equals("pattern")) { var10 = new Facet(Facet.FACET_PATTERN_NAME, var3); } else if (var1.equals("period")) { var10 = new Facet(Facet.FACET_PERIOD_NAME, var3); } else if (var1.equals("precision")) { var10 = new Facet(Facet.FACET_DIGITS_NAME, var3); } else { if (!var1.equals("scale")) { return; } var10 = new Facet(Facet.FACET_DECIMALS_NAME, var3); } if (var10 != null) { var9 = (DataType)var9.applyFacet(var10); } if (var7 != null) { var9 = (DataType)var9.applyFacet(var7); } if (this.currentAttrDecl != null) { this.currentAttrDecl.setDataType(var9); } else { if (this.currentDataTypeDecl == null) { return; } this.currentDataTypeDecl.setDataType(var9); } } } public void parseElement(String var1, AttributeList var2) { if (var1.equals("schema")) { this.doSchema(var2); } else if (var1.equals("import")) { this.doImport(var2); } else if (var1.equals("include")) { this.doInclude(var2); } else if (var1.equals("complexType")) { this.doType(var2); } else if (var1.equals("annotation")) { this.doAnnotation(var2); } else if (var1.equals("attribute")) { this.doAttribute(var2); } else if (var1.equals("attributeGroup")) { this.doAttrGroup(var2); } else if (var1.equals("simpleType")) { this.doDataType(var2); } else if (var1.equals("element")) { this.doElement(var2); } else if (var1.equals("group")) { this.doGroup(var1, var2); } else if (var1.equals("notation")) { this.doNotation(var2); } else if (var1.equals("all")) { this.doGroup(var1, var2); } else if (var1.equals("any")) { this.doAny(var2); } else if (var1.equals("anyAttribute")) { this.doAnyAttribute(var2); } else if (var1.equals("appInfo")) { this.doAppInfo(var2); } else if (var1.equals("choice")) { this.doGroup(var1, var2); } else if (var1.equals("field")) { this.doField(var2); } else if (var1.equals("documentation")) { this.doDocumentation(var2); } else if (var1.equals("key")) { this.doKey(var2); } else if (var1.equals("keyref")) { this.doKeyRef(var2); } else if (var1.equals("selector")) { this.doSelector(var2); } else if (var1.equals("sequence")) { this.doGroup(var1, var2); } else if (var1.equals("unique")) { this.doUnique(var2); } else if (this.isFacetTag(var1)) { this.doFacet(var1, var2); } else { this.error(var1, 239, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void saveElementDecl() { if (this.currentElemDecl != null) { ContentModel var1 = this.currentElemDecl.getContentModel(); if (var1 != null && var1.isMixed()) { ContentModelTerm var2 = var1.getRootGroup(); if (var2 != null && var2.getOccurance() != '*' && var2.isGroup() && var2.getOwner() == this.currentElemDecl) { var2.setOccurance('*'); } } this.schema.insertDeclaration(this.currentElemDecl, (BaseDeclaration)null); this.currentElemDecl = null; for(int var4 = 0; var4 < this.elemDeclAttrs.size(); ++var4) { AttributeDeclaration var3 = (AttributeDeclaration)this.elemDeclAttrs.elementAt(var4); this.schema.insertDeclaration(var3, (BaseDeclaration)null); } this.elemDeclAttrs.removeAllElements(); this.currentAttrs.clear(); if (!this.contentModels.empty()) { this.contentModels.removeAllElements(); } if (!this.cmConnectors.empty()) { this.cmConnectors.removeAllElements(); } this.cmClosed = true; this.isFirstLevelCM = false; this.topLevelElemName = null; } } public void endElement(String var1) { if (var1.equals("complexType")) { this.saveElementDecl(); } else if (var1.equals("group")) { if (!this.currentContentIPEs.isEmpty()) { InternalPEDeclaration var2 = (InternalPEDeclaration)this.currentContentIPEs.pop(); var2.updateValue(); this.schema.insertDeclaration(var2, (BaseDeclaration)null); if (!this.currentContentIPEs.isEmpty()) { this.currentIPEDecl = (InternalPEDeclaration)this.currentContentIPEs.peek(); } if (!this.contentModels.empty()) { this.contentModels.removeAllElements(); } if (!this.cmConnectors.empty()) { this.cmConnectors.removeAllElements(); } this.cmClosed = true; this.isFirstLevelCM = false; } else { if (this.cmConnectors.size() > 1) { this.cmConnectors.pop(); } if (this.contentModels.size() > 1) { this.contentModels.pop(); } } } else if (!var1.equals("all") && !var1.equals("choice") && !var1.equals("sequence")) { if (var1.equals("element")) { if (this.currentElemName != null && this.currentElemName.equals(this.topLevelElemName)) { this.saveElementDecl(); } this.currentElemName = null; } else if (var1.equals("attribute")) { if (this.attrChoices.size() > 0) { Vector var6 = new Vector(); for(int var3 = 0; var3 < this.attrChoices.size(); ++var3) { var6.addElement(this.attrChoices.elementAt(var3)); } this.currentAttrDecl.setChoices(var6); } this.currentAttrDecl = null; this.attrChoices.removeAllElements(); } else if (var1.equals("simpleType")) { if (this.currentDataTypeDecl != null) { if (this.attrChoices.size() > 0) { Vector var7 = new Vector(); for(int var8 = 0; var8 < this.attrChoices.size(); ++var8) { var7.addElement(this.attrChoices.elementAt(var8)); } Facet var4 = new Facet(Facet.FACET_ENUM_NAME, var7); DataType var5 = this.currentDataTypeDecl.getDataType(); var5 = (DataType)var5.applyFacet(var4); this.currentDataTypeDecl.setDataType(var5); } this.schema.insertDeclaration(this.currentDataTypeDecl, (BaseDeclaration)null); } this.currentDataTypeDecl = null; if (this.currentAttrDecl == null) { this.attrChoices.removeAllElements(); } } else if (var1.equals("attributeGroup")) { if (!this.currentAttrIPEs.isEmpty()) { this.schema.insertDeclaration((InternalPEDeclaration)this.currentAttrIPEs.pop(), (BaseDeclaration)null); this.elemDeclAttrs.removeAllElements(); this.currentAttrs.clear(); } } else if (var1.equals("appInfo") || var1.equals("documentation")) { this.commentStart = false; if (this.commentContent.length() > 0) { if (this.currentAttrDecl != null) { this.currentAttrDecl.addComment(new Comment((String)this.commentKind, this.commentContent.toString())); } else if (this.currentElemDecl != null) { this.currentElemDecl.addComment(new Comment((String)this.commentKind, this.commentContent.toString())); } else if (this.currentIPEDecl != null) { this.currentIPEDecl.addComment(new Comment((String)this.commentKind, this.commentContent.toString())); } else if (this.currentDataTypeDecl != null) { this.currentDataTypeDecl.addComment(new Comment((String)this.commentKind, this.commentContent.toString())); } else { this.schema.addComment(new Comment((String)this.commentKind, this.commentContent.toString())); } } this.commentKind = null; this.commentContent.setLength(0); } } else { if (this.cmConnectors.size() > 1) { this.cmConnectors.pop(); } if (this.contentModels.size() > 1) { this.contentModels.pop(); } } } public void characters(char[] var1, int var2, int var3) throws SAXException { if (this.commentStart) { this.commentContent.append(var1, var2, var3); } } private DataType convertDataType(String var1) { String var2 = DataTypeIntf.STRING; if (var1 != null) { if (var1.equals("binary")) { var2 = DataTypeIntf.BINBASE64; } else if (var1.equals("integer")) { var2 = DataTypeIntf.INT; } else if (var1.equals("double")) { var2 = DataTypeIntf.R8; } else if (var1.equals("timeInstant")) { var2 = DataTypeIntf.DATETIME; } else { var2 = var1; } } return DataTypeFactory.createDataType(var2); } protected void setOccurance(ContentModelTerm var1, Object var2, Object var3) { boolean var4 = false; if (var2 == null) { var2 = new String("1"); } if (var3 == null) { var3 = new String("1"); } if (((String)var2).equals("1") && ((String)var3).equals("1")) { var1.setOccurance('\u0000'); } else if (((String)var2).equals("0") && ((String)var3).equals("1")) { var1.setOccurance('?'); } else if (((String)var2).equals("0") && ((String)var3).equals("unbounded")) { var1.setOccurance('*'); } else if (((String)var2).equals("1") && ((String)var3).equals("unbounded")) { var1.setOccurance('+'); } else { int[] var5 = new int[]{1, 1}; try { var5[0] = Integer.parseInt((String)var2); var5[1] = Integer.parseInt((String)var3); } catch (Exception var7) { } var1.setOccurance(var5[0], var5[1]); } } }