1 /**
2 * Redistribution and use of this software and associated documentation
3 * ("Software"), with or without modification, are permitted provided
4 * that the following conditions are met:
5 *
6 * 1. Redistributions of source code must retain copyright
7 * statements and notices. Redistributions must also contain a
8 * copy of this document.
9 *
10 * 2. Redistributions in binary form must reproduce the
11 * above copyright notice, this list of conditions and the
12 * following disclaimer in the documentation and/or other
13 * materials provided with the distribution.
14 *
15 * 3. The name "Exolab" must not be used to endorse or promote
16 * products derived from this Software without prior written
17 * permission of Intalio, Inc. For written permission,
18 * please contact info@exolab.org.
19 *
20 * 4. Products derived from this Software may not be called "Exolab"
21 * nor may "Exolab" appear in their names without prior written
22 * permission of Intalio, Inc. Exolab is a registered
23 * trademark of Intalio, Inc.
24 *
25 * 5. Due credit should be given to the Exolab Project
26 * (http://www.exolab.org/).
27 *
28 * THIS SOFTWARE IS PROVIDED BY INTALIO, INC. AND CONTRIBUTORS
29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
32 * INTALIO, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
39 * OF THE POSSIBILITY OF SUCH DAMAGE.
40 *
41 * Copyright 1999 (C) Intalio, Inc. All Rights Reserved.
42 *
43 * $Id$
44 */
45
46 package org.exolab.castor.xml.schema;
47
48 import org.exolab.castor.xml.ValidationException;
49
50 import java.util.Enumeration;
51 import java.util.Vector;
52
53 /**
54 * A class representing the XML Schema Annotation.
55 * @author <a href="mailto:kvisco@intalio.com">Keith Visco</a>
56 * @version $Revision$ $Date: 2005-12-13 14:58:48 -0700 (Tue, 13 Dec 2005) $
57 **/
58 public class Annotation extends Structure {
59 /** SerialVersionUID */
60 private static final long serialVersionUID = 2838816224303555598L;
61
62 /**
63 * List of {@literal <appinfo/>} objects.
64 **/
65 private Vector<AppInfo> _appInfos = new Vector<AppInfo>();
66
67 /**
68 * List of <documentation/> objects.
69 **/
70 private Vector<Documentation> _documentations = new Vector<Documentation>();
71
72 /**
73 * Adds the given {@link AppInfo} to this annotation.
74 * @param appInfo the AppInfo to add
75 **/
76 public void addAppInfo(final AppInfo appInfo) {
77 if (appInfo != null) {
78 _appInfos.addElement(appInfo);
79 }
80 }
81
82 /**
83 * Adds the given Documentation to this Annotation.
84 * @param documentation the documentation to add to this Annotation
85 **/
86 public void addDocumentation(final Documentation documentation) {
87 if (documentation != null) {
88 _documentations.addElement(documentation);
89 }
90 }
91
92 /**
93 * Returns an enumeration of all {@link AppInfo} elements for this Annotation.
94 * @return an enumeration of all {@link AppInfo} elements for this Annotation
95 **/
96 public Enumeration<AppInfo> getAppInfo() {
97 return _appInfos.elements();
98 }
99
100 /**
101 * Returns an enumeration of all documentation elements for this Annotation.
102 * @return an enumeration of all documentation elements for this Annotation
103 **/
104 public Enumeration<Documentation> getDocumentation() {
105 return _documentations.elements();
106 }
107
108 /**
109 * Removes the given AppInfo from this Annotation.
110 * @param appInfo the AppInfo to remove
111 **/
112 public void removeAppInfo(final AppInfo appInfo) {
113 if (appInfo != null) {
114 _appInfos.removeElement(appInfo);
115 }
116 }
117
118 /**
119 * Removes the given {@link Documentation} from this Annotation.
120 * @param documentation the Documentation to remove
121 **/
122 public void removeDocumentation(final Documentation documentation) {
123 if (documentation != null) {
124 _documentations.removeElement(documentation);
125 }
126 }
127
128 /**
129 * Returns the type of this Schema Structure.
130 * @return the type of this Schema Structure
131 **/
132 public short getStructureType() {
133 return Structure.ANNOTATION;
134 }
135
136 /**
137 * Checks the validity of this Schema definition.
138 * @exception ValidationException when this Schema definition
139 * is invalid.
140 **/
141 public void validate() throws ValidationException {
142 // -- do nothing
143 }
144
145 }