]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaObject.java
Attribute namespace + multi-schema data export
[simantics/interop.git] / org.simantics.xml.sax / src / org / simantics / xml / sax / SchemaObject.java
index 53f9da9fb0b4a749041f8704440aa5b34627f36f..cae979265a0f8f2e79fe13aa40b0acd8f9601927 100644 (file)
@@ -1,6 +1,7 @@
 package org.simantics.xml.sax;
 
 import org.simantics.xml.sax.configuration.Rename;
+import org.w3._2001.xmlschema.Attribute;
 import org.w3._2001.xmlschema.AttributeGroup;
 import org.w3._2001.xmlschema.AttributeGroupRef;
 import org.w3._2001.xmlschema.ComplexType;
@@ -11,7 +12,7 @@ import org.w3._2001.xmlschema.OpenAttrs;
 import org.w3._2001.xmlschema.SimpleType;
 
 public class SchemaObject {
-       enum ObjectType{ELEMENT,COMPLEX_TYPE,SIMPLE_TYPE,ATTRIBUTE_GROUP,MODEL_GROUP};
+       enum ObjectType{ELEMENT,COMPLEX_TYPE,SIMPLE_TYPE,ATTRIBUTE_GROUP,MODEL_GROUP,ATTRIBUTE};
        
        private SchemaConversionBase sc;
        private String name;
@@ -41,6 +42,10 @@ public class SchemaObject {
                this(sc,null, namedGroup);
        }
        
+       public SchemaObject(SchemaConversionBase sc, Attribute attribute) {
+               this(sc,null, attribute);
+       }
+       
        public SchemaObject(SchemaConversionBase sc,SchemaObject parent, Element element) {
                this.parent = parent;
                this.obj = element;
@@ -82,6 +87,14 @@ public class SchemaObject {
                _init();
        }
        
+       public SchemaObject(SchemaConversionBase sc,SchemaObject parent, Attribute attribute) {
+               this.parent = parent;
+               this.obj = attribute;
+               this.type = ObjectType.ATTRIBUTE;
+               this.sc = sc;
+               _init();
+       }
+       
        private void _init() {
                name = _getName();
                if (name != null)
@@ -118,6 +131,12 @@ public class SchemaObject {
                return (NamedGroup)obj;
        }
        
+       public Attribute getAttribute() {
+               if (type != ObjectType.ATTRIBUTE)
+                       return null;
+               return (Attribute)obj;
+       }
+       
        public SchemaObject getParent() {
                return parent;
        }
@@ -153,6 +172,8 @@ public class SchemaObject {
                        return ((Element)obj).getName();
                case SIMPLE_TYPE:
                        return ((SimpleType)obj).getName();
+               case ATTRIBUTE:
+                       return ((Attribute)obj).getName();
                }
                throw new RuntimeException("Unknown object type " + type);              
        }