See More

package examples; import org.mapdb.*; import java.io.File; /** * DBMaker behavior can be extended or modified by extending class and overriding `extendXXX()` methods. * Those methods are not yet documented, so you have to study `DBMaker.java` source code. * * This example shows how-to add extra logging into DBMaker * It also add extra option to optionally disable logging */ public class DBMakerExtend { //this class extends `DBMaker` and add our own options //generics are used so each option returns `ExtendedDBMaker` instead of old `DBMaker` static class ExtendedDBMaker extends DBMaker{ //override one of protected extension methods @Override protected Engine extendWrapStore(Engine engine) { //do not wrap if this option was disabled if(!loggingEnabled) return engine; //modify engine behaviour by wrapping it return new EngineWrapper.DebugEngine(engine); } //logging is enabled by default in our DBMaker protected boolean loggingEnabled = true; //there is also new option to disable it ExtendedDBMaker loggingDisable(){ loggingEnabled = false; return getThis(); } } public static void main(String[] args) { File dbFile = new File("db"); DB db = new ExtendedDBMaker() //static constructors can not be used on extended class ._newFileDB(dbFile) //so use constructor and call method with underscore .compressionEnable() .loggingDisable() //this option does not exist in original DBMaker .make(); BTreeMap map = db.getTreeMap("map"); //and now with DB as usual } }