]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java
XML Elements are exported in the original order (if order is stored during import)
[simantics/interop.git] / org.simantics.xml.sax / src / org / simantics / xml / sax / OntologyGenerator.java
index 287156299dfe0213ee43f5f858ec44afd29ad04a..8e5c3c1fdeb7dfb85a684f855927c4d568410768 100644 (file)
@@ -251,38 +251,57 @@ public class OntologyGenerator extends SchemaConversionBase {
        \r
        \r
        @Override\r
-       protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, boolean reference, String refName, QName refType) {\r
-               String type = getL0TypeFromPrimitiveType(refType);\r
-               SchemaObject obj = null;\r
-               if (type == null) {\r
-                       obj = getWithName(parent, refType.getLocalPart());\r
+       //protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, boolean reference, String refName, QName refType) {\r
+       protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType refType) {\r
+               if (refType != refType.Element) {\r
+                       QName referenceType = null;\r
+                       if (refType == RefType.Type) {\r
+                               referenceType = element.getElement().getType();\r
+                               //refName = element.getElement().getName()\r
+                               SchemaObject eObj = elements.get(element.getElement());\r
+                               if (refName == null)\r
+                                       refName = eObj.getName();\r
+                       } else {\r
+                               referenceType = element.getElement().getRef();\r
+                               if (refName == null)\r
+                                       refName = referenceType.getLocalPart();\r
+                       }\r
+                       String type = getL0TypeFromPrimitiveType(referenceType);\r
+                       SchemaObject obj = null;\r
+                       if (type == null) {\r
+                               obj = getWithName(parent, referenceType.getLocalPart());\r
+                               \r
+                               writer.println(ontRoot+getName(parent)+".has"+refName + " <R " +  ontRoot+ getName(obj,"has"));\r
+                               writer.println("   --> " + ontRoot+getName(obj));\r
+                       } else {\r
+                               writer.println(ontRoot+getName(parent)+".has"+refName + " <R XML.hasElement");\r
+                               writer.println("   --> " + getType(referenceType));\r
+                       }\r
                        \r
-                       writer.println(ontRoot+getName(parent)+".has"+refName + " <R " +  ontRoot+ getName(obj,"has"));\r
-                       writer.println("   --> " + ontRoot+getName(obj));\r
+                       if (useElementList(parent, indicator,element, refType == RefType.Reference, refName, referenceType)) {\r
+                               \r
+                               if (type == null) {\r
+                                       writer.println(ontRoot+getName(parent)+"."+refName + "List <T XML.ElementList");\r
+                                       writer.println(ontRoot+getName(parent)+".has"+refName + "List <R " +  ontRoot+getName(obj,"has")+"List : L0.FunctionalRelation");\r
+                               } else {\r
+                                       writer.println(ontRoot+getName(parent)+"."+refName + "List <T XML.ElementList");\r
+                                       writer.println(ontRoot+getName(parent)+".has"+refName + "List <R XML.hasElementList : L0.FunctionalRelation");  \r
+                               }\r
+                       }\r
                } else {\r
-                       writer.println(ontRoot+getName(parent)+".has"+refName + " <R XML.hasElement");\r
-                       writer.println("   --> " + getType(refType));\r
-               }\r
-               \r
-               if (useElementList(parent, indicator,element, reference, refName, refType)) {\r
+                       Element attrs = element.getElement();\r
+                       SchemaObject obj = getWithObj(parent, attrs);\r
+                       if (refName == null)\r
+                               refName = obj.getName();\r
                        \r
-                       if (type == null) {\r
+                       writer.println(ontRoot+getName(parent)+".has"+refName + " <R " +  ontRoot+ getName(obj,"has"));\r
+                       writer.println("   --> " + ontRoot+getName(obj));\r
+                       if (useElementList(parent, indicator,element, false, refName, new QName(obj.getName()))) {\r
                                writer.println(ontRoot+getName(parent)+"."+refName + "List <T XML.ElementList");\r
                                writer.println(ontRoot+getName(parent)+".has"+refName + "List <R " +  ontRoot+getName(obj,"has")+"List : L0.FunctionalRelation");\r
-                       } else {\r
-                               writer.println(ontRoot+getName(parent)+"."+refName + "List <T XML.ElementList");\r
-                               writer.println(ontRoot+getName(parent)+".has"+refName + "List <R XML.hasElementList : L0.FunctionalRelation");  \r
                        }\r
                }\r
-       }\r
-       protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, boolean reference, String refName, OpenAttrs attrs) {\r
-               SchemaObject obj = getWithObj(parent, attrs);\r
-               writer.println(ontRoot+getName(parent)+".has"+refName + " <R " +  ontRoot+ getName(obj,"has"));\r
-               writer.println("   --> " + ontRoot+getName(obj));\r
-               if (useElementList(parent, indicator,element, reference, refName, new QName(obj.getName()))) {\r
-                       writer.println(ontRoot+getName(parent)+"."+refName + "List <T XML.ElementList");\r
-                       writer.println(ontRoot+getName(parent)+".has"+refName + "List <R " +  ontRoot+getName(obj,"has")+"List : L0.FunctionalRelation");\r
-               }\r
+               \r
        }\r
        \r
        @Override\r