\r
import javax.xml.namespace.QName;\r
\r
-import org.simantics.xml.sax.configuration.Configuration;\r
+import org.simantics.xml.sax.SchemaConversionBase.RefType;\r
+import org.simantics.xml.sax.SchemaConversionBase.TypeEntry;\r
import org.w3._2001.xmlschema.AttributeGroupRef;\r
import org.w3._2001.xmlschema.Element;\r
import org.w3._2001.xmlschema.Schema;\r
\r
-public abstract class JavaGenerator extends SchemaConversionBase{\r
+//public abstract class JavaGenerator extends SchemaConversionBase{\r
+public abstract class JavaGenerator implements SchemaConversionComponent {\r
\r
String commentTag = "//";\r
\r
Schema schema;\r
String ontologyClassName;\r
+ String ontologyUri;\r
SchemaConverter converter;\r
+ SchemaConversionBase base;\r
\r
List<String> ruleClassNames = new ArrayList<String>();\r
\r
String ontShort = "ONT"; \r
+ String name;\r
\r
File importParserDir;\r
String elementPackageName;\r
\r
Map<SchemaObject, FileWriter> writers = new HashMap<SchemaObject, ImporterGenerator.FileWriter>();\r
\r
- public JavaGenerator(Configuration configuration) {\r
- super(configuration);\r
+ public JavaGenerator(SchemaConverter converter, SchemaConversionBase base) {\r
+ this.converter = converter;\r
+ this.base = base;\r
+ \r
+ this.schema = base.schema;\r
+ this.ontologyClassName = base.className;\r
+ this.ontologyUri = base.ontologyURI;\r
+ this.converter = converter;\r
+ this.name = converter.name;\r
+ ontShort = converter.shortName;\r
+ ontShort +=".";\r
}\r
\r
\r
return name;\r
return binding.getValueGetter(name);\r
}\r
+ \r
protected String getValueGetter(TypeEntry binding) {\r
if (binding == null)\r
return "value";\r
return binding.getValueGetter();\r
}\r
\r
+ @Override\r
public String getComplexTypePrefix() {\r
return "ComplexTypes_";\r
} \r
\r
+ @Override\r
public String getAttributeGroupPrefix() {\r
return "AttributeGroups_";\r
}\r
- \r
+ \r
@Override\r
- protected void handle(SchemaObject parent, SchemaElement indicator, List<SchemaElement> elements) {\r
- if (indicator.getType() == SchemaElement.ElementType.SEQUENCE || (indicator.getType() == SchemaElement.ElementType.CHOICE && indicator.getRestriction().many())) {\r
- for (SchemaElement e : elements) {\r
- handle(parent, indicator, e);\r
- }\r
- } else if (indicator.getType() == SchemaElement.ElementType.CHOICE) {\r
- String name = getChoiceName(elements);\r
+ public void handleChoice(SchemaObject parent, SchemaElement indicator, List<SchemaElement> elements, String name) {\r
\r
- for (SchemaElement e : elements) {\r
- Element localElement = e.getElement();\r
- if (localElement.getName() != null) {\r
- QName refType = localElement.getType();\r
- if (refType != null)\r
- //handleIndicator(parent, indicator, e, false, name, refType);\r
- handleIndicator(parent, indicator, e, name, RefType.Type);\r
- } else if (localElement.getRef() != null) {\r
- //QName refType = localElement.getRef();\r
- //handleIndicator(parent, indicator, e, true, name, refType);\r
- handleIndicator(parent, indicator, e, name, RefType.Reference);\r
- }\r
+ for (SchemaElement e : elements) {\r
+ Element localElement = e.getElement();\r
+ if (localElement.getName() != null) {\r
+ QName refType = localElement.getType();\r
+ if (refType != null)\r
+ //handleIndicator(parent, indicator, e, false, name, refType);\r
+ handleIndicator(parent, indicator, e, name, RefType.Type);\r
+ } else if (localElement.getRef() != null) {\r
+ //QName refType = localElement.getRef();\r
+ //handleIndicator(parent, indicator, e, true, name, refType);\r
+ handleIndicator(parent, indicator, e, name, RefType.Reference);\r
}\r
}\r
\r
return null;\r
}\r
\r
- \r
+ @Override\r
public String getName(SchemaObject obj) {\r
if (obj.getParent() == null) {\r
switch (obj.getType()) {\r
writer.println();\r
}\r
\r
+ \r
protected abstract void createReferenceIndicator(SchemaObject parent, RefType referenceType, String refName, String objectName, String primaryClassName, String secondaryClassName, boolean useElementList, boolean useOriginalList);\r
protected abstract void createPrimitiveIndicator(SchemaObject parent, String refName, String binding);\r
protected abstract void createElementIndicator(SchemaObject parent, boolean useElementList, String refName, String className, boolean useOriginalList);\r
\r
@Override\r
- protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType referenceType) {\r
+ public void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType referenceType) {\r
String objectName;\r
if (referenceType != RefType.Element) {\r
QName refType;\r
objectName = refType.getLocalPart();\r
}\r
\r
- String binding = getBindingFromPrimitiveType(refType);\r
+ String binding = this.base.getBindingFromPrimitiveType(refType);\r
if (binding == null) {\r
- SchemaObject refElement = elementName.get(refType.getLocalPart());\r
- SchemaObject refComplexType = complexTypeName.get(refType.getLocalPart());\r
+ SchemaObject refElement = this.base.elementName.get(refType.getLocalPart());\r
+ SchemaObject refComplexType = this.base.complexTypeName.get(refType.getLocalPart());\r
\r
// prefer element reference over complex type reference\r
String primaryClassName = null;\r
} else {\r
secondaryClassName = getName(refElement);\r
}\r
- boolean useElementList = useElementList(parent, indicator,element, referenceType == RefType.Reference, refName, refType);\r
- boolean useOriginalList = useOriginalList(parent, indicator,element, referenceType == RefType.Reference, refName, refType);\r
+ boolean useElementList = this.base.useElementList(parent, indicator,element, referenceType == RefType.Reference, refName, refType);\r
+ boolean useOriginalList = this.base.useOriginalList(parent, indicator,element, referenceType == RefType.Reference, refName, refType);\r
createReferenceIndicator(parent, referenceType, refName, objectName, primaryClassName, secondaryClassName, useElementList, useOriginalList);\r
} else {\r
createPrimitiveIndicator(parent, refName, binding);\r
}\r
} else {\r
Element attrs= element.getElement();\r
- SchemaObject obj = getWithObj(parent, attrs);\r
+ SchemaObject obj = this.base.getWithObj(parent, attrs);\r
\r
String className = getName(obj);\r
if (refName == null)\r
refName = attrs.getName();\r
\r
- boolean useElementList = useElementList(parent, indicator,element, false, refName, new QName(obj.getName()));\r
- boolean useOriginalList = useOriginalList(parent, indicator,element, false, refName, new QName(obj.getName()));\r
+ boolean useElementList = this.base.useElementList(parent, indicator,element, false, refName, new QName(obj.getName()));\r
+ boolean useOriginalList = this.base.useOriginalList(parent, indicator,element, false, refName, new QName(obj.getName()));\r
createElementIndicator(parent, useElementList, refName, className, useOriginalList);\r
}\r
}\r