1 package org.simantics.xml.sax;
\r
3 import org.simantics.xml.sax.configuration.Rename;
\r
4 import org.w3._2001.xmlschema.AttributeGroup;
\r
5 import org.w3._2001.xmlschema.AttributeGroupRef;
\r
6 import org.w3._2001.xmlschema.ComplexType;
\r
7 import org.w3._2001.xmlschema.Element;
\r
8 import org.w3._2001.xmlschema.NamedAttributeGroup;
\r
9 import org.w3._2001.xmlschema.OpenAttrs;
\r
10 import org.w3._2001.xmlschema.SimpleType;
\r
12 public class SchemaObject {
\r
13 enum ObjectType{ELEMENT,COMPLEX_TYPE,SIMPLE_TYPE,ATTRIBUTE_GROUP};
\r
15 private SchemaObject parent;
\r
16 private ObjectType type;
\r
17 private OpenAttrs obj;
\r
18 private Rename rename;
\r
20 public SchemaObject(Element element) {
\r
24 public void setRename(Rename rename) {
\r
25 this.rename = rename;
\r
28 public SchemaObject(ComplexType complexType) {
\r
29 this(null, complexType);
\r
32 public SchemaObject(SimpleType simpleType) {
\r
33 this(null, simpleType);
\r
36 public SchemaObject(SchemaObject parent, Element element) {
\r
37 this.parent = parent;
\r
39 this.type = ObjectType.ELEMENT;
\r
42 public SchemaObject(SchemaObject parent, ComplexType complexType) {
\r
43 this.parent = parent;
\r
44 this.obj = complexType;
\r
45 this.type = ObjectType.COMPLEX_TYPE;
\r
48 public SchemaObject(SchemaObject parent, AttributeGroup attributeGroup) {
\r
49 this.parent = parent;
\r
50 this.obj = attributeGroup;
\r
51 this.type = ObjectType.ATTRIBUTE_GROUP;
\r
55 public SchemaObject(SchemaObject parent, SimpleType simpleType) {
\r
56 this.parent = parent;
\r
57 this.obj = simpleType;
\r
58 this.type = ObjectType.SIMPLE_TYPE;
\r
61 public Element getElement() {
\r
62 if (type != ObjectType.ELEMENT)
\r
64 return (Element)obj;
\r
67 public ComplexType getComplexType() {
\r
68 if (type != ObjectType.COMPLEX_TYPE)
\r
70 return (ComplexType)obj;
\r
73 public SimpleType getSimpleType() {
\r
74 if (type != ObjectType.SIMPLE_TYPE)
\r
76 return (SimpleType)obj;
\r
79 public AttributeGroup getAttributeGroup() {
\r
80 if (type != ObjectType.ATTRIBUTE_GROUP)
\r
82 return (AttributeGroup)obj;
\r
85 public SchemaObject getParent() {
\r
89 public OpenAttrs getObj() {
\r
94 public String getName() {
\r
96 case ATTRIBUTE_GROUP:
\r
97 if (obj instanceof NamedAttributeGroup)
\r
98 return ((NamedAttributeGroup)obj).getName();
\r
100 return ((AttributeGroupRef)obj).getRef().getLocalPart();
\r
102 if (rename != null)
\r
103 return rename.getName();
\r
104 return ((ComplexType)obj).getName();
\r
106 if (rename != null)
\r
107 return rename.getName();
\r
108 return ((Element)obj).getName();
\r
110 return ((SimpleType)obj).getName();
\r
112 throw new RuntimeException("Unknown object type " + type);
\r
115 public ObjectType getType() {
\r