X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FExporterGenerator.java;h=d1f67a426c7ff73a138c02dd25517f91f9407574;hb=d788a05e77b983199f0982a0e56629e7fc30c691;hp=243a1c2415b9f3476c270e9be542a8ff5c441f99;hpb=5a2849a5e792c9821201d320cb30b3dc41a586bf;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 243a1c2..d1f67a4 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,9 +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; @@ -25,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"; @@ -59,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); @@ -118,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); @@ -161,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); @@ -216,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(" }"); @@ -250,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(" }"); @@ -400,7 +397,7 @@ public class ExporterGenerator extends JavaGenerator{ } @Override - protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement any) { + public void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement any) { // generates overriding method that allows writing any element FileWriter fw = getWriter(parent); fw.delayedWriter2.println(" @Override"); @@ -415,7 +412,9 @@ public class ExporterGenerator extends JavaGenerator{ } @Override - protected void handle(SchemaObject parent, Attribute attribute) { + public void handle(SchemaObject parent, Attribute attribute) { + if (parent == null) + return; String name = attribute.getName(); QName primitiveType = attribute.getType(); SimpleType simpleType = attribute.getSimpleType(); @@ -433,7 +432,7 @@ public class ExporterGenerator extends JavaGenerator{ attrName = ref.getLocalPart(); relationName = ontShort+getName(parent)+"_has"+ref.getLocalPart(); - Attribute referred = getRefAttribute(ref); + Attribute referred = base.getRefAttribute(ref); if (referred != null) { primitiveType = referred.getType(); simpleType = referred.getSimpleType(); @@ -450,14 +449,14 @@ public class ExporterGenerator extends JavaGenerator{ if (primitiveType != null) { //String binding = getBindingFromPrimitiveType(primitiveType); - TypeEntry binding = getTypeEntry(primitiveType); + TypeEntry binding = base.getTypeEntry(primitiveType); if (binding != null) { writeAttribute(fw, attrName, relationName, binding, isReference); return; } else { if (simpleType == null) { - SchemaObject simpleTypeObj = simpleTypeName.get(primitiveType.getLocalPart()); + SchemaObject simpleTypeObj = base.simpleTypeName.get(primitiveType.getLocalPart()); if (simpleTypeObj != null) simpleType = simpleTypeObj.getSimpleType(); } @@ -466,7 +465,7 @@ public class ExporterGenerator extends JavaGenerator{ if (simpleType != null) { org.w3._2001.xmlschema.List list = simpleType.getList(); if (list != null) { - TypeEntry binding = getTypeEntry(new QName(SCHEMA_NS, "string")); + TypeEntry binding = base.getTypeEntry(new QName(SchemaConversionBase.SCHEMA_NS, "string")); writeAttribute(fw, attrName, relationName, binding, isReference); } else { Restriction restriction = simpleType.getRestriction(); @@ -476,7 +475,7 @@ public class ExporterGenerator extends JavaGenerator{ //String binding = getBindingFromPrimitiveType(base); - TypeEntry binding = getTypeEntry(base); + TypeEntry binding = this.base.getTypeEntry(base); writeAttribute(fw, attrName, relationName, binding, isReference); } } else { @@ -484,11 +483,10 @@ public class ExporterGenerator extends JavaGenerator{ //throw new RuntimeException("Cannot resolve type for Attribute " + attrName + " -> " + 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+")) {"); @@ -501,7 +499,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); @@ -513,7 +511,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 {"); @@ -523,10 +521,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().getLocalPart()); fw.writer.println(commentTag+" AttributeGroup " + group.getName()); SchemaObject obj = new SchemaObject(parent,attribute); for (Annotated annotated : group.getAttributeOrAttributeGroup()) { @@ -544,10 +542,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(); @@ -596,7 +594,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()); @@ -605,14 +603,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(); @@ -627,11 +620,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) @@ -674,8 +667,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.complexTypes.get(complexType); + this.base.handleElementComplexTypeAttributes(obj); } fw.writer.println(" }"); fw.writer.println(" }"); @@ -724,8 +717,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.complexTypes.get(complexType); + this.base.handleComplexTypeExtension(obj); } else if (simpleType != null) { }