Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ModelQueryImpl.java')
-rw-r--r--bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ModelQueryImpl.java856
1 files changed, 0 insertions, 856 deletions
diff --git a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ModelQueryImpl.java b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ModelQueryImpl.java
deleted file mode 100644
index 50a032a18d..0000000000
--- a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/modelqueryimpl/ModelQueryImpl.java
+++ /dev/null
@@ -1,856 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2002 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Jens Lukowski/Innoopract - initial renaming/restructuring
- *
- *******************************************************************************/
-package org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAnyElement;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMAttributeDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMDocument;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMElementDeclaration;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMGroup;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNamedNodeMap;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNode;
-import org.eclipse.wst.xml.core.internal.contentmodel.CMNodeList;
-import org.eclipse.wst.xml.core.internal.contentmodel.internal.modelqueryimpl.ModelQueryExtensionManagerImpl;
-import org.eclipse.wst.xml.core.internal.contentmodel.internal.util.CMDataTypeValueHelper;
-import org.eclipse.wst.xml.core.internal.contentmodel.internal.util.DOMValidator;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.CMDocumentManager;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQuery;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.ModelQueryAssociationProvider;
-import org.eclipse.wst.xml.core.internal.contentmodel.modelquery.extension.ModelQueryExtensionManager;
-import org.eclipse.wst.xml.core.internal.contentmodel.util.CMVisitor;
-import org.eclipse.wst.xml.core.internal.contentmodel.util.DOMNamespaceHelper;
-import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceInfo;
-import org.eclipse.wst.xml.core.internal.contentmodel.util.NamespaceTable;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-
-/**
- * This class implements a large portion of the ModelQuery interfaces.
- * Some work is delegated to the DOMHelper, CMDocumentManager, and DOMValidator.
- */
-public class ModelQueryImpl implements ModelQuery
-{
- protected ModelQueryAssociationProvider modelQueryAssociationProvider;
- protected ModelQueryActionHelper modelQueryActionHelper;
- protected DOMValidator validator;
- protected ModelQueryExtensionManagerImpl extensionManager;
- protected CMDataTypeValueHelper valueHelper;
- protected int editMode = EDIT_MODE_CONSTRAINED_STRICT;
-
- public ModelQueryImpl(ModelQueryAssociationProvider modelQueryAssociationProvider)
- {
- this.modelQueryAssociationProvider = modelQueryAssociationProvider;
- modelQueryActionHelper = createModelQueryActionHelper();
- validator = new DOMValidator();
- extensionManager = new ModelQueryExtensionManagerImpl();
- valueHelper = new CMDataTypeValueHelper();
- }
-
- public int getEditMode()
- {
- return editMode;
- }
-
- public void setEditMode(int editMode)
- {
- this.editMode =editMode;
- }
-
-
- // factory methods
- public ModelQueryActionHelper createModelQueryActionHelper()
- {
- return new ModelQueryActionHelper(this);
- }
-
- public DOMValidator getValidator()
- {
- return validator;
- }
-
- public CMDocument getCorrespondingCMDocument(Node node)
- {
- return modelQueryAssociationProvider.getCorrespondingCMDocument(node);
- }
-
- public CMNode getCMNode(Node node)
- {
- return modelQueryAssociationProvider.getCMNode(node);
- }
-
- public CMDataType getCMDataType(Text text)
- {
- return modelQueryAssociationProvider.getCMDataType(text);
- }
-
- public CMAttributeDeclaration getCMAttributeDeclaration(Attr attr)
- {
- return modelQueryAssociationProvider.getCMAttributeDeclaration(attr);
- }
-
- public CMElementDeclaration getCMElementDeclaration(Element element)
- {
- return modelQueryAssociationProvider.getCMElementDeclaration(element);
- }
-
- public CMDocumentManager getCMDocumentManager()
- {
- CMDocumentManager result = null;
- if (modelQueryAssociationProvider instanceof XMLAssociationProvider)
- {
- XMLAssociationProvider xmlAssociationProvider = (XMLAssociationProvider)modelQueryAssociationProvider;
- result = xmlAssociationProvider.getCMDocumentManager();
- }
- return result;
- }
-
-
- /**
- * @deprected - use 3 arg version below
- */
- public List getCMDocumentList(Element element, String uri)
- {
- return Collections.EMPTY_LIST;
- }
-
- public List getCMDocumentList(Element element, CMElementDeclaration ed, String uri)
- {
- List result = new Vector();
- if (modelQueryAssociationProvider instanceof XMLAssociationProvider)
- {
- XMLAssociationProvider xmlAssociationProvider = (XMLAssociationProvider)modelQueryAssociationProvider;
-
- // todo... revist... handle each ##thing explicitly
- //
- if (uri == null)
- {
- uri = "##any"; //$NON-NLS-1$
- }
-
- if (uri.equals("##targetNamespace")) //$NON-NLS-1$
- {
- CMDocument cmDocument = (CMDocument)ed.getProperty("CMDocument"); //$NON-NLS-1$
- if (cmDocument != null)
- {
- result.add(cmDocument);
- }
- }
- else if (uri.equals("##any") || uri.equals("##other")) //$NON-NLS-1$ //$NON-NLS-2$
- {
- String excludedURI = null;
- if (uri.equals("##other")) //$NON-NLS-1$
- {
- CMDocument cmDocument = (CMDocument)ed.getProperty("CMDocument"); //$NON-NLS-1$
- if (cmDocument != null)
- {
- excludedURI = (String)cmDocument.getProperty("http://org.eclipse.wst/cm/properties/targetNamespaceURI"); //$NON-NLS-1$
- }
- }
-
- // in this case we should consider all of the schema related to this document
- //
- NamespaceTable namespaceTable = new NamespaceTable(element.getOwnerDocument());
- namespaceTable.addElementLineage(element);
- List list = namespaceTable.getNamespaceInfoList();
- for (Iterator i = list.iterator(); i.hasNext();)
- {
- NamespaceInfo info = (NamespaceInfo)i.next();
- if (info.uri != null && !info.uri.equals(excludedURI))
- {
- CMDocument document = xmlAssociationProvider.getCMDocument(info.uri, info.locationHint, "XSD"); //$NON-NLS-1$
- if (document != null)
- {
- result.add(document);
- }
- }
- }
- }
- else
- {
- CMDocument document = xmlAssociationProvider.getCMDocument(element, uri);
- if (document != null)
- {
- result.add(document);
- }
- }
- }
- return result;
- }
-
-
- public CMDocument getCMDocument(Element element, String uri)
- {
-
- CMDocument result = null;
- if (modelQueryAssociationProvider instanceof XMLAssociationProvider)
- {
- XMLAssociationProvider xmlAssociationProvider = (XMLAssociationProvider)modelQueryAssociationProvider;
- result = xmlAssociationProvider.getCMDocument(element, uri);
- }
- //ContentModelManager.println("ModelQueryImpl.getCMDocument(" + element.getNodeName() + ", " + uri + ") = " + result);
- return result;
- }
-
- public boolean isContentValid(Element element)
- {
- CMElementDeclaration ed = getCMElementDeclaration(element);
- return isContentValid(ed, element);
- }
-
- public boolean isContentValid(CMElementDeclaration ed, Element element)
- {
- boolean result = true;
- if (ed != null)
- {
- // first check to see if all the required attributes are present
- //
- CMNamedNodeMap map = ed.getAttributes();
- int mapLength = map.getLength();
- for (int i = 0; i < mapLength; i++)
- {
- CMAttributeDeclaration ad = (CMAttributeDeclaration)map.item(i);
- String attributeName = DOMNamespaceHelper.computeName(ad, element, null);
- if (ad.getUsage() == CMAttributeDeclaration.REQUIRED)
- {
- Attr attr = element.getAttributeNode(attributeName);
- if (attr == null)
- {
- result = false;
- break;
- }
- }
- }
-
- // now check to see of the children validate properly
- //
- if (result)
- {
- CMNode[] originArray = getOriginArray(element);
- result = originArray != null && originArray.length == element.getChildNodes().getLength();
- }
- }
- return result;
- }
-
-
- public CMNode getOrigin(Node node)
- {
- CMNode result = null;
- // todo... make sure parent is right
- //
- Node parentNode = getParentOrOwnerNode(node);
- if (parentNode != null && parentNode.getNodeType() == Node.ELEMENT_NODE)
- {
- Element parentElement = (Element)parentNode;
- CMNode[] array = getOriginArray(parentElement);
- if (array != null)
- {
- int index = getIndexOfNode(parentElement.getChildNodes(), node);
- if (index < array.length)
- {
- result = array[index];
- }
- }
- }
- return result;
- }
-
- public CMNode[] getOriginArray(Element element)
- {
- CMElementDeclaration ed = getCMElementDeclaration(element);
- return (ed != null) ? getValidator().getOriginArray(ed, element) : null;
- }
-
- public int getIndexOfNode(NodeList nodeList, Node node)
- {
- int result = -1;
- int size = nodeList.getLength();
- for (int i = 0; i < size; i++)
- {
- if (nodeList.item(i) == node)
- {
- result = i;
- break;
- }
- }
- return result;
- }
-
-
- /**
- * Returns a list of all CMNode 'meta data' that may be potentially added to the element.
- */
- public List getAvailableContent(Element element, CMElementDeclaration ed, int includeOptions)
- {
- AvailableContentCMVisitor visitor = new AvailableContentCMVisitor(element, ed);
- List list = visitor.computeAvailableContent(includeOptions);
- if (extensionManager != null)
- {
- extensionManager.filterAvailableElementContent(list, element, ed);
- }
- return list;
- }
-
-
- public boolean canInsert(Element parent, CMNode cmNode, int index, int validityChecking)
- {
- boolean result = true;
- CMElementDeclaration ed = getCMElementDeclaration(parent);
- if (ed != null)
- {
- result = canInsert(parent, ed, cmNode, index, validityChecking);
- }
- return result;
- }
-
-
- public boolean canInsert(Element parent, CMElementDeclaration ed, CMNode cmNode, int index, int validityChecking)
- {
- return canInsert(parent, ed, cmNode, index, validityChecking, null);
- }
-
- protected boolean canInsert(Element parent, CMElementDeclaration ed, CMNode cmNode, int index, int validityChecking, Object reuseableData)
- {
- boolean result = true;
- switch (cmNode.getNodeType())
- {
- case CMNode.ATTRIBUTE_DECLARATION :
- {
- String attributeName = DOMNamespaceHelper.computeName(cmNode, parent, null);
- result = parent.getAttributeNode(attributeName) == null;
- break;
- }
- case CMNode.ELEMENT_DECLARATION :
- case CMNode.GROUP :
- {
- if (validityChecking == VALIDITY_STRICT)
- {
- // create list
- List contentSpecificationList = null;
- if (reuseableData != null)
- {
- contentSpecificationList = (List)reuseableData;
- }
- else
- {
- contentSpecificationList = getValidator().createContentSpecificationList(parent, ed);
- }
- result = getValidator().canInsert(ed, contentSpecificationList, index, cmNode);
- }
- break;
- }
- case CMNode.DATA_TYPE :
- {
- int contentType = ed.getContentType();
- result = (contentType == CMElementDeclaration.MIXED ||
- contentType == CMElementDeclaration.PCDATA ||
- contentType == CMElementDeclaration.ANY);
- break;
- }
- default :
- {
- result = false;
- break;
- }
- }
- return result;
- }
-
- public boolean canInsert(Element parent, List cmNodeList, int index, int validityChecking)
- {
- // todo
- return true;
- }
-
-
- public boolean canRemove(Node node, int validityChecking)
- {
- boolean result = true;
- if (validityChecking == VALIDITY_STRICT)
- {
- int nodeType = node.getNodeType();
- switch (nodeType)
- {
- case Node.ATTRIBUTE_NODE:
- {
- CMAttributeDeclaration ad = getCMAttributeDeclaration((Attr)node);
- if (ad != null)
- {
- result = (ad.getUsage() == CMAttributeDeclaration.OPTIONAL);
- }
- break;
- }
- case Node.ELEMENT_NODE:
- {
- Node parentNode = node.getParentNode();
- if (parentNode.getNodeType() == Node.ELEMENT_NODE)
- {
- Element parentElement = (Element)parentNode;
- CMElementDeclaration ed = getCMElementDeclaration(parentElement);
- if (ed != null)
- {
- List contentSpecificationList = getValidator().createContentSpecificationList(parentElement, ed);
- int index = getIndexOfNode(parentElement.getChildNodes(), node);
- result = getValidator().canRemove(ed, contentSpecificationList, index);
- }
- }
- break;
- }
- }
- }
- return result;
- }
-
-
- public boolean canRemove(List nodeList, int validityChecking)
- {
- boolean result = true;
-
- if (validityChecking == VALIDITY_STRICT)
- {
- Element parentElement = null;
- List childList = null;
-
- for (Iterator i = nodeList.iterator(); i.hasNext(); )
- {
- Node node = (Node)i.next();
-
- if (parentElement == null)
- {
- parentElement = getParentOrOwnerElement(node);
- }
- else if (parentElement != getParentOrOwnerElement(node))
- {
- // make sure the parent are the same
- result = false;
- break;
- }
-
- if (parentElement == null)
- {
- result = true;
- break;
- }
-
- int nodeType = node.getNodeType();
- if (nodeType == Node.ATTRIBUTE_NODE)
- {
- if (!canRemove(node, validityChecking))
- {
- result = false;
- break;
- }
- }
- else
- {
- if (childList == null)
- {
- childList = nodeListToList(parentElement.getChildNodes());
- }
- childList.remove(node);
- }
- }
-
- if (result && childList != null)
- {
- CMElementDeclaration ed = getCMElementDeclaration(parentElement);
- if (ed != null)
- {
- List contentSpecificationList = getValidator().createContentSpecificationList(childList, ed);
- result = getValidator().isValid(ed, contentSpecificationList);
- }
- }
- }
-
- return result;
- }
-
- public boolean canReplace(Element parent, int startIndex, int endIndex, CMNode cmNode, int validityChecking)
- {
- return true;
- }
-
- public boolean canReplace(Element parent, int startIndex, int endIndex, List cmNodeList, int validityChecking)
- {
- return true;
- }
-
- /**
- * This method is experimental... use at your own risk
- */
- public boolean canWrap(Element childElement, CMElementDeclaration wrapElement, int validityChecking)
- {
- boolean result = true;
- Node parentNode = childElement.getParentNode();
- if (parentNode.getNodeType() == Node.ELEMENT_NODE)
- {
- Element parentElement = (Element)parentNode;
- CMElementDeclaration parentEd = getCMElementDeclaration(parentElement);
- if (parentEd != null)
- {
- if (validityChecking == VALIDITY_STRICT)
- {
- int index = getIndexOfNode(parentElement.getChildNodes(), childElement);
-
- List contentSpecificationList = getValidator().createContentSpecificationList(parentElement, parentEd);
- List subList = contentSpecificationList.subList(index, index + 1);
- result = getValidator().canReplace(parentEd, contentSpecificationList, index, index, wrapElement);
- if (result)
- {
- result = getValidator().isValid(wrapElement, subList);
- }
- }
- }
- }
- else
- {
- result = false;
- }
- return result;
- }
-
- public void getInsertActions(Element parent, CMElementDeclaration ed, int index, int includeOptions, int validityChecking, List actionList)
- {
- modelQueryActionHelper.getInsertActions(parent, ed, index, includeOptions, validityChecking, actionList);
- }
-
- public void getInsertActions(Document parent, CMDocument cmDocument, int index, int includeOptions, int validityChecking, List actionList)
- {
- modelQueryActionHelper.getInsertActions(parent, cmDocument, index, includeOptions, validityChecking, actionList);
- }
-
- public void getReplaceActions(Element parent, CMElementDeclaration ed, int includeOptions, int validityChecking, List actionList)
- {
- modelQueryActionHelper.getReplaceActions(parent, ed, includeOptions, validityChecking, actionList);
- }
-
- public void getReplaceActions(Element parent, CMElementDeclaration ed, List selectedChildren, int includeOptions, int validityChecking, List actionList)
- {
- modelQueryActionHelper.getReplaceActions(parent, ed, selectedChildren, includeOptions, validityChecking, actionList);
- }
-
- public void getInsertChildNodeActionTable(Element parent, CMElementDeclaration ed, int validityChecking, Hashtable actionTable)
- {
- modelQueryActionHelper.getInsertChildNodeActionTable(parent, ed, validityChecking, actionTable);
- }
-
- public void getActionTable(Element parent, CMElementDeclaration ed, int index, int validityChecking, Hashtable actionTable)
- {
- //modelQueryActionHelper.getAllActions(parent, ed, validityChecking, actionList);
- }
-
-
- // some helper methods
- //
- protected Node getParentOrOwnerNode(Node node)
- {
- return (node.getNodeType() == Node.ATTRIBUTE_NODE) ?
- ((Attr)node).getOwnerElement() :
- node.getParentNode();
- }
-
- protected Element getParentOrOwnerElement(Node node)
- {
- Node parent = getParentOrOwnerNode(node);
- return (parent.getNodeType() == Node.ELEMENT_NODE) ? (Element)parent : null;
- }
-
-
- protected List nodeListToList(NodeList nodeList)
- {
- int size = nodeList.getLength();
- Vector v = new Vector(size);
- for (int i = 0; i < size; i++)
- {
- v.add(nodeList.item(i));
- }
- return v;
- }
-
- /**
- protected List getCMNodeList(NodeList nodeList)
- {
- int size = nodeList.getLength();
- Vector v = new Vector(size);
- for (int i = 0; i < size; i++)
- {
- v.add(getCMNode(nodeList.item(i));
- }
- return v;
- }
- */
-
- public class AvailableContentCMVisitor extends CMVisitor
- {
- public Hashtable childNodeTable = new Hashtable();
- public Hashtable attributeTable = new Hashtable();
- public Element rootElement;
- public CMElementDeclaration rootElementDeclaration;
- public boolean isRootVisited;
- protected boolean includeSequenceGroups;
-
- public AvailableContentCMVisitor(Element rootElement, CMElementDeclaration rootElementDeclaration)
- {
- this.rootElement = rootElement;
- this.rootElementDeclaration = rootElementDeclaration;
- }
-
- protected String getKey(CMNode cmNode)
- {
- String key = cmNode.getNodeName();
- CMDocument cmDocument = (CMDocument)cmNode.getProperty("CMDocument"); //$NON-NLS-1$
- if (cmDocument != null)
- {
- String namespaceURI = (String)cmDocument.getProperty("http://org.eclipse.wst/cm/properties/targetNamespaceURI"); //$NON-NLS-1$
- if (namespaceURI != null)
- {
- key = "[" + namespaceURI + "]" + key; //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
- return key;
- }
-
- protected void addToTable(Hashtable table, CMNode cmNode)
- {
- String nodeName = cmNode.getNodeName();
- if (nodeName != null && nodeName.length() > 0)
- {
- table.put(getKey(cmNode), cmNode);
- }
- }
-
- public List computeAvailableContent(int includeOptions)
- {
- Vector v = new Vector();
-
- int contentType = rootElementDeclaration.getContentType();
- includeSequenceGroups = ((includeOptions & INCLUDE_SEQUENCE_GROUPS) != 0);
- visitCMNode(rootElementDeclaration);
-
- if ((includeOptions & INCLUDE_ATTRIBUTES) != 0)
- {
- v.addAll(attributeTable.values());
- CMAttributeDeclaration nillableAttribute = (CMAttributeDeclaration)rootElementDeclaration.getProperty("http://org.eclipse.wst/cm/properties/nillable"); //$NON-NLS-1$
- if (nillableAttribute != null)
- {
- v.add(nillableAttribute);
- }
- }
-
- if ((includeOptions & INCLUDE_CHILD_NODES) != 0)
- {
- if (contentType == CMElementDeclaration.MIXED ||
- contentType == CMElementDeclaration.ELEMENT)
- {
- v.addAll(childNodeTable.values());
- }
- else if (contentType == CMElementDeclaration.ANY)
- {
- CMDocument cmDocument = (CMDocument)rootElementDeclaration.getProperty("CMDocument"); //$NON-NLS-1$
- if (cmDocument != null)
- {
- CMNamedNodeMap elements = cmDocument.getElements();
- for (Iterator i = elements.iterator(); i.hasNext(); )
- {
- v.add(i.next());
- }
- }
- }
-
- if (contentType == CMElementDeclaration.MIXED ||
- contentType == CMElementDeclaration.PCDATA ||
- contentType == CMElementDeclaration.ANY)
- {
- CMDataType dataType = rootElementDeclaration.getDataType();
- if (dataType != null)
- {
- v.add(dataType);
- }
- }
- }
- return v;
- }
-
- public void visitCMAnyElement(CMAnyElement anyElement)
- {
- String uri = anyElement.getNamespaceURI();
- List list = getCMDocumentList(rootElement, rootElementDeclaration, uri);
- for (Iterator iterator = list.iterator(); iterator.hasNext(); )
- {
- CMDocument cmdocument = (CMDocument)iterator.next();
- if (cmdocument != null)
- {
- CMNamedNodeMap map = cmdocument.getElements();
- int size = map.getLength();
- for (int i = 0; i < size; i++)
- {
- CMNode ed = map.item(i);
- addToTable(childNodeTable,ed);
- }
- }
- }
- }
-
- public void visitCMAttributeDeclaration(CMAttributeDeclaration ad)
- {
- super.visitCMAttributeDeclaration(ad);
- attributeTable.put(ad.getNodeName(), ad);
- }
-
- public void visitCMElementDeclaration(CMElementDeclaration ed)
- {
- if (ed == rootElementDeclaration && !isRootVisited)
- {
- isRootVisited = true;
- super.visitCMElementDeclaration(ed);
- }
- else
- {
- if (!Boolean.TRUE.equals(ed.getProperty("Abstract"))) //$NON-NLS-1$
- {
- addToTable(childNodeTable,ed);
- }
-
- CMNodeList substitutionGroup = (CMNodeList)ed.getProperty("SubstitutionGroup"); //$NON-NLS-1$
- if (substitutionGroup != null)
- {
- handleSubstitutionGroup(substitutionGroup);
- }
- }
- }
-
- protected void handleSubstitutionGroup(CMNodeList substitutionGroup)
- {
- int substitutionGroupLength = substitutionGroup.getLength();
- if (substitutionGroupLength > 1)
- {
- for (int i = 0; i < substitutionGroupLength; i++)
- {
- CMNode ed = substitutionGroup.item(i);
- if (!Boolean.TRUE.equals(ed.getProperty("Abstract"))) //$NON-NLS-1$
- {
- addToTable(childNodeTable,ed);
- }
- }
- }
- }
-
- public void visitCMGroup(CMGroup group)
- {
- if (includeSequenceGroups)
- {
- if (group.getOperator() == CMGroup.SEQUENCE &&
- group.getChildNodes().getLength() > 1 &&
- includesRequiredContent(group))
- {
- childNodeTable.put(group, group);
- }
- }
- super.visitCMGroup(group);
- }
-
- public boolean includesRequiredContent(CMGroup group)
- {
- List list = getValidator().createContentSpecificationList(group);
- return list.size() > 1;
- }
- }
-
-
- /**
- * @deprected - use getPossibleDataTypeValues()
- */
- public List getDataTypeValues(Element element, CMNode cmNode)
- {
- return Arrays.asList(getPossibleDataTypeValues(element, cmNode));
- }
-
- /**
- * This methods return an array of possible values corresponding to the datatype of the CMNode (either an CMAttributeDeclaration or a CMElementDeclaration)
- */
- public String[] getPossibleDataTypeValues(Element element, CMNode cmNode)
- {
- List list = new Vector();
-
- if (cmNode != null)
- {
- CMDataType dataType = null;
- if (cmNode.getNodeType() == CMNode.ATTRIBUTE_DECLARATION)
- {
- dataType = ((CMAttributeDeclaration)cmNode).getAttrType();
- }
- else if (cmNode.getNodeType() == CMNode.ELEMENT_DECLARATION)
- {
- dataType = ((CMElementDeclaration)cmNode).getDataType();
- }
-
- String[] enumeratedValues = dataType != null ? dataType.getEnumeratedValues() : null;
- if (enumeratedValues != null)
- {
- for (int i = 0; i < enumeratedValues.length; i++)
- {
- list.add(enumeratedValues[i]);
- }
- }
- }
-
- addValuesForXSIType(element, cmNode, list);
-
- if (extensionManager != null)
- {
- list.addAll(extensionManager.getDataTypeValues(element, cmNode));
- }
-
- int listSize = list.size();
- String[] result = new String[listSize];
- for (int i = 0; i < listSize; i++)
- {
- result[i] = (String)list.get(i);
- }
- return result;
- }
-
-
- protected void addValuesForXSIType(Element element, CMNode cmNode, List list)
- {
- if (cmNode != null && cmNode.getNodeType() == CMNode.ATTRIBUTE_DECLARATION)
- {
- CMAttributeDeclaration ad = (CMAttributeDeclaration)cmNode;
- if (valueHelper.isXSIType(ad))
- {
- NamespaceTable table = new NamespaceTable(element.getOwnerDocument());
- table.addElementLineage(element);
- list.addAll(valueHelper.getQualifiedXSITypes(ad, table));
- }
- }
- }
-
-
- public ModelQueryExtensionManager getExtensionManager()
- {
- return extensionManager;
- }
-}

Back to the top