KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > ozoneDB > DxLib > DxBBIterator


1 // You can redistribute this software and/or modify it under the terms of
2
// the Ozone Library License version 1 published by ozone-db.org.
3
//
4
// The original code and portions created by SMB are
5
// Copyright (C) 1997-@year@ by SMB GmbH. All rights reserved.
6
//
7
// $Id: DxBBIterator.java,v 1.5 2000/10/28 16:55:14 daniela Exp $
8

9 package org.ozoneDB.DxLib;
10
11 /**
12  *
13  *
14  * @author <a HREF="http://www.softwarebuero.de/">SMB</a>
15  * @version $Revision: 1.5 $Date: 2000/10/28 16:55:14 $
16  */

17 public final class DxBBIterator extends DxAbstractIterator {
18     
19     final static long serialVersionUID = 1L;
20     
21     DxBBTree bbtree;
22     DxBBnode node;
23     
24     
25     /**
26      */

27     public DxBBIterator( DxTreeCollection _coll ) {
28         bbtree = _coll.internalTree();
29         reset();
30     }
31     
32     
33     /**
34      */

35     public Object JavaDoc object() {
36         return node != null ? node.data : null;
37     }
38     
39     
40     /**
41      */

42     public Object JavaDoc key() {
43         return node != null ? node.key : null;
44     }
45     
46     
47     /**
48      */

49     public Object JavaDoc next() {
50         Object JavaDoc obj = object();
51         if (atFirstObject) {
52             atFirstObject = false;
53         } else {
54             if (obj != null && !objectRemoved) {
55                 if (node.re != null) {
56                     node = leftMost( node.re );
57                 } else {
58                     node = firstRightParent( node );
59                 }
60                 obj = object();
61             }
62             objectRemoved = false;
63         }
64         return obj;
65     }
66     
67     
68     /**
69      */

70     public void reset() {
71         node = leftMost( bbtree.root() );
72         atFirstObject = true;
73         objectRemoved = false;
74     }
75     
76     
77     /**
78      */

79     public Object JavaDoc removeObject() {
80         Object JavaDoc obj = object();
81         if (obj != null && !objectRemoved) {
82             DxBBnode delNode = node;
83             if (node.re != null) {
84                 node = leftMost( node.re );
85             } else {
86                 node = firstRightParent( node );
87             }
88             bbtree.removeForKey( delNode.key );
89             objectRemoved = true;
90         }
91         return obj;
92     }
93     
94     
95     /**
96      */

97     private DxBBnode leftMost( DxBBnode node ) {
98         if (node != null && node.li != null) {
99             return leftMost( node.li );
100         }
101         return node;
102     }
103     
104     
105     /**
106      */

107     private DxBBnode firstRightParent( DxBBnode node ) {
108         if (node == bbtree.quietRoot) {
109             return null;
110         }
111         if (node.isRight) {
112             return firstRightParent( node.pa );
113         }
114         return node.pa;
115     }
116 }
117
Popular Tags