]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaObject.java
c081b8188443a6d49adf4d38fac17ccf33f41187
[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.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
11 \r
12 public class SchemaObject {\r
13         enum ObjectType{ELEMENT,COMPLEX_TYPE,SIMPLE_TYPE,ATTRIBUTE_GROUP};\r
14         \r
15         private SchemaObject parent;\r
16         private ObjectType type;\r
17         private OpenAttrs obj;\r
18         private Rename rename;\r
19         \r
20         public SchemaObject(Element element) {\r
21                 this(null,element);\r
22         }\r
23         \r
24         public void setRename(Rename rename) {\r
25                 this.rename = rename;\r
26         }\r
27         \r
28         public SchemaObject(ComplexType complexType) {\r
29                 this(null, complexType);\r
30         }\r
31         \r
32         public SchemaObject(SimpleType simpleType) {\r
33                 this(null, simpleType);\r
34         }\r
35         \r
36         public SchemaObject(SchemaObject parent, Element element) {\r
37                 this.parent = parent;\r
38                 this.obj = element;\r
39                 this.type = ObjectType.ELEMENT;\r
40         }\r
41         \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
46         }\r
47         \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
52         }\r
53         \r
54 \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
59         }\r
60         \r
61         public Element getElement() {\r
62                 if (type != ObjectType.ELEMENT)\r
63                         return null;\r
64                 return (Element)obj;\r
65         }\r
66         \r
67         public ComplexType getComplexType() {\r
68                 if (type != ObjectType.COMPLEX_TYPE)\r
69                         return null;\r
70                 return (ComplexType)obj;\r
71         }\r
72         \r
73         public SimpleType getSimpleType() {\r
74                 if (type != ObjectType.SIMPLE_TYPE)\r
75                         return null;\r
76                 return (SimpleType)obj;\r
77         }\r
78         \r
79         public AttributeGroup getAttributeGroup() {\r
80                 if (type != ObjectType.ATTRIBUTE_GROUP)\r
81                         return null;\r
82                 return (AttributeGroup)obj;\r
83         }\r
84         \r
85         public SchemaObject getParent() {\r
86                 return parent;\r
87         }\r
88         \r
89         public OpenAttrs getObj() {\r
90                 return obj;\r
91         }\r
92         \r
93         \r
94         public String getName() {\r
95                 switch (type) {\r
96                 case ATTRIBUTE_GROUP:\r
97                         if (obj instanceof NamedAttributeGroup)\r
98                                 return ((NamedAttributeGroup)obj).getName();\r
99                         else\r
100                                 return ((AttributeGroupRef)obj).getRef().getLocalPart();\r
101                 case COMPLEX_TYPE:\r
102                         if (rename != null)\r
103                                 return rename.getName();\r
104                         return ((ComplexType)obj).getName();\r
105                 case ELEMENT:\r
106                         if (rename != null)\r
107                                 return rename.getName();\r
108                         return ((Element)obj).getName();\r
109                 case SIMPLE_TYPE:\r
110                         return ((SimpleType)obj).getName();\r
111                 }\r
112                 throw new RuntimeException("Unknown object type " + type);              \r
113         }\r
114         \r
115         public ObjectType getType() {\r
116                 return type;\r
117         }\r
118 \r
119 }\r