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-2001 (C) Intalio, Inc. All Rights Reserved.
42 *
43 * $Id$
44 */
45
46 package org.exolab.castor.xml.schema;
47
48 //-- we should change this to SchemaValidationException
49 //-- and localize the package
50 import org.exolab.castor.xml.ValidationException;
51
52 /**
53 * The base class for all XML Schema stuctures.
54 *
55 * @author <a href="mailto:kvisco@intalio.com">Keith Visco</a>
56 * @version $Revision$ $Date: 2003-03-03 00:05:44 -0700 (Mon, 03 Mar 2003) $
57 **/
58 public abstract class Structure implements java.io.Serializable {
59
60 public static final short ANYTYPE = 0;
61 public static final short ANNOTATION = 1;
62 public static final short APPINFO = 2;
63 public static final short ATTRIBUTE = 3;
64 public static final short ATTRIBUTE_GROUP = 4;
65 public static final short COMPLEX_CONTENT = 5;
66 public static final short COMPLEX_TYPE = 6;
67 public static final short DOCUMENTATION = 7;
68 public static final short ELEMENT = 8;
69 public static final short FACET = 9;
70 public static final short GROUP = 10;
71 public static final short IDENTITY_FIELD = 11;
72 public static final short IDENTITY_SELECTOR = 12;
73 public static final short KEY = 13;
74 public static final short KEYREF = 14;
75 public static final short LIST = 15;
76 public static final short MODELGROUP = 16;
77 public static final short MODELGROUP_REF = 17;
78 public static final short REDEFINE = 18;
79 public static final short SCHEMA = 19;
80 public static final short SIMPLE_CONTENT = 20;
81 public static final short SIMPLE_TYPE = 21;
82 public static final short UNION = 22;
83 public static final short UNIQUE = 23;
84 public static final short WILDCARD = 24;
85
86 //-- should be removed eventually
87 public static final short UNKNOWN = -1;
88
89
90 /**
91 * Creates a new XML Schema Structure
92 **/
93 protected Structure() {
94 super();
95 } //-- Structure
96
97 /**
98 * Calls validate() to determine if this Schema Definition
99 * is valid.
100 *
101 * @return true if this Schema definition is valid, otherwise false.
102 **/
103 public boolean isValid() {
104 try {
105 validate();
106 }
107 catch(ValidationException ex) {
108 return false;
109 }
110 return true;
111 } //-- isValid
112
113 /**
114 * Returns the type of this Schema Structure.
115 *
116 * @return the type of this Schema Structure.
117 **/
118 public abstract short getStructureType();
119
120 /**
121 * Checks the validity of this Schema defintion.
122 *
123 * @exception ValidationException when this Schema definition
124 * is invalid.
125 **/
126 public abstract void validate()
127 throws ValidationException;
128
129 } //-- Structure