X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FOntologyGenerator.java;h=3aea73436367a3ab596f94a5e9854f83c3bb8dc5;hb=HEAD;hp=3e0ffb1d3136327fb703a8421d01af176f384499;hpb=04f3fb6796cd6225be090e1e1feb866ae0d03173;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java b/org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java index 3e0ffb1..3aea734 100644 --- a/org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java +++ b/org.simantics.xml.sax/src/org/simantics/xml/sax/OntologyGenerator.java @@ -3,6 +3,9 @@ package org.simantics.xml.sax; import java.io.FileNotFoundException; import java.io.PrintWriter; import java.io.StringWriter; +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; @@ -86,6 +89,23 @@ public class OntologyGenerator implements SchemaConversionComponent { writer.println(); writer.println(); + Set children = new HashSet<>(); + Deque stack = new ArrayDeque<>(); + stack.addAll(converter.getSubConverters()); + while (!stack.isEmpty()) { + SchemaConverter sc = stack.pop(); + if (children.contains(sc)) + continue; + children.add(sc); + stack.addAll(sc.getSubConverters()); + } + children.remove(converter); + for (SchemaConverter sc : children) { + writer.println(sc.shortName + " = <" + sc.ontologyUri +">"); + } + + writer.println(); + ontRoot += "."; writer.println(ontRoot+"SimpleTypes : L0.Library"); writer.println(ontRoot+"ComplexTypes : L0.Library"); @@ -93,6 +113,8 @@ public class OntologyGenerator implements SchemaConversionComponent { writer.println(); writer.println(commentTag + " Interpreted from schema"); writer.println(); + + base.handle(this); } @@ -138,9 +160,9 @@ public class OntologyGenerator implements SchemaConversionComponent { writer.println(); if (!single) { - String elementListType = getName(parent) + "." + name + "List"; + String elementListType = getName(parent) + "." + name + "_List"; writer.println(elementListType + " " + elementListType); } @@ -162,7 +184,7 @@ public class OntologyGenerator implements SchemaConversionComponent { } else { referenceType = element.getElement().getRef(); if (refName == null) - refName = referenceType.getLocalPart(); + refName = base.getName(referenceType); } String type = base.getL0TypeFromPrimitiveType(referenceType); SchemaObject obj = null; @@ -182,10 +204,10 @@ public class OntologyGenerator implements SchemaConversionComponent { if (type == null) { writer.println(getName(parent)+"."+refName + "List " + getName(obj)); if (base.useElementList(parent, indicator,element, false, refName, new QName(obj.getName()))) { - writer.println(getName(parent)+"."+refName + "List " + name); - writer.println(relationName+ "List " + name + "List"); + writer.println(relationName+ "_List " + name + "_List"); writer.println(); // Attributes @@ -437,7 +465,7 @@ public class OntologyGenerator implements SchemaConversionComponent { Element element = elementObj.getElement(); String name = getName(elementObj);//element.getName(); - if ("Text".equals(name)) + if (name.contains("Canvas")) System.out.println(); String type = "XML.Element"; @@ -453,16 +481,16 @@ public class OntologyGenerator implements SchemaConversionComponent { throw new RuntimeException("Cannot get L0 type for " + base.getLocalPart()); types.add(l0Type); } else if (this.base.isElementRef(base.getLocalPart())) - types.add(ontRoot+base.getLocalPart()); + types.add(ontRoot+this.base.getName(base)); else - types.add(ontRoot+getComplexTypePrefix()+base.getLocalPart()); + types.add(ontRoot+getComplexTypePrefix()+this.base.getName(base)); } QName substitution = element.getSubstitutionGroup(); if (substitution != null) { if (this.base.isElementRef(substitution.getLocalPart())) - types.add(ontRoot+substitution.getLocalPart()); + types.add(ontRoot+this.base.getName(substitution)); else - types.add( ontRoot+getComplexTypePrefix()+substitution.getLocalPart()); + types.add( ontRoot+getComplexTypePrefix()+this.base.getName(substitution)); } for (String t : types) { type += "