]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaObject.java
3b45c7e4d3e5ed54d6df7609a1c344792ee602c4
[simantics/interop.git] / org.simantics.xml.sax / src / org / simantics / xml / sax / SchemaObject.java
1 package org.simantics.xml.sax;\r
2 \r
3 import org.w3._2001.xmlschema.AttributeGroup;\r
4 import org.w3._2001.xmlschema.AttributeGroupRef;\r
5 import org.w3._2001.xmlschema.ComplexType;\r
6 import org.w3._2001.xmlschema.Element;\r
7 import org.w3._2001.xmlschema.NamedAttributeGroup;\r
8 import org.w3._2001.xmlschema.OpenAttrs;\r
9 import org.w3._2001.xmlschema.SimpleType;\r
10 \r
11 public class SchemaObject {\r
12         enum ObjectType{ELEMENT,COMPLEX_TYPE,SIMPLE_TYPE,ATTRIBUTE_GROUP};\r
13         \r
14         private SchemaObject parent;\r
15         private ObjectType type;\r
16         private OpenAttrs obj;\r
17         \r
18         public SchemaObject(Element element) {\r
19                 this(null,element);\r
20         }\r
21         \r
22         public SchemaObject(ComplexType complexType) {\r
23                 this(null, complexType);\r
24         }\r
25         \r
26         public SchemaObject(SimpleType simpleType) {\r
27                 this(null, simpleType);\r
28         }\r
29         \r
30         public SchemaObject(SchemaObject parent, Element element) {\r
31                 this.parent = parent;\r
32                 this.obj = element;\r
33                 this.type = ObjectType.ELEMENT;\r
34         }\r
35         \r
36         public SchemaObject(SchemaObject parent, ComplexType complexType) {\r
37                 this.parent = parent;\r
38                 this.obj = complexType;\r
39                 this.type = ObjectType.COMPLEX_TYPE;\r
40         }\r
41         \r
42         public SchemaObject(SchemaObject parent, AttributeGroup attributeGroup) {\r
43                 this.parent = parent;\r
44                 this.obj = attributeGroup;\r
45                 this.type = ObjectType.ATTRIBUTE_GROUP;\r
46         }\r
47         \r
48 \r
49         public SchemaObject(SchemaObject parent, SimpleType simpleType) {\r
50                 this.parent = parent;\r
51                 this.obj = simpleType;\r
52                 this.type = ObjectType.SIMPLE_TYPE;\r
53         }\r
54         \r
55         public Element getElement() {\r
56                 if (type != ObjectType.ELEMENT)\r
57                         return null;\r
58                 return (Element)obj;\r
59         }\r
60         \r
61         public ComplexType getComplexType() {\r
62                 if (type != ObjectType.COMPLEX_TYPE)\r
63                         return null;\r
64                 return (ComplexType)obj;\r
65         }\r
66         \r
67         public SimpleType getSimpleType() {\r
68                 if (type != ObjectType.SIMPLE_TYPE)\r
69                         return null;\r
70                 return (SimpleType)obj;\r
71         }\r
72         \r
73         public AttributeGroup getAttributeGroup() {\r
74                 if (type != ObjectType.ATTRIBUTE_GROUP)\r
75                         return null;\r
76                 return (AttributeGroup)obj;\r
77         }\r
78         \r
79         public SchemaObject getParent() {\r
80                 return parent;\r
81         }\r
82         \r
83         public OpenAttrs getObj() {\r
84                 return obj;\r
85         }\r
86         \r
87         \r
88         public String getName() {\r
89                 switch (type) {\r
90                 case ATTRIBUTE_GROUP:\r
91                         if (obj instanceof NamedAttributeGroup)\r
92                                 return ((NamedAttributeGroup)obj).getName();\r
93                         else\r
94                                 return ((AttributeGroupRef)obj).getRef().getLocalPart();\r
95                 case COMPLEX_TYPE:\r
96                         return ((ComplexType)obj).getName();\r
97                 case ELEMENT:\r
98                         return ((Element)obj).getName();\r
99                 case SIMPLE_TYPE:\r
100                         return ((SimpleType)obj).getName();\r
101                 }\r
102                 throw new RuntimeException("Unknown object type " + type);              \r
103         }\r
104         \r
105         public ObjectType getType() {\r
106                 return type;\r
107         }\r
108 \r
109 }\r