]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax/src/org/simantics/xml/sax/ImporterGenerator.java
Using XML ontology as base of converted XML schemas
[simantics/interop.git] / org.simantics.xml.sax / src / org / simantics / xml / sax / ImporterGenerator.java
index c312ab829d96afc952f6b5728cd5bc2494a2a510..f3279e25ad4ffea031c61057cd38be0b10c00d1e 100644 (file)
@@ -113,36 +113,45 @@ public class ImporterGenerator extends SchemaConversionBase{
                return writer;\r
        }\r
        \r
-       protected String getValueGetter(String binding,String name) {\r
+//     protected String getValueGetter(String binding,String name) {\r
+//             if (binding == null)\r
+//                     return name+".getValue()";\r
+//             if ("STRING".equals(binding))\r
+//                     return name+".getValue()";\r
+//             if ("BOOLEAN".equals(binding))\r
+//                     return "Boolean.parseBoolean("+name+".getValue())";\r
+//             if ("INTEGER".equals(binding))\r
+//                     return "Integer.parseInt("+name+".getValue())";\r
+//             if ("DOUBLE".equals(binding))\r
+//                     return "Double.parseDouble("+name+".getValue())";\r
+//             if ("FLOAT".equals(binding))\r
+//                     return "Float.parseFloat("+name+".getValue())";\r
+//             return name+".getValue()";\r
+//     }\r
+//     protected String getValueGetter(String binding) {\r
+//             if (binding == null)\r
+//                     return "value";\r
+//             if ("STRING".equals(binding))\r
+//                     return "value";\r
+//             if ("BOOLEAN".equals(binding))\r
+//                     return "Boolean.parseBoolean(value)";\r
+//             if ("INTEGER".equals(binding))\r
+//                     return "Integer.parseInt(value)";\r
+//             if ("DOUBLE".equals(binding))\r
+//                     return "Double.parseDouble(value)";\r
+//             if ("FLOAT".equals(binding))\r
+//                     return "Float.parseFloat(value)";\r
+//             return "value";\r
+//     }\r
+       protected String getValueGetter(TypeEntry binding,String name) {\r
                if (binding == null)\r
                        return name+".getValue()";\r
-               if ("STRING".equals(binding))\r
-                       return name+".getValue()";\r
-               if ("BOOLEAN".equals(binding))\r
-                       return "Boolean.parseBoolean("+name+".getValue())";\r
-               if ("INTEGER".equals(binding))\r
-                       return "Integer.parseInt("+name+".getValue())";\r
-               if ("DOUBLE".equals(binding))\r
-                       return "Double.parseDouble("+name+".getValue())";\r
-               if ("FLOAT".equals(binding))\r
-                       return "Float.parseFloat("+name+".getValue())";\r
-               return name+".getValue()";\r
+               return binding.getValueGetter(name);\r
        }\r
-       \r
-       protected String getValueGetter(String binding) {\r
+       protected String getValueGetter(TypeEntry binding) {\r
                if (binding == null)\r
                        return "value";\r
-               if ("STRING".equals(binding))\r
-                       return "value";\r
-               if ("BOOLEAN".equals(binding))\r
-                       return "Boolean.parseBoolean(value)";\r
-               if ("INTEGER".equals(binding))\r
-                       return "Integer.parseInt(value)";\r
-               if ("DOUBLE".equals(binding))\r
-                       return "Double.parseDouble(value)";\r
-               if ("FLOAT".equals(binding))\r
-                       return "Float.parseFloat(value)";\r
-               return "value";\r
+               return binding.getValueGetter();\r
        }\r
        \r
        protected void handle(TopLevelAttribute topLevelAttribute) {\r
@@ -363,10 +372,13 @@ public class ImporterGenerator extends SchemaConversionBase{
                        if (useOriginalList(parent, indicator,element, reference, ref, refType)) {\r
                        // generic list\r
                        fw.delayedWriter.println("            {");\r
-                       fw.delayedWriter.println("               Resource list = graph.getPossibleObject(element.getData(),"+ontShort+"XML_hasOriginalElementList);");\r
+                       //fw.delayedWriter.println("               Resource list = graph.getPossibleObject(element.getData(),"+ontShort+"XML_hasOriginalElementList);");\r
+                       fw.delayedWriter.println("               XMLResource XML = XMLResource.getInstance(graph);");\r
+                       fw.delayedWriter.println("               Resource list = graph.getPossibleObject(element.getData(), XML.hasOriginalElementList);");\r
                        fw.delayedWriter.println("               if (list == null) {");\r
                        fw.delayedWriter.println("                  list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");\r
-                       fw.delayedWriter.println("                  graph.claim(element.getData(),"+ontShort+"XML_hasOriginalElementList,list);");\r
+                       //fw.delayedWriter.println("                  graph.claim(element.getData(),"+ontShort+"XML_hasOriginalElementList,list);");\r
+                       fw.delayedWriter.println("                  graph.claim(element.getData(), XML.hasOriginalElementList,list);");\r
                        fw.delayedWriter.println("               } else {");\r
                        fw.delayedWriter.println("                  org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");\r
                        fw.delayedWriter.println("               }");\r
@@ -381,7 +393,7 @@ public class ImporterGenerator extends SchemaConversionBase{
                        \r
                        fw.delayedWriter2.println("   public static class " + getName(parent) +"_" +ref+" extends org.simantics.xml.sax.base.ValueElementParser {");\r
                        fw.delayedWriter2.println("      "+ getName(parent) +"_" +ref +"(){");\r
-                       fw.delayedWriter2.println("           super(\""+ref+"\"," +this.ontologyClassName+".URIs."+getName(parent) + "_has"+ref+", Bindings."+binding+");");\r
+                       fw.delayedWriter2.println("           super(\""+ref+"\"," +this.ontologyClassName+".URIs."+getName(parent) + "_has"+ref+", "+binding+");");\r
                        fw.delayedWriter2.println("       }");\r
                        fw.delayedWriter2.println("   }");\r
                }\r
@@ -427,10 +439,13 @@ public class ImporterGenerator extends SchemaConversionBase{
                if (useOriginalList(parent, indicator,element, reference, ref, new QName(obj.getName()))) {\r
                // generic list\r
                fw.delayedWriter.println("            {");\r
-               fw.delayedWriter.println("               Resource list = graph.getPossibleObject(element.getData(),"+ontShort+"XML_hasOriginalElementList);");\r
+               //fw.delayedWriter.println("               Resource list = graph.getPossibleObject(element.getData(),"+ontShort+"XML_hasOriginalElementList);");\r
+               fw.delayedWriter.println("               XMLResource XML = XMLResource.getInstance(graph);");\r
+               fw.delayedWriter.println("               Resource list = graph.getPossibleObject(element.getData(), XML.hasOriginalElementList);");\r
                fw.delayedWriter.println("               if (list == null) {");\r
                fw.delayedWriter.println("                  list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");\r
-               fw.delayedWriter.println("                  graph.claim(element.getData(),"+ontShort+"XML_hasOriginalElementList,list);");\r
+               //fw.delayedWriter.println("                  graph.claim(element.getData(),"+ontShort+"XML_hasOriginalElementList,list);");\r
+               fw.delayedWriter.println("                  graph.claim(element.getData(), XML.hasOriginalElementList,list);");\r
                fw.delayedWriter.println("               } else {");\r
                fw.delayedWriter.println("                  org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");\r
                fw.delayedWriter.println("               }");\r
@@ -502,7 +517,8 @@ public class ImporterGenerator extends SchemaConversionBase{
                FileWriter fw = getWriter(parent);\r
                if (primitiveType != null) {\r
                        \r
-                       String binding = getBindingFromPrimitiveType(primitiveType);\r
+                       //String binding = getBindingFromPrimitiveType(primitiveType);\r
+                       TypeEntry binding = getTypeEntry(primitiveType);\r
                        \r
                        if (binding != null) {\r
                                writeAttribute(fw, attrName, relationName, binding, isReference);\r
@@ -522,21 +538,24 @@ public class ImporterGenerator extends SchemaConversionBase{
                        QName base = restriction.getBase();\r
                        \r
                        \r
-                       String binding = getBindingFromPrimitiveType(base);\r
+                       //String binding = getBindingFromPrimitiveType(base);\r
+                       TypeEntry binding = getTypeEntry(base);\r
                        writeAttribute(fw, attrName, relationName, binding, isReference);\r
                } else {\r
                        // TODO : using default String attribute should be configured with rules.\r
                        //throw new RuntimeException("Cannot resolve type for Attribute " + attrName + " -> " + primitiveType.getLocalPart());\r
                        fw.writer.println("    //FIXME: Cannot resolve type for Attribute " + attrName + " Using default type String");\r
-                       writeAttribute(fw, attrName, relationName, "STRING", isReference);\r
+                       //writeAttribute(fw, attrName, relationName, "STRING", isReference);\r
+                       writeAttribute(fw, attrName, relationName, getTypeEntry("string"), isReference);\r
                }\r
        }\r
        \r
-       private void writeAttribute(FileWriter fw, String attrName, String relationName, String binding, boolean isReference) {\r
+       //private void writeAttribute(FileWriter fw, String attrName, String relationName, String binding, boolean isReference) {\r
+       private void writeAttribute(FileWriter fw, String attrName, String relationName, TypeEntry binding, boolean isReference) {\r
                fw.writer.println("      {");\r
                fw.writer.println("         Attribute a = element.getAttribute(\"" +attrName+"\");");\r
                fw.writer.println("         if (a != null) {");\r
-               fw.writer.println("            graph.claimLiteral(element.getData(),"+relationName+","+getValueGetter(binding,"a")+", Bindings."+binding+");");\r
+               fw.writer.println("            graph.claimLiteral(element.getData(),"+relationName+","+getValueGetter(binding,"a")+", "+binding.binding+");");\r
                if (isReference)\r
                fw.writer.println("            idProviderValue = a.getValue();");       \r
                fw.writer.println("         }");\r
@@ -555,10 +574,12 @@ public class ImporterGenerator extends SchemaConversionBase{
                QName base = restriction.getBase();\r
                \r
                \r
-               String binding = getBindingFromPrimitiveType(base);\r
+               //String binding = getBindingFromPrimitiveType(base);\r
+               TypeEntry binding = getTypeEntry(base);\r
                fw.writer.println("   @Override");\r
                fw.writer.println("   public void configure(WriteGraph graph, Element element, java.lang.String value) throws DatabaseException {");\r
-               fw.writer.println("      graph.claimValue(element.getData(),"+getValueGetter(binding)+", Bindings."+binding+");");\r
+               //fw.writer.println("      graph.claimValue(element.getData(),"+getValueGetter(binding)+", Bindings."+binding+");");\r
+               fw.writer.println("      graph.claimValue(element.getData(),"+getValueGetter(binding)+", "+binding.binding +");");\r
                fw.writer.println("   }");\r
                \r
        }\r
@@ -616,7 +637,8 @@ public class ImporterGenerator extends SchemaConversionBase{
                        if (defaultValue == null)\r
                            defaultValue = getDefaultValue(atype);\r
                                \r
-                       String binding = getBindingFromPrimitiveType(atype);\r
+                       //String binding = getBindingFromPrimitiveType(atype);\r
+                       TypeEntry binding = getTypeEntry(atype);\r
                        if (i > 0)\r
                                fw.writer.print(",");\r
                        if (defaultValue != null)\r
@@ -625,7 +647,7 @@ public class ImporterGenerator extends SchemaConversionBase{
                                fw.writer.print(getValueGetter(binding,"a"+(i++)));\r
                }\r
                fw.writer.println("};");\r
-               fw.writer.println("         graph.claimLiteral(element.getData(),"+relationName+", value, Bindings."+arrayBinding+");");\r
+               fw.writer.println("         graph.claimLiteral(element.getData(),"+relationName+", value, "+arrayBinding+");");\r
                fw.writer.println("      }");\r
                \r
        }\r
@@ -911,6 +933,7 @@ public class ImporterGenerator extends SchemaConversionBase{
                writer.println("import org.simantics.db.exception.DatabaseException;");\r
                writer.println("import org.simantics.xml.sax.base.Attribute;");\r
                writer.println("import org.simantics.xml.sax.base.Element;");\r
+               writer.println("import org.simantics.xml.sax.ontology.XMLResource;");\r
                if (!isList) {\r
                writer.println("import org.simantics.layer0.Layer0;");\r
            } else {\r