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.NamedGroup;
\r
10 import org.w3._2001.xmlschema.OpenAttrs;
\r
11 import org.w3._2001.xmlschema.SimpleType;
\r
13 public class SchemaObject {
\r
14 enum ObjectType{ELEMENT,COMPLEX_TYPE,SIMPLE_TYPE,ATTRIBUTE_GROUP,MODEL_GROUP};
\r
16 private SchemaObject parent;
\r
17 private ObjectType type;
\r
18 private OpenAttrs obj;
\r
19 private Rename rename;
\r
21 public SchemaObject(Element element) {
\r
25 public void setRename(Rename rename) {
\r
26 this.rename = rename;
\r
29 public SchemaObject(ComplexType complexType) {
\r
30 this(null, complexType);
\r
33 public SchemaObject(SimpleType simpleType) {
\r
34 this(null, simpleType);
\r
37 public SchemaObject(NamedGroup namedGroup) {
\r
38 this(null, namedGroup);
\r
41 public SchemaObject(SchemaObject parent, Element element) {
\r
42 this.parent = parent;
\r
44 this.type = ObjectType.ELEMENT;
\r
47 public SchemaObject(SchemaObject parent, ComplexType complexType) {
\r
48 this.parent = parent;
\r
49 this.obj = complexType;
\r
50 this.type = ObjectType.COMPLEX_TYPE;
\r
53 public SchemaObject(SchemaObject parent, AttributeGroup attributeGroup) {
\r
54 this.parent = parent;
\r
55 this.obj = attributeGroup;
\r
56 this.type = ObjectType.ATTRIBUTE_GROUP;
\r
59 public SchemaObject(SchemaObject parent, NamedGroup namedGroup) {
\r
60 this.parent = parent;
\r
61 this.obj = namedGroup;
\r
62 this.type = ObjectType.MODEL_GROUP;
\r
66 public SchemaObject(SchemaObject parent, SimpleType simpleType) {
\r
67 this.parent = parent;
\r
68 this.obj = simpleType;
\r
69 this.type = ObjectType.SIMPLE_TYPE;
\r
72 public Element getElement() {
\r
73 if (type != ObjectType.ELEMENT)
\r
75 return (Element)obj;
\r
78 public ComplexType getComplexType() {
\r
79 if (type != ObjectType.COMPLEX_TYPE)
\r
81 return (ComplexType)obj;
\r
84 public SimpleType getSimpleType() {
\r
85 if (type != ObjectType.SIMPLE_TYPE)
\r
87 return (SimpleType)obj;
\r
90 public AttributeGroup getAttributeGroup() {
\r
91 if (type != ObjectType.ATTRIBUTE_GROUP)
\r
93 return (AttributeGroup)obj;
\r
96 public NamedGroup getModelGroup() {
\r
97 if (type != ObjectType.MODEL_GROUP)
\r
99 return (NamedGroup)obj;
\r
102 public SchemaObject getParent() {
\r
106 public OpenAttrs getObj() {
\r
111 public String getName() {
\r
113 case ATTRIBUTE_GROUP:
\r
114 if (obj instanceof NamedAttributeGroup)
\r
115 return ((NamedAttributeGroup)obj).getName();
\r
117 return ((AttributeGroupRef)obj).getRef().getLocalPart();
\r
119 if (rename != null)
\r
120 return rename.getName();
\r
121 return ((ComplexType)obj).getName();
\r
123 if (rename != null)
\r
124 return rename.getName();
\r
125 return ((Element)obj).getName();
\r
127 return ((SimpleType)obj).getName();
\r
129 throw new RuntimeException("Unknown object type " + type);
\r
132 public ObjectType getType() {
\r