diff options
Diffstat (limited to 'bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/util/ContentBuilder.java')
-rw-r--r-- | bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/util/ContentBuilder.java | 171 |
1 files changed, 0 insertions, 171 deletions
diff --git a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/util/ContentBuilder.java b/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/util/ContentBuilder.java deleted file mode 100644 index 841de7421c..0000000000 --- a/bundles/org.eclipse.wst.xml.core/src-contentmodel/org/eclipse/wst/xml/core/internal/contentmodel/util/ContentBuilder.java +++ /dev/null @@ -1,171 +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 Common Public License v1.0 -* which accompanies this distribution, and is available at -* http://www.eclipse.org/legal/cpl-v10.html -* -* Contributors: -* IBM - Initial API and implementation -* Jens Lukowski/Innoopract - initial renaming/restructuring -* -*/ -package org.eclipse.wst.xml.core.internal.contentmodel.util; - -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.CMContent; -import org.eclipse.wst.xml.core.internal.contentmodel.CMDataType; -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.CMNodeList; - - -/** - * This class lets you traverse a 'CM' model providing callbacks to build content. - */ -public class ContentBuilder extends CMVisitor -{ - public static final int BUILD_ALL_CONTENT = 1; - public static final int BUILD_ONLY_REQUIRED_CONTENT = 2; - protected int buildPolicy = BUILD_ALL_CONTENT; - - protected boolean alwaysVisit; - protected Vector visitedCMElementDeclarationList = new Vector(); - - public ContentBuilder() - { - } - - public void setBuildPolicy(int buildPolicy) - { - this.buildPolicy = buildPolicy; - } - - public int getBuildPolicy() - { - return buildPolicy; - } - - protected void createAnyElementNode(CMAnyElement anyElement) - { - } - - protected void createElementNodeStart(CMElementDeclaration ed) - { - } - - protected void createElementNodeEnd(CMElementDeclaration ed) - { - } - - protected void createTextNode(CMDataType dataType) - { - } - - protected void createAttributeNode(CMAttributeDeclaration attribute) - { - } - - public void visitCMElementDeclaration(CMElementDeclaration ed) - { - int forcedMin = (buildPolicy == BUILD_ALL_CONTENT || alwaysVisit) ? 1 : 0; - int min = Math.max(ed.getMinOccur(), forcedMin); - alwaysVisit = false; - - if (min > 0 && !visitedCMElementDeclarationList.contains(ed)) - { - visitedCMElementDeclarationList.add(ed); - for (int i = 1; i <= min; i++) - { - createElementNodeStart(ed); - - // instead of calling super.visitCMElementDeclaration() - // we duplicate the code with some minor modifications - CMNamedNodeMap nodeMap = ed.getAttributes(); - int size = nodeMap.getLength(); - for (int j = 0; j < size; j++) - { - visitCMNode(nodeMap.item(j)); - } - - CMContent content = ed.getContent(); - if (content != null) - { - visitCMNode(content); - } - - if (ed.getContentType() == CMElementDeclaration.PCDATA) - { - CMDataType dataType = ed.getDataType(); - if (dataType != null) - { - visitCMDataType(dataType); - } - } - // end duplication - createElementNodeEnd(ed); - } - int size = visitedCMElementDeclarationList.size(); - visitedCMElementDeclarationList.remove(size - 1); - } - } - - - public void visitCMDataType(CMDataType dataType) - { - createTextNode(dataType); - } - - - public void visitCMGroup(CMGroup e) - { - int forcedMin = (buildPolicy == BUILD_ALL_CONTENT || alwaysVisit) ? 1 : 0; - int min = Math.max(e.getMinOccur(), forcedMin); - alwaysVisit = false; - - for (int i = 1; i <= min; i++) - { - if (e.getOperator() == CMGroup.CHOICE) - { - // add only 1 element from the group - // todo... perhaps add something other than the first one - CMNodeList nodeList = e.getChildNodes(); - if (nodeList.getLength() > 0) - { - visitCMNode(nodeList.item(0)); - } - } - else // SEQUENCE, ALL - { - // visit all of the content - super.visitCMGroup(e); - } - } - } - - public void visitCMAttributeDeclaration(CMAttributeDeclaration ad) - { - if (alwaysVisit || - buildPolicy == BUILD_ALL_CONTENT || - ad.getUsage() == CMAttributeDeclaration.REQUIRED) - { - createAttributeNode(ad); - } - } - - - public void visitCMAnyElement(CMAnyElement anyElement) - { - int forcedMin = (buildPolicy == BUILD_ALL_CONTENT || alwaysVisit) ? 1 : 0; - alwaysVisit = false; - int min = Math.max(anyElement.getMinOccur(), forcedMin); - for (int i = 1; i <= min; i++) - { - createAnyElementNode(anyElement); - } - } -} |