]> gerrit.simantics Code Review - simantics/interop.git/blob - org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaObject.java
4138222913bb100923e0f08748d73a7445cfb55d
[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.NamedGroup;\r
10 import org.w3._2001.xmlschema.OpenAttrs;\r
11 import org.w3._2001.xmlschema.SimpleType;\r
12 \r
13 public class SchemaObject {\r
14         enum ObjectType{ELEMENT,COMPLEX_TYPE,SIMPLE_TYPE,ATTRIBUTE_GROUP,MODEL_GROUP};\r
15         \r
16         private SchemaObject parent;\r
17         private ObjectType type;\r
18         private OpenAttrs obj;\r
19         private Rename rename;\r
20         \r
21         public SchemaObject(Element element) {\r
22                 this(null,element);\r
23         }\r
24         \r
25         public void setRename(Rename rename) {\r
26                 this.rename = rename;\r
27         }\r
28         \r
29         public SchemaObject(ComplexType complexType) {\r
30                 this(null, complexType);\r
31         }\r
32         \r
33         public SchemaObject(SimpleType simpleType) {\r
34                 this(null, simpleType);\r
35         }\r
36         \r
37         public SchemaObject(NamedGroup namedGroup) {\r
38                 this(null, namedGroup);\r
39         }\r
40         \r
41         public SchemaObject(SchemaObject parent, Element element) {\r
42                 this.parent = parent;\r
43                 this.obj = element;\r
44                 this.type = ObjectType.ELEMENT;\r
45         }\r
46         \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
51         }\r
52         \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
57         }\r
58         \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
63         }\r
64         \r
65 \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
70         }\r
71         \r
72         public Element getElement() {\r
73                 if (type != ObjectType.ELEMENT)\r
74                         return null;\r
75                 return (Element)obj;\r
76         }\r
77         \r
78         public ComplexType getComplexType() {\r
79                 if (type != ObjectType.COMPLEX_TYPE)\r
80                         return null;\r
81                 return (ComplexType)obj;\r
82         }\r
83         \r
84         public SimpleType getSimpleType() {\r
85                 if (type != ObjectType.SIMPLE_TYPE)\r
86                         return null;\r
87                 return (SimpleType)obj;\r
88         }\r
89         \r
90         public AttributeGroup getAttributeGroup() {\r
91                 if (type != ObjectType.ATTRIBUTE_GROUP)\r
92                         return null;\r
93                 return (AttributeGroup)obj;\r
94         }\r
95         \r
96         public NamedGroup getModelGroup() {\r
97                 if (type != ObjectType.MODEL_GROUP)\r
98                         return null;\r
99                 return (NamedGroup)obj;\r
100         }\r
101         \r
102         public SchemaObject getParent() {\r
103                 return parent;\r
104         }\r
105         \r
106         public OpenAttrs getObj() {\r
107                 return obj;\r
108         }\r
109         \r
110         \r
111         public String getName() {\r
112                 switch (type) {\r
113                 case ATTRIBUTE_GROUP:\r
114                         if (obj instanceof NamedAttributeGroup)\r
115                                 return ((NamedAttributeGroup)obj).getName();\r
116                         else\r
117                                 return ((AttributeGroupRef)obj).getRef().getLocalPart();\r
118                 case COMPLEX_TYPE:\r
119                         if (rename != null)\r
120                                 return rename.getName();\r
121                         return ((ComplexType)obj).getName();\r
122                 case ELEMENT:\r
123                         if (rename != null)\r
124                                 return rename.getName();\r
125                         return ((Element)obj).getName();\r
126                 case SIMPLE_TYPE:\r
127                         return ((SimpleType)obj).getName();\r
128                 }\r
129                 throw new RuntimeException("Unknown object type " + type);              \r
130         }\r
131         \r
132         public ObjectType getType() {\r
133                 return type;\r
134         }\r
135 \r
136 }\r