return binding.getValueGetter();\r
}\r
\r
- public static String getComplexTypePrefix() {\r
+ public String getComplexTypePrefix() {\r
return "ComplexTypes_";\r
} \r
\r
- public static String getAttributeGroupPrefix() {\r
+ public String getAttributeGroupPrefix() {\r
return "AttributeGroups_";\r
}\r
\r
}\r
\r
\r
- public static String getName(SchemaObject obj) {\r
+ public String getName(SchemaObject obj) {\r
if (obj.getParent() == null) {\r
switch (obj.getType()) {\r
case COMPLEX_TYPE:\r
\r
}\r
\r
- public static String getName(SchemaObject obj, String rel) {\r
+ public String getName(SchemaObject obj, String rel) {\r
if (obj.getParent() == null) {\r
switch (obj.getType()) {\r
case COMPLEX_TYPE:\r
throw new RuntimeException();\r
}\r
\r
- protected enum InheritanceType{ComplexType,AtomicType,None};\r
\r
- protected class Inheritance {\r
- public String baseClass;\r
- public InheritanceType type;\r
- public TypeEntry atomicType;\r
- \r
- public Inheritance(String baseClass) {\r
- this.baseClass = baseClass;\r
- this.type = InheritanceType.None;\r
- }\r
- }\r
\r
protected void writeClass(PrintWriter writer,boolean abst, String elementId, String className, String baseClass, List<String> interfaces) {\r
writer.println("@SuppressWarnings(\"unused\")");\r
writer.println();\r
}\r
\r
- protected abstract String getBaseClass();\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
- protected Inheritance getElementInheritance(SchemaObject topLevelElementObj) {\r
- Element topLevelElement = topLevelElementObj.getElement();\r
- Inheritance inheritance = new Inheritance(getBaseClass());\r
- if (topLevelElement.getType() != null) {\r
- QName type = topLevelElement.getType();\r
- if (!type.getNamespaceURI().equals(SCHEMA_NS)) {\r
- SchemaObject obj = complexTypeName.get(type.getLocalPart());\r
-// if (obj == null)\r
-// obj = simpleTypeName.get(type.getLocalPart());\r
- if (obj != null) {\r
- inheritance.baseClass = getName(obj);\r
- inheritance.type = InheritanceType.ComplexType;\r
- }\r
+ @Override\r
+ protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType referenceType) {\r
+ String objectName;\r
+ if (referenceType != RefType.Element) {\r
+ QName refType;\r
+ if (referenceType == RefType.Type) {\r
+ refType = element.getElement().getType();\r
+ if (refName == null)\r
+ refName = element.getElement().getName();\r
+ objectName = element.getElement().getName();\r
} else {\r
- TypeEntry entry = getTypeEntry(type);\r
- if (entry != null) {\r
- inheritance.type = InheritanceType.AtomicType;\r
- inheritance.atomicType = entry;\r
- }\r
+ refType = element.getElement().getRef();\r
+ if (refName == null)\r
+ refName = refType.getLocalPart();\r
+ objectName = refType.getLocalPart();\r
}\r
- }\r
- if (inheritance.type == InheritanceType.None) {\r
- QName type = getElementBase(topLevelElement);\r
- if (type != null) {\r
- if (!type.getNamespaceURI().equals(SCHEMA_NS)) {\r
- SchemaObject obj = getWithName(topLevelElementObj, type.getLocalPart());\r
- inheritance.baseClass = getName(obj);\r
- inheritance.type = InheritanceType.ComplexType;\r
- } else {\r
- TypeEntry entry = getTypeEntry(type);\r
- if (entry != null) {\r
- inheritance.type = InheritanceType.AtomicType;\r
- inheritance.atomicType = entry;\r
- }\r
- }\r
- }\r
- }\r
- if (inheritance.type == InheritanceType.None) {\r
- QName type = topLevelElement.getSubstitutionGroup();\r
- if (type != null) {\r
- if (!type.getNamespaceURI().equals(SCHEMA_NS)) {\r
- SchemaObject obj = getWithName(topLevelElementObj, type.getLocalPart());\r
- inheritance.baseClass = getName(obj);\r
- inheritance.type = InheritanceType.ComplexType;\r
+ \r
+ String binding = getBindingFromPrimitiveType(refType);\r
+ if (binding == null) {\r
+ SchemaObject refElement = elementName.get(refType.getLocalPart());\r
+ SchemaObject refComplexType = complexTypeName.get(refType.getLocalPart());\r
+ \r
+ // prefer element reference over complex type reference\r
+ String primaryClassName = null;\r
+ String secondaryClassName = null;\r
+ if (refElement != null)\r
+ primaryClassName = getName(refElement);\r
+ else\r
+ primaryClassName = getName(refComplexType);\r
+ \r
+ if (refComplexType != null) {\r
+ secondaryClassName = getName(refComplexType);\r
} else {\r
- TypeEntry entry = getTypeEntry(type);\r
- if (entry != null) {\r
- inheritance.type = InheritanceType.AtomicType;\r
- inheritance.atomicType = entry;\r
- }\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
+ 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
+ \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
+ createElementIndicator(parent, useElementList, refName, className, useOriginalList);\r
}\r
- \r
- return inheritance;\r
- } \r
+ }\r
\r
}\r