KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > db4o > inside > fieldindex > IndexedNodeBase


1 /* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com
2
3 This file is part of the db4o open source object database.
4
5 db4o is free software; you can redistribute it and/or modify it under
6 the terms of version 2 of the GNU General Public License as published
7 by the Free Software Foundation and as clarified by db4objects' GPL
8 interpretation policy, available at
9 http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10 Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11 Suite 350, San Mateo, CA 94403, USA.
12
13 db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14 WARRANTY; without even the implied warranty of MERCHANTABILITY or
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 for more details.
17
18 You should have received a copy of the GNU General Public License along
19 with this program; if not, write to the Free Software Foundation, Inc.,
20 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */

21 package com.db4o.inside.fieldindex;
22
23 import com.db4o.*;
24 import com.db4o.foundation.*;
25 import com.db4o.inside.btree.*;
26
27 public abstract class IndexedNodeBase implements IndexedNode {
28     
29     private final QConObject _constraint;
30
31     public IndexedNodeBase(QConObject qcon) {
32         if (null == qcon) {
33             throw new ArgumentNullException();
34         }
35         if (null == qcon.getField()) {
36             throw new IllegalArgumentException JavaDoc();
37         }
38         _constraint = qcon;
39     }
40
41     public TreeInt toTreeInt() {
42         return addToTree(null, this);
43     }
44     
45     public final BTree getIndex() {
46         return getYapField().getIndex(transaction());
47     }
48
49     private YapField getYapField() {
50         return _constraint.getField().getYapField();
51     }
52
53     public QCon constraint() {
54         return _constraint;
55     }
56
57     public boolean isResolved() {
58         final QCon parent = constraint().parent();
59         return null == parent || !parent.hasParent();
60     }
61
62     public BTreeRange search(final Object JavaDoc value) {
63         return getYapField().search(transaction(), value);
64     }
65
66     public static TreeInt addToTree(TreeInt tree, final IndexedNode node) {
67         Iterator4 i = node.iterator();
68         while (i.moveNext()) {
69             FieldIndexKey composite = (FieldIndexKey)i.current();
70             tree = (TreeInt) Tree.add(tree, new TreeInt(composite.parentID()));
71         }
72         return tree;
73     }
74
75     public IndexedNode resolve() {
76         if (isResolved()) {
77             return null;
78         }
79         return IndexedPath.newParentPath(this, constraint());
80     }
81
82     private Transaction transaction() {
83         return constraint().transaction();
84     }
85
86 }
Popular Tags