KickJava   Java API By Example, From Geeks To Geeks.

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


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: DxDiskHashIterator.java,v 1.2 2002/06/08 00:49:38 mediumnet Exp $
8

9 package org.ozoneDB.DxLib;
10
11
12 /**
13  *
14  *
15  * @author <a HREF="http://www.softwarebuero.de/">SMB</a>
16  * @version $Revision: 1.2 $Date: 2002/06/08 00:49:38 $
17  */

18 public final class DxDiskHashIterator extends DxAbstractIterator {
19     
20     final static long serialVersionUID = 1L;
21     
22     DxKeyData current;
23     
24     DxDeque stack;
25     
26     DxDiskHashMap hm;
27     
28     
29     public DxDiskHashIterator( DxDiskHashMap _hm ) {
30         hm = _hm;
31         reset();
32     }
33     
34     
35     public void reset() {
36         current = new DxKeyData( null, null );
37         
38         stack = new DxArrayDeque();
39
40         DxDiskSubTable rootTable = hm.rootTable();
41
42
43         DxDiskHashNode[] rootTableTables = rootTable.table();
44
45         for (int i = 0; i < rootTableTables.length; i++) {
46             if (rootTableTables[i] != null) {
47                 stack.push( rootTableTables[i] );
48             }
49         }
50
51 // DxDiskHashNodeBranch nodeBranch = hm.newNodeBranch();
52
// nodeBranch.subTable = hm.rootTable();
53
// stack.push( nodeBranch );
54

55         nextEntry();
56         
57         atFirstObject = true;
58         objectRemoved = false;
59     }
60     
61     
62     public Object JavaDoc object() {
63         return current.data;
64     }
65     
66     
67     public Object JavaDoc key() {
68         return current.key;
69     }
70     
71     
72     public Object JavaDoc next() {
73         Object JavaDoc obj = object();
74
75         if (atFirstObject) {
76             atFirstObject = false;
77         } else {
78             if (obj != null && !objectRemoved) {
79                 nextEntry();
80                 obj = object();
81             }
82             objectRemoved = false;
83         }
84         return obj;
85     }
86     
87     
88     public Object JavaDoc removeObject() {
89         throw new UnsupportedOperationException JavaDoc( "removeObject()" );
90 // Object obj = object();
91
// if (obj != null && !objectRemoved) {
92
// DxBBnode delNode = node;
93
// if (node.re != null) {
94
// node = leftMost( node.re );
95
// } else {
96
// node = firstRightParent( node );
97
// }
98
// bbtree.removeForKey( delNode.key );
99
// objectRemoved = true;
100
// }
101
// return obj;
102
}
103
104
105     /**
106      * Depth first serach via the stack.
107      */

108     private void nextEntry() {
109         try {
110             DxDiskHashNode node = (DxDiskHashNode)stack.pop();
111             
112             if (node == null) {
113                 current.set( null, null );
114             }
115             else if (node instanceof DxDiskHashNodeLeaf) {
116                 DxDiskHashNodeLeaf nodeLeaf = (DxDiskHashNodeLeaf)node;
117                 current.set( nodeLeaf.element().key, nodeLeaf.element().data );
118             }
119             else if (node instanceof DxDiskHashNodeBranch) {
120                 DxDiskHashNodeBranch nodeBranch = (DxDiskHashNodeBranch)node;
121                 DxDiskHashNode[] table = nodeBranch.subTable.fetchedTable();
122                 
123                 for (int i=0; i<table.length; i++) {
124                     if (table[i] != null) {
125                         stack.push( table[i] );
126                     }
127                 }
128                 nextEntry();
129             }
130             else {
131                 throw new RuntimeException JavaDoc( "Unknown node type: " + node );
132             }
133         }
134         catch (Exception JavaDoc e) {
135             throw new RuntimeException JavaDoc( e.toString() );
136         }
137     }
138 }
139
140
Popular Tags