KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jofti > store > CachedPage


1 /*
2  * Created on 18-Mar-2006
3  *
4  * TODO To change the template for this generated file go to
5  * Window - Preferences - Java - Code Style - Code Templates
6  */

7 package com.jofti.store;
8
9 import java.nio.ByteBuffer JavaDoc;
10 import java.util.Arrays JavaDoc;
11
12 import com.jofti.btree.IPage;
13 import com.jofti.btree.LeafNodeEntry;
14 import com.jofti.core.IStoreManager;
15
16
17 /**
18  * @author xenephon
19  *
20  * TODO To change the template for this generated type comment go to
21  * Window - Preferences - Java - Code Style - Code Templates
22  */

23 public class CachedPage implements IPage {
24
25     /**
26      * @param pointers
27      * @param buf
28      * @param manager
29      */

30
31     LeafNodeEntry[] entries =null;
32     IPage page =null;
33     int references=0;
34     
35     public CachedPage( IPage page) {
36         this.page =page;
37         
38     }
39     /* (non-Javadoc)
40      * @see com.jofti.store.IPage#getEntry(int)
41      */

42     
43     
44     public LeafNodeEntry getEntry(int position) {
45         LeafNodeEntry entry =null;
46         
47         entry = entries[position];
48         if (entry ==null){
49             entry = page.getEntry(position);
50             
51             entries[position]=entry;
52         }
53         return entry;
54     }
55     /* (non-Javadoc)
56      * @see com.jofti.store.IPage#setEntry(int, com.jofti.btree.StorableLeafNodeEntry)
57      */

58     public void setEntry(int position, LeafNodeEntry entry) {
59         
60         
61         System.arraycopy(entries,position,entries,position+1,(entries.length-1) -position);
62         entries[position]=entry;
63         
64         page.setEntry(position, entry);
65         
66     }
67     /* (non-Javadoc)
68      * @see com.jofti.store.IPage#removeEntry(int)
69      */

70     public void removeEntry(int position) {
71         
72         Arrays.fill(entries,null);
73         
74         page.removeEntry(position);
75         
76     }
77     /* (non-Javadoc)
78      * @see com.jofti.store.IPage#updateEntry(int, com.jofti.btree.StorableLeafNodeEntry)
79      */

80     public void updateEntry(int location, LeafNodeEntry entry) {
81         entries[location]=entry;
82         
83         page.updateEntry(location, entry);
84         
85     }
86     
87     /* (non-Javadoc)
88      * @see com.jofti.store.IPage#copyBuffer(java.nio.ByteBuffer)
89      */

90     public ByteBuffer JavaDoc copyBuffer(ByteBuffer JavaDoc newBuf) {
91         return page.copyBuffer(newBuf);
92     }
93     /* (non-Javadoc)
94      * @see com.jofti.store.IPage#reset()
95      */

96     public void reset() {
97         for (int i=0;i<entries.length;i++){
98             entries[i]=null;
99         }
100         page.reset();
101         
102     }
103     /* (non-Javadoc)
104      * @see com.jofti.store.IPage#getBuffer()
105      */

106     public ByteBuffer JavaDoc getBuffer() {
107
108         return page.getBuffer();
109     }
110     /* (non-Javadoc)
111      * @see com.jofti.store.IPage#getPointers()
112      */

113     public int[] getPointers() {
114
115         return page.getPointers();
116     }
117     /* (non-Javadoc)
118      * @see com.jofti.store.IPage#setManager(com.jofti.core.IStoreManager)
119      */

120     public void setManager(IStoreManager manager) {
121         page.setManager(manager);
122         
123     }
124     
125     public synchronized void acquireReference(){
126         ++references;
127     }
128
129     public synchronized void releaseReference(){
130         --references;
131     }
132     
133     public synchronized boolean hasReferences(){
134         return references>0;
135     }
136 }
137
Popular Tags