use of org.eclipse.wst.dtd.core.internal.emf.DTDAnyContent in project webtools.sourceediting by eclipse.
the class DTDModelBuilder method finishElementDecl.
// /////////////////////////////////////////////////////////////
//
// Methods for finishing the import of a DTDElement
//
// /////////////////////////////////////////////////////////////
public void finishElementDecl(DTDElement dtdElement, ElementDecl ed) {
dtdElement.setName(ed.getNodeName());
CMNode cmNode = ed.getContentModelNode();
if (ed.getComment() != null) {
dtdElement.setComment(ed.getComment());
}
if (ed.getErrorMessage() != null) {
addErrorMessage(ed.getErrorMessage(), dtdElement);
}
if (cmNode instanceof CMBasicNode) {
CMBasicNode bn = (CMBasicNode) cmNode;
switch(bn.getType()) {
case CMNodeType.EMPTY:
DTDEmptyContent emptyContent = getFactory().createDTDEmptyContent();
dtdElement.setContent(emptyContent);
break;
case CMNodeType.ANY:
DTDAnyContent anyContent = getFactory().createDTDAnyContent();
dtdElement.setContent(anyContent);
break;
case CMNodeType.PCDATA:
DTDPCDataContent pcData = getFactory().createDTDPCDataContent();
dtdElement.setContent(pcData);
}
} else if (cmNode instanceof CMReferenceNode) {
CMReferenceNode rn = (CMReferenceNode) cmNode;
if (rn.getType() == CMNodeType.ENTITY_REFERENCE) {
String entityName = rn.getName().trim();
DTDEntity anEntity = (DTDEntity) dtdUtil.getPEPool().get(entityName);
if (anEntity != null) {
//
// Create an DTDEntityReference and set its referenced
// element
//
DTDEntityReferenceContent enRef = getFactory().createDTDEntityReferenceContent();
enRef.setElementReferencedEntity(anEntity);
DTDOccurrenceType occurrenceType = DTDOccurrenceType.get(computeMofOccurrence(rn));
enRef.setOccurrence(occurrenceType);
dtdElement.setContent(enRef);
} else {
// create default content
DTDEmptyContent emptyContent = getFactory().createDTDEmptyContent();
dtdElement.setContent(emptyContent);
}
} else {
//
// Find the real element for this element references
// If the real element does not yet exist, create it
//
DTDElement anElement = createOrFindElement(rn.getName(), dtdElement);
//
// Create an DTDElementReference and set its referenced
// element
//
DTDElementReferenceContent elemRef = getFactory().createDTDElementReferenceContent();
elemRef.setReferencedElement(anElement);
DTDOccurrenceType occurrenceType = DTDOccurrenceType.get(computeMofOccurrence(rn));
elemRef.setOccurrence(occurrenceType);
// setContent to DTDElementReference
dtdElement.setContent(elemRef);
}
} else if (cmNode instanceof CMGroupNode) {
CMGroupNode grpNode = (CMGroupNode) cmNode;
DTDGroupContent groupContent = getFactory().createDTDGroupContent();
DTDGroupKind groupKind = DTDGroupKind.get(computeMofGroupKind(grpNode.getGroupKind()));
groupContent.setGroupKind(groupKind);
DTDOccurrenceType occurrenceType = DTDOccurrenceType.get(computeMofOccurrence(grpNode));
groupContent.setOccurrence(occurrenceType);
// just use the locator for the element as the closest guess
processGroupContent(groupContent, grpNode);
dtdElement.setContent(groupContent);
} else if (cmNode == null) {
// bad thing happened here, just create a pcdata
DTDEmptyContent emptyContent = getFactory().createDTDEmptyContent();
dtdElement.setContent(emptyContent);
}
}
Aggregations