001: /**
002: * Redistribution and use of this software and associated documentation
003: * ("Software"), with or without modification, are permitted provided
004: * that the following conditions are met:
005: *
006: * 1. Redistributions of source code must retain copyright
007: * statements and notices. Redistributions must also contain a
008: * copy of this document.
009: *
010: * 2. Redistributions in binary form must reproduce the
011: * above copyright notice, this list of conditions and the
012: * following disclaimer in the documentation and/or other
013: * materials provided with the distribution.
014: *
015: * 3. The name "Exolab" must not be used to endorse or promote
016: * products derived from this Software without prior written
017: * permission of Intalio, Inc. For written permission,
018: * please contact info@exolab.org.
019: *
020: * 4. Products derived from this Software may not be called "Exolab"
021: * nor may "Exolab" appear in their names without prior written
022: * permission of Intalio, Inc. Exolab is a registered
023: * trademark of Intalio, Inc.
024: *
025: * 5. Due credit should be given to the Exolab Project
026: * (http://www.exolab.org/).
027: *
028: * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS
029: * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
030: * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
031: * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
032: * INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
033: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
034: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
035: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
036: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
037: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
038: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
039: * OF THE POSSIBILITY OF SUCH DAMAGE.
040: *
041: * Copyright 1999, 2000 (C) Intalio, Inc. All Rights Reserved.
042: *
043: * $Id: ContentModelGroup.java 6230 2006-09-19 07:56:07Z wguttmn $
044: */package org.exolab.castor.xml.schema;
045:
046: import java.util.Enumeration;
047:
048: /**
049: * An XML Schema ModelGroup
050: * @author <a href="mailto:kvisco@intalio.com">Keith Visco</a>
051: * @version $Revision: 6230 $ $Date: 2006-04-14 04:14:43 -0600 (Fri, 14 Apr 2006) $
052: **/
053: public interface ContentModelGroup {
054:
055: /**
056: * Adds the given ElementDecl to this ContentModelGroup
057: * @param elementDecl the ElementDecl to add
058: * @exception SchemaException when an ElementDecl already
059: * exists with the same name as the given ElementDecl
060: **/
061: public void addElementDecl(ElementDecl elementDecl)
062: throws SchemaException;
063:
064: /**
065: * Removes the given ElementDecl from this ContentModelGroup.
066: * @param elementDecl the ElementDecl to remove.
067: * @return true if the element has been successfully removed, false otherwise.
068: */
069: public boolean removeElementDecl(ElementDecl elementDecl);
070:
071: /**
072: * Adds the given Group to this ContentModelGroup
073: * @param group the Group to add
074: * @exception SchemaException when a group with the same name as the
075: * specified group already exists in the current scope
076: **/
077: public void addGroup(Group group) throws SchemaException;
078:
079: /**
080: * Removes the given Group from this ContentModelGroup.
081: * @param group the Group to remove.
082: * @return true if the group has been successfully removed, false otherwise.
083: */
084: public boolean removeGroup(Group group);
085:
086: /**
087: * Adds the given ModelGroup Definition to this ContentModelGroup
088: * @param group the ModelGroup to add
089: * @exception SchemaException when a group with the same name as the
090: * specified group already exists in the current scope
091: **/
092: public void addGroup(ModelGroup group) throws SchemaException;
093:
094: /**
095: * Removes the given ModelGroup Definition from this ContentModelGroup.
096: * @param group the ModelGroup Definition to remove.
097: * @return true if the group has been successfully removed, false otherwise.
098: */
099: public boolean removeGroup(ModelGroup group);
100:
101: /**
102: * Adds the given wildcard to this ContentModelGroup
103: * @param wilcard the wilcard to add
104: * @exception SchemaException when the wilcard is <anyAttribute> and
105: * not <any>
106: */
107: public void addWildcard(Wildcard wilcard) throws SchemaException;
108:
109: /**
110: * Removes the given Wildcard from this ContentModelGroup.
111: * @param wildcard the Wildcard to remove.
112: * @return true if the wildcard has been successfully removed, false otherwise.
113: */
114: public boolean removeWildcard(Wildcard wildcard);
115:
116: /**
117: * Returns an enumeration of all the Particles contained
118: * within this ContentModelGroup
119: *
120: * @return an enumeration of all the Particels contained
121: * within this ContentModelGroup
122: **/
123: public Enumeration enumerate();
124:
125: /**
126: * Returns the element declaration with the given name, or null if no
127: * element declaration with that name exists in this ContentModelGroup.
128: *
129: * @param name the name of the element.
130: * @return the ElementDecl with the given name, or null if no
131: * ElementDecl exists in this ContentModelGroup.
132: **/
133: public ElementDecl getElementDecl(String name);
134:
135: /**
136: * Returns the maximum number of occurances that this ContentModelGroup
137: * may appear
138: * @return the maximum number of occurances that this ContentModelGroup
139: * may appear.
140: * A non positive (n < 1) value indicates that the
141: * value is unspecified (ie. unbounded).
142: **/
143: public int getMaxOccurs();
144:
145: /**
146: * Returns the minimum number of occurances that this ContentModelGroup
147: * must appear
148: * @return the minimum number of occurances that this ContentModelGroup
149: * must appear
150: * A negative (n < 0) value indicates that the value is unspecified.
151: **/
152: public int getMinOccurs();
153:
154: /**
155: * Returns the number of particles contained within
156: * this ContentModelGroup
157: *
158: * @return the number of particles
159: **/
160: public int getParticleCount();
161:
162: /**
163: * Returns the Particle at the specified index
164: * @param index the index of the particle to return
165: * @return the CMParticle at the specified index
166: **/
167: public Particle getParticle(int index);
168:
169: } //-- ContentModelGroup
|