]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax/src/org/simantics/xml/sax/ImporterGenerator.java
Initial support for multi-schema parsers
[simantics/interop.git] / org.simantics.xml.sax / src / org / simantics / xml / sax / ImporterGenerator.java
index d192ad77000aa3f60e4fe25bdf9209364b93b1c0..4245e3e1b4d471cd19e233e757bd0ae977554578 100644 (file)
@@ -65,6 +65,7 @@ public class ImporterGenerator extends SchemaConversionBase{
                ontShort +=".";\r
                String parserPackagePostfix = "_elem";\r
                String importerClassPostfix = "Importer";\r
+               String parserClassPostfix = "Parser";\r
                elementPackageName = name+parserPackagePostfix;\r
                \r
                importParserDir= new File(converter.getParserDir().getAbsolutePath()+"/"+elementPackageName);\r
@@ -72,26 +73,47 @@ public class ImporterGenerator extends SchemaConversionBase{
                        importParserDir.mkdirs();\r
                \r
                handle(schema);\r
-               \r
-               File importParserFile = new File(converter.getParserDir().getAbsolutePath()+"/"+name+importerClassPostfix+".java");\r
-               PrintWriter mainWriter = createFile(importParserFile);\r
+               // Create Importer class\r
+               File importerFile = new File(converter.getParserDir().getAbsolutePath()+"/"+name+importerClassPostfix+".java");\r
+               PrintWriter mainWriter = createFile(importerFile);\r
                mainWriter.println("package " + converter.getPluginName() +";");\r
                mainWriter.println();\r
                mainWriter.println("import java.io.File;");\r
                mainWriter.println("import org.simantics.db.Session;");\r
                mainWriter.println("import org.simantics.xml.sax.base.AbstractImporter;");\r
-               mainWriter.println("import org.simantics.xml.sax.base.XMLParser;");\r
                mainWriter.println();\r
                mainWriter.println("public class " + name + importerClassPostfix+" extends AbstractImporter {");\r
                mainWriter.println();\r
                mainWriter.println("   public " + name + importerClassPostfix+"(Session session, File file)  {");\r
-               mainWriter.println("      super(session,file);");\r
+               mainWriter.println("      super(session, file, new "+name + parserClassPostfix+"());");\r
                mainWriter.println("   }");\r
                mainWriter.println();\r
-               mainWriter.println("   @Override");\r
-               mainWriter.println("   public void configure(XMLParser parser) {");\r
+//             mainWriter.println("   @Override");\r
+//             mainWriter.println("   public void configure(XMLParser parser) {");\r
+//             for (String s : ruleClassNames) {\r
+//             mainWriter.println("      parser.add(new "+s+"());");\r
+//             }\r
+//             mainWriter.println("   }");\r
+               mainWriter.println("}");\r
+               \r
+               mainWriter.println();\r
+               mainWriter.flush();\r
+               mainWriter.close();\r
+               \r
+               // Create Parser class\r
+               File parserFile = new File(converter.getParserDir().getAbsolutePath()+"/"+name+parserClassPostfix+".java");\r
+               mainWriter = createFile(parserFile);\r
+               mainWriter.println("package " + converter.getPluginName() +";");\r
+               mainWriter.println();\r
+               mainWriter.println("import org.simantics.xml.sax.base.XMLParser;");\r
+               mainWriter.println();\r
+               mainWriter.println("public class " + name + parserClassPostfix+" extends XMLParser {");\r
+               mainWriter.println();\r
+               mainWriter.println("   public " + name + parserClassPostfix+"()  {");\r
+               if (schema.getTargetNamespace() != null)\r
+               mainWriter.println("      setSchemaURI(\""+schema.getTargetNamespace()+"\");");\r
                for (String s : ruleClassNames) {\r
-               mainWriter.println("      parser.add(new "+s+"());");\r
+               mainWriter.println("      add(new "+s+"());");\r
                }\r
                mainWriter.println("   }");\r
                mainWriter.println("}");\r
@@ -359,7 +381,7 @@ public class ImporterGenerator extends SchemaConversionBase{
                        if (!className.equals(refClassName))\r
                        fw.writer.println("        addParser("+refClassName+".class);");\r
                        \r
-                       fw.delayedWriter.println("         if (child.getParser() instanceof "+refClassName+"){");\r
+                       fw.delayedWriter.println("         if (child.getElementParser() instanceof "+refClassName+"){");\r
                        fw.delayedWriter.println("            graph.claim(element.getData(), "+ontShort+getName(parent)+"_has"+ref + ", child.getData());");\r
                        if (useElementList(parent, indicator,element, reference, ref, refType)) {\r
        \r
@@ -397,7 +419,7 @@ public class ImporterGenerator extends SchemaConversionBase{
                        fw.writer.println("        addParser(\""+ ref +"\", "+getName(parent) +"_" +ref+".class);");\r
                        \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("      public "+ getName(parent) +"_" +ref +"(){");\r
                        fw.delayedWriter2.println("           super(\""+ref+"\"," +this.ontologyClassName+".URIs."+getName(parent) + "_has"+ref+", "+binding+");");\r
                        fw.delayedWriter2.println("       }");\r
                        fw.delayedWriter2.println("   }");\r
@@ -426,7 +448,7 @@ public class ImporterGenerator extends SchemaConversionBase{
                else\r
                fw.writer.println("        addParser("+className+".class);");\r
                \r
-               fw.delayedWriter.println("         if (child.getParser() instanceof "+className+"){");\r
+               fw.delayedWriter.println("         if (child.getElementParser() instanceof "+className+"){");\r
                fw.delayedWriter.println("            graph.claim(element.getData(), "+ontShort+getName(parent)+"_has"+ref + ", child.getData());");\r
                if (useElementList(parent, indicator,element, reference, ref, new QName(obj.getName()))) {\r
 \r
@@ -835,8 +857,6 @@ public class ImporterGenerator extends SchemaConversionBase{
        }\r
        \r
        private Inheritance getElementInheritance(SchemaObject topLevelElementObj) {\r
-               if (topLevelElementObj.getElement() != null && topLevelElementObj.getElement().getName().equals("ByteString"))\r
-                       System.out.println();\r
                Element topLevelElement = topLevelElementObj.getElement();\r
                Inheritance inheritance = new Inheritance();\r
                if (topLevelElement.getType() != null) {\r