/** * Processes the given ContentModelGroup * @param cmGroup the ContentModelGroup to process * @param sInfo the current source generator state information **/ private void processContentModel(ContentModelGroup cmGroup, SGStateInfo sInfo) { Enumeration enum = cmGroup.enumerate(); while (enum.hasMoreElements()) { Structure struct = (Structure)enum.nextElement(); switch(struct.getStructureType()) { case Structure.ELEMENT: ElementDecl eDecl = (ElementDecl)struct; if (eDecl.isReference()) continue; createClasses(eDecl, sInfo); break; case Structure.GROUP: processContentModel((Group)struct, sInfo); //handle nested groups if (!((cmGroup instanceof ComplexType) || (cmGroup instanceof ModelGroup))) { createClasses((Group)struct, sInfo); } break; default: break; } } } //-- process
private void createClasses(ElementDecl elementDecl, SGStateInfo sInfo) { //-- when mapping schema types, only interested in producing classes //-- for elements with anonymous complex types if (SourceGenerator.mappingSchemaType2Java()) if (elementDecl.isReference() || (elementDecl.getType()!=null && elementDecl.getType().getName()!=null)) return; if (sInfo.verbose()) { System.out.print("Creating classes for element: "); System.out.println(elementDecl.getName()); } //-- create classes for sub-elements if necessary XMLType xmlType = elementDecl.getType(); //-- No type definition if (xmlType == null) { System.out.print("Type not found for element: "); System.out.println(elementDecl.getName()); return; } //-- ComplexType else if (xmlType.isComplexType()) { JClass[] classes = sourceFactory.createSourceCode(elementDecl, sInfo); processComplexType((ComplexType)xmlType, sInfo); for (int i = 0; i < classes.length; i++) processJClass(classes[i], sInfo); } //-- SimpleType else { processSimpleType((SimpleType)xmlType, sInfo); } } //-- createClasses