X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FJavaGenerator.java;h=126dcf45691cb3110cf5d66c3ae422479082a126;hb=d788a05e77b983199f0982a0e56629e7fc30c691;hp=dfcdfd3d7b78e1afbe903dc7e06cb1b969058db8;hpb=fb01c21839aea801224aeb82b64bd261120619d5;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax/src/org/simantics/xml/sax/JavaGenerator.java b/org.simantics.xml.sax/src/org/simantics/xml/sax/JavaGenerator.java index dfcdfd3..126dcf4 100644 --- a/org.simantics.xml.sax/src/org/simantics/xml/sax/JavaGenerator.java +++ b/org.simantics.xml.sax/src/org/simantics/xml/sax/JavaGenerator.java @@ -10,30 +10,44 @@ import java.util.Map; import javax.xml.namespace.QName; -import org.simantics.xml.sax.configuration.Configuration; +import org.simantics.xml.sax.SchemaConversionBase.RefType; +import org.simantics.xml.sax.SchemaConversionBase.TypeEntry; import org.w3._2001.xmlschema.AttributeGroupRef; import org.w3._2001.xmlschema.Element; import org.w3._2001.xmlschema.Schema; -public abstract class JavaGenerator extends SchemaConversionBase{ +//public abstract class JavaGenerator extends SchemaConversionBase{ +public abstract class JavaGenerator implements SchemaConversionComponent { String commentTag = "//"; Schema schema; String ontologyClassName; + String ontologyUri; SchemaConverter converter; + SchemaConversionBase base; List ruleClassNames = new ArrayList(); String ontShort = "ONT"; + String name; File importParserDir; String elementPackageName; Map writers = new HashMap(); - public JavaGenerator(Configuration configuration) { - super(configuration); + public JavaGenerator(SchemaConverter converter, SchemaConversionBase base) { + this.converter = converter; + this.base = base; + + this.schema = base.schema; + this.ontologyClassName = base.className; + this.ontologyUri = base.ontologyURI; + this.converter = converter; + this.name = converter.name; + ontShort = converter.shortName; + ontShort +="."; } @@ -59,41 +73,37 @@ public abstract class JavaGenerator extends SchemaConversionBase{ return name; return binding.getValueGetter(name); } + protected String getValueGetter(TypeEntry binding) { if (binding == null) return "value"; return binding.getValueGetter(); } + @Override public String getComplexTypePrefix() { return "ComplexTypes_"; } + @Override public String getAttributeGroupPrefix() { return "AttributeGroups_"; } - + @Override - protected void handle(SchemaObject parent, SchemaElement indicator, List elements) { - if (indicator.getType() == SchemaElement.ElementType.SEQUENCE || (indicator.getType() == SchemaElement.ElementType.CHOICE && indicator.getRestriction().many())) { - for (SchemaElement e : elements) { - handle(parent, indicator, e); - } - } else if (indicator.getType() == SchemaElement.ElementType.CHOICE) { - String name = getChoiceName(elements); + public void handleChoice(SchemaObject parent, SchemaElement indicator, List elements, String name) { - for (SchemaElement e : elements) { - Element localElement = e.getElement(); - if (localElement.getName() != null) { - QName refType = localElement.getType(); - if (refType != null) - //handleIndicator(parent, indicator, e, false, name, refType); - handleIndicator(parent, indicator, e, name, RefType.Type); - } else if (localElement.getRef() != null) { - //QName refType = localElement.getRef(); - //handleIndicator(parent, indicator, e, true, name, refType); - handleIndicator(parent, indicator, e, name, RefType.Reference); - } + for (SchemaElement e : elements) { + Element localElement = e.getElement(); + if (localElement.getName() != null) { + QName refType = localElement.getType(); + if (refType != null) + //handleIndicator(parent, indicator, e, false, name, refType); + handleIndicator(parent, indicator, e, name, RefType.Type); + } else if (localElement.getRef() != null) { + //QName refType = localElement.getRef(); + //handleIndicator(parent, indicator, e, true, name, refType); + handleIndicator(parent, indicator, e, name, RefType.Reference); } } @@ -121,7 +131,7 @@ public abstract class JavaGenerator extends SchemaConversionBase{ return null; } - + @Override public String getName(SchemaObject obj) { if (obj.getParent() == null) { switch (obj.getType()) { @@ -224,12 +234,13 @@ public abstract class JavaGenerator extends SchemaConversionBase{ writer.println(); } + protected abstract void createReferenceIndicator(SchemaObject parent, RefType referenceType, String refName, String objectName, String primaryClassName, String secondaryClassName, boolean useElementList, boolean useOriginalList); protected abstract void createPrimitiveIndicator(SchemaObject parent, String refName, String binding); protected abstract void createElementIndicator(SchemaObject parent, boolean useElementList, String refName, String className, boolean useOriginalList); @Override - protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType referenceType) { + public void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType referenceType) { String objectName; if (referenceType != RefType.Element) { QName refType; @@ -245,10 +256,10 @@ public abstract class JavaGenerator extends SchemaConversionBase{ objectName = refType.getLocalPart(); } - String binding = getBindingFromPrimitiveType(refType); + String binding = this.base.getBindingFromPrimitiveType(refType); if (binding == null) { - SchemaObject refElement = elementName.get(refType.getLocalPart()); - SchemaObject refComplexType = complexTypeName.get(refType.getLocalPart()); + SchemaObject refElement = this.base.elementName.get(refType.getLocalPart()); + SchemaObject refComplexType = this.base.complexTypeName.get(refType.getLocalPart()); // prefer element reference over complex type reference String primaryClassName = null; @@ -263,22 +274,22 @@ public abstract class JavaGenerator extends SchemaConversionBase{ } else { secondaryClassName = getName(refElement); } - boolean useElementList = useElementList(parent, indicator,element, referenceType == RefType.Reference, refName, refType); - boolean useOriginalList = useOriginalList(parent, indicator,element, referenceType == RefType.Reference, refName, refType); + boolean useElementList = this.base.useElementList(parent, indicator,element, referenceType == RefType.Reference, refName, refType); + boolean useOriginalList = this.base.useOriginalList(parent, indicator,element, referenceType == RefType.Reference, refName, refType); createReferenceIndicator(parent, referenceType, refName, objectName, primaryClassName, secondaryClassName, useElementList, useOriginalList); } else { createPrimitiveIndicator(parent, refName, binding); } } else { Element attrs= element.getElement(); - SchemaObject obj = getWithObj(parent, attrs); + SchemaObject obj = this.base.getWithObj(parent, attrs); String className = getName(obj); if (refName == null) refName = attrs.getName(); - boolean useElementList = useElementList(parent, indicator,element, false, refName, new QName(obj.getName())); - boolean useOriginalList = useOriginalList(parent, indicator,element, false, refName, new QName(obj.getName())); + boolean useElementList = this.base.useElementList(parent, indicator,element, false, refName, new QName(obj.getName())); + boolean useOriginalList = this.base.useOriginalList(parent, indicator,element, false, refName, new QName(obj.getName())); createElementIndicator(parent, useElementList, refName, className, useOriginalList); } }