All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.devsmart.microdb.DBBuilder Maven / Gradle / Ivy

There is a newer version: 0.3.17
Show newest version
package com.devsmart.microdb;


import org.mapdb.DB;
import org.mapdb.DBMaker;

import java.io.File;
import java.io.IOException;
import java.util.Map;

public class DBBuilder {

    static class NullCallback implements DBCallback {

        @Override
        public void onUpgrade(MicroDB db, int oldVersion, int newVersion) throws IOException {

        }
    }

    private DBCallback mCallback = new NullCallback();
    private int mSchemaVersion = 0;
    private Integer mCacheSize;
    private Map mConstructorMap;

    public static DBBuilder builder() {
        return new DBBuilder();
    }

    private DBBuilder() {
    }

    public DBBuilder callback(DBCallback cb) {
        mCallback = cb;
        return this;
    }

    public DBBuilder schemaVersion(int version) {
        mSchemaVersion = version;
        return this;
    }

    public DBBuilder cacheSize(int cacheSize) {
        mCacheSize = cacheSize;
        return this;
    }

    public DBBuilder constructorsMap(Map constructors) {
        mConstructorMap = constructors;
        return this;
    }

    public MicroDB build(File path) throws IOException {
        DBMaker mapdbBuilder = DBMaker.newFileDB(path);
        if(mCacheSize != null) {
            mapdbBuilder.cacheSize(mCacheSize);
        }
        DB db = mapdbBuilder.make();

        MapDBDriver driver = new MapDBDriver(db);

        return new MicroDB(driver, mSchemaVersion, mCallback, mConstructorMap);

    }

    public MicroDB buildMemoryDB() throws IOException {
        DB db = DBMaker.newMemoryDirectDB()
                .transactionDisable()
                .make();

        MapDBDriver driver = new MapDBDriver(db);
        return new MicroDB(driver, mSchemaVersion, mCallback, mConstructorMap);
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy