package database; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; import org.mapdb.BTreeKeySerializer; import org.mapdb.DB; import qora.block.Block; import com.google.common.primitives.UnsignedBytes; import database.DBSet; public class ChildMap extends DBMap<byte[], byte[]> { private Map<Integer, Integer> observableData = new HashMap<Integer, Integer>(); private BlockMap blockMap; public ChildMap(DBSet databaseSet, DB database) { super(databaseSet, database); this.blockMap = databaseSet.getBlockMap(); } public ChildMap(BlockMap blockMap, ChildMap parent) { super(parent); this.blockMap = blockMap; } protected void createIndexes(DB database){} @Override protected Map<byte[], byte[]> getMap(DB database) { //OPEN MAP return database.createTreeMap("children") .keySerializer(BTreeKeySerializer.BASIC) .comparator(UnsignedBytes.lexicographicalComparator()) .makeOrGet(); } @Override protected Map<byte[], byte[]> getMemoryMap() { return new TreeMap<byte[], byte[]>(UnsignedBytes.lexicographicalComparator()); } @Override protected byte[] getDefaultValue() { return null; } @Override protected Map<Integer, Integer> getObservableData() { return this.observableData; } public Block get(Block parent) { if(this.contains(parent.getSignature())) { return this.blockMap.get(this.get(parent.getSignature())); } return null; } public void set(Block parent, Block child) { this.set(parent.getSignature(), child.getSignature()); } }