1 21 package com.db4o.defragment; 22 23 import com.db4o.*; 24 import com.db4o.foundation.*; 25 26 27 32 class TreeIDMapping extends AbstractContextIDMapping { 33 34 private Tree _tree; 35 36 public int mappedID(int oldID, boolean lenient) { 37 int classID = mappedClassID(oldID); 38 if(classID != 0) { 39 return classID; 40 } 41 TreeIntObject res = (TreeIntObject) TreeInt.find(_tree, oldID); 42 if(res != null){ 43 return ((Integer )res._object).intValue(); 44 } 45 if(lenient){ 46 TreeIntObject nextSmaller = (TreeIntObject) Tree.findSmaller(_tree, new TreeInt(oldID)); 47 if(nextSmaller != null){ 48 int baseOldID = nextSmaller._key; 49 int baseNewID = ((Integer )nextSmaller._object).intValue(); 50 return baseNewID + oldID - baseOldID; 51 } 52 } 53 return 0; 54 } 55 56 public void open() { 57 } 58 59 public void close() { 60 } 61 62 protected void mapNonClassIDs(int origID, int mappedID) { 63 _tree = Tree.add(_tree, new TreeIntObject(origID, new Integer (mappedID))); 64 } 65 } 66 | Popular Tags |