X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FExporterGenerator.java;h=121a6352b8e73401ad894c00b90add2e29083c7d;hb=04f3fb6796cd6225be090e1e1feb866ae0d03173;hp=74538ea1c7716cc9fca8d2f94aa94d9159b628f3;hpb=90d821c64af7690fe7e108c3f5b89da8fa5395fc;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax/src/org/simantics/xml/sax/ExporterGenerator.java b/org.simantics.xml.sax/src/org/simantics/xml/sax/ExporterGenerator.java index 74538ea..121a635 100644 --- a/org.simantics.xml.sax/src/org/simantics/xml/sax/ExporterGenerator.java +++ b/org.simantics.xml.sax/src/org/simantics/xml/sax/ExporterGenerator.java @@ -11,10 +11,12 @@ import java.util.Map; import javax.xml.namespace.QName; import org.simantics.utils.datastructures.BijectionMap; +import org.simantics.xml.sax.SchemaConversionBase.Inheritance; +import org.simantics.xml.sax.SchemaConversionBase.InheritanceType; import org.simantics.xml.sax.SchemaConversionBase.RefType; +import org.simantics.xml.sax.SchemaConversionBase.TypeEntry; import org.simantics.xml.sax.SchemaObject.ObjectType; import org.simantics.xml.sax.configuration.AttributeComposition; -import org.simantics.xml.sax.configuration.Configuration; import org.simantics.xml.sax.configuration.IDProvider; import org.simantics.xml.sax.configuration.IDReference; import org.simantics.xml.sax.configuration.UnrecognizedChildElement; @@ -26,31 +28,18 @@ import org.w3._2001.xmlschema.Element; import org.w3._2001.xmlschema.LocalComplexType; import org.w3._2001.xmlschema.LocalSimpleType; import org.w3._2001.xmlschema.NamedAttributeGroup; +import org.w3._2001.xmlschema.NamedGroup; import org.w3._2001.xmlschema.Restriction; -import org.w3._2001.xmlschema.Schema; import org.w3._2001.xmlschema.SimpleType; -import org.w3._2001.xmlschema.TopLevelAttribute; public class ExporterGenerator extends JavaGenerator{ - public ExporterGenerator(Configuration configuration) { - super(configuration); + public ExporterGenerator(SchemaConverter converter, SchemaConversionBase base) { + super(converter, base); } - - - public void createParser(Schema schema,String ontologyUri, String className, SchemaConverter converter) throws IOException { - this.schema = schema; - this.ontologyClassName = className; - this.converter = converter; - - - String packageParts[] = className.split("\\."); - String name = packageParts[packageParts.length-1]; - + public void createParser() throws IOException { - ontShort = name.substring(0, 3).toUpperCase(); - ontShort +="."; String parserPackagePostfix = "_exp"; String importerClassPostfix = "Exporter"; String parserClassPostfix = "Writer"; @@ -60,7 +49,7 @@ public class ExporterGenerator extends JavaGenerator{ if (!importParserDir.exists()) importParserDir.mkdirs(); - handle(schema); + base.handle(this); // Create Importer class File importerFile = new File(converter.getParserDir().getAbsolutePath()+"/"+name+importerClassPostfix+".java"); PrintWriter mainWriter = createFile(importerFile); @@ -119,21 +108,28 @@ public class ExporterGenerator extends JavaGenerator{ mainWriter.close(); } - protected void handle(TopLevelAttribute topLevelAttribute) { - - } +// @Override +// protected void handle(TopLevelAttribute topLevelAttribute) { +// +// } @Override - protected String getBaseClass(ObjectType type) { + public String getBaseClass(ObjectType type) { return "org.simantics.xml.sax.base.XMLElementNamedChildWriterBase"; } @Override - protected void handleSimpleType(SchemaObject parent, SchemaObject simpleTypeObj) { + public void handleSimpleType(SchemaObject parent, SchemaObject simpleTypeObj) { + } + + @Override + public void handle(SchemaObject parent, NamedGroup attribute) { + // TODO Auto-generated method stub + } @Override - protected void handleComplexType(SchemaObject complexTypeObj) { + public void handleComplexType(SchemaObject complexTypeObj) { ComplexType topLevelComplexType = complexTypeObj.getComplexType(); String name = getName(complexTypeObj); @@ -162,9 +158,9 @@ public class ExporterGenerator extends JavaGenerator{ // inherited = true; // } // } - Inheritance inheritance = getInheritance(complexTypeObj); + Inheritance inheritance = base.getInheritance(complexTypeObj); - provider = getIDProvider(topLevelComplexType); + provider = base.getIDProvider(topLevelComplexType); // List references = getIDReferences(topLevelComplexType); // UnrecognizedChildElement unknownChildElement = getUnknown(topLevelComplexType); @@ -217,7 +213,7 @@ public class ExporterGenerator extends JavaGenerator{ fw.writer.println(" super(graph);"); fw.writer.println(" "+getOntologyImport()); - handleComplexTypeExtension(complexTypeObj); + base.handleComplexTypeExtension(complexTypeObj); fw.writer.println(" }"); @@ -251,8 +247,8 @@ public class ExporterGenerator extends JavaGenerator{ } fw.writer.println(" "+getOntologyImport()); fw.writer.println(" for (Statement attribute : attributes) {"); - handleComplexTypeAttributes(complexTypeObj); - handleExtensionAttributes(complexTypeObj); + base.handleComplexTypeAttributes(complexTypeObj); + base.handleExtensionAttributes(complexTypeObj); fw.writer.println(" }"); fw.writer.println(" }"); @@ -280,10 +276,15 @@ public class ExporterGenerator extends JavaGenerator{ protected void createReferenceIndicator(SchemaObject parent, RefType referenceType, String refName, String objectName, String primaryClassName, String secondaryClassName, boolean useElementList, boolean useOriginalList) { FileWriter fw = getWriter(parent); + if ("TextOrField".equals(refName)) + System.out.println(); if (referenceType == RefType.Type) { // create internal class for handling the element and child attachment secondaryClassName = getName(parent) +"_" +objectName; - fw.writer.println(" addRelationWriter("+ontShort+ getName(parent)+"_has"+refName +", "+secondaryClassName+".class);"); + if (objectName.equals(refName)) + fw.writer.println(" addRelationWriter("+ontShort+ getName(parent)+"_has"+refName +", "+secondaryClassName+".class);"); + else // FIXME : type name may not be correct + fw.writer.println(" addRelationTypeWriter("+ontShort+ getName(parent)+"_has"+refName +", " +ontShort+primaryClassName +", "+secondaryClassName+".class);"); fw.delayedWriter2.println(" public static class " + secondaryClassName +" extends " + primaryClassName +"{"); fw.delayedWriter2.println(" public "+ secondaryClassName +"(ReadGraph graph){"); fw.delayedWriter2.println(" super(graph);"); @@ -304,17 +305,17 @@ public class ExporterGenerator extends JavaGenerator{ if (useElementList) { // element type specific list - fw.delayedWriter.println(" {"); - fw.delayedWriter.println(" org.simantics.db.Resource list = graph.getPossibleObject(instance.getResource(),"+ontShort+getName(parent)+"_has"+refName + "List);"); - fw.delayedWriter.println(" if (list != null) {"); - fw.delayedWriter.println(" java.util.List l = org.simantics.db.common.utils.ListUtils.toList(graph, list);"); - fw.delayedWriter.println(" result.addAll(l);"); - fw.delayedWriter.println(" } else {"); - fw.delayedWriter.println(" result.addAll(graph.getObjects(instance.getResource(), "+ontShort+getName(parent)+"_has"+refName + "));"); - fw.delayedWriter.println(" }"); - fw.delayedWriter.println(" }"); + fw.delayedWriter.println(" {"); + fw.delayedWriter.println(" org.simantics.db.Resource list = graph.getPossibleObject(instance.getResource(),"+ontShort+getName(parent)+"_has"+refName + "List);"); + fw.delayedWriter.println(" if (list != null) {"); + fw.delayedWriter.println(" java.util.List l = org.simantics.db.common.utils.ListUtils.toList(graph, list);"); + fw.delayedWriter.println(" result.addAll(l);"); + fw.delayedWriter.println(" } else {"); + fw.delayedWriter.println(" result.addAll(graph.getObjects(instance.getResource(), "+ontShort+getName(parent)+"_has"+refName + "));"); + fw.delayedWriter.println(" }"); + fw.delayedWriter.println(" }"); } else { - fw.delayedWriter.println(" result.addAll(graph.getObjects(instance.getResource(), "+ontShort+getName(parent)+"_has"+refName + "));"); + fw.delayedWriter.println(" result.addAll(graph.getObjects(instance.getResource(), "+ontShort+getName(parent)+"_has"+refName + "));"); } // if (useOriginalList(parent, indicator,element, reference, ref, refType)) { // // generic list @@ -336,17 +337,21 @@ public class ExporterGenerator extends JavaGenerator{ } @Override - protected void createPrimitiveIndicator(SchemaObject parent, String refName, String binding) { + protected void createPrimitiveIndicator(SchemaObject parent, String refName, TypeEntry typeEntry, QName typeName) { FileWriter fw = getWriter(parent); - //SchemaObject refElement = elementName.get(refType.getLocalPart()); - //writer.println(commentTag+ontShort+"."+parent+".has"+ref + " " + primitiveType.getLocalPart()); fw.writer.println(" //FIXME: Cannot resolve type for Attribute " + attrName + " Using default type String"); //writeAttribute(fw, attrName, relationName, "STRING", isReference); - writeAttribute(fw, attrName, relationName, getTypeEntry("string"), isReference); + writeAttribute(fw, attrName, relationName, base.getTypeEntry("string"), isReference); } } - //private void writeAttribute(FileWriter fw, String attrName, String relationName, String binding, boolean isReference) { private void writeAttribute(FileWriter fw, String attrName, String relationName, TypeEntry binding, boolean isReference) { fw.writer.println(" {"); fw.writer.println(" if (attribute.getPredicate().equals("+relationName+")) {"); @@ -508,7 +503,7 @@ public class ExporterGenerator extends JavaGenerator{ } @Override - protected void handleAttributes(SchemaObject simpleTypeObj) { + public void handleAttributes(SchemaObject simpleTypeObj) { SchemaObject parent = simpleTypeObj.getParent(); FileWriter fw = getWriter(parent); @@ -520,7 +515,7 @@ public class ExporterGenerator extends JavaGenerator{ //String binding = getBindingFromPrimitiveType(base); - TypeEntry binding = getTypeEntry(base); + TypeEntry binding = this.base.getTypeEntry(base); fw.writer.println(" @Override"); fw.writer.println(" public void characters(ReadGraph graph, WriterElement instance, XMLStreamWriter writer) throws XMLStreamException, DatabaseException {"); @@ -530,10 +525,10 @@ public class ExporterGenerator extends JavaGenerator{ } @Override - protected void handle(SchemaObject parent, AttributeGroup attribute) { + public void handle(SchemaObject parent, AttributeGroup attribute) { if (parent != null) { FileWriter fw = getWriter(parent); - NamedAttributeGroup group = getAttributeGroup(attribute.getRef().getLocalPart()); + NamedAttributeGroup group = this.base.getAttributeGroup(attribute.getRef()); fw.writer.println(commentTag+" AttributeGroup " + group.getName()); SchemaObject obj = new SchemaObject(parent,attribute); for (Annotated annotated : group.getAttributeOrAttributeGroup()) { @@ -551,10 +546,10 @@ public class ExporterGenerator extends JavaGenerator{ } @Override - protected void handleAttributeComposition(SchemaObject parent, AttributeComposition composition, BijectionMap attributes) { + public void handleAttributeComposition(SchemaObject parent, AttributeComposition composition, BijectionMap attributes) { FileWriter fw = getWriter(parent); - QName type = new QName(CONVERSION_NS, composition.getType()); - TypeEntry typeEntry = getTypeEntry(type); + QName type = new QName(SchemaConversionBase.CONVERSION_NS, composition.getType()); + TypeEntry typeEntry = this.base.getTypeEntry(type); String arrayBinding = typeEntry.binding;//getBindingFromPrimitiveType(type); String javaType = typeEntry.javaType;//getJavaTypeFromPrimitiveType(type); String name = composition.getName(); @@ -603,7 +598,7 @@ public class ExporterGenerator extends JavaGenerator{ } protected String getDefaultValue(QName atype) { - Map types = typeMap.get(atype.getNamespaceURI()); + Map types = this.base.typeMap.get(atype.getNamespaceURI()); if (types == null) return null; TypeEntry entry = types.get(atype.getLocalPart()); @@ -612,14 +607,9 @@ public class ExporterGenerator extends JavaGenerator{ return entry.defaultValue; } - - - - - IDProvider provider; @Override - protected void handleElement(SchemaObject elementObj) { + public void handleElement(SchemaObject elementObj) { Element element = elementObj.getElement(); String name = getName(elementObj);//topLevelElement.getName(); @@ -634,11 +624,11 @@ public class ExporterGenerator extends JavaGenerator{ writers.put(elementObj, fw); boolean isList = false; - Inheritance inheritance = getInheritance(elementObj); + Inheritance inheritance = this.base.getInheritance(elementObj); - provider = getIDProvider(element); - List references = getIDReferences(element); - UnrecognizedChildElement unknownChildElement = getUnknown(element); + provider = this.base.getIDProvider(element); + List references = this.base.getIDReferences(element); + UnrecognizedChildElement unknownChildElement = this.base.getUnknown(element); // List intrerfaces = new ArrayList(); // if (references.size() > 0) @@ -681,8 +671,8 @@ public class ExporterGenerator extends JavaGenerator{ fw.writer.println(" "+getOntologyImport()); fw.writer.println(" for (Statement attribute : attributes) {"); if (complexType != null) { - SchemaObject obj = complexTypes.get(complexType); - handleElementComplexTypeAttributes(obj); + SchemaObject obj = this.base.getComplexType(complexType); + this.base.handleElementComplexTypeAttributes(obj); } fw.writer.println(" }"); fw.writer.println(" }"); @@ -731,8 +721,8 @@ public class ExporterGenerator extends JavaGenerator{ fw.writer.println(" super(graph);"); fw.writer.println(" "+getOntologyImport()); if (complexType != null) { - SchemaObject obj = complexTypes.get(complexType); - handleComplexTypeExtension(obj); + SchemaObject obj = this.base.getComplexType(complexType); + this.base.handleComplexTypeExtension(obj); } else if (simpleType != null) { }