]> gerrit.simantics Code Review - simantics/interop.git/blobdiff - org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConverter.java
Handling ComplexTypes defined with SimpleContent
[simantics/interop.git] / org.simantics.xml.sax / src / org / simantics / xml / sax / SchemaConverter.java
index 523788c8e33971819ed2c709cc79c48c642edb66..3b2c1a0c42749b6bddf5babe3525924696bfb844 100644 (file)
@@ -33,6 +33,12 @@ public class SchemaConverter {
        \r
        private String[] header;\r
        \r
+       boolean createPGraph = true;\r
+       boolean createImporter = true;\r
+       boolean createExporter = true;\r
+       \r
+       \r
+       \r
 \r
        public void convertSchema(File schemaFile, File conversionFile, File outputPlugin) throws JAXBException, IOException {\r
                pluginName = outputPlugin.getName();\r
@@ -61,6 +67,18 @@ public class SchemaConverter {
                \r
        }\r
        \r
+       public void setCreateExporter(boolean createExporter) {\r
+               this.createExporter = createExporter;\r
+       }\r
+       \r
+       public void setCreateImporter(boolean createImporter) {\r
+               this.createImporter = createImporter;\r
+       }\r
+       \r
+       public void setCreatePGraph(boolean createPGraph) {\r
+               this.createPGraph = createPGraph;\r
+       }\r
+       \r
        private void convert() throws JAXBException, IOException {\r
                JAXBContext jc = JAXBContext.newInstance("org.w3._2001.xmlschema");\r
                Unmarshaller u = jc.createUnmarshaller();\r
@@ -84,10 +102,43 @@ public class SchemaConverter {
                header[3] = "Date " + new Date().toString();\r
                \r
                \r
+               String ontologyUri = schema.getTargetNamespace();\r
+               if (ontologyUri == null) {\r
+                       ontologyUri = getSchemaFile().getName();\r
+                       \r
+                       int index = ontologyUri.lastIndexOf(".");\r
+                       if (index > 0)\r
+                               ontologyUri = ontologyUri.substring(0, index);\r
+               } \r
+               ontologyUri = ontologyUri.replaceAll(" ", "_");\r
+               String parts[] = ontologyUri.split("/");\r
+               String name = parts[parts.length-1];\r
+               name = name.replaceAll("\\.", "_");\r
+               if (!ontologyUri.startsWith("http://"))\r
+                       ontologyUri = "http://" + ontologyUri.replaceAll("/", "_");\r
+               else\r
+                       ontologyUri = "http://" + ontologyUri.substring("http://".length()).replaceAll("/", "_");\r
+               \r
+               String version = schema.getVersion();\r
+               if (version == null)\r
+                       version = "1.0";\r
+               ontologyUri +="-"+ version;\r
+\r
+               \r
+               String className = getPluginName() + "." + name;\r
+               \r
+               if (createPGraph) {\r
                OntologyGenerator ontologyGenerator = new OntologyGenerator(configuration);\r
-               ontologyGenerator.createOntology(schema, this);\r
+               ontologyGenerator.createOntology(schema, ontologyUri, className, this);\r
+               }\r
+               if (createImporter) {\r
                ImporterGenerator importerGenerator = new ImporterGenerator(configuration);\r
-               importerGenerator.createParser(schema, ontologyGenerator.getClassName(), this);\r
+               importerGenerator.createParser(schema, ontologyUri, className, this);\r
+               }\r
+               if (createExporter) {\r
+               ExporterGenerator exporterGenerator = new ExporterGenerator(configuration);\r
+               exporterGenerator.createParser(schema, ontologyUri,className, this);\r
+               }\r
        }\r
        \r
        public File getOntologyFile() {\r