KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hsqldb > BaseMemoryNode


1 /* Copyright (c) 1995-2000, The Hypersonic SQL Group.
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * Redistributions of source code must retain the above copyright notice, this
8  * list of conditions and the following disclaimer.
9  *
10  * Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * Neither the name of the Hypersonic SQL Group nor the names of its
15  * contributors may be used to endorse or promote products derived from this
16  * software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE HYPERSONIC SQL GROUP,
22  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *
30  * This software consists of voluntary contributions made by many individuals
31  * on behalf of the Hypersonic SQL Group.
32  *
33  *
34  * For work added by the HSQL Development Group:
35  *
36  * Copyright (c) 2001-2005, The HSQL Development Group
37  * All rights reserved.
38  *
39  * Redistribution and use in source and binary forms, with or without
40  * modification, are permitted provided that the following conditions are met:
41  *
42  * Redistributions of source code must retain the above copyright notice, this
43  * list of conditions and the following disclaimer.
44  *
45  * Redistributions in binary form must reproduce the above copyright notice,
46  * this list of conditions and the following disclaimer in the documentation
47  * and/or other materials provided with the distribution.
48  *
49  * Neither the name of the HSQL Development Group nor the names of its
50  * contributors may be used to endorse or promote products derived from this
51  * software without specific prior written permission.
52  *
53  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
54  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
55  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
56  * ARE DISCLAIMED. IN NO EVENT SHALL HSQL DEVELOPMENT GROUP, HSQLDB.ORG,
57  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
58  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
59  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
60  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
61  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
62  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
63  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
64  */

65
66
67 package org.hsqldb;
68
69 import java.io.IOException JavaDoc;
70
71 import org.hsqldb.rowio.RowOutputInterface;
72
73 /**
74  * Common MEMORY and TEXT table node implementation. Nodes are always in
75  * memory so an Object reference is used to access the other Nodes in the
76  * AVL tree.
77  *
78  * New class derived from the Hypersonic code
79  *
80  * @author Thomas Mueller (Hypersonic SQL Group)
81  * @version 1.7.2
82  * @since Hypersonic SQL
83  */

84 abstract class BaseMemoryNode extends Node {
85
86     protected Node nLeft;
87     protected Node nRight;
88     protected Node nParent;
89
90     void delete() {
91         iBalance = -2;
92         nLeft = nRight = nParent = null;
93     }
94
95     Node getLeft() throws HsqlException {
96
97         if (Trace.DOASSERT) {
98             Trace.doAssert(iBalance != -2);
99         }
100
101         return nLeft;
102     }
103
104     void setLeft(Node n) throws HsqlException {
105
106         if (Trace.DOASSERT) {
107             Trace.doAssert(iBalance != -2);
108         }
109
110         nLeft = n;
111     }
112
113     boolean isLeft(Node node) throws HsqlException {
114         return nLeft == node;
115     }
116
117     boolean isRight(Node node) throws HsqlException {
118         return nRight == node;
119     }
120
121     Node getRight() throws HsqlException {
122
123         if (Trace.DOASSERT) {
124             Trace.doAssert(iBalance != -2);
125         }
126
127         return nRight;
128     }
129
130     void setRight(Node n) throws HsqlException {
131
132         if (Trace.DOASSERT) {
133             Trace.doAssert(iBalance != -2);
134         }
135
136         nRight = n;
137     }
138
139     Node getParent() throws HsqlException {
140
141         if (Trace.DOASSERT) {
142             Trace.doAssert(iBalance != -2);
143         }
144
145         return nParent;
146     }
147
148     boolean isRoot() {
149         return nParent == null;
150     }
151
152     void setParent(Node n) throws HsqlException {
153
154         if (Trace.DOASSERT) {
155             Trace.doAssert(iBalance != -2);
156         }
157
158         nParent = n;
159     }
160
161     void setBalance(int b) throws HsqlException {
162
163         if (Trace.DOASSERT) {
164             Trace.doAssert(iBalance != -2);
165         }
166
167         iBalance = b;
168     }
169
170     boolean isFromLeft() throws HsqlException {
171
172         if (this.isRoot()) {
173             return true;
174         }
175
176         Node parent = getParent();
177
178         if (Trace.DOASSERT) {
179             Trace.doAssert(parent != null);
180         }
181
182         return equals(parent.getLeft());
183     }
184
185     boolean equals(Node n) {
186         return n == this;
187     }
188
189     void write(RowOutputInterface out) throws IOException JavaDoc {}
190 }
191
Popular Tags