} else if (qName.equals(CromToXmlWriterConstants.ELEMENT_TYPE)) {
ElementType_TypeName = JtrXmlFormatUtils.lookupIndexedString(attributes,
CromToXmlWriterConstants.ELEMENT_TYPE_NAME, stringMap);
status = t_ElementTypeCROM;
} else if (qName.equals(CROM.ELEMENT)) {
CROM parent = crom_stack.size() > 0 ? crom_stack.peek() : null;
current = new CROM(parent, attributes, stringMap, crom_type);
if (current.isPrecondition()) {
String name = current.getName();
if (name == null || name.length() == 0)
current.setName(CROM.PRECONDITION_TAG);
}
crom_stack.push(current);
switch (status) {
case t_Element:
break;
case t_ElementType:
// this should not happen
break;
case t_ElementTypeCROM:
if (parent == null && ElementType_TypeName != null) {
handler.addType(ElementType_TypeName, current);
ElementType_TypeName = null;
}
break;
case t_CROM:
if (parent == null) {
current.addType(CROM.CROM_t_Root);
handler.setRoot(current);
}
break;
}
} else if (qName.equals(CROM_Text.ELEMENT) || qName.equals(CROM_Text.ELEMENT_)) {
crom_stack.peek().setExtension(new CROM_Text(attributes));
} else if (qName.equals(CROM_DB.ELEMENT) || qName.equals(CROM_Text.ELEMENT_)) {
crom_stack.peek().setExtension(new CROM_DB(attributes));
} else if (qName.equals(CROM_Xml.ELEMENT)) {
crom_xml = new CROM_Xml(attributes, stringMap);
crom_stack.peek().setExtension(crom_xml);
if (status == t_Element && crom_stack.size() == 1) {
handler.addElement(crom_stack.peek());
}
} else if (qName.equals(CROM_Attr.ELEMENT)) {
CROM_Attr crom_attr = new CROM_Attr(attributes, stringMap);
CROM crom = crom_stack.peek();
crom.setExtension(crom_attr);
String valueType = crom_attr.getValueType();
if (crom.m_CromType == CromType.CROM_t_Text && valueType != null && !valueType.equals("Identifier")) {
crom.addType(CROM.CROM_t_Optional);
}
} else if (qName.equals(CromToXmlWriterConstants.TYPE_EXTENSIONS)) {
parseXmlTypeExtensions(attributes);
} else if (qName.equals(CromToXmlWriterConstants.SUBSTITUTION_GROUPS)) {
parseXmlSubstitutionGroups(attributes);