1 21 package com.db4o.inside.classindex; 22 23 import com.db4o.*; 24 25 28 public abstract class AbstractClassIndexStrategy implements ClassIndexStrategy { 29 30 protected final YapClass _yapClass; 31 32 public AbstractClassIndexStrategy(YapClass yapClass) { 33 _yapClass = yapClass; 34 } 35 36 protected int yapClassID() { 37 return _yapClass.getID(); 38 } 39 40 public int ownLength() { 41 return YapConst.ID_LENGTH; 42 } 43 44 protected abstract void internalAdd(Transaction trans, int id); 45 46 public final void add(Transaction trans, int id) { 47 if (DTrace.enabled) { 48 DTrace.ADD_TO_CLASS_INDEX.log(id); 49 } 50 checkId(id); 51 internalAdd(trans, id); 52 } 53 54 protected abstract void internalRemove(Transaction ta, int id); 55 56 public final void remove(Transaction ta, int id) { 57 if (DTrace.enabled){ 58 DTrace.REMOVE_FROM_CLASS_INDEX.log(id); 59 } 60 checkId(id); 61 internalRemove(ta, id); 62 } 63 64 private void checkId(int id) { 65 if (Deploy.debug) { 66 if (id == 0) { 67 throw new IllegalArgumentException ("id can't be zero"); 68 } 69 } 70 } 71 } | Popular Tags |