1 21 package com.db4o.inside.convert.conversions; 22 23 import com.db4o.*; 24 import com.db4o.header.*; 25 import com.db4o.inside.convert.Conversion; 26 import com.db4o.inside.convert.ConversionStage.*; 27 28 29 32 public class FieldIndexesToBTrees_5_7 extends Conversion{ 33 34 public static final int VERSION = 6; 35 36 public void convert(SystemUpStage stage) { 37 stage.file().classCollection().writeAllClasses(); 38 rebuildUUIDIndex(stage.file()); 39 freeOldUUIDMetaIndex(stage.file()); 40 } 41 42 private void rebuildUUIDIndex(YapFile file) { 43 final YapFieldUUID uuid = file.getFieldUUID(); 44 final YapClassCollectionIterator i = file.classCollection().iterator(); 45 while (i.moveNext()) { 46 final YapClass clazz = i.currentClass(); 47 if (clazz.generateUUIDs()) { 48 uuid.rebuildIndexForClass(file, clazz); 49 } 50 } 51 } 52 53 private void freeOldUUIDMetaIndex(YapFile file) { 54 FileHeader fh = file.getFileHeader(); 55 if(! (fh instanceof FileHeader0)){ 56 return; 57 } 58 final MetaIndex metaIndex = ((FileHeader0)fh).getUUIDMetaIndex(); 59 if(metaIndex == null){ 60 return; 61 } 62 file.free(metaIndex.indexAddress, metaIndex.indexLength); 63 } 64 } 65 | Popular Tags |