X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FSchemaConverter.java;h=32ae1672baa41dc4ff00b588556c3f03ecb6f9a5;hb=dd3b2c7ecd5f4b60734f2602b16637aa8be2a263;hp=523788c8e33971819ed2c709cc79c48c642edb66;hpb=ada38ab0a1a98dcb413bef3273064da36ce2d273;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConverter.java b/org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConverter.java index 523788c..32ae167 100644 --- a/org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConverter.java +++ b/org.simantics.xml.sax/src/org/simantics/xml/sax/SchemaConverter.java @@ -33,6 +33,12 @@ public class SchemaConverter { private String[] header; + boolean createPGraph = true; + boolean createImporter = true; + boolean createExporter = true; + + + public void convertSchema(File schemaFile, File conversionFile, File outputPlugin) throws JAXBException, IOException { pluginName = outputPlugin.getName(); @@ -61,6 +67,18 @@ public class SchemaConverter { } + public void setCreateExporter(boolean createExporter) { + this.createExporter = createExporter; + } + + public void setCreateImporter(boolean createImporter) { + this.createImporter = createImporter; + } + + public void setCreatePGraph(boolean createPGraph) { + this.createPGraph = createPGraph; + } + private void convert() throws JAXBException, IOException { JAXBContext jc = JAXBContext.newInstance("org.w3._2001.xmlschema"); Unmarshaller u = jc.createUnmarshaller(); @@ -84,10 +102,37 @@ public class SchemaConverter { header[3] = "Date " + new Date().toString(); + String ontologyName = schema.getTargetNamespace(); + if (ontologyName == null) { + ontologyName = getSchemaFile().getName(); + + int index = ontologyName.lastIndexOf("."); + if (index > 0) + ontologyName = ontologyName.substring(0, index); + } + if (!ontologyName.startsWith("http")) + ontologyName = "http://" + ontologyName; + String parts[] = ontologyName.split("/"); + String name = parts[parts.length-1]; + //String ontRoot = name.substring(0, Math.min(3, name.length())).toUpperCase(); + + + name = name.replaceAll("\\.", "_"); + name = name.replaceAll(" ", "_"); + String className = getPluginName() + "." + name; + + if (createPGraph) { OntologyGenerator ontologyGenerator = new OntologyGenerator(configuration); - ontologyGenerator.createOntology(schema, this); + ontologyGenerator.createOntology(schema, ontologyName, className, this); + } + if (createImporter) { ImporterGenerator importerGenerator = new ImporterGenerator(configuration); - importerGenerator.createParser(schema, ontologyGenerator.getClassName(), this); + importerGenerator.createParser(schema, className, this); + } + if (createExporter) { + ExporterGenerator exporterGenerator = new ExporterGenerator(configuration); + exporterGenerator.createParser(schema, className, this); + } } public File getOntologyFile() {