blob: 714c547769a0738aaef7e6688fa4ac7a5703bcf3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 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
*******************************************************************************/
package org.eclipse.jst.jsp.core.internal.contentmodel;
import java.util.ArrayList;
import java.util.List;
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.CMNode;
import org.eclipse.wst.xml.core.internal.contentmodel.CMNodeList;
public class CMGroupWrapperImpl extends CMContentWrapperImpl implements CMGroup {
class CMNodeListImpl implements CMNodeList {
private List nodes = null;
/**
* CMNodeListImpl constructor comment.
*/
public CMNodeListImpl() {
super();
nodes = new ArrayList();
}
/**
* @return org.eclipse.wst.xml.core.internal.contentmodel.CMNode
* @param node org.eclipse.wst.xml.core.internal.contentmodel.CMNode
*/
public void appendItem(CMNode node) {
nodes.add(node);
}
/**
* getLength method
* @return int
*/
public int getLength() {
return nodes.size();
}
/**
* item method
* @return CMNode
* @param index int
*/
public CMNode item(int index) {
if (index < 0 || index >= nodes.size())
return null;
return (CMNode) nodes.get(index);
}
}
private CMNodeList fChildNodes = null;
private CMGroup fGroup = null;
/**
* CMGroupWrapper constructor comment.
* @param prefix java.lang.String
* @param node org.eclipse.wst.xml.core.internal.contentmodel.CMContent
*/
public CMGroupWrapperImpl(String prefix, CMGroup node) {
super(prefix, node);
}
/**
* getChildNodes method
* @return CMNodeList
*
* Returns child CMNodeList, which includes ElementDefinition or CMElement.
*/
public CMNodeList getChildNodes() {
if (fChildNodes == null) {
CMNodeListImpl childNodes = new CMNodeListImpl();
CMNodeList children = fGroup.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
CMNode child = children.item(i);
if (child instanceof CMGroup)
childNodes.appendItem(new CMGroupWrapperImpl(fPrefix, (CMGroup) child));
else if (child instanceof CMElementDeclaration)
childNodes.appendItem(new CMElementDeclarationWrapperImpl(fPrefix, (CMElementDeclaration) child));
else
// error?
childNodes.appendItem(new CMNodeWrapperImpl(fPrefix, child));
}
fChildNodes = childNodes;
}
return fChildNodes;
}
/**
* getOperation method
* @return int
*
* Returns one of :
* ALONE (a), SEQUENCE (a,b), CHOICE (a|b), ALL (a&b).
*/
public int getOperator() {
return fGroup.getOperator();
}
public CMNode getOriginNode() {
return fGroup;
}
}