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 (C) Intalio, Inc. All Rights Reserved.
042: *
043: * $Id: FacetList.java 6554 2006-12-21 04:45:18Z ekuns $
044: */package org.exolab.castor.xml.schema;
045:
046: import java.util.ArrayList;
047: import java.util.Enumeration;
048: import java.util.List;
049:
050: /**
051: * A list for maintaining facets
052: *
053: * @author <a href="mailto:kvisco@intalio.com">Keith Visco</a>
054: * @version $Revision: 6554 $ $Date: 2006-04-14 04:14:43 -0600 (Fri, 14 Apr 2006) $
055: **/
056: public class FacetList implements java.io.Serializable {
057: /** SerialVersionUID */
058: private static final long serialVersionUID = 3855871093270831240L;
059:
060: /**
061: * The list of facets
062: **/
063: private List facets = null;
064:
065: /**
066: * Creates a new FacetList
067: **/
068: public FacetList() {
069: facets = new ArrayList();
070: } //-- FacetList
071:
072: /**
073: * Adds the given Facet to this list
074: * @param facet the facet to add
075: **/
076: public void add(Facet facet) {
077: if (facet != null)
078: facets.add(facet);
079: } //-- add
080:
081: /**
082: * Adds the facets from the given list into this FacetList
083: *
084: * @param facetList the FacetList to copy from
085: */
086: public void add(FacetList facetList) {
087: if (facetList == null)
088: return;
089: for (int i = 0; i < facetList.facets.size(); i++)
090: facets.add(facetList.facets.get(i));
091: } //-- add
092:
093: /**
094: * Returns the facet at the given index
095: * @param index the index of the Facet to return
096: **/
097: public Facet get(int index) {
098: return (Facet) facets.get(index);
099: } //-- get
100:
101: /**
102: * Removes the given Facet from this list
103: * @param facet the Facet to remove
104: **/
105: public boolean remove(Facet facet) {
106: return facets.remove(facet);
107: } //-- remove
108:
109: /**
110: * Removes the facet located at the given index
111: *
112: * @param index the index of the Facet to remove
113: * @return the removed facet
114: */
115: public Facet remove(int index) {
116: return (Facet) facets.remove(index);
117: } //-- remove
118:
119: /**
120: * Returns the number of Facets in this list
121: * @return the number of Facets in this list
122: **/
123: public int size() {
124: return facets.size();
125: } //-- size
126:
127: /**
128: * Returns an Enumeration of the Facets in this list
129: * @return an Enumeration of the Facets in this list
130: **/
131: public Enumeration enumerate() {
132: return new FacetListEnumerator(this );
133: } //-- enumerate
134:
135: /**
136: * Returns the facet of the list with with the given name.
137: * In case of an ENUMERATION the first facet is returned.
138: * If none of the name of the facets of that list
139: * correspond to the given name, null is returned.
140: *
141: * @param name the facet name to look for.
142: *
143: * @return The facet of the list with the given name
144: */
145: public Facet contains(String name) {
146: if (name == null)
147: return null;
148: Enumeration enumeration = enumerate();
149: while (enumeration.hasMoreElements()) {
150: Facet temp = (Facet) enumeration.nextElement();
151: if (temp.getName().equals(name))
152: return temp;
153: }
154: return null;
155: }
156:
157: } //-- FacetList
|