KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > apache > xerces > validators > schema > identity > IdentityConstraint


1 /*
2  * The Apache Software License, Version 1.1
3  *
4  *
5  * Copyright (c) 2001 The Apache Software Foundation.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Apache Software Foundation (http://www.apache.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Xerces" and "Apache Software Foundation" must
28  * not be used to endorse or promote products derived from this
29  * software without prior written permission. For written
30  * permission, please contact apache@apache.org.
31  *
32  * 5. Products derived from this software may not be called "Apache",
33  * nor may "Apache" appear in their name, without prior written
34  * permission of the Apache Software Foundation.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
40  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47  * SUCH DAMAGE.
48  * ====================================================================
49  *
50  * This software consists of voluntary contributions made by many
51  * individuals on behalf of the Apache Software Foundation and was
52  * originally based on software copyright (c) 1999, International
53  * Business Machines, Inc., http://www.apache.org. For more
54  * information on the Apache Software Foundation, please see
55  * <http://www.apache.org/>.
56  */

57
58 package org.enhydra.apache.xerces.validators.schema.identity;
59
60 /**
61  * Base class of Schema identity constraint.
62  *
63  * @author Andy Clark, IBM
64  * @version $Id: IdentityConstraint.java,v 1.1.1.1 2003/03/10 16:34:51 taweili Exp $
65  */

66 public abstract class IdentityConstraint {
67
68     //
69
// Constants
70
//
71

72     /** Type: unique. */
73     public static final short UNIQUE = 0;
74
75     /** Type: key. */
76     public static final short KEY = 1;
77
78     /** Type: key reference. */
79     public static final short KEYREF = 2;
80
81     //
82
// Data
83
//
84

85     /** Identity constraint name. */
86     protected String JavaDoc fIdentityConstraintName;
87
88     /** Element name. */
89     protected String JavaDoc fElementName;
90
91     /** Selector. */
92     protected Selector fSelector;
93
94     /** Field count. */
95     protected int fFieldCount;
96
97     /** Fields. */
98     protected Field[] fFields;
99
100     //
101
// Constructors
102
//
103

104     /** Default constructor. */
105     protected IdentityConstraint(String JavaDoc identityConstraintName,
106                                  String JavaDoc elementName) {
107         fIdentityConstraintName = identityConstraintName;
108         fElementName = elementName;
109     } // <init>(String,String)
110

111     //
112
// Public methods
113
//
114

115     /** Returns the identity constraint type. */
116     public abstract short getType();
117
118     /** Returns the identity constraint name. */
119     public String JavaDoc getIdentityConstraintName() {
120         return fIdentityConstraintName;
121     } // getIdentityConstraintName():String
122

123     /** Returns the element name. */
124     public String JavaDoc getElementName() {
125         return fElementName;
126     } // getElementName():String
127

128     /** Sets the selector. */
129     public void setSelector(Selector selector) {
130         fSelector = selector;
131     } // setSelector(Selector)
132

133     /** Returns the selector. */
134     public Selector getSelector() {
135         return fSelector;
136     } // getSelector():Selector
137

138     /** Adds a field. */
139     public void addField(Field field) {
140         try {
141             fFields[fFieldCount] = null;
142         }
143         catch (NullPointerException JavaDoc e) {
144             fFields = new Field[4];
145         }
146         catch (ArrayIndexOutOfBoundsException JavaDoc e) {
147             Field[] newfields = new Field[fFields.length * 2];
148             System.arraycopy(fFields, 0, newfields, 0, fFields.length);
149             fFields = newfields;
150         }
151         fFields[fFieldCount++] = field;
152     } // addField(Field)
153

154     /** Returns the field count. */
155     public int getFieldCount() {
156         return fFieldCount;
157     } // getFieldCount():int
158

159     /** Returns the field at the specified index. */
160     public Field getFieldAt(int index) {
161         return fFields[index];
162     } // getFieldAt(int):Field
163

164     //
165
// Object methods
166
//
167

168     /** Returns a string representation of this object. */
169     public String JavaDoc toString() {
170         String JavaDoc s = super.toString();
171         int index1 = s.lastIndexOf('$');
172         if (index1 != -1) {
173             return s.substring(index1 + 1);
174         }
175         int index2 = s.lastIndexOf('.');
176         if (index2 != -1) {
177             return s.substring(index2 + 1);
178         }
179         return s;
180     } // toString():String
181

182     // equals: returns true if and only if the String
183
// representations of all members of both objects (except for
184
// the elenemtName field) are equal.
185
public boolean equals(IdentityConstraint id) {
186         boolean areEqual = fIdentityConstraintName.equals(id.fIdentityConstraintName);
187         if(!areEqual) return false;
188         areEqual = fSelector.toString().equals(id.fSelector.toString());
189         if(!areEqual) return false;
190         areEqual = (fFieldCount == id.fFieldCount);
191         if(!areEqual) return false;
192         for(int i=0; i<fFieldCount; i++)
193             if(!fFields[i].toString().equals(id.fFields[i].toString())) return false;
194         return true;
195     } // equals
196

197 } // class IdentityConstraint
198
Popular Tags